From 4c89c27016d704b88b425e6e7ecb976144b36291 Mon Sep 17 00:00:00 2001 From: Augustin <augustin.lemesle@cea.fr> Date: Wed, 2 Oct 2019 15:26:34 +0200 Subject: [PATCH] Gitignore --- .gitignore | 4 +- ...40b622142f1c98125abcfe89a76a661b0e8e343910 | 1 - ...2e6dfbf4934329e2f03a9174070b70d0883886b435 | 11 - ...243b9c3bcb930892a05977cdc36c8f5e36f4599f7b | 2 - ...5970b3a49cf9b4f3d7015485506ccda914caf9c5b9 | 19 - _site/2018/06/13/arbre.html | 325 - _site/2018/06/13/pla.html | 325 - _site/2018/06/13/pomm.html | 325 - _site/2018/06/13/test.html | 325 - _site/404.html | 55 - _site/about/index.html | 56 - _site/assets/css/blog.css | 753 - _site/assets/css/careers.css | 858 - _site/assets/css/contact.css | 807 - _site/assets/css/default.css | 36 - _site/assets/css/documentation.css | 141 - _site/assets/css/get-framac.css | 212 - _site/assets/css/home.css | 1994 -- _site/assets/css/icomoon.css | 99 - _site/assets/css/lib/swiper.css | 571 - _site/assets/css/main.css | 2014 -- _site/assets/css/page.css | 1219 - _site/assets/css/plugin.css | 687 - _site/assets/css/terms.css | 68 - _site/assets/fonts/icomoon.eot | Bin 7180 -> 0 bytes _site/assets/fonts/icomoon.svg | 3 - _site/assets/fonts/icomoon.ttf | Bin 7016 -> 0 bytes _site/assets/fonts/icomoon.woff | Bin 7092 -> 0 bytes _site/assets/fonts/selection.json | 896 - _site/assets/img/author/inria.jpg | Bin 10431 -> 0 bytes _site/assets/img/author/list-cea-tech.jpg | Bin 6556 -> 0 bytes _site/assets/img/banner-careers.jpg | Bin 32832 -> 0 bytes _site/assets/img/bg-code-screen.png | Bin 13438 -> 0 bytes _site/assets/img/bg-contact-location.jpg | Bin 71618 -> 0 bytes _site/assets/img/bg-dotted-focus.png | Bin 1014 -> 0 bytes _site/assets/img/bg-dotted-line-red.png | Bin 1018 -> 0 bytes _site/assets/img/bg-dotted-line.png | Bin 1069 -> 0 bytes _site/assets/img/bg-scale.jpg | Bin 1290 -> 0 bytes _site/assets/img/default-blog.jpg | Bin 28135 -> 0 bytes _site/assets/img/favicon.ico | Bin 1150 -> 0 bytes _site/assets/img/framac.gif | Bin 6979 -> 0 bytes _site/assets/img/icons/arrow-down.svg | 3 - _site/assets/img/icons/arrow-left.svg | 3 - _site/assets/img/icons/arrow-right.svg | 3 - _site/assets/img/icons/arrow-up.svg | 3 - _site/assets/img/icons/code.svg | 3 - _site/assets/img/icons/icon-attachment.png | Bin 7196 -> 0 bytes _site/assets/img/icons/icon-code.png | Bin 5679 -> 0 bytes _site/assets/img/icons/icon-error-free.png | Bin 4509 -> 0 bytes _site/assets/img/icons/icon-layer.png | Bin 1719 -> 0 bytes _site/assets/img/icons/icon-suitcase.png | Bin 2337 -> 0 bytes _site/assets/img/icons/lock.svg | 3 - _site/assets/img/icons/search.svg | 3 - _site/assets/img/icons/thumb.svg | 3 - _site/assets/img/img-code-screen.png | Bin 72053 -> 0 bytes _site/assets/img/laptop.png | Bin 7383 -> 0 bytes _site/assets/img/plugins/acsl.png | Bin 15641 -> 0 bytes _site/assets/img/plugins/acsl2.png | Bin 11215 -> 0 bytes _site/assets/img/plugins/aorai.png | Bin 13315 -> 0 bytes _site/assets/img/plugins/aorai2.png | Bin 12856 -> 0 bytes _site/assets/img/plugins/eacsl.png | Bin 15568 -> 0 bytes _site/assets/img/plugins/eacsl2.png | Bin 16021 -> 0 bytes _site/assets/img/plugins/eva.png | Bin 10581 -> 0 bytes _site/assets/img/plugins/eva2.png | Bin 13000 -> 0 bytes _site/assets/img/plugins/frama-c-chlorine.png | Bin 16002 -> 0 bytes _site/assets/img/plugins/frama-c.png | Bin 15121 -> 0 bytes _site/assets/img/plugins/frama-clang.png | Bin 7548 -> 0 bytes _site/assets/img/plugins/frama-clang2.png | Bin 20999 -> 0 bytes _site/assets/img/plugins/gui.png | Bin 9954 -> 0 bytes _site/assets/img/plugins/gui2.png | Bin 12670 -> 0 bytes _site/assets/img/plugins/kernel.png | Bin 13911 -> 0 bytes _site/assets/img/plugins/kernel2.png | Bin 11670 -> 0 bytes .../plugins/logos-plugins-non-officiels.zip | Bin 392916 -> 0 bytes _site/assets/img/plugins/metrics.png | Bin 16711 -> 0 bytes _site/assets/img/plugins/metrics2.png | Bin 15173 -> 0 bytes _site/assets/img/plugins/mthread.png | Bin 16932 -> 0 bytes _site/assets/img/plugins/mthread2.png | Bin 16702 -> 0 bytes _site/assets/img/plugins/pathcrawler.png | Bin 19082 -> 0 bytes _site/assets/img/plugins/pathcrawler2.png | Bin 21732 -> 0 bytes _site/assets/img/plugins/rte.png | Bin 10753 -> 0 bytes _site/assets/img/plugins/rte2.png | Bin 10124 -> 0 bytes _site/assets/img/plugins/slicing.png | Bin 16516 -> 0 bytes _site/assets/img/plugins/slicing2.png | Bin 15443 -> 0 bytes _site/assets/img/plugins/wp.png | Bin 11008 -> 0 bytes _site/assets/img/plugins/wp2.png | Bin 8934 -> 0 bytes _site/assets/img/timeline-mask.png | Bin 2122 -> 0 bytes _site/assets/js/lib.js | 21205 ---------------- _site/assets/js/main.js | 10670 -------- _site/assets/js/manifest.js | 795 - _site/assets/main.css | 285 - _site/assets/main.css.map | 20 - _site/assets/minima-social-icons.svg | 3 - _site/blog/index.html | 265 - _site/blog/page2/index.html | 197 - _site/category/jekyll/index.html | 185 - _site/category/pony/index.html | 185 - _site/category/update/index.html | 185 - _site/fc-plugins/e-acsl.html | 176 - _site/fc-plugins/eva.html | 238 - _site/fc-plugins/impact.html | 182 - _site/fc-plugins/jessie.html | 174 - _site/fc-plugins/metrics-calculation.html | 185 - _site/fc-plugins/mthread.html | 261 - _site/fc-plugins/pathcrawler.html | 230 - _site/fc-plugins/scope.html | 243 - .../fc-plugins/semantic-constant-folding.html | 196 - _site/fc-plugins/spare-code.html | 210 - _site/fc-plugins/studia.html | 205 - _site/fc-plugins/variadic.html | 285 - _site/fc-plugins/wp.html | 236 - _site/feed.xml | 862 - _site/html/authors.html | 177 - _site/html/contact.html | 318 - _site/html/documentation.html | 337 - _site/html/framac-versions.html | 222 - _site/html/get-frama-c.html | 185 - _site/html/kernel-plugin.html | 658 - _site/html/kernel.html | 330 - _site/html/terms-of-use.html | 168 - _site/html/using-frama-c.html | 296 - _site/index.html | 601 - .../update/2019/08/22/welcome-to-jekyll.html | 173 - _site/pony/2019/06/22/jungle.html | 325 - 123 files changed, 2 insertions(+), 53296 deletions(-) delete mode 100644 .jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 delete mode 100644 .jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/63/7e252fa8460c2278df772e6dfbf4934329e2f03a9174070b70d0883886b435 delete mode 100644 .jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/ca/b8b278c7e75237af7ad8243b9c3bcb930892a05977cdc36c8f5e36f4599f7b delete mode 100644 .jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fd/aa4200cef2544ec568b25970b3a49cf9b4f3d7015485506ccda914caf9c5b9 delete mode 100644 _site/2018/06/13/arbre.html delete mode 100644 _site/2018/06/13/pla.html delete mode 100644 _site/2018/06/13/pomm.html delete mode 100644 _site/2018/06/13/test.html delete mode 100644 _site/404.html delete mode 100644 _site/about/index.html delete mode 100755 _site/assets/css/blog.css delete mode 100755 _site/assets/css/careers.css delete mode 100755 _site/assets/css/contact.css delete mode 100755 _site/assets/css/default.css delete mode 100755 _site/assets/css/documentation.css delete mode 100755 _site/assets/css/get-framac.css delete mode 100755 _site/assets/css/home.css delete mode 100755 _site/assets/css/icomoon.css delete mode 100644 _site/assets/css/lib/swiper.css delete mode 100755 _site/assets/css/main.css delete mode 100755 _site/assets/css/page.css delete mode 100755 _site/assets/css/plugin.css delete mode 100755 _site/assets/css/terms.css delete mode 100644 _site/assets/fonts/icomoon.eot delete mode 100644 _site/assets/fonts/icomoon.svg delete mode 100644 _site/assets/fonts/icomoon.ttf delete mode 100644 _site/assets/fonts/icomoon.woff delete mode 100644 _site/assets/fonts/selection.json delete mode 100644 _site/assets/img/author/inria.jpg delete mode 100644 _site/assets/img/author/list-cea-tech.jpg delete mode 100644 _site/assets/img/banner-careers.jpg delete mode 100644 _site/assets/img/bg-code-screen.png delete mode 100644 _site/assets/img/bg-contact-location.jpg delete mode 100644 _site/assets/img/bg-dotted-focus.png delete mode 100644 _site/assets/img/bg-dotted-line-red.png delete mode 100644 _site/assets/img/bg-dotted-line.png delete mode 100644 _site/assets/img/bg-scale.jpg delete mode 100644 _site/assets/img/default-blog.jpg delete mode 100644 _site/assets/img/favicon.ico delete mode 100644 _site/assets/img/framac.gif delete mode 100644 _site/assets/img/icons/arrow-down.svg delete mode 100644 _site/assets/img/icons/arrow-left.svg delete mode 100644 _site/assets/img/icons/arrow-right.svg delete mode 100644 _site/assets/img/icons/arrow-up.svg delete mode 100644 _site/assets/img/icons/code.svg delete mode 100644 _site/assets/img/icons/icon-attachment.png delete mode 100644 _site/assets/img/icons/icon-code.png delete mode 100644 _site/assets/img/icons/icon-error-free.png delete mode 100644 _site/assets/img/icons/icon-layer.png delete mode 100644 _site/assets/img/icons/icon-suitcase.png delete mode 100644 _site/assets/img/icons/lock.svg delete mode 100644 _site/assets/img/icons/search.svg delete mode 100644 _site/assets/img/icons/thumb.svg delete mode 100644 _site/assets/img/img-code-screen.png delete mode 100644 _site/assets/img/laptop.png delete mode 100755 _site/assets/img/plugins/acsl.png delete mode 100755 _site/assets/img/plugins/acsl2.png delete mode 100755 _site/assets/img/plugins/aorai.png delete mode 100755 _site/assets/img/plugins/aorai2.png delete mode 100755 _site/assets/img/plugins/eacsl.png delete mode 100755 _site/assets/img/plugins/eacsl2.png delete mode 100755 _site/assets/img/plugins/eva.png delete mode 100755 _site/assets/img/plugins/eva2.png delete mode 100755 _site/assets/img/plugins/frama-c-chlorine.png delete mode 100755 _site/assets/img/plugins/frama-c.png delete mode 100755 _site/assets/img/plugins/frama-clang.png delete mode 100755 _site/assets/img/plugins/frama-clang2.png delete mode 100755 _site/assets/img/plugins/gui.png delete mode 100755 _site/assets/img/plugins/gui2.png delete mode 100755 _site/assets/img/plugins/kernel.png delete mode 100755 _site/assets/img/plugins/kernel2.png delete mode 100755 _site/assets/img/plugins/logos-plugins-non-officiels.zip delete mode 100755 _site/assets/img/plugins/metrics.png delete mode 100755 _site/assets/img/plugins/metrics2.png delete mode 100755 _site/assets/img/plugins/mthread.png delete mode 100755 _site/assets/img/plugins/mthread2.png delete mode 100755 _site/assets/img/plugins/pathcrawler.png delete mode 100755 _site/assets/img/plugins/pathcrawler2.png delete mode 100755 _site/assets/img/plugins/rte.png delete mode 100755 _site/assets/img/plugins/rte2.png delete mode 100755 _site/assets/img/plugins/slicing.png delete mode 100755 _site/assets/img/plugins/slicing2.png delete mode 100755 _site/assets/img/plugins/wp.png delete mode 100755 _site/assets/img/plugins/wp2.png delete mode 100644 _site/assets/img/timeline-mask.png delete mode 100644 _site/assets/js/lib.js delete mode 100644 _site/assets/js/main.js delete mode 100644 _site/assets/js/manifest.js delete mode 100644 _site/assets/main.css delete mode 100644 _site/assets/main.css.map delete mode 100644 _site/assets/minima-social-icons.svg delete mode 100644 _site/blog/index.html delete mode 100644 _site/blog/page2/index.html delete mode 100644 _site/category/jekyll/index.html delete mode 100644 _site/category/pony/index.html delete mode 100644 _site/category/update/index.html delete mode 100644 _site/fc-plugins/e-acsl.html delete mode 100644 _site/fc-plugins/eva.html delete mode 100644 _site/fc-plugins/impact.html delete mode 100644 _site/fc-plugins/jessie.html delete mode 100644 _site/fc-plugins/metrics-calculation.html delete mode 100644 _site/fc-plugins/mthread.html delete mode 100644 _site/fc-plugins/pathcrawler.html delete mode 100644 _site/fc-plugins/scope.html delete mode 100644 _site/fc-plugins/semantic-constant-folding.html delete mode 100644 _site/fc-plugins/spare-code.html delete mode 100644 _site/fc-plugins/studia.html delete mode 100644 _site/fc-plugins/variadic.html delete mode 100644 _site/fc-plugins/wp.html delete mode 100644 _site/feed.xml delete mode 100644 _site/html/authors.html delete mode 100644 _site/html/contact.html delete mode 100644 _site/html/documentation.html delete mode 100644 _site/html/framac-versions.html delete mode 100644 _site/html/get-frama-c.html delete mode 100644 _site/html/kernel-plugin.html delete mode 100644 _site/html/kernel.html delete mode 100644 _site/html/terms-of-use.html delete mode 100644 _site/html/using-frama-c.html delete mode 100644 _site/index.html delete mode 100644 _site/jekyll/update/2019/08/22/welcome-to-jekyll.html delete mode 100644 _site/pony/2019/06/22/jungle.html diff --git a/.gitignore b/.gitignore index 63739325..a2856698 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -.jekyll-cache/* -_site/* +.jekyll-cache/ +_site/ diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 b/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 deleted file mode 100644 index fd37a557..00000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 +++ /dev/null @@ -1 +0,0 @@ -I"Ö{"source"=>"/home/alemesle/website/jekyll-frama-c", "destination"=>"/home/alemesle/website/jekyll-frama-c/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}, "fc-plugins"=>{"output"=>true}, "case_studies"=>{"output"=>true}, "events"=>{"output"=>false}, "fc-versions"=>{"output"=>true, "sort_by"=>"number"}, "jobs"=>{"output"=>true, "sort_by"=>"posted"}}, "safe"=>false, "include"=>["html", "dokuwiki"], "exclude"=>[".sass-cache", ".jekyll-cache", "gemfiles", "Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-paginate", "jekyll-category-pages"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/blog/page:num/", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>"1..6", "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "title"=>"Your awesome title", "email"=>"your-email@example.com", "description"=>"Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.", "url"=>"http://localhost:4000", "twitter_username"=>"jekyllrb", "github_username"=>"jekyll", "theme"=>"minima", "paginate"=>5, "category_dir"=>"/categories/", "category_layout"=>"blog.html", "livereload_port"=>35729, "serving"=>true, "watch"=>true}:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/63/7e252fa8460c2278df772e6dfbf4934329e2f03a9174070b70d0883886b435 b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/63/7e252fa8460c2278df772e6dfbf4934329e2f03a9174070b70d0883886b435 deleted file mode 100644 index 0959dd7e..00000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/63/7e252fa8460c2278df772e6dfbf4934329e2f03a9174070b70d0883886b435 +++ /dev/null @@ -1,11 +0,0 @@ -I"<p>This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at <a href="https://jekyllrb.com/">jekyllrb.com</a></p> - -<p>You can find the source code for Minima at GitHub: -<a href="https://github.com/jekyll">jekyll</a> / -<a href="https://github.com/jekyll/minima">minima</a></p> - -<p>You can find the source code for Jekyll at GitHub: -<a href="https://github.com/jekyll">jekyll</a> / -<a href="https://github.com/jekyll/jekyll">jekyll</a></p> - -:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/ca/b8b278c7e75237af7ad8243b9c3bcb930892a05977cdc36c8f5e36f4599f7b b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/ca/b8b278c7e75237af7ad8243b9c3bcb930892a05977cdc36c8f5e36f4599f7b deleted file mode 100644 index 5a8e0167..00000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/ca/b8b278c7e75237af7ad8243b9c3bcb930892a05977cdc36c8f5e36f4599f7b +++ /dev/null @@ -1,2 +0,0 @@ -I"{<p>You’ll find this post in your <code class="highlighter-rouge">_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code class="highlighter-rouge">jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p> -:ET \ No newline at end of file diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fd/aa4200cef2544ec568b25970b3a49cf9b4f3d7015485506ccda914caf9c5b9 b/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fd/aa4200cef2544ec568b25970b3a49cf9b4f3d7015485506ccda914caf9c5b9 deleted file mode 100644 index 94c9c223..00000000 --- a/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fd/aa4200cef2544ec568b25970b3a49cf9b4f3d7015485506ccda914caf9c5b9 +++ /dev/null @@ -1,19 +0,0 @@ -I"´<p>You’ll find this post in your <code class="highlighter-rouge">_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code class="highlighter-rouge">jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p> - -<p>Jekyll requires blog post files to be named according to the following format:</p> - -<p><code class="highlighter-rouge">YEAR-MONTH-DAY-title.MARKUP</code></p> - -<p>Where <code class="highlighter-rouge">YEAR</code> is a four-digit number, <code class="highlighter-rouge">MONTH</code> and <code class="highlighter-rouge">DAY</code> are both two-digit numbers, and <code class="highlighter-rouge">MARKUP</code> is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.</p> - -<p>Jekyll also offers powerful support for code snippets:</p> - -<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">print_hi</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span> - <span class="nb">puts</span> <span class="s2">"Hi, </span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2">"</span> -<span class="k">end</span> -<span class="n">print_hi</span><span class="p">(</span><span class="s1">'Tom'</span><span class="p">)</span> -<span class="c1">#=> prints 'Hi, Tom' to STDOUT.</span></code></pre></figure> - -<p>Check out the <a href="https://jekyllrb.com/docs/home">Jekyll docs</a> for more info on how to get the most out of Jekyll. File all bugs/feature requests at <a href="https://github.com/jekyll/jekyll">Jekyll’s GitHub repo</a>. If you have questions, you can ask them on <a href="https://talk.jekyllrb.com/">Jekyll Talk</a>.</p> - -:ET \ No newline at end of file diff --git a/_site/2018/06/13/arbre.html b/_site/2018/06/13/arbre.html deleted file mode 100644 index 39a21b3c..00000000 --- a/_site/2018/06/13/arbre.html +++ /dev/null @@ -1,325 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C 15 (Phosphorus) released, and open source case studies</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Frama-C 15 (Phosphorus) released, and open source case studies</span></h1> - - <address> - Andre - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include <stdio.h></code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include <stdio.h> - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout->__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout->__fc_FILE_data -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make <target>.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code><target>.parse</code>, <code><target>.eva</code>, -<code><target>.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load <target>.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p> - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/2018/06/13/pla.html b/_site/2018/06/13/pla.html deleted file mode 100644 index 39a21b3c..00000000 --- a/_site/2018/06/13/pla.html +++ /dev/null @@ -1,325 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C 15 (Phosphorus) released, and open source case studies</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Frama-C 15 (Phosphorus) released, and open source case studies</span></h1> - - <address> - Andre - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include <stdio.h></code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include <stdio.h> - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout->__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout->__fc_FILE_data -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make <target>.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code><target>.parse</code>, <code><target>.eva</code>, -<code><target>.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load <target>.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p> - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/2018/06/13/pomm.html b/_site/2018/06/13/pomm.html deleted file mode 100644 index 39a21b3c..00000000 --- a/_site/2018/06/13/pomm.html +++ /dev/null @@ -1,325 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C 15 (Phosphorus) released, and open source case studies</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Frama-C 15 (Phosphorus) released, and open source case studies</span></h1> - - <address> - Andre - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include <stdio.h></code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include <stdio.h> - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout->__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout->__fc_FILE_data -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make <target>.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code><target>.parse</code>, <code><target>.eva</code>, -<code><target>.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load <target>.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p> - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/2018/06/13/test.html b/_site/2018/06/13/test.html deleted file mode 100644 index 39a21b3c..00000000 --- a/_site/2018/06/13/test.html +++ /dev/null @@ -1,325 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C 15 (Phosphorus) released, and open source case studies</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Frama-C 15 (Phosphorus) released, and open source case studies</span></h1> - - <address> - Andre - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include <stdio.h></code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include <stdio.h> - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout->__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout->__fc_FILE_data -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make <target>.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code><target>.parse</code>, <code><target>.eva</code>, -<code><target>.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load <target>.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p> - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/404.html b/_site/404.html deleted file mode 100644 index d0e7aae7..00000000 --- a/_site/404.html +++ /dev/null @@ -1,55 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title></title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <style type="text/css" media="screen"> - .container { - margin: 10px auto; - max-width: 600px; - text-align: center; - } - h1 { - margin: 30px 0; - font-size: 4em; - line-height: 1; - letter-spacing: -1px; - } -</style> - -<div class="container"> - <h1>404</h1> - - <p><strong>Page not found :(</strong></p> - <p>The requested page could not be found.</p> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/about/index.html b/_site/about/index.html deleted file mode 100644 index 35a5ed0c..00000000 --- a/_site/about/index.html +++ /dev/null @@ -1,56 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>About</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <article class="post"> - - <header class="post-header"> - <h1 class="post-title">About</h1> - </header> - - <div class="post-content"> - <p>This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at <a href="https://jekyllrb.com/">jekyllrb.com</a></p> - -<p>You can find the source code for Minima at GitHub: -<a href="https://github.com/jekyll">jekyll</a> / -<a href="https://github.com/jekyll/minima">minima</a></p> - -<p>You can find the source code for Jekyll at GitHub: -<a href="https://github.com/jekyll">jekyll</a> / -<a href="https://github.com/jekyll/jekyll">jekyll</a></p> - - - </div> - -</article> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/assets/css/blog.css b/_site/assets/css/blog.css deleted file mode 100755 index 1aa5edc9..00000000 --- a/_site/assets/css/blog.css +++ /dev/null @@ -1,753 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -/* Default Page styles */ -.blogsPage { - display: block; - text-align: left; - padding-top: 10px; -} -@media (min-width: 768px) { - .blogsPage { - padding-top: 30px; - } -} -@media (min-width: 1280px) { - .blogsPage { - padding-top: 50px; - } -} -.blogsPage h1 { - padding-top: 0; - text-transform: none; - text-align: center; -} -@media (min-width: 768px) { - .blogsPage h1 { - text-align: left; - padding-bottom: 20px; - text-transform: uppercase; - } - .blogsPage h1 strong { - font-size: 100%; - } -} -@media (min-width: 1280px) { - .blogsPage h1 { - padding-bottom: 30px; - } -} -@media (max-width: 767px) { - .blogsPage .contentWrap { - max-width: 440px; - margin: 0 auto; - } -} -@media (min-width: 768px) { - .blogsPage .contentWrap { - width: 96%; - } -} -@media (min-width: 1024px) { - .blogsPage .contentWrap { - width: 85%; - } -} -.blogsPage .backNavigation { - position: static; - transform: none; -} -@media (min-width: 1600px) { - .blogsPage .backNavigation { - position: absolute; - transform: translateX(-100%); - display: block; - margin-top: 22px; - padding-right: 25px; - } -} -.searchForm { - box-sizing: border-box; - position: relative; - margin-bottom: 30px; - width: 100%; - max-width: 350px; -} -.searchForm input[type="text"] { - border: 1px solid transparent; - border-bottom: 2px solid #b3b3b3; - box-sizing: border-box; - display: block; - width: 100%; - position: relative; - color: #555555; - font-size: 16px; - font-weight: 600; - line-height: 38px; - height: 40px; - padding: 0 46px 0 0; - margin: 0; - transition: all 0.4s; -} -@media (max-width: 767px) { - .searchForm input[type="text"]:focus { - border-bottom-color: #f36521; - } -} -@media (min-width: 768px) { - .searchForm input[type="text"] { - border-bottom: 1px solid #b3b3b3; - height: 44px; - padding-right: 32px; - } - .searchForm input[type="text"]:focus { - border-bottom-color: #f36521; - } -} -@media (min-width: 1280px) { - .searchForm input[type="text"] { - height: 50px; - line-height: 50px; - } -} -.searchForm .submit { - background: #fff; - border: 0 none; - border-radius: 0; - box-shadow: none; - box-sizing: border-box; - cursor: pointer; - color: #555555; - display: block; - line-height: 38px; - font-size: 19px; - height: 38px; - width: 38px; - text-align: right; - padding: 0 6px; - position: absolute; - right: 0; - top: 0; - text-shadow: none; - outline: 0 none; - transition: all 0.35s; - z-index: 2; -} -@media (min-width: 768px) { - .searchForm .submit { - top: 3px; - } -} -@media (min-width: 1280px) { - .searchForm .submit { - top: 6px; - } -} -.searchForm .submit:before { - content: ''; - display: block; - position: absolute; - width: 120%; - height: 120%; - right: -20%; - top: -10%; -} -.nonTouch .searchForm .submit:hover { - color: #f36521; -} -@media (min-width: 768px) { - .searchForm.mobileOnly { - display: none; - } -} -.postLists article { - margin-bottom: 50px; - font-size: 16px; - line-height: 1.4; -} -@media (min-width: 1280px) { - .postLists article { - margin-bottom: 60px; - } -} -@media (min-width: 1890px) { - .postLists article { - font-size: 17px; - margin-bottom: 75px; - } -} -.postLists article figure { - width: 100%; - padding-bottom: 60%; - position: relative; -} -@media (min-width: 768px) { - .postLists article figure { - padding-bottom: 45%; - } -} -@media (min-width: 1024px) { - .postLists article figure { - padding-bottom: 36%; - } -} -@media (min-width: 1280px) { - .postLists article figure { - padding-bottom: 25%; - } -} -.postLists article figure .img { - position: absolute; - top: 0; - bottom: 0; - color: transparent; - font-size: 0; -} -.postLists article .content { - background: #fff; - box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1); - position: relative; - margin: -34% 20px 0; - padding: 20px; - z-index: 2; -} -@media (min-width: 1024px) { - .postLists article .content { - margin: -16% 20px 0; - } -} -@media (min-width: 1024px) { - .postLists article .content { - margin: -14% 25px 0; - padding: 25px; - } -} -@media (min-width: 1280px) { - .postLists article .content { - margin: -50px 33px 0; - padding: 27px 32px; - } -} -.postLists article .content > a { - color: #d6be98; - border-bottom: 1px solid; - display: table; - margin-left: auto; - margin-bottom: 5px; - transition: all 0.35s; -} -.nonTouch .postLists article .content > a:hover { - color: #f36521; -} -.postLists article h3 { - line-height: 1.3; - text-transform: uppercase; - margin: 0 0 20px; -} -@media (min-width: 1024px) { - .postLists article h3 { - font-size: 23px; - } -} -@media (min-width: 1600px) { - .postLists article h3 { - font-size: 24px; - } -} -@media (min-width: 1890px) { - .postLists article h3 { - font-size: 27px; - } -} -.postLists article h3 a { - color: #333; - transition: all 0.35s; -} -.nonTouch .postLists article h3 a:hover { - color: #f36521; -} -.postLists article h3 address { - color: #a1a1a1; - display: block; - font-size: 94%; - font-weight: 300; - font-style: normal; - width: 80%; -} -@media (min-width: 768px) { - .postLists article h3 address { - font-size: 70%; - } -} -@media (min-width: 1600px) { - .postLists article h3 address { - font-size: 65%; - } -} -.postLists article p { - color: #5f5f5f; - margin: 0 0 16px; -} -@media (min-width: 768px) { - .blogsSection { - display: flex; - justify-content: space-between; - } -} -@media (min-width: 1280px) { - .blogsSection { - margin-bottom: 40px; - } -} -@media (min-width: 768px) { - .blogsSection .blogsSectionContent { - width: 60%; - flex: 1 1 60%; - padding-right: 40px; - } -} -@media (min-width: 1280px) { - .blogsSection .blogsSectionContent { - padding-right: 60px; - } -} -.blogsSection aside { - padding: 0 20px 60px; - position: relative; -} -@media (min-width: 768px) { - .blogsSection aside { - width: 285px; - flex: 0 1 285px; - padding-left: 0; - padding-right: 0; - } -} -@media (min-width: 1600px) { - .blogsSection aside { - width: 310px; - flex-basis: 310px; - } -} -@media (min-width: 768px) { - .blogsSection aside .sidebarWrap.sticky { - width: 285px; - position: fixed; - top: 10px; - } -} -@media (min-width: 1600px) { - .blogsSection aside .sidebarWrap.sticky { - width: 310px; - } -} -.blogsSection aside .searchForm { - display: none; -} -@media (min-width: 768px) { - .blogsSection aside .searchForm { - display: block; - margin-bottom: 50px; - } -} -.blogsSection aside h4 { - font-size: 18px; - text-transform: uppercase; - margin-bottom: 8px; -} -@media (min-width: 1024px) { - .blogsSection aside h4 { - font-size: 20px; - } -} -@media (min-width: 1280px) { - .blogsSection aside h4 { - font-size: 22px; - } -} -@media (min-width: 1890px) { - .blogsSection aside h4 { - font-size: 23px; - } -} -.singleBlogPage .blogsSection aside { - padding-left: 0; - padding-right: 0; -} -.tagsList { - margin-bottom: 40px; -} -@media (min-width: 768px) { - .tagsList { - margin-bottom: 50px; - } -} -.tagsList nav { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - margin: 0 -6px; -} -.tagsList nav a { - flex: 1 1 auto; - text-align: center; - margin: 6px; - padding: 8px 25px; - font-size: 15px; - border-radius: 50px; - transition: all 0.35s; -} -@media (min-width: 1024px) { - .tagsList nav a { - font-size: 16px; - padding: 10px 25px; - } -} -@media (min-width: 1890px) { - .tagsList nav a { - font-size: 17px; - padding: 12px 27px; - } -} -.tagsList nav a:nth-child(even) { - margin-left: 8px; -} -.tagsList nav a:nth-last-child(odd) { - flex-grow: 0; -} -.nonTouch .tagsList nav a:hover { - color: #f36521; -} -.feedsList a { - border-bottom: 1px solid; - display: inline-block; - font-size: 16px; - margin-right: 12px; - vertical-align: top; - transition: all 0.35s; -} -@media (min-width: 1280px) { - .feedsList a { - font-size: 18px; - } -} -.nonTouch .feedsList a:hover { - color: #f36521; -} -/* Single Post page */ -.singleBlogPage h1 { - font-size: 22px; - text-align: left; - padding: 15px 0 20px; -} -@media (min-width: 768px) { - .singleBlogPage h1 { - font-size: 23px; - } -} -@media (min-width: 1024px) { - .singleBlogPage h1 { - font-size: 25px; - } -} -@media (min-width: 1280px) { - .singleBlogPage h1 { - font-size: 28px; - } -} -@media (min-width: 1600px) { - .singleBlogPage h1 { - font-size: 30px; - } -} -@media (min-width: 1890px) { - .singleBlogPage h1 { - font-size: 32px; - } -} -.singleBlogPage h1 address { - color: #a1a1a1; - display: block; - font-size: 12px; - font-weight: 300; - font-style: normal; - margin-top: 4px; - text-transform: uppercase; -} -@media (min-width: 768px) { - .singleBlogPage h1 address { - font-size: 13px; - } -} -@media (min-width: 1600px) { - .singleBlogPage h1 address { - font-size: 14px; - } -} -.singleBlogPage .articleHead { - margin-bottom: 15px; -} -.singleBlogPage .articleHead figure { - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); -} -.singleBlogPage .articleHead figure img, -.singleBlogPage .articleHead figure iframe, -.singleBlogPage .articleHead figure video { - object-fit: cover; - display: block; - width: 100%; -} -@media (min-width: 768px) { - .singleBlogPage .articleHead figure { - box-shadow: 0px 17px 34px rgba(0, 0, 0, 0.25); - margin-bottom: 40px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .articleHead figure { - box-shadow: rgba(0, 0, 0, 0.3) 0px 20px 50px 0px; - margin-bottom: 50px; - } -} -@media (min-width: 768px) { - .singleBlogPage .articleHead { - margin-bottom: 30px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .articleHead { - margin-bottom: 45px; - } -} -.singleBlogPage .breadcrumb { - padding-bottom: 10px; -} -@media (min-width: 768px) { - .singleBlogPage .singleBlog { - margin-bottom: 30px; - } -} -.singleBlogPage .content { - font-size: 15px; -} -@media (min-width: 768px) { - .singleBlogPage .content { - font-size: 16px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .content { - font-size: 17px; - } -} -@media (min-width: 1890px) { - .singleBlogPage .content { - font-size: 18px; - } -} -.singleBlogPage .content h1 { - font-size: 1.65em; - text-transform: none; -} -.singleBlogPage .content h2, -.singleBlogPage .content h3 { - font-size: 1.4em; - text-transform: none; -} -.singleBlogPage .content h4, -.singleBlogPage .content h5 { - font-size: 1.2em; -} -.singleBlogPage .content p { - margin: 1.6em 0; -} -.singleBlogPage .content a { - border-bottom: 1px solid; - transition: all 0.35s; -} -.nonTouch .singleBlogPage .content a:hover { - color: #f36521; -} -.singleBlogPage .content ul { - margin-bottom: 2em; -} -.singleBlogPage .content ul li { - padding-left: 16px; - position: relative; - margin-bottom: 4px; -} -.singleBlogPage .content ul li:before { - content: '\e906'; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 2px; - top: 0; - font-size: 75%; - line-height: 1.7; - color: #f79929; - text-shadow: -1px 0 0; -} -.singleBlogPage .content ol { - margin-bottom: 2em; - padding-left: 17px; -} -.singleBlogPage .content ol li { - position: relative; - margin-bottom: 4px; -} -.post-edit-link { - display: none !important; -} -/* Searc content */ -h2.searchTitle { - padding: 0px 0 16px; - margin: 0; -} -h2.searchTitle > span { - display: inline-block; -} -h2.searchTitle span:first-child { - color: #d1d1d1; - font-size: 14px; - font-weight: 700; -} -h2.searchTitle .search-terms { - color: #555555; - font-size: 30px; - font-weight: 400; -} -@media (min-width: 1024px) { - h2.searchTitle { - font-size: 25px; - font-weight: 700; - } - h2.searchTitle span:first-child, - h2.searchTitle .search-terms { - font-size: inherit; - font-weight: 600; - display: inline-block; - vertical-align: middle; - } -} -@media (min-width: 1600px) { - h2.searchTitle { - font-size: 28px; - } -} -@media (min-width: 1890px) { - h2.searchTitle { - font-size: 30px; - } -} -.searchList { - margin-bottom: 50px; -} -.searchItem { - border-bottom: 1px solid #eee; - padding: 2.4em 0; - font-size: 15px; -} -@media (min-width: 1600px) { - .searchItem { - font-size: 16px; - } -} -.searchItem h4 { - font-size: 20px; - text-transform: uppercase; - font-weight: 400; - margin: 0; - padding: 0; -} -.searchItem h4 a { - color: #333; - transition: all 0.35s; -} -.nonTouch .searchItem h4 a:hover { - color: #f36521; -} -@media (min-width: 1600px) { - .searchItem h4 { - font-size: 22px; - } -} -.searchItem p { - margin: 0.9em 0 0; - line-height: 1.5; - font-weight: 600; - color: #a1a1a1; - font-size: 1em; -} -@media (min-width: 1600px) { - .searchItem p { - font-size: 1.1em; - } -} -.searchItem .badge { - background: #3797d6; - font-size: 11px; - display: inline-block; - vertical-align: middle; - padding: 4px 10px 3px; - color: #fff; - border-radius: 30px; - line-height: 1; - position: relative; - top: -1px; -} -.searchItem .badge.badge-post { - background: #555; -} -.searchItem .badge.badge-page { - background: #f36721; -} -.pagination { - display: table; - margin: 0 auto 40px; -} -.pagination > a, -.pagination > span { - background: #dedede; - color: #868282; - border-radius: 30px; - display: inline-block; - vertical-align: top; - font-size: 14px; - padding: 7px 13px; - margin: 0 5px; -} -.pagination > a { - transition: all 0.35s; -} -.nonTouch .pagination > a:hover { - background: #f26521; - color: #fff; - box-shadow: 0 3px 3px rgba(0, 0, 0, 0.25); - transform: translateY(-3px); -} -.nonTouch .pagination > a:active { - transition: all 0s; - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - transform: translateY(0px); -} -.pagination > .current { - background: #f26521; - color: #fff; -} diff --git a/_site/assets/css/careers.css b/_site/assets/css/careers.css deleted file mode 100755 index c5c27e5d..00000000 --- a/_site/assets/css/careers.css +++ /dev/null @@ -1,858 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -/* Default Page styles */ -.pageDetail { - padding-top: 40px; -} -@media (min-width: 768px) { - .pageDetail { - padding-top: 70px; - } -} -@media (min-width: 768px) { - .pageDetail .bgTextbig { - font-size: 150px; - } -} -@media (min-width: 1024px) { - .pageDetail .bgTextbig { - font-size: 200px; - } -} -@media (min-width: 1280px) { - .pageDetail .bgTextbig { - font-size: 260px; - } -} -@media (min-width: 1600px) { - .pageDetail .bgTextbig { - font-size: 320px; - } -} -.pageCareers { - padding-top: 40px; -} -@media (min-width: 768px) { - .pageCareers { - padding-top: 70px; - } -} -@media (min-width: 768px) { - .pageCareers .bgTextbig { - font-size: 150px; - } -} -@media (min-width: 1024px) { - .pageCareers .bgTextbig { - font-size: 200px; - } -} -@media (min-width: 1280px) { - .pageCareers .bgTextbig { - font-size: 260px; - } -} -@media (min-width: 1600px) { - .pageCareers .bgTextbig { - font-size: 320px; - } -} -.blogsPage { - display: block; - text-align: left; - padding-top: 10px; -} -@media (min-width: 768px) { - .blogsPage { - padding-top: 30px; - } -} -@media (min-width: 1280px) { - .blogsPage { - padding-top: 50px; - } -} -.blogsPage h1 { - padding-top: 0; - text-transform: none; - text-align: center; -} -@media (min-width: 768px) { - .blogsPage h1 { - text-align: left; - padding-bottom: 20px; - text-transform: uppercase; - } - .blogsPage h1 strong { - font-size: 100%; - } -} -@media (min-width: 1280px) { - .blogsPage h1 { - padding-bottom: 30px; - } -} -@media (max-width: 767px) { - .blogsPage .contentWrap { - max-width: 440px; - margin: 0 auto; - } -} -@media (min-width: 768px) { - .blogsPage .contentWrap { - width: 96%; - } -} -@media (min-width: 1024px) { - .blogsPage .contentWrap { - width: 85%; - } -} -.blogsPage .backNavigation { - position: static; - transform: none; -} -@media (min-width: 1600px) { - .blogsPage .backNavigation { - position: absolute; - transform: translateX(-100%); - display: block; - margin-top: 22px; - padding-right: 25px; - } -} -.searchForm { - box-sizing: border-box; - position: relative; - margin-bottom: 30px; - width: 100%; - max-width: 350px; -} -.searchForm input[type="text"] { - border: 1px solid transparent; - border-bottom: 2px solid #b3b3b3; - box-sizing: border-box; - display: block; - width: 100%; - position: relative; - color: #555555; - font-size: 16px; - font-weight: 600; - line-height: 38px; - height: 40px; - padding: 0 46px 0 0; - margin: 0; - transition: all 0.4s; -} -@media (max-width: 767px) { - .searchForm input[type="text"]:focus { - border-bottom-color: #f36521; - } -} -@media (min-width: 768px) { - .searchForm input[type="text"] { - border-bottom: 1px solid #b3b3b3; - height: 44px; - padding-right: 32px; - } - .searchForm input[type="text"]:focus { - border-bottom-color: #f36521; - } -} -@media (min-width: 1280px) { - .searchForm input[type="text"] { - height: 50px; - line-height: 50px; - } -} -.searchForm .submit { - background: #fff; - border: 0 none; - border-radius: 0; - box-shadow: none; - box-sizing: border-box; - cursor: pointer; - color: #555555; - display: block; - line-height: 38px; - font-size: 19px; - height: 38px; - width: 38px; - text-align: right; - padding: 0 6px; - position: absolute; - right: 0; - top: 0; - text-shadow: none; - outline: 0 none; - transition: all 0.35s; - z-index: 2; -} -@media (min-width: 768px) { - .searchForm .submit { - top: 3px; - } -} -@media (min-width: 1280px) { - .searchForm .submit { - top: 6px; - } -} -.searchForm .submit:before { - content: ''; - display: block; - position: absolute; - width: 120%; - height: 120%; - right: -20%; - top: -10%; -} -.nonTouch .searchForm .submit:hover { - color: #f36521; -} -@media (min-width: 768px) { - .searchForm.mobileOnly { - display: none; - } -} -.postLists article { - margin-bottom: 50px; - font-size: 16px; - line-height: 1.4; -} -@media (min-width: 1280px) { - .postLists article { - margin-bottom: 60px; - } -} -@media (min-width: 1890px) { - .postLists article { - font-size: 17px; - margin-bottom: 75px; - } -} -.postLists article figure { - width: 100%; - padding-bottom: 60%; - position: relative; -} -@media (min-width: 768px) { - .postLists article figure { - padding-bottom: 45%; - } -} -@media (min-width: 1024px) { - .postLists article figure { - padding-bottom: 36%; - } -} -@media (min-width: 1280px) { - .postLists article figure { - padding-bottom: 25%; - } -} -.postLists article figure .img { - position: absolute; - top: 0; - bottom: 0; - color: transparent; - font-size: 0; -} -.postLists article .content { - background: #fff; - box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1); - position: relative; - margin: -34% 20px 0; - padding: 20px; - z-index: 2; -} -@media (min-width: 1024px) { - .postLists article .content { - margin: -16% 20px 0; - } -} -@media (min-width: 1024px) { - .postLists article .content { - margin: -14% 25px 0; - padding: 25px; - } -} -@media (min-width: 1280px) { - .postLists article .content { - margin: -50px 33px 0; - padding: 27px 32px; - } -} -.postLists article .content > a { - color: #d6be98; - border-bottom: 1px solid; - display: table; - margin-left: auto; - margin-bottom: 5px; - transition: all 0.35s; -} -.nonTouch .postLists article .content > a:hover { - color: #f36521; -} -.postLists article h3 { - line-height: 1.3; - text-transform: uppercase; - margin: 0 0 20px; -} -@media (min-width: 1024px) { - .postLists article h3 { - font-size: 23px; - } -} -@media (min-width: 1600px) { - .postLists article h3 { - font-size: 24px; - } -} -@media (min-width: 1890px) { - .postLists article h3 { - font-size: 27px; - } -} -.postLists article h3 a { - color: #333; - transition: all 0.35s; -} -.nonTouch .postLists article h3 a:hover { - color: #f36521; -} -.postLists article h3 address { - color: #a1a1a1; - display: block; - font-size: 94%; - font-weight: 300; - font-style: normal; - width: 80%; -} -@media (min-width: 768px) { - .postLists article h3 address { - font-size: 70%; - } -} -@media (min-width: 1600px) { - .postLists article h3 address { - font-size: 65%; - } -} -.postLists article p { - color: #5f5f5f; - margin: 0 0 16px; -} -@media (min-width: 768px) { - .blogsSection { - display: flex; - justify-content: space-between; - } -} -@media (min-width: 1280px) { - .blogsSection { - margin-bottom: 40px; - } -} -@media (min-width: 768px) { - .blogsSection .blogsSectionContent { - width: 60%; - flex: 1 1 60%; - padding-right: 40px; - } -} -@media (min-width: 1280px) { - .blogsSection .blogsSectionContent { - padding-right: 60px; - } -} -.blogsSection aside { - padding: 0 20px 60px; - position: relative; -} -@media (min-width: 768px) { - .blogsSection aside { - width: 285px; - flex: 0 1 285px; - padding-left: 0; - padding-right: 0; - } -} -@media (min-width: 1600px) { - .blogsSection aside { - width: 310px; - flex-basis: 310px; - } -} -@media (min-width: 768px) { - .blogsSection aside .sidebarWrap.sticky { - width: 285px; - position: fixed; - top: 10px; - } -} -@media (min-width: 1600px) { - .blogsSection aside .sidebarWrap.sticky { - width: 310px; - } -} -.blogsSection aside .searchForm { - display: none; -} -@media (min-width: 768px) { - .blogsSection aside .searchForm { - display: block; - margin-bottom: 50px; - } -} -.blogsSection aside h4 { - font-size: 18px; - text-transform: uppercase; - margin-bottom: 8px; -} -@media (min-width: 1024px) { - .blogsSection aside h4 { - font-size: 20px; - } -} -@media (min-width: 1280px) { - .blogsSection aside h4 { - font-size: 22px; - } -} -@media (min-width: 1890px) { - .blogsSection aside h4 { - font-size: 23px; - } -} -.singleBlogPage .blogsSection aside { - padding-left: 0; - padding-right: 0; -} -.tagsList { - margin-bottom: 40px; -} -@media (min-width: 768px) { - .tagsList { - margin-bottom: 50px; - } -} -.tagsList nav { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - margin: 0 -6px; -} -.tagsList nav a { - flex: 1 1 auto; - text-align: center; - margin: 6px; - padding: 8px 25px; - font-size: 15px; - border-radius: 50px; - transition: all 0.35s; -} -@media (min-width: 1024px) { - .tagsList nav a { - font-size: 16px; - padding: 10px 25px; - } -} -@media (min-width: 1890px) { - .tagsList nav a { - font-size: 17px; - padding: 12px 27px; - } -} -.tagsList nav a:nth-child(even) { - margin-left: 8px; -} -.tagsList nav a:nth-last-child(odd) { - flex-grow: 0; -} -.nonTouch .tagsList nav a:hover { - color: #f36521; -} -.feedsList a { - border-bottom: 1px solid; - display: inline-block; - font-size: 16px; - margin-right: 12px; - vertical-align: top; - transition: all 0.35s; -} -@media (min-width: 1280px) { - .feedsList a { - font-size: 18px; - } -} -.nonTouch .feedsList a:hover { - color: #f36521; -} -/* Single Post page */ -.singleBlogPage h1 { - font-size: 22px; - text-align: left; - padding: 15px 0 20px; -} -@media (min-width: 768px) { - .singleBlogPage h1 { - font-size: 23px; - } -} -@media (min-width: 1024px) { - .singleBlogPage h1 { - font-size: 25px; - } -} -@media (min-width: 1280px) { - .singleBlogPage h1 { - font-size: 28px; - } -} -@media (min-width: 1600px) { - .singleBlogPage h1 { - font-size: 30px; - } -} -@media (min-width: 1890px) { - .singleBlogPage h1 { - font-size: 32px; - } -} -.singleBlogPage h1 address { - color: #a1a1a1; - display: block; - font-size: 12px; - font-weight: 300; - font-style: normal; - margin-top: 4px; - text-transform: uppercase; -} -@media (min-width: 768px) { - .singleBlogPage h1 address { - font-size: 13px; - } -} -@media (min-width: 1600px) { - .singleBlogPage h1 address { - font-size: 14px; - } -} -.singleBlogPage .articleHead { - margin-bottom: 15px; -} -.singleBlogPage .articleHead figure { - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); -} -.singleBlogPage .articleHead figure img, -.singleBlogPage .articleHead figure iframe, -.singleBlogPage .articleHead figure video { - object-fit: cover; - display: block; - width: 100%; -} -@media (min-width: 768px) { - .singleBlogPage .articleHead figure { - box-shadow: 0px 17px 34px rgba(0, 0, 0, 0.25); - margin-bottom: 40px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .articleHead figure { - box-shadow: rgba(0, 0, 0, 0.3) 0px 20px 50px 0px; - margin-bottom: 50px; - } -} -@media (min-width: 768px) { - .singleBlogPage .articleHead { - margin-bottom: 30px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .articleHead { - margin-bottom: 45px; - } -} -.singleBlogPage .breadcrumb { - padding-bottom: 10px; -} -@media (min-width: 768px) { - .singleBlogPage .singleBlog { - margin-bottom: 30px; - } -} -.singleBlogPage .content { - font-size: 15px; -} -@media (min-width: 768px) { - .singleBlogPage .content { - font-size: 16px; - } -} -@media (min-width: 1600px) { - .singleBlogPage .content { - font-size: 17px; - } -} -@media (min-width: 1890px) { - .singleBlogPage .content { - font-size: 18px; - } -} -.singleBlogPage .content h1 { - font-size: 1.65em; - text-transform: none; -} -.singleBlogPage .content h2, -.singleBlogPage .content h3 { - font-size: 1.4em; - text-transform: none; -} -.singleBlogPage .content h4, -.singleBlogPage .content h5 { - font-size: 1.2em; -} -.singleBlogPage .content p { - margin: 1.6em 0; -} -.singleBlogPage .content a { - border-bottom: 1px solid; - transition: all 0.35s; -} -.nonTouch .singleBlogPage .content a:hover { - color: #f36521; -} -.singleBlogPage .content ul { - margin-bottom: 2em; -} -.singleBlogPage .content ul li { - padding-left: 16px; - position: relative; - margin-bottom: 4px; -} -.singleBlogPage .content ul li:before { - content: '\e906'; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 2px; - top: 0; - font-size: 75%; - line-height: 1.7; - color: #f79929; - text-shadow: -1px 0 0; -} -.singleBlogPage .content ol { - margin-bottom: 2em; - padding-left: 17px; -} -.singleBlogPage .content ol li { - position: relative; - margin-bottom: 4px; -} -.post-edit-link { - display: none !important; -} -/* Searc content */ -h2.searchTitle { - padding: 0px 0 16px; - margin: 0; -} -h2.searchTitle > span { - display: inline-block; -} -h2.searchTitle span:first-child { - color: #d1d1d1; - font-size: 14px; - font-weight: 700; -} -h2.searchTitle .search-terms { - color: #555555; - font-size: 30px; - font-weight: 400; -} -@media (min-width: 1024px) { - h2.searchTitle { - font-size: 25px; - font-weight: 700; - } - h2.searchTitle span:first-child, - h2.searchTitle .search-terms { - font-size: inherit; - font-weight: 600; - display: inline-block; - vertical-align: middle; - } -} -@media (min-width: 1600px) { - h2.searchTitle { - font-size: 28px; - } -} -@media (min-width: 1890px) { - h2.searchTitle { - font-size: 30px; - } -} -.searchList { - margin-bottom: 50px; -} -.searchItem { - border-bottom: 1px solid #eee; - padding: 2.4em 0; - font-size: 15px; -} -@media (min-width: 1600px) { - .searchItem { - font-size: 16px; - } -} -.searchItem h4 { - font-size: 20px; - text-transform: uppercase; - font-weight: 400; - margin: 0; - padding: 0; -} -.searchItem h4 a { - color: #333; - transition: all 0.35s; -} -.nonTouch .searchItem h4 a:hover { - color: #f36521; -} -@media (min-width: 1600px) { - .searchItem h4 { - font-size: 22px; - } -} -.searchItem p { - margin: 0.9em 0 0; - line-height: 1.5; - font-weight: 600; - color: #a1a1a1; - font-size: 1em; -} -@media (min-width: 1600px) { - .searchItem p { - font-size: 1.1em; - } -} -.searchItem .badge { - background: #3797d6; - font-size: 11px; - display: inline-block; - vertical-align: middle; - padding: 4px 10px 3px; - color: #fff; - border-radius: 30px; - line-height: 1; - position: relative; - top: -1px; -} -.searchItem .badge.badge-post { - background: #555; -} -.searchItem .badge.badge-page { - background: #f36721; -} -.pagination { - display: table; - margin: 0 auto 40px; -} -.pagination > a, -.pagination > span { - background: #dedede; - color: #868282; - border-radius: 30px; - display: inline-block; - vertical-align: top; - font-size: 14px; - padding: 7px 13px; - margin: 0 5px; -} -.pagination > a { - transition: all 0.35s; -} -.nonTouch .pagination > a:hover { - background: #f26521; - color: #fff; - box-shadow: 0 3px 3px rgba(0, 0, 0, 0.25); - transform: translateY(-3px); -} -.nonTouch .pagination > a:active { - transition: all 0s; - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - transform: translateY(0px); -} -.pagination > .current { - background: #f26521; - color: #fff; -} - -.careerList { - padding:0 10px; - margin-bottom:40px; - color:#333 -} -@media (min-width:600px) { - .careerList { - display:-webkit-box; - display:-ms-flexbox; - display:flex; - -ms-flex-wrap:wrap; - flex-wrap:wrap - } -} -@media (min-width:1280px) { - .careerList { - padding:0 - } -} -.careerList .listItem { - display:block; - color:inherit -} -@media (min-width:600px) { - .careerList .listItem { - width:49%; - margin:0 .5% 1% - } -} -@media (min-width:1024px) { - .careerList .listItem { - width:32.8%; - margin:0 .25% .5% - } -} -.careerList .listItem ul { - position:relative; - color:#a1a1a1; - font-size:14px -} -@media (min-width:1280px) { - .careerList .listItem ul { - font-size:16px - } -} -.careerList .listItem ul li { - margin-bottom:5px -} \ No newline at end of file diff --git a/_site/assets/css/contact.css b/_site/assets/css/contact.css deleted file mode 100755 index a1a21dae..00000000 --- a/_site/assets/css/contact.css +++ /dev/null @@ -1,807 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -.pageContact { - padding-top: 40px; -} -@media (min-width: 768px) { - .pageContact { - padding-top: 70px; - } -} -@media (min-width: 768px) { - .pageContact .bgTextbig { - font-size: 150px; - } -} -@media (min-width: 1024px) { - .pageContact .bgTextbig { - font-size: 200px; - } -} -@media (min-width: 1280px) { - .pageContact .bgTextbig { - font-size: 260px; - } -} -@media (min-width: 1600px) { - .pageContact .bgTextbig { - font-size: 320px; - } -} -.pageContact h1 { - margin: 0 0 60px; -} -@media (min-width: 768px) { - .pageContact h1 { - padding-left: 30px; - } -} -@media (min-width: 1280px) { - .pageContact h1 { - padding-left: 70px; - } -} -.pageContact form { - padding: 0 30px; - font-size: 18px; - margin-bottom: 50px; -} -@media (min-width: 768px) { - .pageContact form { - display: table; - width: 100%; - padding: 0; - } -} -@media (min-width: 768px) { - .pageContact form > div { - width: 50%; - float: left; - } - .pageContact form > div.leftBlock { - padding: 0 70px 0 30px; - } -} -@media (min-width: 1280px) { - .pageContact form > div.leftBlock { - padding-left: 70px; - } -} -.pageContact form .formALert { - text-align: center; - display: table; - padding: 6px 3px; - margin: -33px auto 15px; - font-size: 14px; - font-weight: 600; - border-bottom: 1px solid currentColor; - border-top: 1px solid currentColor; - animation: shake 0.75s linear both; -} -@media (min-width: 768px) { - .pageContact form .formALert { - font-size: 16px; - } -} -.pageContact form .formALert.alertError { - color: #c00; -} -.pageContact form .formALert.alertSuccess { - color: #09ab2d; -} -.pageContact form .formALert.alertSuccess.fail { - color: #c00; -} -.pageContact .textbox { - display: block; - width: 100%; - margin-bottom: 25px; - height: 40px; - border: 0; - border-bottom: 2px solid #b3b3b3; - transition: border 0.4s, background 0.4s; -} -@media (min-width: 768px) { - .pageContact .textbox { - padding: 10px 0; - border-bottom: 1px solid #d1d1d1; - max-width: 410px; - } - .pageContact .textbox:focus { - border-bottom-color: #ebb853; - } -} -.pageContact .textbox.parsley-error { - border-color: #c00; -} -.pageContact .textbox:focus { - border-bottom-color: #ebb853; - outline: 0; -} -.pageContact .choose { - position: relative; - padding-left: 90px; - margin-bottom: 40px; - display: table; - width: 100%; -} -@media (min-width: 768px) { - .pageContact .choose { - padding-top: 25px; - } -} -@media (min-width: 1280px) { - .pageContact .choose { - padding-left: 0; - } -} -.pageContact .choose span { - position: absolute; - top: 0; - left: 0; -} -@media (min-width: 768px) { - .pageContact .choose span { - top: 25px; - } -} -@media (min-width: 1280px) { - .pageContact .choose span { - position: static; - margin-bottom: 22px; - display: block; - } -} -.pageContact .choose p { - line-height: 26px; - margin: 0 0 13px; -} -@media (min-width: 768px) { - .pageContact .choose p { - line-height: 20px; - } -} -@media (min-width: 1280px) { - .pageContact .choose p { - float: left; - margin-right: 28px; - } -} -.pageContact .choose label { - position: relative; - display: block; - padding: 0 0 0 36px; - font-size: 16px; - cursor: pointer; - user-select: none; -} -@media (min-width: 768px) { - .pageContact .choose label { - padding-left: 27px; - } -} -.pageContact .choose label:hover:before { - animation: bounceIn 0.75s linear both; -} -.pageContact .choose label:before, -.pageContact .choose label:after { - content: ''; - position: absolute; - border-radius: 50%; -} -.pageContact .choose label:before { - top: 0; - left: 0; - width: 26px; - height: 26px; - border: 2px solid #f7931c; - background-color: #fff; - box-sizing: border-box; -} -@media (min-width: 768px) { - .pageContact .choose label:before { - width: 20px; - height: 20px; - border-color: #ebb853; - } -} -.pageContact .choose label:after { - top: 5px; - left: 5px; - width: 16px; - height: 16px; - background-color: #f7931c; - display: none; - animation: bounceIn 0.75s linear both; -} -@media (min-width: 768px) { - .pageContact .choose label:after { - width: 10px; - height: 10px; - top: 5px; - left: 5px; - background-color: #dd9a78; - } -} -.pageContact .choose input[type="radio"] { - display: none; -} -.pageContact .choose input[type="radio"]:checked + label:after { - display: block; -} -@media (min-width: 768px) { - .pageContact .messageWrap { - padding: 3px 30px 0 0; - } -} -@media (min-width: 1280px) { - .pageContact .messageWrap { - padding-right: 70px; - } -} -.pageContact .messageWrap span { - display: block; - margin: 0 0 15px; -} -@media (min-width: 768px) { - .pageContact .messageWrap span { - /*margin-bottom: 0; - padding-bottom: 18px; - background: url('../img/bg-dotted-line.png') repeat-x left bottom;*/ - display: none; - } -} -.pageContact .messageWrap textarea { - display: block; - width: 100%; - height: 160px; - padding: 15px; - resize: none; - border: 2px solid #b3b3b3; - box-sizing: border-box; - transition: border 0.4s, background 0.4s; - margin-bottom: 30px; -} -@media (min-width: 768px) { - .pageContact .messageWrap textarea { - padding: 0; - border: 0 !important; - line-height: 57px; - height: 228px; - background: url('../img/bg-dotted-line.png'); - } - .pageContact .messageWrap textarea:focus { - background-image: url('../img/bg-dotted-focus.png'); - } - .pageContact .messageWrap textarea:focus ~ .submitWrap:before { - background-image: url('../img/bg-dotted-focus.png'); - } -} -.pageContact .messageWrap textarea.parsley-error { - border-color: #c00; -} -@media (min-width: 1280px) { - .pageContact .messageWrap textarea.parsley-error { - background-image: url('../img/bg-dotted-line-red.png'); - } - .pageContact .messageWrap textarea.parsley-error ~ .submitWrap:before { - background-image: url('../img/bg-dotted-line-red.png'); - } -} -.pageContact .messageWrap textarea:focus { - outline: 0; - border-color: #ebb853; -} -.pageContact .submitWrap { - text-align: center; -} -@media (min-width: 768px) { - .pageContact .submitWrap { - position: relative; - padding-left: 54%; - padding-bottom: 35px; - } - .pageContact .submitWrap:before { - content: ''; - position: absolute; - top: 37px; - left: 0; - width: 50%; - height: 2px; - background: url('../img/bg-dotted-line.png') repeat-x 0 100%; - border: 0 !important; - } -} -.pageContact .submitWrap button { - position: relative; - background-color: #f7931c; - background: linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - transition: background 0.4s; - box-shadow: 4px 10px 10px 3px rgba(249, 115, 51, 0.3); - display: inline-block; - width: 90px; - height: 90px; - border-radius: 50%; - border: 0; - cursor: pointer; -} -.nonTouch .pageContact .submitWrap button:hover { - background: #f7931c; - background: linear-gradient(-150deg, #f7931c 0%, #f26521 80%); -} -@media (min-width: 768px) { - .pageContact .submitWrap button { - width: 74px; - height: 74px; - display: block; - } -} -.pageContact .submitWrap button i { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-40%, -50%); - color: #fff; - font-size: 30px; -} -@media (min-width: 768px) { - .pageContact .submitWrap button i { - font-size: 22px; - } -} -.pageContact .locate { - position: relative; - margin-bottom: 50px; - box-shadow: 0 25px 50px 0 rgba(0, 0, 0, 0.15); -} -@media (min-width: 768px) { - .pageContact .locate { - overflow: hidden; - } -} -.pageContact .locate > figure { - margin: 0; - height: 250px; - background: url('../img/bg-contact-location.jpg') no-repeat center bottom; - background-size: cover; -} -@media (min-width: 768px) { - .pageContact .locate > figure { - width: 36%; - float: left; - } -} -@media (min-width: 1280px) { - .pageContact .locate > figure { - height: 320px; - } -} -.pageContact .locate > div { - height: 250px; - overflow: hidden; - background-color: #f4f4f4; -} -@media (min-width: 768px) { - .pageContact .locate > div { - width: 64%; - float: left; - } -} -@media (min-width: 1280px) { - .pageContact .locate > div { - height: 320px; - } -} -.pageContact .contactInfo { - position: relative; - padding: 0 15px 35px; - border-bottom: 1px solid #e3d5bc; - margin-bottom: 35px; - color: #000; -} -@media (max-width: 767px) { - .pageContact .contactInfo { - text-align: center; - } -} -@media (min-width: 1280px) { - .pageContact .contactInfo { - padding-left: 0; - padding-right: 0; - } -} -.pageContact .contactInfo h4 { - font-weight: 600; - font-size: 18px; - margin: 0 0 20px; -} -@media (min-width: 768px) { - .pageContact .contactInfo h4 { - text-transform: uppercase; - margin-bottom: 25px; - } -} -.pageContact .contactInfo p { - font-size: 14px; - margin: 0 0 30px; -} -@media (min-width: 768px) { - .pageContact .contactInfo p { - font-size: 16px; - margin: 0 0 35px; - } -} -.pageContact .contactInfo p:last-child { - margin: 0; -} -.pageContact .contactInfo p a { - position: relative; - display: table; - margin: 0 auto; - color: #f7931c; - font-size: 16px; - padding-bottom: 2px; - margin-bottom: 10px; - transition: 0.35s; -} -@media (min-width: 768px) { - .pageContact .contactInfo p a { - display: inline-block; - } -} -.pageContact .contactInfo p a:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0; - height: 1px; - background-color: #f7931c; - transition: 0.5s ease-out; -} -.pageContact .contactInfo p a:hover { - color: #333; -} -.pageContact .contactInfo p a:hover:before { - width: 100%; -} -.pageContact .contactInfo small { - display: inline-block; - padding: 0 20px; - font-size: 16px; - color: #f7931c; -} -@media (max-width: 767px) { - .pageContact .contactInfo small { - display: none; - } -} -.stackPost { - padding: 0 25px; - position: relative; -} -@media (min-width: 1280px) { - .stackPost { - padding: 0; - width: 68%; - float: left; - border: 0; - margin-bottom: 0; - } -} -.stackPost ul { - list-style-type: none; - padding: 0; -} -.stackPost .subTitle { - margin-bottom: 30px; -} -@media (max-width: 767px) { - .stackPost .subTitle { - text-align: center; - } -} -.stackPost h4 { - font-weight: 700; - font-size: 18px; -} -.stackPost li { - position: relative; - padding-left: 65px; - margin-bottom: 20px; - padding-bottom: 20px; - border-bottom: 1px solid #e4e6e8; -} -.stackPost .qus { - color: #0077dd; - display: block; - font-size: 16px; - margin-bottom: 8px; - transition: all 0.35s; -} -.nonTouch .stackPost .qus:hover { - text-decoration: underline; -} -.stackPost .ans { - display: block; - font-weight: 300; - font-size: 12px; - color: #484848; - word-wrap: break-word; -} -.stackPost aside { - position: absolute; - top: 0; - left: 0; - text-align: center; - color: #6a737c; - font-size: 12px; -} -.stackPost aside span { - display: block; - padding-top: 5px; - margin-top: 5px; - border-top: 1px solid currentColor; -} -.stackPost aside span:first-child { - padding-top: 0; - margin-top: 0; - border: 0; -} -.stackPost .tags { - margin: 0; - padding-top: 25px; -} -.stackPost .tags a { - display: inline-block; - margin-right: 2px; - margin-bottom: 5px; - background-color: #e1ecf4; - line-height: 24px; - font-size: 12px; - padding: 0 5px; - color: #6885c0; -} -.characterLimit { - position: absolute; - top: 203px; - right: 0; - font-size: 12px; - opacity: 0.7; -} -@media (min-width: 768px) { - .characterLimit { - top: 240px; - right: 30px; - } -} -@media (min-width: 1280px) { - .characterLimit { - right: 70px; - } -} -.usefulLinks { - position: relative; - padding: 0 25px; - border-bottom: 1px solid #e3d5bc; - margin-bottom: 30px; -} -@media (min-width: 1280px) { - .usefulLinks { - padding: 0; - width: 25%; - float: right; - margin-bottom: 0; - border: 0; - } -} -.usefulLinks ul { - list-style-type: none; - padding: 0; -} -.usefulLinks .subTitle { - margin-bottom: 30px; -} -@media (max-width: 767px) { - .usefulLinks .subTitle { - text-align: center; - } -} -@media (min-width: 1280px) { - .usefulLinks .subTitle { - margin-bottom: 50px; - } -} -.usefulLinks ul { - display: flex; - flex-wrap: wrap; - text-align: center; -} -@media (min-width: 1280px) { - .usefulLinks ul { - text-align: left; - } -} -.usefulLinks li { - padding: 0 10px 20px; - box-sizing: border-box; -} -@media only screen and (min-width: 375px) { - .usefulLinks li { - width: 50%; - } -} -@media (min-width: 1024px) { - .usefulLinks li { - width: 25%; - } -} -@media (min-width: 1280px) { - .usefulLinks li { - position: relative; - width: 100%; - padding-left: 90px; - min-height: 69px; - padding-bottom: 0; - margin-bottom: 50px; - } -} -.usefulLinks li a { - display: block; - color: #484848; - transition: 0.3s; -} -.usefulLinks li i { - display: inline-block; - width: 60px; - height: 60px; - background-size: contain; - background-repeat: no-repeat; - background-origin: center; -} -@media (min-width: 1280px) { - .usefulLinks li i { - position: absolute; - top: 50%; - left: 0; - margin: 0; - transform: translateY(-50%) scale(1); - } -} -.usefulLinks li .slideCaption { - font-size: 15px; - font-weight: 700; - margin: 0 0 5px; -} -.usefulLinks li .description { - font-size: 12px; -} -.parsley-errors-list { - margin: 0; - padding: 0; -} -.parsley-errors-list li { - color: #c00; - font-style: italic; - font-weight: 600; - font-size: 13px; - margin: 4px 0; -} -.inputWrap { - position: relative; - /*span { - opacity: 0; - position: absolute; - top: 15px; - right: 5px; - font-size: 14px; - transition: .3s; - - &:before { - content: ''; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - }*/ - /*.parsley-error + span, - .parsley-success + span { - opacity: 1; - }*/ - /*.parsley-error + span:before { - color: #c00; - content: '\ea0f'; - } - .parsley-success + span:before { - color: #4bb543; - content: '\ea10'; - }*/ -} -.inputWrap .textError, -.inputWrap .emailError { - position: absolute; - top: 100%; - left: 0; - margin: 2px 0; -} -.choose .radioError { - position: absolute; - top: 100%; - margin: 4px 0; -} -.messageWrap { - position: relative; -} -.textareaError { - position: relative; - top: -10px; -} -@media (min-width: 768px) { - .textareaError { - position: absolute; - top: -20px; - } -} -@keyframes bounceIn { - 0%, - 20%, - 40%, - 60%, - 80%, - 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - 100% { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} -.nonTouch .usefulLinks li a:hover { - color: #f7931c; - /*i { - transform: scale(1.1); - @media @fromLargeScreen { - transform: translateY(-50%) scale(1.1); - } - }*/ -} diff --git a/_site/assets/css/default.css b/_site/assets/css/default.css deleted file mode 100755 index 7f8933e2..00000000 --- a/_site/assets/css/default.css +++ /dev/null @@ -1,36 +0,0 @@ -a.plain -{ - color:#d6be98 !important; - border:0 !important; - border-radius:0 !important; - border-bottom:1px solid !important; - padding:0 !important; - background-color:transparent !important; - box-shadow:none !important; - display:inline !important; - margin-left:auto !important; - margin-bottom:5px !important; - -webkit-transition:all .35s !important; - transition:all .35s !important - } - -a.plain:hover -{ - color:#f36521 !important -} - -.defnitionList dd .contentTxt p a -{ - color:#d6be98; - border-bottom:1px solid; - display:table; - margin-left:auto; - margin-bottom:5px; - -webkit-transition:all .35s; - transition:all .35s -} - -.defnitionList dd .contentTxt p a:hover -{ - color:#f36521 -} diff --git a/_site/assets/css/documentation.css b/_site/assets/css/documentation.css deleted file mode 100755 index 5f2a5f26..00000000 --- a/_site/assets/css/documentation.css +++ /dev/null @@ -1,141 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -.documentDetail .bgTextbig, -.pageDocumentation .bgTextbig { - left: 0; - transform: translate(0, -50%); -} -@media (min-width: 768px) { - .documentDetail .bgTextbig, - .pageDocumentation .bgTextbig { - font-size: 170px; - } -} -@media (min-width: 1024px) { - .documentDetail .bgTextbig, - .pageDocumentation .bgTextbig { - font-size: 220px; - } -} -@media (min-width: 1280px) { - .documentDetail .bgTextbig, - .pageDocumentation .bgTextbig { - font-size: 280px; - } -} -@media (min-width: 1600px) { - .documentDetail .bgTextbig, - .pageDocumentation .bgTextbig { - font-size: 300px; - } -} -.documentDetail { - padding-top: 30px; - min-height: 100%; - box-sizing: border-box; - padding-bottom: 130px; -} -@media (min-width: 768px) { - .documentDetail { - padding-top: 70px; - } -} -.documentDetail .pages { - padding-bottom: 0; -} -.pageDocumentation { - padding-top: 40px; -} -@media (min-width: 768px) { - .pageDocumentation { - padding-top: 70px; - } -} -.pageDocumentation .pageBanner { - background-size: cover; -} -.pageDocumentation .listItem { - cursor: default; -} -.otherDocuments { - position: relative; - background-color: #f6f6f6; - padding: 30px 15px; -} -@media (min-width: 1280px) { - .otherDocuments { - padding: 60px 0; - } -} -.otherDocuments ul { - list-style-type: none; - padding: 0; -} -.otherDocuments > div { - max-width: 1260px; - margin: 0 auto; -} -.otherDocuments h4 { - margin-top: 0; - font-size: 18px; -} -@media (min-width: 768px) { - .otherDocuments h4 { - font-size: 20px; - padding: 0 17% 0 25%; - } -} -@media (min-width: 1280px) { - .otherDocuments h4 { - font-size: 24px; - } -} -.otherDocuments ul { - overflow: hidden; -} -@media (min-width: 768px) { - .otherDocuments ul { - padding: 0 17% 30px 25%; - } -} -.otherDocuments ul li { - position: relative; - padding-left: 20px; - margin-bottom: 5px; - font-size: 14px; - box-sizing: border-box; -} -@media (min-width: 768px) { - .otherDocuments ul li { - width: 50%; - padding: 0 20px; - float: left; - } -} -.otherDocuments ul li a { - display: block; - color: inherit; -} -.otherDocuments ul li i { - position: absolute; - top: 0; - left: 0; - color: #f7931c; - font-size: 12px; - line-height: 16px; - font-weight: 700; -} -.defnitionList dd p a { - display: inline-block; - padding: 0; - border: none; - box-shadow: none; - margin: 0; -} -.defnitionList dd p a:hover { - background-color: transparent !important; - color: #f7931c !important; - text-decoration: underline; -} diff --git a/_site/assets/css/get-framac.css b/_site/assets/css/get-framac.css deleted file mode 100755 index 77c71e89..00000000 --- a/_site/assets/css/get-framac.css +++ /dev/null @@ -1,212 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -.getFramaC { - position: relative; - padding: 30px 0 140px; - box-sizing: border-box; - min-height: 100%; -} -.getFramaC:before { - content: ''; - position: absolute; - bottom: 140px; - left: 0; - right: 0; - height: 1px; - background-color: #acacac; -} -.getFramaC .wrap { - position: relative; - max-width: 1260px; - margin: 0 auto; - text-align: center; -} -@media (max-width: 1279px) { - .getFramaC .wrap { - padding: 0 15px; - } -} -.getFramaC h1 { - line-height: 1.2; -} -.getFramaC .OS { - max-width: 650px; - margin: 0 auto; - display: flex; - justify-content: center; -} -@media (min-width: 768px) { - .getFramaC .OS { - padding-top: 10px; - } -} -.getFramaC .OS a { - position: relative; - color: #555; - font-size: 18px; - padding: 0 30px; - opacity: 0.5; - transition: 0.2s; -} -.getFramaC .OS a:after { - content: ''; - position: absolute; - top: 0; - right: 0; - bottom: 5px; - width: 1px; - background-color: #d0d0d0; -} -.getFramaC .OS a:last-child:after { - display: none; -} -@media (min-width: 768px) { - .getFramaC .OS a { - font-size: 20px; - } -} -@media (min-width: 1280px) { - .getFramaC .OS a { - font-size: 24px; - } -} -.getFramaC .OS a b { - display: inline-block; - position: relative; - font-weight: 700; - padding-bottom: 5px; -} -.getFramaC .OS a b:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 1px; - display: none; - background-color: #f7931c; - animation: lineGrow 0.5s linear both; -} -.getFramaC .OS a.active { - opacity: 1; -} -.getFramaC .OS a.active b:before { - display: block; -} -.getFramaC .OS a:hover { - opacity: 0.75; -} -.getFramaC .otherConfiguration { - text-align: center; - font-size: 14px; - font-weight: 600; - margin: 20px 0 -20px; - color: #999; -} -@media (min-width: 1280px) { - .getFramaC .otherConfiguration { - position: absolute; - top: 50%; - right: 0; - z-index: 1; - max-width: 200px; - margin: 50px 0 0; - font-size: 16px; - } -} -.getFramaC .notebook { - width: 300px; - height: 175px; - margin-bottom: 20px; - margin-left: auto; - margin-right: auto; - max-width: 2000px; - border-radius: 0; - border: 0; - background: transparent; -} -@media only screen and (min-width: 481px) { - .getFramaC .notebook { - width: 400px; - height: 233px; - } -} -@media (min-width: 768px) { - .getFramaC .notebook { - width: 600px; - height: 349px; - } -} -@media (min-width: 1024px) { - .getFramaC .notebook { - width: 720px; - height: 422px; - } -} -@media (min-width: 1280px) { - .getFramaC .notebook { - width: 800px; - height: 466px; - } -} -.getFramaC .notebook > div { - background: transparent url('../img/laptop.png') no-repeat; - background-size: 100%; - padding: 15px 36px 20px; - border: 0; - border-radius: 0; -} -@media only screen and (min-width: 481px) { - .getFramaC .notebook > div { - padding: 22px 48px 24px; - } -} -@media (min-width: 768px) { - .getFramaC .notebook > div { - padding: 32px 74px 36px; - } -} -@media (min-width: 1024px) { - .getFramaC .notebook > div { - padding: 44px 93px 20px; - } -} -@media (min-width: 1280px) { - .getFramaC .notebook > div { - padding: 43px 100px 47px; - } -} -.getFramaC .notebook > div .codeScreen { - min-height: 100px; - height: 140px; -} -@media only screen and (min-width: 481px) { - .getFramaC .notebook > div .codeScreen { - height: 186px; - } -} -@media (min-width: 768px) { - .getFramaC .notebook > div .codeScreen { - height: 280px; - } -} -@media (min-width: 1024px) { - .getFramaC .notebook > div .codeScreen { - height: 360px; - } -} -@media (min-width: 1280px) { - .getFramaC .notebook > div .codeScreen { - height: 374px; - } -} -@keyframes lineGrow { - 0% { - width: 0; - } - 100% { - width: 100%; - } -} diff --git a/_site/assets/css/home.css b/_site/assets/css/home.css deleted file mode 100755 index f8601907..00000000 --- a/_site/assets/css/home.css +++ /dev/null @@ -1,1994 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -@import 'lib/swiper.css'; -/* Home Page */ -.home .notebook { - width: 300px; - height: 175px; - margin-left: auto; - margin-right: auto; - max-width: 2000px; - border-radius: 0; - border: 0; - background: transparent; -} -@media only screen and (min-width: 481px) { - .home .notebook { - width: 400px; - height: 233px; - } -} -@media (min-width: 768px) { - .home .notebook { - width: 600px; - height: 349px; - } -} -@media (min-width: 1024px) { - .home .notebook { - width: 720px; - height: 422px; - } -} -@media (min-width: 1280px) { - .home .notebook { - width: 800px; - height: 466px; - } -} -.home .notebook > div { - background: transparent url('../img/laptop.png') no-repeat; - background-size: 100%; - padding: 15px 36px 20px; - border: 0; - border-radius: 0; -} -@media only screen and (min-width: 481px) { - .home .notebook > div { - padding: 22px 48px 24px; - } -} -@media (min-width: 768px) { - .home .notebook > div { - padding: 32px 74px 36px; - } -} -@media (min-width: 1024px) { - .home .notebook > div { - padding: 44px 93px 20px; - } -} -@media (min-width: 1280px) { - .home .notebook > div { - padding: 43px 100px 47px; - } -} -.home .notebook > div .codeScreen { - min-height: 100px; - height: 140px; -} -@media only screen and (min-width: 481px) { - .home .notebook > div .codeScreen { - height: 186px; - } -} -@media (min-width: 768px) { - .home .notebook > div .codeScreen { - height: 280px; - } -} -@media (min-width: 1024px) { - .home .notebook > div .codeScreen { - height: 360px; - } -} -@media (min-width: 1280px) { - .home .notebook > div .codeScreen { - height: 374px; - } -} -.home .mainContainer { - padding-top: 0; -} -.home .sectionContent { - padding: 20px; - text-align: center; - position: relative; - z-index: 1; -} -.home .section { - overflow: hidden; - margin-bottom: 15vh; -} -@media (min-width: 768px) { - .home .section { - margin-bottom: 30vh; - } -} -.home .section.calendarScreen, -.home .section.aboutScreen { - margin-bottom: 45vh; -} -.home .section.downloadSection { - margin-bottom: 0; -} -.home h2 { - color: #c19e56; - text-transform: uppercase; - margin: 0 0 20px; -} -.home p br { - display: none; -} -.home .banner-title { - max-width: 280px; - margin: 0 auto 20px; -} -.home .banner-title br { - display: none; -} -@media (min-width: 768px) { - .home .banner-title { - font-size: 36px; - margin-top: 10px; - margin-bottom: 8px; - max-width: 620px; - } -} -@media (min-width: 1280px) { - .home .banner-title { - font-size: 43px; - max-width: 740px; - } -} -@media (min-width: 1600px) { - .home .banner-title { - font-size: 48px; - max-width: 800px; - } -} -@media (min-width: 1890px) { - .home .banner-title { - font-size: 56px; - max-width: 960px; - } -} -.home .banner-desc { - max-width: 430px; - margin: 0 auto 20px; -} -@media (min-width: 768px) { - .home .banner-desc { - font-size: 16px; - font-weight: 600; - max-width: 460px; - margin-bottom: 32px; - } -} -@media (min-width: 1280px) { - .home .banner-desc { - font-size: 18px; - max-width: 500px; - } -} -@media (min-width: 1600px) { - .home .banner-desc { - font-size: 20px; - max-width: 560px; - } -} -@media (min-width: 1890px) { - .home .banner-desc { - font-size: 21px; - max-width: 580px; - margin-bottom: 48px; - } -} -.home footer { - display: block; -} -.siteIntro > div { - transform: translateY(-200px); - opacity: 0; - transition: 0.75s ease-out; -} -.pageContent.secure .siteIntro .sectionContent { - transform: translateY(0); - opacity: 1; -} -.pageContent.secure a.goDown { - transform: translate(-50%, 0); - opacity: 1; -} -.pageContent.error .codeDemoScreen > .sectionContent { - opacity: 1; -} -a.goDown { - position: absolute; - bottom: 20px; - left: 50%; - transform: translate(-50%, -200px); - opacity: 0; - text-align: center; - transition: 0.5s ease-out; - z-index: 11; -} -a.goDown span { - display: block; -} -a.goDown .icon { - animation: arrowMove 1.4s infinite; - color: #f79421; - display: inline-block; - font-size: 80%; - margin-top: 12px; - transition: all 0.35s; -} -.nonTouch a.goDown:hover { - color: #f79421; -} -.nonTouch a.goDown:hover .icon { - color: #f26521; -} -.swiper-container-autoheight .swiper-wrapper { - height: auto; -} -.swiper-button-next, -.swiper-button-prev { - background: none !important; - font-size: 30px; - color: #fff; - width: 46px; - height: 46px; - padding: 8px 15px; -} -.tabSlider { - width: 100%; - height: 70px; - margin: 0 auto; - max-width: 430px; - /*.swiper-button-next { - right: 0; - } - .swiper-button-prev { - left: 0; - }*/ -} -@media (min-width: 1024px) { - .tabSlider { - display: inline-block; - vertical-align: middle; - width: auto; - height: 68px; - overflow: visible; - max-width: none; - } -} -.tabSlider .swiper-slide { - max-width: 100%; - height: auto; -} -@media (min-width: 1280px) { - .tabSlider .swiper-slide:nth-child(4) .slideTxt span { - width: 115px; - } -} -.tabSlider .sliderWrapper { - width: 100%; -} -@media (min-width: 1024px) { - .tabSlider .sliderWrapper { - width: 100%; - height: 100%; - display: block; - text-align: center; - transform: none !important; - } -} -.tabSlider .slideTxt { - position: relative; - left: 0px; -} -@media (min-width: 1024px) { - .tabSlider .slideTxt { - left: 0; - } -} -.tabSlider .slideTxt:before { - content: ''; - display: inline-block; - vertical-align: middle; - height: 70px; - width: 0; -} -@media (min-width: 1024px) { - .tabSlider .slideTxt:before { - height: 68px; - } -} -.tabSlider .slideTxt b, -.tabSlider .slideTxt span { - display: block; -} -.tabSlider .slideTxt b { - display: none; - color: #f7931c; - font-size: 70px; - font-weight: 300; - line-height: 70px; -} -.tabSlider .slideTxt span { - color: #fff; - width: 200px; - /*margin: 0 auto;*/ - font-size: 18px; - font-weight: 500; - display: inline-block; - vertical-align: middle; -} -@media (min-width: 1024px) { - .tabSlider .slideTxt span { - width: 90px; - cursor: pointer; - margin-left: -4px; - text-align: left; - position: relative; - padding: 5px 36px; - font-size: 14px; - color: #555555; - font-weight: 700; - transition: color 0.4s; - } - .tabSlider .slideTxt span:before { - content: ''; - background: #f57f1e; - background: linear-gradient(to bottom, #f57f1e 0%, #ef3659 100%); - display: inline-block; - position: absolute; - left: 0; - top: 50%; - width: 2px; - height: 32px; - margin-top: -16px; - } -} -@media (min-width: 1280px) { - .tabSlider .slideTxt span { - padding: 6px 20px; - font-size: 15px; - } -} -@media (min-width: 1600px) { - .tabSlider .slideTxt span { - padding: 8px 45px 8px 34px; - font-size: 17px; - width: 100px; - } -} -@media (min-width: 1890px) { - .tabSlider .slideTxt span { - font-size: 18px; - } -} -.tabSlider .slideTxt a { - color: #f57f1e; - display: inline-block; - font-weight: 800; - text-transform: uppercase; - font-size: 90%; - margin-bottom: 8px; -} -@media (min-width: 1024px) { - .tabSlider .swiper-slide { - height: 100%; - width: auto !important; - display: inline-block; - backface-visibility: hidden; - } - .tabSlider .swiper-slide:first-child .slideTxt span:before { - display: none; - } - .tabSlider .swiper-button-next, - .tabSlider .swiper-button-prev { - display: none !important; - } - .tabSlider .swiper-slide-active .slideTxt span { - color: #fff; - } -} -.codeDemoScreen { - color: #555555; - min-height: 100vh; - position: relative; - /*margin-bottom: 0 !important;*/ -} -.codeDemoScreen > div { - opacity: 0; - transition: 0.25s; -} -.codeDemoScreen .sectionContent { - display: flex; - min-height: 100vh; - flex-direction: column; - justify-content: space-between; - padding: 25px 0 0; - overflow: hidden; -} -.codeDemoScreen h3 { - color: #c19e56; - margin: 0 0 12px; -} -@media only screen and (min-width: 480px) { - .codeDemoScreen h3 { - margin-top: 8vh; - } -} -@media (min-width: 768px) { - .codeDemoScreen h3 { - font-size: 20px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen h3 { - font-size: 25px; - margin-top: 30px; - } -} -@media (min-width: 1600px) { - .codeDemoScreen h3 { - font-size: 30px; - margin-top: 36px; - } -} -@media (min-width: 1890px) { - .codeDemoScreen h3 { - font-size: 34px; - margin-top: 40px; - } -} -.codeDemoScreen h4 { - color: #f7931c; - font-size: 13px; - margin: 5vh 0 0; -} -@media (min-width: 1024px) { - .codeDemoScreen h4 { - font-size: 18px; - margin-top: 0; - margin-bottom: 20px; - } -} -.codeDemoScreen .slideHeader { - margin-bottom: auto; - margin-top: auto; -} -@media (min-width: 1024px) { - .codeDemoScreen .slideHeader { - margin-top: 8vh; - } -} -@media (min-width: 1600px) { - .codeDemoScreen .slideHeader { - margin-top: 6vh; - margin-bottom: 4vh; - } -} -.codeDemoScreen .codeDemoBlock { - max-width: 430px; - margin: 0 auto; - padding-top: 15px; - width: 100vw; -} -@media (min-width: 768px) { - .codeDemoScreen .codeDemoBlock { - max-width: none; - width: 620px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock { - width: 974px; - overflow: hidden; - } -} -@media (min-width: 1280px) { - .codeDemoScreen .codeDemoBlock { - width: 1200px; - padding-top: 25px; - } -} -@media (min-width: 1600px) { - .codeDemoScreen .codeDemoBlock { - width: 1280px; - } -} -@media (min-width: 1890px) { - .codeDemoScreen .codeDemoBlock { - width: 1360px; - } -} -.codeDemoScreen .codeDemoBlock .swiper-container { - overflow: visible; - /*@media @fromExtraLargeScreen { - max-width: 700px; - } - @media @fromFullHDScreen { - max-width: 810px; - }*/ -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .swiper-container { - max-width: 800px; - margin: 0 auto; - } -} -.codeDemoScreen .codeDemoBlock .swiper-slide { - padding: 0 15px; - visibility: hidden; - margin: 0 auto; - transition-duration: 0ms !important; -} -.codeDemoScreen .codeDemoBlock .swiper-wrapper { - transition-duration: 0ms !important; -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .swiper-wrapper { - align-items: flex-end; - } -} -.codeDemoScreen .codeDemoBlock .swiper-slide-active { - opacity: 1 !important; - visibility: visible; -} -.codeDemoScreen .codeDemoBlock .swiper-slide-active .codeScreen .codeTab pre { - opacity: 1; -} -.codeDemoScreen .codeDemoBlock .title { - text-align: left; - margin-bottom: 15px; -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .title { - margin-bottom: 0; - width: 180px; - padding-bottom: 18px; - } -} -@media (min-width: 1280px) { - .codeDemoScreen .codeDemoBlock .title { - width: 70%; - } -} -.codeDemoScreen .codeDemoBlock .title a { - text-transform: uppercase; - color: #f7931c; - font-weight: 800; -} -.codeDemoScreen .codeDemoBlock .title b { - color: #434343; - display: inline-block; - font-size: 24px; - font-weight: 300; - vertical-align: top; - margin-right: 16px; -} -@media (min-width: 768px) { - .codeDemoScreen .codeDemoBlock .title b { - font-size: 36px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .title b { - display: block; - font-size: 41px; - margin-right: 0; - } -} -@media (min-width: 1280px) { - .codeDemoScreen .codeDemoBlock .title b { - font-size: 52px; - line-height: 1; - } -} -.codeDemoScreen .codeDemoBlock .title span { - color: #fff; - font-size: 13px; - line-height: 1.4; - display: inline-block; - max-width: 80%; - padding-top: 2px; - vertical-align: top; -} -@media (min-width: 768px) { - .codeDemoScreen .codeDemoBlock .title span { - max-width: 85%; - padding-top: 5px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .title span { - color: #b0b0b0; - max-width: none; - display: block; - } -} -@media (min-width: 1280px) { - .codeDemoScreen .codeDemoBlock .title span { - font-size: 14px; - } -} -.codeDemoScreen .codeDemoBlock .title samp { - color: #f7931c; - font-style: italic; - padding: 0 4px; -} -.swiper-slide-active .codeDemoScreen .codeDemoBlock .title { - opacity: 1; - transform: translateY(0); -} -.codeDemoScreen .codeDemoBlock .codeTips { - padding: 10px 0; -} -@media (min-width: 1024px) { - .codeDemoScreen .codeDemoBlock .codeTips { - display: none; - } -} -.codeDemoScreen .notebook { - margin-top: 0; -} -.codeDemoScreen .notebook > div > div { - min-height: 270px; -} -@media (min-width: 768px) { - .codeDemoScreen .notebook > div > div { - min-height: 354px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen .notebook > div > div { - min-height: 390px; - } -} -@media (min-width: 1600px) { - .codeDemoScreen .notebook > div > div { - min-height: 454px; - } -} -@media (max-width: 1023px) { - .codeDemoScreen .arrowTooltip { - display: none; - } -} -.codeDemoScreen .codeScreen .codeTab { - padding: 0; - overflow: visible; -} -.codeDemoScreen .codeScreen .codeTab > div:first-child { - font-size: 10px; - background: #202020; - width: 100%; - border: 0; - height: 100%; - padding: 15px 12px; - overflow: auto; -} -@media only screen and (min-width: 375px) { - .codeDemoScreen .codeScreen .codeTab > div:first-child { - padding: 15px 25px; - } -} -@media (min-width: 768px) { - .codeDemoScreen .codeScreen .codeTab > div:first-child { - font-size: 13px; - padding: 25px 30px 20px; - } -} -@media (min-width: 1024px) { - .codeDemoScreen .codeScreen .codeTab > div:first-child { - font-size: 14px; - padding: 28px 40px 20px; - min-height: 360px; - } -} -@media (min-width: 1600px) { - .codeDemoScreen .codeScreen .codeTab > div:first-child { - font-size: 15px; - } -} -.codeDemoScreen .codeScreen .codeTab > div:first-child::-webkit-scrollbar { - width: 6px; - background-color: transparent; -} -.codeDemoScreen .codeScreen .codeTab > div:first-child::-webkit-scrollbar-thumb { - background-color: rgba(200, 200, 200, 0.4); -} -.codeDemoScreen .codeScreen .codeTab > div:first-child::-webkit-scrollbar-track { - box-shadow: none; - background-color: rgba(200, 200, 200, 0.15); -} -.codeDemoScreen .codeScreen .codeTab pre { - font-family: monospace; - line-height: 1.1 !important; - overflow: hidden; - opacity: 0; - transition: opacity 0.25s 0.4s; -} -@media (min-width: 1024px) { - .codeDemoScreen .codeScreen .codeTab pre u { - display: inline-block; - vertical-align: top; - } -} -.arrowTooltip { - position: absolute; - width: 196px; - height: 1px; - margin-top: 10px; - white-space: normal; -} -@media (min-width: 1280px) { - .arrowTooltip { - width: 290px; - } -} -.arrowTooltip span { - display: block; -} -.arrowTooltip > div, -.arrowTooltip > span { - position: absolute; - display: block; - bottom: 0; -} -.arrowTooltip .title { - font-family: 'Muli'; - padding-bottom: 5px; - opacity: 0; - transform: translateY(20px); - transition: transform 0.35s 1s, opacity 0.3s 1s; -} -.swiper-slide-active .arrowTooltip .title { - opacity: 1; - transform: translateY(0); -} -.arrowTooltip:after { - background: #e9b040; - content: ''; - display: block; - height: 4px; - width: 100px; - margin-top: -3px; - position: absolute; - bottom: -2px; - transform: scaleY(0); - transition: transform 0.2s 1.1s; - transform-origin: bottom center; -} -.swiper-slide-active .arrowTooltip:after { - transform: scaleY(1); -} -@media (min-width: 1280px) { - .arrowTooltip:after { - width: 120px; - } -} -@media (min-width: 1600px) { - .arrowTooltip:after { - width: 132px; - } -} -.arrowTooltip + u { - background: #e9b040; - display: block; - width: 200%; - height: 1px; - position: absolute; - margin-top: 10px; - transform: scaleX(0); - transition: transform 0.7s 0.4s, -webkit-transform 0.7s 0.4s; -} -.swiper-slide-active .arrowTooltip + u { - transform: scaleX(1); -} -@media (max-width: 1023px) { - .arrowTooltip + u { - display: none; - } -} -.arrowTooltip.left { - left: -220px; -} -.arrowTooltip.left:after { - left: -10px; - bottom: 0; -} -@media (min-width: 1280px) { - .arrowTooltip.left { - left: -318px; - } -} -@media (min-width: 1600px) { - .arrowTooltip.left { - left: -348px; - } -} -@media (min-width: 1890px) { - .arrowTooltip.left { - left: -333px; - } -} -.arrowTooltip.left + u { - margin-left: -14px; - transform-origin: left bottom; - transform: scaleX(0) rotate(-180deg); -} -.swiper-slide-active .arrowTooltip.left + u { - transform: scaleX(1) rotate(-180deg); -} -.arrowTooltip.right { - right: -236px; -} -@media (min-width: 1280px) { - .arrowTooltip.right { - right: -318px; - } -} -@media (min-width: 1600px) { - .arrowTooltip.right { - right: -348px; - } -} -.arrowTooltip.right:after { - right: -10px; -} -.arrowTooltip.right + u { - width: 200%; - margin-left: 8px; - margin-top: 12px; - transform-origin: bottom left; -} -.arrowTooltip.right .title { - float: right; -} -/* -.arrowTooltip { - position: absolute; - height: 0; - margin-left: -280px; - >div { - position: absolute; - bottom: 0; - } - .title { - width: 170px; - position: absolute; - bottom: 100%; - font-family: 'Muli'; - opacity: 0; - transform: translateY(20px); - transition: transform 0.35s 1s, opacity 0.3s 1s; - - .swiper-slide-active & { - opacity: 1; - transform: translateY(0); - } - } - span { - display: block; - } - u { - border: 1px solid #e9b040; - display: block; - transform: scaleY(0); - transition: transform 0.7s 0.4s; - transform-origin: bottom center; - - @media @uptoSmallScreen { - width: 40px; - height: 173px; - } - - &:before { - background: #e9b040; - content: ''; - display: block; - height: 3px; - width: 54px; - margin-top: -3px; - position: relative; - transform: scaleY(0); - transition: transform 0.2s 1.1s; - transform-origin: bottom center; - } - - .swiper-slide-active & { - transform: scaleY(1); - &:before { - transform: scaleY(1); - } - @media @fromMediumScreen { - transform: scaleX(1); - } - } - } - &.left { - margin-left: -35px; - u { - left: 0; - border-right: 0 none; - &:before { - left: 22px; - } - } - .title { - left: 0; - } - } - &.right { - left: 236px; - u { - right: 0; - border-left: 0 none; - width: 38px; - height: 220px; - &:before { - right: 37px; - } - } - .title { - right: 0; - text-align: right; - } - } - - &:nth-of-type(3) { - margin-left: -40px; - - .title { - width: 135px; - - @media @fromMediumScreen { - width: 160px; - bottom: auto; - top: 100%; - margin-top: 8px; - } - } - u { - height: 260px; - } - } - - &.line3 { - u { - height: 144px; - } - } - - @media @fromSmallScreen { - width: 196px; - height: 1px; - b { - font-size: 43px; - } - u { - height: 175px; - transform: scaleX(0); - &:before { - bottom: 0; - position: absolute; - margin-top: 0; - } - } - &.left { - margin-left: -280px; - u { - transform-origin: bottom right; - } - } - &.right { - right: 120px; - left: auto; - u { - height: 340px; - transform-origin: bottom left; - } - } - } - @media @fromMediumScreen { - b { - font-size: 43px; - } - u { - height: 1px !important; - border: 0 none !important; - background: #e9b040; - } - &.left { - u { - width: 237px; - &:before { - left: 0; - } - } - } - &.right { - u { - height: 1px; - width: 350px; - &:before { - right: 0; - position: absolute; - } - } - } - } -} -*/ -/* background title container */ -.bgTitleBlk { - /*background: #fff;*/ - width: 100%; - height: 100%; - overflow: hidden; - display: block; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 0; - user-select: none; - pointer-events: none; - transition: background 0.4s; -} -.bgTitleBlk .upperBlk, -.bgTitleBlk .lowerBlk { - width: 100%; - height: 25vw; - position: absolute; - top: 50%; - left: 50%; - margin: 0; - padding: 0; - overflow: hidden; - display: block; - width: auto; - min-width: 100%; - padding: 0 500px; -} -@media (min-width: 768px) { - .bgTitleBlk .upperBlk, - .bgTitleBlk .lowerBlk { - height: 90px; - top: 50%; - } -} -@media (min-width: 1024px) { - .bgTitleBlk .upperBlk, - .bgTitleBlk .lowerBlk { - height: 120px; - } -} -@media (min-width: 1600px) { - .bgTitleBlk .upperBlk, - .bgTitleBlk .lowerBlk { - height: 175px; - } -} -@media (min-width: 1890px) { - .bgTitleBlk .upperBlk, - .bgTitleBlk .lowerBlk { - height: 195px; - } -} -.bgTitleBlk .lowerBlk { - transform: translate(-50%, 0%); - overflow: hidden; -} -.bgTitleBlk .upperBlk { - transform: translate(-50%, -100%); -} -.bgTitleBlk .lowerType, -.bgTitleBlk .upperType { - font-size: 500px; - font-size: 50vw; - font-weight: 800; - text-transform: uppercase; - line-height: 1; - text-align: justify; - text-align-last: justify; - letter-spacing: 3vw; - height: 200%; - width: 100%; - opacity: 1; - color: rgba(100, 100, 100, 0.08); - opacity: 0; - transition: all 0.5s ease-out; - white-space: nowrap; -} -@media (min-width: 768px) { - .bgTitleBlk .lowerType, - .bgTitleBlk .upperType { - font-size: 180px; - font-weight: 700; - text-align: center; - text-align-last: center; - letter-spacing: 0; - } -} -@media (min-width: 1024px) { - .bgTitleBlk .lowerType, - .bgTitleBlk .upperType { - font-size: 240px; - } -} -@media (min-width: 1600px) { - .bgTitleBlk .lowerType, - .bgTitleBlk .upperType { - font-size: 350px; - } -} -@media (min-width: 1890px) { - .bgTitleBlk .lowerType, - .bgTitleBlk .upperType { - font-size: 390px; - } -} -.bgTitleBlk .lowerType { - transform: translate(0%, -50%); -} -.bgTitleBlk .lowerType.out { - opacity: 0; - transform: translate(-8%, -50%); -} -.bgTitleBlk .upperType { - transform: translate(0%, 0%); -} -.bgTitleBlk .upperType.out { - opacity: 0; - transform: translate(8%, 0%); -} -.titleIn .bgTitleBlk .lowerType { - opacity: 1; - transform: translate(0%, -50%); -} -.titleIn .bgTitleBlk .upperType { - opacity: 1; - transform: translate(0%, 0%); -} -.pageContent.follow .bgTitleBlk { - background: #ccc; -} -.pageContent.follow .bgTitleBlk .lowerType, -.pageContent.follow .bgTitleBlk .upperType { - color: #d9d9d9; -} -.pageContent.lightTxt .bgTitleBlk .lowerType, -.pageContent.lightTxt .bgTitleBlk .upperType { - color: #fafafa; -} -.pageContent.error .bgTitleBlk { - background: #101010; - transition-delay: 0.3s; -} -@media (min-width: 768px) { - .pageContent.bigTxt .bgTitleBlk .upperBlk, - .pageContent.bigTxt .bgTitleBlk .lowerBlk { - height: 60px; - } -} -@media (min-width: 1024px) { - .pageContent.bigTxt .bgTitleBlk .upperBlk, - .pageContent.bigTxt .bgTitleBlk .lowerBlk { - height: 80px; - } -} -@media (min-width: 1280px) { - .pageContent.bigTxt .bgTitleBlk .upperBlk, - .pageContent.bigTxt .bgTitleBlk .lowerBlk { - height: 100px; - } -} -@media (min-width: 1600px) { - .pageContent.bigTxt .bgTitleBlk .upperBlk, - .pageContent.bigTxt .bgTitleBlk .lowerBlk { - height: 130px; - } -} -@media (min-width: 1890px) { - .pageContent.bigTxt .bgTitleBlk .upperBlk, - .pageContent.bigTxt .bgTitleBlk .lowerBlk { - height: 150px; - } -} -@media (min-width: 768px) { - .pageContent.bigTxt .bgTitleBlk .upperType, - .pageContent.bigTxt .bgTitleBlk .lowerType { - font-size: 120px; - } -} -@media (min-width: 1024px) { - .pageContent.bigTxt .bgTitleBlk .upperType, - .pageContent.bigTxt .bgTitleBlk .lowerType { - font-size: 160px; - } -} -@media (min-width: 1280px) { - .pageContent.bigTxt .bgTitleBlk .upperType, - .pageContent.bigTxt .bgTitleBlk .lowerType { - font-size: 200px; - } -} -@media (min-width: 1600px) { - .pageContent.bigTxt .bgTitleBlk .upperType, - .pageContent.bigTxt .bgTitleBlk .lowerType { - font-size: 260px; - } -} -@media (min-width: 1890px) { - .pageContent.bigTxt .bgTitleBlk .upperType, - .pageContent.bigTxt .bgTitleBlk .lowerType { - font-size: 300px; - } -} -/* About Section */ -.aboutScreen .sectionContent { - padding: 0; -} -.aboutScreen .circleBlock { - width: 92vw; - height: 92vw; - position: relative; - margin: 0 auto; -} -@media (min-width: 460px) { - .aboutScreen .circleBlock { - width: 360px; - height: 360px; - } -} -@media (min-width: 768px) { - .aboutScreen .circleBlock { - width: 500px; - height: 500px; - } -} -@media (min-width: 1600px) { - .aboutScreen .circleBlock { - width: 620px; - height: 620px; - } -} -@media (min-width: 1890px) { - .aboutScreen .circleBlock { - width: 707px; - height: 707px; - } -} -.aboutScreen .circleBlock h2 { - margin: 0; - position: absolute; - left: 0; - width: 100%; - top: 50%; - margin-top: -20px; - font-size: 17px; -} -@media (min-width: 768px) { - .aboutScreen .circleBlock h2 { - margin-top: -38px; - font-size: 30px; - } -} -@media (min-width: 1600px) { - .aboutScreen .circleBlock h2 { - margin-top: -43px; - font-size: 39px; - } -} -@media (min-width: 1890px) { - .aboutScreen .circleBlock h2 { - margin-top: -49px; - font-size: 43px; - } -} -.aboutScreen .circleBlock .circle { - width: 100%; - height: 100%; - border: 1px solid; - border-color: #f2ae22; - border-radius: 50%; - position: absolute; - left: 0; - top: 0; -} -.aboutScreen .circleBlock .circle.robustness { - border-color: #f2ae22; -} -.aboutScreen .circleBlock .circle.codeStandard { - border-color: #e10019; - width: 65%; - height: 65%; - left: 17.5%; - top: 17.5%; -} -.aboutScreen .circleBlock .circle.security { - border-color: #ec662b; - width: 82%; - height: 82%; - left: 5%; - top: 4%; -} -.aboutScreen .circleBlock a { - color: #404040; - text-transform: uppercase; - text-align: left; - position: absolute; - left: 33%; - top: 4%; - margin: -37px 0 0 -37px; -} -@media (min-width: 460px) { - .aboutScreen .circleBlock a { - left: 28%; - top: 9%; - } -} -@media (min-width: 1600px) { - .aboutScreen .circleBlock a { - margin: -45px 0 0 -45px; - } -} -.aboutScreen .circleBlock a .icon { - background: #f7931c; - border-radius: 50%; - color: #fff; - display: block; - margin-bottom: 8px; - width: 74px; - height: 74px; - text-align: center; - font-size: 32px; - line-height: 78px; -} -.aboutScreen .circleBlock a .icon .icon-code { - font-size: 88%; -} -@media (min-width: 768px) { - .aboutScreen .circleBlock a .icon { - margin: 0; - } -} -@media (min-width: 1600px) { - .aboutScreen .circleBlock a .icon { - width: 90px; - height: 90px; - font-size: 44px; - line-height: 92px; - } -} -@media (min-width: 1890px) { - .aboutScreen .circleBlock a .icon { - width: 96px; - height: 96px; - font-size: 46px; - line-height: 99px; - } -} -.aboutScreen .circleBlock a .txt { - display: block; - font-size: 14px; - font-weight: 600; - width: 74px; - transition: color 0.4s; -} -@media (min-width: 768px) { - .aboutScreen .circleBlock a .txt { - text-align: right; - width: 300px; - position: absolute; - right: 100%; - top: 50%; - margin: -16px 12px 0 0; - } -} -@media (min-width: 1024px) { - .aboutScreen .circleBlock a .txt { - font-size: 17px; - font-weight: 400; - margin-top: -20px; - } -} -@media (min-width: 1600px) { - .aboutScreen .circleBlock a .txt { - font-size: 22px; - margin-top: -28px; - } -} -@media (min-width: 1890px) { - .aboutScreen .circleBlock a .txt { - font-size: 25px; - margin-top: -32px; - } -} -.aboutScreen .circleBlock a b { - display: block; - font-weight: 900; -} -@media (min-width: 1024px) { - .aboutScreen .circleBlock a b { - font-weight: 800; - } -} -.aboutScreen .circleBlock a.robustness .txt { - width: 200px; -} -@media (min-width: 1024px) { - .aboutScreen .circleBlock a.robustness .txt { - width: 300px; - } -} -.aboutScreen .circleBlock a.codeStandard { - top: 82%; - left: 18%; -} -.aboutScreen .circleBlock a.codeStandard .icon { - background: #f2ae22; -} -.aboutScreen .circleBlock a.security { - top: 73%; - left: 73%; -} -.aboutScreen .circleBlock a.security .icon { - background: #e74643; -} -.aboutScreen .circleBlock a.security .txt { - text-align: right; -} -@media (min-width: 768px) { - .aboutScreen .circleBlock a.security .txt { - text-align: left; - right: auto; - left: 100%; - margin-left: 12px; - } -} -.nonTouch .aboutScreen .circleBlock a:hover .txt { - color: #000; -} -/* Calendar Section */ -.calendarScreen { - /*background: #f6f6f6;*/ - overflow: hidden; -} -@media (max-width: 767px) { - .calendarScreen { - height: auto; - padding-bottom: 120px; - } -} -.calendarScreen .sectionContent { - padding: 28px 0 20px; -} -.calendarScreen h2 { - color: #484848; - text-transform: none; -} -@media (min-width: 768px) { - .calendarScreen h2 { - font-size: 26px; - margin: 20px 0 12vh; - } -} -@media (min-width: 1024px) { - .calendarScreen h2 { - font-size: 27px; - margin: 3vh 0 11vh; - } -} -@media (min-width: 1600px) { - .calendarScreen h2 { - font-size: 29px; - } -} -@media (min-width: 1890px) { - .calendarScreen h2 { - font-size: 33px; - } -} -.eventDetailsBlock .swiper-slide { - width: 100vw; - padding-left: 20px; - padding-right: 20px; -} -.eventDetailsBlock figure { - width: 100%; - box-shadow: 0 20px 20px rgba(0, 0, 0, 0.2); - padding-bottom: 57.6%; - height: 0; - position: relative; - margin-bottom: 20px; -} -.eventDetailsBlock figure img, -.eventDetailsBlock figure video, -.eventDetailsBlock figure .img { - background-color: #fff; - display: block; - width: 100%; - position: absolute; - top: 0; - bottom: 0; - left: 0; - margin: auto; - height: 100%; - object-fit: cover; -} -.eventDetailsBlock .contentBlk { - display: flex; - text-align: left; - font-size: 13px; -} -.eventDetailsBlock .contentBlk > div { - margin-left: 14px; -} -.eventDetailsBlock .contentBlk h3 { - font-size: 17px; - margin: 0 0 8px; -} -.eventDetailsBlock .contentBlk p { - font-weight: 600; - margin: 0 0 10px; -} -.eventDetailsBlock .contentBlk a.link { - color: #f7931c; -} -.eventDetailsBlock time { - color: #e74643; - font-size: 47px; - line-height: 1.1; -} -.eventDetailsBlock time b, -.eventDetailsBlock time small { - display: block; - font-weight: 600; -} -.eventDetailsBlock time b:first-child { - line-height: 40px; -} -.eventDetailsBlock time b + b { - font-size: 31px; - margin-top: -1px; -} -.eventDetailsBlock time small { - font-size: 16px; -} -@media (min-width: 768px) { - .eventDetailsBlock time { - font-size: 42px; - display: inline-flex; - flex-direction: column; - flex: 0 0 auto; - } - .eventDetailsBlock time b + b { - font-size: 30px; - order: -1; - margin-top: 0; - } - .eventDetailsBlock time small { - font-size: 13px; - } -} -@media (min-width: 1600px) { - .eventDetailsBlock time { - font-size: 50px; - } - .eventDetailsBlock time b + b { - font-size: 35px; - } - .eventDetailsBlock time small { - font-size: 15px; - margin-top: 2px; - } -} -@media (min-width: 768px) { - .eventDetailsBlock .eventDetail { - width: 640px; - margin: 0 auto; - padding-bottom: 30px; - } - .eventDetailsBlock .eventDetail figure { - display: inline-block; - vertical-align: top; - width: 300px; - padding-bottom: 170px; - } - .eventDetailsBlock .eventDetail .contentBlk { - display: inline-flex; - width: 330px; - vertical-align: middle; - padding: 10px 0 0 15px; - } -} -@media (min-width: 1024px) { - .eventDetailsBlock .eventDetail { - width: 960px; - padding-bottom: 40px; - } - .eventDetailsBlock .eventDetail figure { - width: 400px; - padding-bottom: 220px; - } - .eventDetailsBlock .eventDetail .contentBlk { - width: 400px; - padding: 12px 0 0 22px; - font-size: 14px; - } - .eventDetailsBlock .eventDetail .contentBlk h3 { - font-size: 18px; - margin-bottom: 12px; - } -} -@media (min-width: 1600px) { - .eventDetailsBlock .eventDetail { - width: 1080px; - } - .eventDetailsBlock .eventDetail figure { - width: 500px; - padding-bottom: 280px; - } - .eventDetailsBlock .eventDetail .contentBlk { - width: 500px; - font-size: 15px; - } - .eventDetailsBlock .eventDetail .contentBlk > div { - margin-left: 23px; - } - .eventDetailsBlock .eventDetail .contentBlk h3 { - font-size: 19px; - width: 75%; - } -} -@media (min-width: 1890px) { - .eventDetailsBlock .eventDetail { - width: 1260px; - padding-bottom: 50px; - } - .eventDetailsBlock .eventDetail figure { - width: 625px; - padding-bottom: 340px; - } - .eventDetailsBlock .eventDetail .contentBlk { - width: 520px; - padding: 15px 0 0 27px; - font-size: 16px; - } - .eventDetailsBlock .eventDetail .contentBlk > div { - margin-left: 27px; - } - .eventDetailsBlock .eventDetail .contentBlk h3 { - font-size: 20px; - margin-bottom: 10px; - } -} -.eventScaleBlock { - position: absolute; - bottom: 42px; - left: 0; - width: 100%; - /*height: 60px;*/ - z-index: 2; -} -@media (min-width: 768px) { - .eventScaleBlock { - bottom: 15vh; - } -} -@media (min-width: 1024px) { - .eventScaleBlock .swiper-slide { - width: 11%; - flex-basis: 11%; - } - .eventScaleBlock .swiper-slide-prev, - .eventScaleBlock .swiper-slide-next { - width: 22.5%; - flex-basis: 22.5%; - } -} -.eventScaleBlock nav { - box-sizing: border-box; - display: flex; - justify-content: space-between; - align-items: center; - width: 100%; - margin: 0; - position: relative; - z-index: 1; -} -.eventScaleBlock .swiper-container { - overflow: visible; -} -.eventScaleBlock .swiper-wrapper { - align-items: center; -} -.eventScaleBlock .swiper-slide { - margin: 16px 0; -} -.eventScaleBlock .eventLink { - /*margin: 0 2vw;*/ - display: block; - position: relative; -} -.eventScaleBlock .eventLink time { - background: #f7931c; - border-radius: 50%; - color: #fff; - font-size: 10px; - line-height: 1; - text-transform: uppercase; - height: 30px; - width: 30px; - margin: 0 auto; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; -} -.eventScaleBlock .eventLink time small { - font-size: 8px; -} -.eventScaleBlock .eventLink span { - position: absolute; - opacity: 0; - left: 50%; - text-align: center; - width: 140px; - padding: 0 10px; - box-sizing: border-box; - color: #484848; - font-weight: 600; - font-size: 11px; - padding-top: 12px; - margin-left: -70px; - transform: translateY(-20px); - transition: all 0.6s; -} -@media (min-width: 768px) { - .eventScaleBlock .eventLink span { - font-size: 13px; - margin-left: -80px; - width: 160px; - } -} -@media (min-width: 1024px) { - .eventScaleBlock .eventLink span { - font-size: 14px; - } -} -@media (min-width: 1890px) { - .eventScaleBlock .eventLink span { - font-size: 17px; - padding-top: 22px; - width: 200px; - margin-left: -100px; - } -} -.eventScaleBlock .eventLink.active { - margin: auto; - pointer-events: none; -} -@media (min-width: 1600px) { - .eventScaleBlock .eventLink time { - height: 42px; - width: 42px; - font-size: 14px; - } - .eventScaleBlock .eventLink time small { - font-size: 10px; - } -} -.nonTouch .eventScaleBlock .eventLink:hover time { - transform: translateY(-2px); - box-shadow: 0 3px 0 rgba(0, 0, 0, 0.15); -} -.nonTouch .eventScaleBlock .eventLink:hover span { - opacity: 1; - transform: translateY(0); -} -.nonTouch .eventScaleBlock .eventLink:active time { - transform: translateY(0); - box-shadow: 0 0 0; -} -.eventScaleBlock .swiper-slide-active .eventLink { - pointer-events: none; -} -.eventScaleBlock .swiper-slide-active .eventLink time { - background: #e74643; - box-shadow: 3px 6px 6px rgba(0, 0, 0, 0.15); - width: 60px; - height: 60px; - font-size: 20px; -} -.eventScaleBlock .swiper-slide-active .eventLink time small { - font-size: 14px; -} -.eventScaleBlock .swiper-slide-active .eventLink span { - opacity: 1; - transform: translateY(0px); -} -@media (min-width: 1600px) { - .eventScaleBlock .swiper-slide-active .eventLink time { - width: 70px; - height: 70px; - font-size: 26px; - } - .eventScaleBlock .swiper-slide-active .eventLink time small { - font-size: 15px; - } -} -.eventScaleBlock .scaleBg { - mask-image: url('../img/timeline-mask.png'); - mask-position: top left; - mask-repeat: no-repeat; - mask-size: cover; - position: absolute; - top: 50%; - left: 0; - width: 100%; - height: 12px; - margin-top: -6px; -} -.eventScaleBlock .scaleBg > u { - background-image: url('../img/bg-scale.jpg'); - background-repeat: repeat-x; - background-position: bottom left; - background-size: auto 100%; - display: block; - position: absolute; - top: 50%; - left: 0; - width: 100%; - height: 6px; - margin-top: -6px; -} -/* Download section */ -.downloadSection h3 { - color: #c19e56; - font-size: 36px; - margin: 0 0 8px; -} -@media (min-width: 1280px) { - .downloadSection h3 { - font-size: 40px; - } -} -@media (min-width: 1600px) { - .downloadSection h3 { - font-size: 45px; - } -} -@media (min-width: 1890px) { - .downloadSection h3 { - font-size: 50px; - } -} -.downloadSection .head { - margin-bottom: 4vh; -} -.downloadSection .cta-download { - display: none; - margin-top: 4vh; -} -.nonTouch .downloadSection .cta-download { - display: block; -} -@media (min-width: 1280px) { - .downloadSection .cta-download { - margin-top: 7vh; - } -} -.downloadSection .linkBlk { - padding-bottom: 14vh; -} -@media (min-width: 1280px) { - .downloadSection .linkBlk { - padding-bottom: 7vh; - } -} -.downloadSection p { - margin: 0 0 8px; - padding: 4vh 0; -} -.nonTouch .downloadSection p { - display: none; -} -.downloadSection .mobileLink { - padding: 10px 42px; - margin-top: 4vh; -} -.nonTouch .downloadSection .mobileLink { - display: none; -} -.downloadSection .mobileLink b { - display: block; -} -@media (min-width: 1280px) { - .downloadSection .mobileLink { - margin-top: 7vh; - } -} -.downloadSection nav { - padding-left: 4px; - color: #555555; - text-transform: capitalize; -} -@media (min-width: 1280px) { - .downloadSection nav { - font-size: 18px; - } -} -@media (min-width: 1600px) { - .downloadSection nav { - font-size: 19px; - } -} -@media (min-width: 1890px) { - .downloadSection nav { - font-size: 20px; - } -} -.downloadSection nav > span { - display: inline-block; - padding: 2px 12px; - user-select: none; -} -@media (min-width: 1280px) { - .downloadSection nav > span { - padding: 0px 15px; - } -} -.downloadSection nav a { - display: inline-block; - padding: 2px 12px; - margin-left: -4px; - transition: color 0.4s; -} -.nonTouch .downloadSection nav a:hover { - color: #f36521; -} -@media (min-width: 1280px) { - .downloadSection nav a { - padding: 0px 15px; - } -} -.downloadSection nav .aluminiumVersion { - border-left: 1px solid #888; - font-weight: bold; -} -.downloadSection nav .previousVersion { - display: table; - margin: 10px auto 0; - color: #b1b1b1; - border-bottom: 1px solid; - padding: 0; - font-size: 92%; - text-transform: none; - transition: color 0.4s; -} -.nonTouch .downloadSection nav .previousVersion:hover { - color: #f36521; -} -/* Keyframes */ -@keyframes arrowMove { - 0%, - 100% { - transform: translateY(3px); - } - 50% { - transform: translateY(-3px); - } -} diff --git a/_site/assets/css/icomoon.css b/_site/assets/css/icomoon.css deleted file mode 100755 index 50d2120f..00000000 --- a/_site/assets/css/icomoon.css +++ /dev/null @@ -1,99 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -/* Icon fonts */ -@font-face { - font-family: 'icomoon'; - src: url('../fonts/icomoon.woff'), url('../fonts/icomoon.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} -[class*="icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Enable Ligatures ================ */ - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-code:before { - content: "\e900"; -} -.icon-lock:before { - content: "\e901"; -} -.icon-search:before { - content: "\e902"; -} -.icon-thumb:before { - content: "\e903"; -} -.icon-arrow-down:before { - content: "\e904"; -} -.icon-arrow-left:before { - content: "\e905"; -} -.icon-arrow-right:before { - content: "\e906"; -} -.icon-arrow-thin-dwn:before { - content: "\e907"; -} -.icon-arrow-thin-lft:before { - content: "\e908"; -} -.icon-arrow-thin-rgt:before { - content: "\e909"; -} -.icon-arrow-thin-up:before { - content: "\e90a"; -} -.icon-arrow-up:before { - content: "\e90b"; -} -.icon-btn-submit:before { - content: "\e90c"; -} -.icon-close:before { - content: "\e90d"; -} -.icon-curly-left:before { - content: "\e90e"; -} -.icon-curly-right:before { - content: "\e90f"; -} -.icon-download-arrow:before { - content: "\e910"; -} -.icon-spinner2:before { - content: "\e97b"; -} -.icon-warning:before { - content: "\ea07"; -} -.icon-info:before { - content: "\ea0c"; -} -.icon-facebook:before { - content: "\ea90"; -} -.icon-twitter:before { - content: "\ea96"; -} diff --git a/_site/assets/css/lib/swiper.css b/_site/assets/css/lib/swiper.css deleted file mode 100644 index f24c8da1..00000000 --- a/_site/assets/css/lib/swiper.css +++ /dev/null @@ -1,571 +0,0 @@ -/** - * Swiper 3.4.2 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2017, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: March 10, 2017 - */ -.swiper-container { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - z-index: 1 -} - -.swiper-container-no-flexbox .swiper-slide { - float: left -} - -.swiper-container-vertical>.swiper-wrapper { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-flex-direction: column; - -webkit-flex-direction: column; - flex-direction: column -} - -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-transition-property: -webkit-transform; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box -} - -.swiper-container-android .swiper-slide,.swiper-wrapper { - -webkit-transform: translate3d(0,0,0); - -moz-transform: translate3d(0,0,0); - -o-transform: translate(0,0); - -ms-transform: translate3d(0,0,0); - transform: translate3d(0,0,0) -} - -.swiper-container-multirow>.swiper-wrapper { - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -ms-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - flex-wrap: wrap -} - -.swiper-container-free-mode>.swiper-wrapper { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; - margin: 0 auto -} - -.swiper-slide { - -webkit-flex-shrink: 0; - -ms-flex: 0 0 auto; - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative -} - -.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide { - height: auto -} - -.swiper-container-autoheight .swiper-wrapper { - -webkit-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-transition-property: -webkit-transform,height; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform,height -} - -.swiper-container .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000 -} - -.swiper-wp8-horizontal { - -ms-touch-action: pan-y; - touch-action: pan-y -} - -.swiper-wp8-vertical { - -ms-touch-action: pan-x; - touch-action: pan-x -} - -.swiper-button-next,.swiper-button-prev { - position: absolute; - top: 50%; - width: 27px; - height: 44px; - margin-top: -22px; - z-index: 10; - cursor: pointer; - -moz-background-size: 27px 44px; - -webkit-background-size: 27px 44px; - background-size: 27px 44px; - background-position: center; - background-repeat: no-repeat -} - -.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled { - opacity: .35; - cursor: auto; - pointer-events: none -} - -.swiper-button-prev,.swiper-container-rtl .swiper-button-next { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); - left: 10px; - right: auto -} - -.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E") -} - -.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E") -} - -.swiper-button-next,.swiper-container-rtl .swiper-button-prev { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); - right: 10px; - left: auto -} - -.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E") -} - -.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E") -} - -.swiper-pagination { - position: absolute; - text-align: center; - -webkit-transition: .3s; - -moz-transition: .3s; - -o-transition: .3s; - transition: .3s; - -webkit-transform: translate3d(0,0,0); - -ms-transform: translate3d(0,0,0); - -o-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - z-index: 10 -} - -.swiper-pagination.swiper-pagination-hidden { - opacity: 0 -} - -.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction { - bottom: 10px; - left: 0; - width: 100% -} - -.swiper-pagination-bullet { - width: 8px; - height: 8px; - display: inline-block; - border-radius: 100%; - background: #000; - opacity: .2 -} - -button.swiper-pagination-bullet { - border: none; - margin: 0; - padding: 0; - box-shadow: none; - -moz-appearance: none; - -ms-appearance: none; - -webkit-appearance: none; - appearance: none -} - -.swiper-pagination-clickable .swiper-pagination-bullet { - cursor: pointer -} - -.swiper-pagination-white .swiper-pagination-bullet { - background: #fff -} - -.swiper-pagination-bullet-active { - opacity: 1; - background: #007aff -} - -.swiper-pagination-white .swiper-pagination-bullet-active { - background: #fff -} - -.swiper-pagination-black .swiper-pagination-bullet-active { - background: #000 -} - -.swiper-container-vertical>.swiper-pagination-bullets { - right: 10px; - top: 50%; - -webkit-transform: translate3d(0,-50%,0); - -moz-transform: translate3d(0,-50%,0); - -o-transform: translate(0,-50%); - -ms-transform: translate3d(0,-50%,0); - transform: translate3d(0,-50%,0) -} - -.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet { - margin: 5px 0; - display: block -} - -.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet { - margin: 0 5px -} - -.swiper-pagination-progress { - background: rgba(0,0,0,.25); - position: absolute -} - -.swiper-pagination-progress .swiper-pagination-progressbar { - background: #007aff; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - -webkit-transform-origin: left top; - -moz-transform-origin: left top; - -ms-transform-origin: left top; - -o-transform-origin: left top; - transform-origin: left top -} - -.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar { - -webkit-transform-origin: right top; - -moz-transform-origin: right top; - -ms-transform-origin: right top; - -o-transform-origin: right top; - transform-origin: right top -} - -.swiper-container-horizontal>.swiper-pagination-progress { - width: 100%; - height: 4px; - left: 0; - top: 0 -} - -.swiper-container-vertical>.swiper-pagination-progress { - width: 4px; - height: 100%; - left: 0; - top: 0 -} - -.swiper-pagination-progress.swiper-pagination-white { - background: rgba(255,255,255,.5) -} - -.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar { - background: #fff -} - -.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar { - background: #000 -} - -.swiper-container-3d { - -webkit-perspective: 1200px; - -moz-perspective: 1200px; - -o-perspective: 1200px; - perspective: 1200px -} - -.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper { - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - transform-style: preserve-3d -} - -.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10 -} - -.swiper-container-3d .swiper-slide-shadow-left { - background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0))); - background-image: -webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -moz-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0)) -} - -.swiper-container-3d .swiper-slide-shadow-right { - background-image: -webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0))); - background-image: -webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -moz-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0)) -} - -.swiper-container-3d .swiper-slide-shadow-top { - background-image: -webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0))); - background-image: -webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -moz-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0)) -} - -.swiper-container-3d .swiper-slide-shadow-bottom { - background-image: -webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0))); - background-image: -webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -moz-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: -o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0)); - background-image: linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0)) -} - -.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper { - -ms-perspective: 1200px -} - -.swiper-container-cube,.swiper-container-flip { - overflow: visible -} - -.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1 -} - -.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide { - pointer-events: none -} - -.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active { - pointer-events: auto -} - -.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top { - z-index: 0; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden -} - -.swiper-container-cube .swiper-slide { - visibility: hidden; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - width: 100%; - height: 100% -} - -.swiper-container-cube.swiper-container-rtl .swiper-slide { - -webkit-transform-origin: 100% 0; - -moz-transform-origin: 100% 0; - -ms-transform-origin: 100% 0; - transform-origin: 100% 0 -} - -.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev { - pointer-events: auto; - visibility: visible -} - -.swiper-container-cube .swiper-cube-shadow { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - height: 100%; - background: #000; - opacity: .6; - -webkit-filter: blur(50px); - filter: blur(50px); - z-index: 0 -} - -.swiper-container-fade.swiper-container-free-mode .swiper-slide { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out -} - -.swiper-container-fade .swiper-slide { - pointer-events: none; - -webkit-transition-property: opacity; - -moz-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity -} - -.swiper-container-fade .swiper-slide .swiper-slide { - pointer-events: none -} - -.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active { - pointer-events: auto -} - -.swiper-zoom-container { - width: 100%; - height: 100%; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-box-pack: center; - -moz-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-box-align: center; - -moz-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - text-align: center -} - -.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg { - max-width: 100%; - max-height: 100%; - object-fit: contain -} - -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0,0,0,.1) -} - -.swiper-container-horizontal>.swiper-scrollbar { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98% -} - -.swiper-container-vertical>.swiper-scrollbar { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98% -} - -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0,0,0,.5); - border-radius: 10px; - left: 0; - top: 0 -} - -.swiper-scrollbar-cursor-drag { - cursor: move -} - -.swiper-lazy-preloader { - width: 42px; - height: 42px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -21px; - margin-top: -21px; - z-index: 10; - -webkit-transform-origin: 50%; - -moz-transform-origin: 50%; - transform-origin: 50%; - -webkit-animation: swiper-preloader-spin 1s steps(12,end) infinite; - -moz-animation: swiper-preloader-spin 1s steps(12,end) infinite; - animation: swiper-preloader-spin 1s steps(12,end) infinite -} - -.swiper-lazy-preloader:after { - display: block; - content: ""; - width: 100%; - height: 100%; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); - background-position: 50%; - -webkit-background-size: 100%; - background-size: 100%; - background-repeat: no-repeat -} - -.swiper-lazy-preloader-white:after { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") -} - -@-webkit-keyframes swiper-preloader-spin { - 100% { - -webkit-transform: rotate(360deg) - } -} - -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg) - } -} diff --git a/_site/assets/css/main.css b/_site/assets/css/main.css deleted file mode 100755 index b871f746..00000000 --- a/_site/assets/css/main.css +++ /dev/null @@ -1,2014 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -/* Icon fonts */ -pre { - background-color: floralwhite; - white-space: pre-wrap; - border: 1px cornsilk inset; - border-radius: 5px; - box-shadow: inset 0 0 .2em darkgray; -} -li { - list-style-position: inside; -} -@font-face { - font-family: 'icomoon'; - src: url('../fonts/icomoon.woff'), url('../fonts/icomoon.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} -[class*="icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Enable Ligatures ================ */ - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-code:before { - content: "\e900"; -} -.icon-lock:before { - content: "\e901"; -} -.icon-search:before { - content: "\e902"; -} -.icon-thumb:before { - content: "\e903"; -} -.icon-arrow-down:before { - content: "\e904"; -} -.icon-arrow-left:before { - content: "\e905"; -} -.icon-arrow-right:before { - content: "\e906"; -} -.icon-arrow-thin-dwn:before { - content: "\e907"; -} -.icon-arrow-thin-lft:before { - content: "\e908"; -} -.icon-arrow-thin-rgt:before { - content: "\e909"; -} -.icon-arrow-thin-up:before { - content: "\e90a"; -} -.icon-arrow-up:before { - content: "\e90b"; -} -.icon-btn-submit:before { - content: "\e90c"; -} -.icon-close:before { - content: "\e90d"; -} -.icon-curly-left:before { - content: "\e90e"; -} -.icon-curly-right:before { - content: "\e90f"; -} -.icon-download-arrow:before { - content: "\e910"; -} -.icon-spinner2:before { - content: "\e97b"; -} -.icon-warning:before { - content: "\ea07"; -} -.icon-info:before { - content: "\ea0c"; -} -.icon-facebook:before { - content: "\ea90"; -} -.icon-twitter:before { - content: "\ea96"; -} -/* Google Font family - Muli */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 300; - src: local('Muli Light Italic'), local('Muli-LightItalic'), url(https://fonts.gstatic.com/s/muli/v16/7Au9p_0qiz-afTf-hCDGzWQN.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 400; - src: local('Muli Italic'), local('Muli-Italic'), url(https://fonts.gstatic.com/s/muli/v16/7Au-p_0qiz-afTf2LwLW.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 600; - src: local('Muli SemiBold Italic'), local('Muli-SemiBoldItalic'), url(https://fonts.gstatic.com/s/muli/v16/7Au9p_0qiz-afTf-8CbGzWQN.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 700; - src: local('Muli Bold Italic'), local('Muli-BoldItalic'), url(https://fonts.gstatic.com/s/muli/v16/7Au9p_0qiz-afTf-lCfGzWQN.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 800; - src: local('Muli ExtraBold Italic'), local('Muli-ExtraBoldItalic'), url(https://fonts.gstatic.com/s/muli/v16/7Au9p_0qiz-afTf-iCTGzWQN.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: italic; - font-weight: 900; - src: local('Muli Black Italic'), local('Muli-BlackItalic'), url(https://fonts.gstatic.com/s/muli/v16/7Au9p_0qiz-afTf-rCXGzWQN.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 300; - src: local('Muli Light'), local('Muli-Light'), url(https://fonts.gstatic.com/s/muli/v16/7Au_p_0qiz-adZnkOCX2yg.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 400; - src: local('Muli Regular'), local('Muli-Regular'), url(https://fonts.gstatic.com/s/muli/v16/7Auwp_0qiz-afTLGKA.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 600; - src: local('Muli SemiBold'), local('Muli-SemiBold'), url(https://fonts.gstatic.com/s/muli/v16/7Au_p_0qiz-ade3iOCX2yg.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 700; - src: local('Muli Bold'), local('Muli-Bold'), url(https://fonts.gstatic.com/s/muli/v16/7Au_p_0qiz-adYnjOCX2yg.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 800; - src: local('Muli ExtraBold'), local('Muli-ExtraBold'), url(https://fonts.gstatic.com/s/muli/v16/7Au_p_0qiz-adZXgOCX2yg.ttf) format('truetype'); -} -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 900; - src: local('Muli Black'), local('Muli-Black'), url(https://fonts.gstatic.com/s/muli/v16/7Au_p_0qiz-adbHhOCX2yg.ttf) format('truetype'); -} -/*---------------------------- 1. Global styles ------------------------------*/ -html, -body { - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; - min-width: 320px; - background: #fff; - color: #484848; - font: 500 16px/1.2 'Muli', sans-serif; -} -div, -section, -header, -footer { - box-sizing: border-box; -} -a { - color: #d6be98; - cursor: pointer; - text-decoration: none; -} -a:focus { - outline: 0 none; -} -a.link { - border-bottom: 1px solid; - transition: all 0.35s; -} -.nonTouch a.link:hover { - color: #f36521; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -figure { - margin: 0; -} -img { - max-width: 100%; - height: auto; -} -ul { - /*list-style: none; - padding: 0;*/ -} -html, -body, -.hfeed, -.mainContainer, -.pageContent { - height: 100%; -} -p { - line-height: 1.5; -} -.pageContent { - overflow: visible; -} -::-moz-selection { - background: #f7931c; - color: #fff; -} -::selection { - background: #f7931c; - color: #fff; -} -::-webkit-media-controls-play-button, -::-webkit-media-controls-start-playback-button { - opacity: 0; - pointer-events: none; - width: 5px; -} -input:-webkit-autofill, -input:-webkit-autofill:hover, -input:-webkit-autofill:focus, -input:-webkit-autofill:active { - -webkit-animation: autofill 0s forwards; - animation: autofill 0s forwards; -} -::-webkit-input-placeholder { - color: inherit; - opacity: 0.5; -} -::-moz-placeholder { - color: inherit; - opacity: 0.5; -} -:-ms-input-placeholder { - color: inherit; - opacity: 0.5; -} -:-moz-placeholder { - color: inherit; - opacity: 0.5; -} -@keyframes autofill { - 100% { - background: transparent; - color: inherit; - } -} -@-webkit-keyframes autofill { - 100% { - background: transparent; - color: inherit; - } -} -input::-webkit-contacts-auto-fill-button { - visibility: hidden; - display: none !important; - pointer-events: none; - position: absolute; - right: 0; -} -a:active, -img:active, -input:active, -button:active, -[role="button"]:active, -a:focus, -img:focus, -input:focus, -button:focus, -[role="button"]:focus { - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - outline: none; -} -/*---------------------------- 2. Helper classes ------------------------------*/ -.hide { - display: none !important; -} -.pullLeft { - float: left; -} -.pullRight { - float: right; -} -.textCenter { - text-align: center; -} -.textLeft { - text-align: left; -} -.textRight { - text-align: right; -} -.clearfix:after { - content: ""; - display: table; - clear: both; -} -.img { - background-size: cover; - background-repeat: no-repeat; - background-position: center; - background-color: #f6f6f6; - box-sizing: border-box; - display: block; - width: 100%; - height: 100%; - position: relative; - z-index: 2; -} -.fullScreen { - height: 100%; - min-height: 460px; - position: relative; -} -@media (min-width: 768px) { - .fullScreen { - height: 100vh; - } -} -.bgCover { - background-size: cover; - background-position: center center; - background-repeat: no-repeat; -} -.fillParent { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.verticalFlex { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -.preload { - position: absolute; - background-repeat: no-repeat; - top: -2px; - left: 0; - width: 0; - height: 0; - overflow: hidden; -} -.swiper-slide { - outline: none; -} -.inviewTop { - position: absolute; - top: 0; - height: 10px; - transform: none !important; -} -.inviewCenter { - position: absolute; - top: 25%; - height: 50%; - transform: none !important; - width: 100vw !important; - opacity: 1 !important; - background: rgba(0, 0, 0, 0) !important; - pointer-events: none; -} -.alert { - position: relative; - background: #faf9ff; - text-align: center; - padding: 13px; - margin: 10px 0; - color: #5d6d91; - box-shadow: 3px 3px 0 rgba(0, 0, 0, 0.05); -} -/*---------------------------- 3. Admin Bar Styles ------------------------------*/ -html.framac-site { - margin-top: 0 !important; -} -div#wpadminbar { - background: none; - height: 27px; -} -div#wp-toolbar { - transition: all 0.3s; - transform: translateY(-100%); - height: 27px; - background: #23282d; -} -div#wpadminbar:hover div#wp-toolbar { - transform: translateY(-5px); -} -@media screen and (max-width: 960px) { - html #wpadminbar { - display: none; - } - html.touchevents, - html.no-touchevents { - margin-top: 0 !important; - } -} -/*---------------------------- 4. Header styles ------------------------------*/ -@media (min-width: 768px) { - #magic-line { - position: absolute; - bottom: 0px; - left: 0; - width: 100px; - height: 2px; - background: #f7931c; - } -} -.siteHeader { - background: #fff; - position: fixed; - width: 100%; - left: 0; - top: 0; - height: 70px; - z-index: 51; -} -@media (min-width: 768px) { - .siteHeader { - height: 60px; - border-bottom: 1px solid #f7f7f7; - } -} -@media (min-width: 1280px) { - .siteHeader { - height: 65px; - padding-left: 35px; - } -} -.siteHeader nav { - display: none; - position: fixed; - top: 0; - left: 0; - height: 100%; - background: rgba(0, 0, 0, 0.85); - width: 100%; - z-index: 61; -} -.siteHeader nav > div { - background: #f2ae22; - width: 70%; - max-width: 310px; - position: absolute; - top: 0; - right: 0; - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; -} -@media (max-width: 767px) { - .siteHeader nav > div { - animation: slideLeftIn 0.5s; - } -} -.siteHeader nav ul { - list-style: none; - padding: 0; - display: table; - margin: auto; - position: relative; - overflow: hidden; -} -.siteHeader nav li { - display: block; -} -.siteHeader nav li a { - color: #fff; - text-transform: uppercase; - font-size: 18px; - padding: 10px; - display: block; -} -.siteHeader nav li.current-menu-item a { - color: #000; -} -@media (max-width: 767px) { - .siteHeader nav li { - animation: slideLeftIn 0.5s; - } - .siteHeader nav li:nth-child(2) { - animation-duration: 0.6s; - } - .siteHeader nav li:nth-child(3) { - animation-duration: 0.7s; - } - .siteHeader nav li:nth-child(4) { - animation-duration: 0.8s; - } - .siteHeader nav li:nth-child(5) { - animation-duration: 0.9s; - } - .siteHeader nav li:nth-child(6) { - animation-duration: 1s; - } -} -.siteHeader .btnDownload { - display: none; -} -.siteHeader #top_point { - position: absolute; - top: 0; - width: 20px; - height: 4px; - visibility: hidden; -} -@media (max-width: 767px) { - .siteHeader.menuOpen { - height: 100%; - background: transparent; - position: fixed; - z-index: 53; - } -} -.siteHeader.menuOpen nav { - display: block; -} -@media (min-width: 768px) { - .siteHeader nav { - display: block; - position: static; - background: none; - width: auto; - float: right; - } - .siteHeader nav > div { - background: none; - position: static; - width: auto; - max-width: none; - display: block; - float: left; - } - .siteHeader nav ul { - display: block; - margin-right: 68px; - } - .siteHeader nav li { - float: left; - } - .siteHeader nav li a { - color: #717171; - border-bottom: 2px solid #fff; - font-size: 11px; - position: relative; - padding: 24px 10px 21px; - line-height: 1; - transition: color 0.35s, background 0.35s, border 0.35s; - } - .siteHeader nav li.current-menu-item a { - color: #f26521; - } - .siteHeader .btnDownload { - float: right; - display: block; - box-sizing: border-box; - background: #f7931c; - color: #fff; - font-size: 20px; - height: 60px; - width: 68px; - text-align: center; - line-height: 62px; - position: fixed; - right: 0; - top: 0; - z-index: 61; - } - .siteHeader .btnDownload .icon-download-arrow { - display: inline-block; - margin: 0 5px; - font-size: 16px; - position: relative; - top: -2px; - } - .siteHeader .btnDownload span { - position: relative; - z-index: 2; - } - .siteHeader .btnDownload span i { - transition: transform 0.4s; - } - .siteHeader .btnDownload:before, - .siteHeader .btnDownload:after { - content: ''; - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - transition: opacity 0.3s; - } - .siteHeader .btnDownload:before { - background: #f26521; - background: -moz-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: -webkit-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - } - .siteHeader .btnDownload:after { - background: #f7931c; - background: -moz-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: -webkit-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - opacity: 0; - } - .nonTouch .siteHeader .btnDownload:hover:after { - opacity: 1; - } - .nonTouch .siteHeader .btnDownload:hover span i:first-child { - transform: translateX(-2px); - } - .nonTouch .siteHeader .btnDownload:hover span i:last-child { - transform: translateX(2px); - } - .nonTouch .siteHeader .btnDownload:hover span i.icon-download-arrow { - animation: intimateDownload 0.8s ease; - } - .siteHeader .btnDownload.sticky { - box-shadow: 0 8px 18px rgba(0, 0, 0, 0.2); - } -} -@media (min-width: 1280px) { - .siteHeader nav ul { - margin-right: 80px; - } - .siteHeader nav li a { - font-size: 13px; - padding: 25px 22px 22px; - line-height: 1.2; - } - .siteHeader .btnDownload { - font-size: 23px; - height: 65px; - width: 80px; - line-height: 67px; - } - .siteHeader .btnDownload .icon-download-arrow { - margin: 0 6px; - font-size: 20px; - } -} -@media (min-width: 1600px) { - .siteHeader nav li a { - font-weight: 600; - padding: 25px 25px 22px; - } -} -@media (min-width: 768px) { - .nonTouch .siteHeader nav li:not([class*="current-menu-item"]) a { - transition: 0.5s ease-out; - } -} -.brandLogo { - position: absolute; - top: 6px; - left: 6px; - display: block; -} -.brandLogo span { - display: none; -} -.brandLogo img { - width: 128px; -} -@media (min-width: 768px) { - .brandLogo { - position: static; - padding: 6px; - float: left; - } - .brandLogo img { - width: 104px; - } -} -@media (min-width: 1280px) { - .brandLogo { - padding: 0; - } - .brandLogo img { - width: 145px; - } -} -.menuToggle { - position: absolute; - right: 10px; - top: 10px; - padding: 6px 8px; - z-index: 62; - backface-visibility: hidden; -} -.menuToggle span { - display: block; - margin: 8px 0 8px 8px; - position: relative; - width: 26px; - height: 22px; -} -.menuToggle span i { - background: #f7931c; - border-radius: 8px; - display: block; - height: 4px; - width: 26px; - transition: all 0.4s; - transform: scaleY(0.8); - position: absolute; - right: 0; -} -.menuToggle span i:first-child { - top: 0; -} -.menuToggle span i:first-child + i { - top: 8px; -} -.menuToggle span i:first-child + i + i { - top: 16px; -} -.menuToggle span.close i { - background: #fff; - width: 26px; - height: 3px; -} -.menuToggle .close { - display: none; -} -.menuOpen .menuToggle .open { - display: none; -} -.menuOpen .menuToggle .close { - display: block; -} -.menuOpen .menuToggle span i { - transform: rotate(45deg); -} -.menuOpen .menuToggle span i:first-child { - top: 8px; - width: 26px; -} -.menuOpen .menuToggle span i:first-child + i { - transform: rotate(-45deg); - top: 8px; - width: 26px; -} -@media (min-width: 768px) { - .menuToggle { - display: none; - } -} -@keyframes slideLeftIn { - from { - opacity: 0; - transform: translateX(100%); - } - to { - opacity: 1; - transform: translateX(0%); - } -} -@keyframes intimateDownload { - 0% { - opacity: 1; - transform: translateY(0px); - } - 45% { - opacity: 0; - transform: translateY(10px); - } - 55% { - opacity: 0; - transform: translateY(-10px); - } - 100% { - opacity: 1; - transform: translateY(0px); - } -} -.pageDocumentation .btnPdfDownload { - background: #f7931c; - border-radius: 80px; - border: 0 none; - box-shadow: 0 8px 16px rgba(244, 116, 31, 0.5); - outline: 0 none; - color: #fff; - cursor: pointer; - display: inline-block; - font-size: 18px; - font-weight: 300; - padding: 16px 34px; - position: relative; - overflow: hidden; - transition: transform 0.4s, box-shadow 0.4s; - backface-visibility: hidden; - z-index: 1; - position: absolute; - bottom: 20px; - right: 20px; - padding: 15px 25px !important; - font-size: 20px; - border-radius: 40px; - opacity: 0; - pointer-events: none; - transition: opacity 0.3s; -} -.pageDocumentation .btnPdfDownload span { - position: relative; - z-index: 2; -} -.pageDocumentation .btnPdfDownload span span { - margin-left: 8px; -} -.pageDocumentation .btnPdfDownload span i { - top: 2px; -} -.pageDocumentation .btnPdfDownload span .icon-download-arrow { - font-size: 17px; - margin: 0 7px; - top: 1px; -} -.pageDocumentation .btnPdfDownload i { - position: relative; - z-index: 2; -} -.pageDocumentation .btnPdfDownload small { - position: relative; - text-transform: uppercase; - z-index: 2; - font-size: 70%; - font-weight: 600; - line-height: 1; - display: block; - margin: 0 15px; -} -@media (min-width: 1024px) { - .pageDocumentation .btnPdfDownload small { - margin: 0 25px; - } -} -.pageDocumentation .btnPdfDownload b { - font-weight: 700; -} -.pageDocumentation .btnPdfDownload:before, -.pageDocumentation .btnPdfDownload:after { - content: ''; - display: block; - border-radius: 80px; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - transition: opacity 0.3s; -} -.pageDocumentation .btnPdfDownload:before { - background: #f26521; - background: -moz-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: -webkit-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: linear-gradient(-150deg, #f26521 0%, #f7931c 80%); -} -.pageDocumentation .btnPdfDownload:after { - background: #f7931c; - background: -moz-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: -webkit-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - opacity: 0; -} -.nonTouch .pageDocumentation .btnPdfDownload:hover:after { - opacity: 1; -} -.nonTouch .pageDocumentation .btnPdfDownload:hover .icon-download-arrow { - animation: intimateDownload 0.8s ease; -} -@media (min-width: 1280px) { - .pageDocumentation .btnPdfDownload { - font-size: 22px; - padding: 20px 45px; - box-shadow: 0 10px 20px rgba(244, 112, 32, 0.5); - } - .pageDocumentation .btnPdfDownload span .icon-download-arrow { - font-size: 19px; - margin: 0 8px; - } -} -.pageDocumentation .btnPdfDownload.btnCancel { - background: #f3f3f3; - box-shadow: none; - color: rgba(0, 0, 0, 0.5); -} -.pageDocumentation .btnPdfDownload.btnCancel:before { - display: none; -} -.nonTouch .pageDocumentation .btnPdfDownload.btnCancel:hover { - color: #fff; -} -.pageDocumentation .btnPdfDownload.btnCancel.active { - color: #fff; -} -.pageDocumentation .btnPdfDownload.btnCancel.active:before { - display: block; -} -.pageDocumentation .btnPdfDownload.cta-download span i { - transition: transform 0.4s; -} -.nonTouch .pageDocumentation .btnPdfDownload.cta-download:hover span i:first-child { - transform: translateX(-2px); -} -.nonTouch .pageDocumentation .btnPdfDownload.cta-download:hover span i:last-child { - transform: translateX(2px); -} -.nonTouch .pageDocumentation .btnPdfDownload.cta-download:hover span i.icon-download-arrow { - animation: intimateDownload 0.8s ease; -} -.pageDocumentation .btnPdfDownload.btnSmall { - font-size: 15px; - padding: 13px 25px; -} -.pageDocumentation .btnPdfDownload.btnSmall span .icon-download-arrow { - font-size: 90%; - margin-right: 0; -} -@media (max-width: 767px) { - .pageDocumentation .btnPdfDownload { - display: none; - } -} -.touch .pageDocumentation .btnPdfDownload { - opacity: 1; - display: block; - font-size: 18px; - padding: 13px 23px 12px !important; - bottom: 18px; - right: 18px; -} -.pageDocumentation .btnPdfDownload:before, -.pageDocumentation .btnPdfDownload:after { - border-radius: 40px; -} -.pageDocumentation .btnPdfDownload i { - position: relative; -} -.pageDocumentation .listItem:hover .btnPdfDownload { - opacity: 1; - pointer-events: all; -} -/*---------------------------- 5. Common button ------------------------------*/ -.btn { - background: #f7931c; - border-radius: 80px; - border: 0 none; - box-shadow: 0 8px 16px rgba(244, 116, 31, 0.5); - outline: 0 none; - color: #fff; - cursor: pointer; - display: inline-block; - font-size: 18px; - font-weight: 300; - padding: 16px 34px; - position: relative; - overflow: hidden; - transition: transform 0.4s, box-shadow 0.4s; - backface-visibility: hidden; - z-index: 1; -} -.btn span { - position: relative; - z-index: 2; -} -.btn span span { - margin-left: 8px; -} -.btn span i { - top: 2px; -} -.btn span .icon-download-arrow { - font-size: 17px; - margin: 0 7px; - top: 1px; -} -.btn i { - position: relative; - z-index: 2; -} -.btn small { - position: relative; - text-transform: uppercase; - z-index: 2; - font-size: 70%; - font-weight: 600; - line-height: 1; - display: block; - margin: 0 15px; -} -@media (min-width: 1024px) { - .btn small { - margin: 0 25px; - } -} -.btn b { - font-weight: 700; -} -.btn:before, -.btn:after { - content: ''; - display: block; - border-radius: 80px; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - transition: opacity 0.3s; -} -.btn:before { - background: #f26521; - background: -moz-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: -webkit-linear-gradient(-150deg, #f26521 0%, #f7931c 80%); - background: linear-gradient(-150deg, #f26521 0%, #f7931c 80%); -} -.btn:after { - background: #f7931c; - background: -moz-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: -webkit-linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - background: linear-gradient(-150deg, #f7931c 0%, #f26521 80%); - opacity: 0; -} -.nonTouch .btn:hover:after { - opacity: 1; -} -.nonTouch .btn:hover .icon-download-arrow { - animation: intimateDownload 0.8s ease; -} -@media (min-width: 1280px) { - .btn { - font-size: 22px; - padding: 20px 45px; - box-shadow: 0 10px 20px rgba(244, 112, 32, 0.5); - } - .btn span .icon-download-arrow { - font-size: 19px; - margin: 0 8px; - } -} -.btn.btnCancel { - background: #f3f3f3; - box-shadow: none; - color: rgba(0, 0, 0, 0.5); -} -.btn.btnCancel:before { - display: none; -} -.nonTouch .btn.btnCancel:hover { - color: #fff; -} -.btn.btnCancel.active { - color: #fff; -} -.btn.btnCancel.active:before { - display: block; -} -.btn.cta-download span i { - transition: transform 0.4s; -} -.nonTouch .btn.cta-download:hover span i:first-child { - transform: translateX(-2px); -} -.nonTouch .btn.cta-download:hover span i:last-child { - transform: translateX(2px); -} -.nonTouch .btn.cta-download:hover span i.icon-download-arrow { - animation: intimateDownload 0.8s ease; -} -.btn.btnSmall { - font-size: 15px; - padding: 13px 25px; -} -.btn.btnSmall span .icon-download-arrow { - font-size: 90%; - margin-right: 0; -} -.btnFrama { - display: inline-block; - border-radius: 30px; - padding: 15px 35px; - background-color: #f7931c; - color: #fff; - font-weight: 700; - font-size: 14px; - text-transform: uppercase; -} -.mainContainer { - padding-top: 70px; -} -h2 { - font-size: 18px; -} -.pageTitle { - font-weight: 700; - padding: 0 15px; - margin: 0 0 40px; - font-size: 24px; - line-height: 1; - text-transform: uppercase; -} -@media (max-width: 767px) { - .pageTitle { - text-align: center; - } -} -@media (min-width: 600px) { - .pageTitle { - padding: 0 10px; - } -} -@media (min-width: 1280px) { - .pageTitle { - padding: 0; - font-size: 30px; - } -} -.subTitle { - font-weight: 700; - font-size: 22px; - line-height: 1.3; - margin-top: 0; - margin-bottom: 30px; -} -.subTitle b, -.subTitle h6 { - font-weight: 700; -} -@media (min-width: 1280px) { - .subTitle { - font-size: 28px; - } -} -.pages { - position: relative; - max-width: 1260px; - margin: 0 auto; - padding-bottom: 130px; -} -.pages:after { - content: ''; - display: block; - width: 100%; - height: 0; - clear: both; -} -.pages .wrap { - position: relative; -} -.pages .bgTextbig { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - color: #f9f9f9; - font-weight: 700; - font-size: 150px; - text-transform: uppercase; - pointer-events: none; -} -@media (max-width: 767px) { - .pages .bgTextbig { - display: none; - } -} -@media (min-width: 768px) { - .pages .bgTextbig { - font-size: 200px; - } -} -@media (min-width: 1280px) { - .pages .bgTextbig { - font-size: 300px; - } -} -.pages p { - font-size: 14px; - margin-bottom: 20px; - margin-top: 0; - line-height: 1.3; -} -@media (min-width: 768px) { - .pages p { - font-size: 15px; - } -} -@media (min-width: 1024px) { - .pages p { - font-size: 16px; - margin-bottom: 25px; - } -} -@media (min-width: 1600px) { - .pages p { - font-size: 17px; - } -} -.pages p:last-child { - margin-bottom: 0; -} -.pageBanner { - position: relative; - color: #fff; - background-color: #fff; - background-position: center; - background-repeat: no-repeat; - box-shadow: 0 54px 70px 0 rgba(0, 0, 0, 0.3); -} -@media (max-width: 767px) { - .pageBanner { - height: 275px; - margin-bottom: 80px; - margin-left: -10px; - margin-right: -10px; - } -} -@media (min-width: 768px) { - .pageBanner { - height: 350px; - margin-bottom: 120px; - } -} -@media (min-width: 1024px) { - .pageBanner { - height: 450px; - margin-bottom: 150px; - } -} -@media (min-width: 1280px) { - .pageBanner { - height: 550px; - margin-bottom: 180px; - } -} -.pages .pageBanner p { - position: absolute; - top: 50%; - left: 10%; - right: 10%; - transform: translateY(-50%); - font-weight: 700; - font-size: 20px; - margin: 0; -} -@media (min-width: 768px) { - .pages .pageBanner p { - font-size: 32px; - } -} -.listItem { - display: block; - overflow: hidden; - cursor: pointer; - color: inherit; - position: relative; - background-color: #f4f4f4; - margin-bottom: 10px; - padding: 35px 30px 30px; - box-sizing: border-box; -} -@media (min-width: 600px) { - .listItem { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .listItem { - padding: 3vw; - } -} -.listItem .listItemTitle { - text-transform: uppercase; - font-weight: 700; - font-size: 16px; - margin: 0 0 15px; - transition: 0.35s; -} -@media (min-width: 1280px) { - .listItem .listItemTitle { - font-size: 18px; - } -} -.listItem .listItemTitle:before { - content: attr(data-bgtext); - position: absolute; - bottom: -50px; - left: 7%; - font-size: 200px; - line-height: 1; - display: block; - pointer-events: none; - color: #f0f0f0; - white-space: nowrap; - transition: 0.3s; -} -.listItem .listItemTitle span { - position: relative; -} -.listItem p { - font-weight: 600; - position: relative; - color: rgba(51, 51, 51, 0.6); - font-size: 14px; - margin: 0 0 20px; -} -.pageDetail.pages .wrap { - padding: 0 15px 30px; -} -@media (min-width: 768px) { - .pageDetail.pages .wrap { - padding: 0 17% 30px 25%; - } -} -.pageDetail.pages .blocks { - margin-bottom: 40px; -} -.pageDetail.pages .blocks ul { - list-style-type: none; - padding: 0; -} -.pageDetail.pages .btnPageDetail { - display: inline-block; - padding: 0 30px; - min-width: 200px; - margin-bottom: 40px; - color: #fff; - font-weight: 700; - font-size: 14px; - line-height: 60px; - text-align: center; - text-transform: uppercase; - border-radius: 30px; - box-sizing: border-box; - background-color: #f7931c; - box-shadow: 0 16px 20px 0 rgba(140, 88, 50, 0.24); -} -.goBack { - display: inline-block; - color: #c19e56; - font-size: 18px; - margin-bottom: 20px; -} -.goBack i { - display: inline-block; - margin-right: 7px; - font-size: 80%; -} -@media (min-width: 768px) { - .goBack { - position: absolute; - left: 0; - right: 75%; - padding: 0 15px; - text-align: center; - } -} -.goBack2 { - display: inline-block; - color: #c19e56; - font-size: 18px; - margin-bottom: 20px; -} -.goBack2 i { - display: inline-block; - margin-right: 7px; - font-size: 80%; -} -@media (min-width: 768px) { - .goBack2 { - position: absolute; - left: 0; - right: 75%; - padding: 0 15px; - text-align: center; - } -} -.listArrow li { - position: relative; - padding-left: 28px; - font-size: 14px; - margin-bottom: 7px; -} -.listArrow li:before { - position: absolute; - top: 4px; - left: 3px; - content: '\e906'; - font-size: 76%; - color: #f7931c; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.docListwrap { - padding: 0; -} -.docListwrap > section { - margin-bottom: 35px; -} -@media (min-width: 600px) { - .docListwrap > section { - display: flex; - flex-wrap: wrap; - margin-bottom: 130px; - } -} -@media (min-width: 768px) { - .docListwrap > section { - padding: 0 10px; - } -} -@media (min-width: 1280px) { - .docListwrap > section { - padding: 0; - } -} -.docListwrap > section > div, -.docListwrap > section .listItem { - box-sizing: border-box; -} -@media (min-width: 600px) { - .docListwrap > section > div, - .docListwrap > section .listItem { - width: 49%; - margin: 0 0.5% 1%; - } -} -@media (min-width: 768px) { - .docListwrap > section > div, - .docListwrap > section .listItem { - width: 32.66%; - margin: 0 0.25% 0.5%; - box-sizing: border-box; - } - .docListwrap > section > div:nth-child(4), - .docListwrap > section .listItem:nth-child(4), - .docListwrap > section > div:nth-child(5), - .docListwrap > section .listItem:nth-child(5) { - width: 49.25%; - } - .docListwrap > section > div:nth-child(4) h3:before, - .docListwrap > section .listItem:nth-child(4) h3:before, - .docListwrap > section > div:nth-child(5) h3:before, - .docListwrap > section .listItem:nth-child(5) h3:before { - left: 20%; - } - .docListwrap > section > div:nth-child(4):nth-last-child(1), - .docListwrap > section .listItem:nth-child(4):nth-last-child(1) { - width: 32.66%; - margin: auto; - position: relative; - left: -0.25%; - } -} -.docListwrap > section > div.docListTitle, -.docListwrap > section .listItem.docListTitle { - align-self: center; -} -@media (min-width: 768px) { - .docListwrap > section > div.docListTitle, - .docListwrap > section .listItem.docListTitle { - width: 32.66%; - } -} -.docListTitle { - font-weight: 700; - margin-bottom: 25px; - font-size: 26px; - padding: 0 30px; - word-break: break-word; -} -@media (min-width: 768px) { - .docListTitle { - font-size: 30px; - } -} -.linkReadmore { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - cursor: pointer; - display: block; -} -.docReadMore { - position: relative; - display: inline-block; - color: #d6be98; - padding-bottom: 2px; - /*@media @uptoSmallScreen { - display: none; - }*/ -} -.docReadMore:before, -.docReadMore:after { - content: ''; - position: absolute; - bottom: 0; - background-color: currentColor; - transition: 0.2s; -} -.docReadMore:before { - left: -5px; - width: 1px; - height: 0; -} -.docReadMore:after { - left: 0; - width: 100%; - height: 1px; -} -.listItem:hover .docReadMore:before { - height: 100%; -} -.listItem:hover .docReadMore:after { - left: -5px; - width: 20px; -} -.defnitionList { - max-width: 1260px; - margin: 0 auto; - text-align: left; -} -@media (min-width: 768px) { - .defnitionList { - clear: both; - padding-top: 50px; - overflow: hidden; - } - .defnitionList > * { - width: 50%; - float: left; - } -} -.defnitionList.termsPage dt { - width: 25%; -} -.defnitionList.termsPage dd { - width: 75%; -} -.defnitionList dt { - padding-right: 5%; - box-sizing: border-box; -} -.defnitionList dt.subTitle { - margin-bottom: 20px; -} -.defnitionList dt p { - margin: 0; -} -.defnitionList dd { - font-size: 14px; - line-height: 1.3; - margin: 0 0 50px; -} -.defnitionList dd dd{ - margin: 0 0 10px; -} -@media (min-width: 768px) { - .defnitionList dd { - font-size: 15px; - } -} -@media (min-width: 768px) { - .defnitionList dd { - font-size: 16px; - margin-bottom: 100px; - } - - .defnitionList dd dd{ - font-size: 16px; - margin-bottom: 10px; - } -} -.defnitionList dd p a { - display: table; - padding: 15px 30px; - margin: 30px auto 0; - color: #f7931c; - font-weight: 600; - border-radius: 25px; - border: 1px solid #f7931c; - background-color: #fff; - box-shadow: 0 15px 20px 0 rgba(140, 88, 50, 0.25); - transition: 0.25s; -} -@media (min-width: 768px) { - .defnitionList dd p a { - margin: 30px 0 0; - border-width: 2px; - } -} -.defnitionList strong { - font-weight: 700; -} -.lineMove { - position: relative; - display: inline-block; - color: #f7931c; - padding-bottom: 2px; - transition: 0.35s; -} -.lineMove:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0; - height: 1px; - background-color: #f7931c; - transition: 0.5s ease-out; -} -.nonTouch .lineMove:hover { - color: #333; -} -.nonTouch .lineMove:hover:before { - width: 100%; -} -.nonTouch .defnitionList dd p a:hover { - background-color: #f7931c; - color: #fff; -} -.notebook { - max-width: 400px; - margin: 40px auto 0; - padding: 1px 1px 0; - border-radius: 30px 30px 0 0; - border: 1px solid #adadad; - border-bottom: 0; - background-color: #f6f6f6; - transition: max-width 0.5s ease-out; -} -@media (max-width: 767px) { - .notebook { - border-radius: 15px 15px 0 0; - } -} -@media (min-width: 768px) { - .notebook { - margin-top: 70px; - max-width: 600px; - } -} -@media (min-width: 1024px) { - .notebook { - max-width: 810px; - } -} -.notebook > div { - position: relative; - padding: 30px 30px 0; - border-radius: 30px 30px 0 0; - border: 1px solid #7f7f7f; - border-bottom: 0; - background-color: #ddd; -} -@media (max-width: 767px) { - .notebook > div { - padding: 15px 15px 0; - border-radius: 15px 15px 0 0; - } -} -@media (min-width: 1024px) { - .notebook > div { - padding: 40px 40px 0; - } -} -.notebook > div:after { - content: ''; - position: absolute; - top: 15px; - left: 50%; - transform: translateX(-50%); - width: 3px; - height: 3px; - background-color: #7e7e77; - border-radius: 50%; - box-shadow: 0 0 1px 3px rgba(0, 0, 0, 0.9), 0 0 2px 4px rgba(255, 255, 255, 0.9); -} -@media (max-width: 767px) { - .notebook > div:after { - transform: translateX(-50%) translateY(-8px) scale(0.58); - } -} -@media (min-width: 1024px) { - .notebook > div:after { - top: 20px; - } -} -.notebook > div > div { - min-height: 200px; - border: 1px solid #c3c3c3; - background-color: #f7f7f9; - box-shadow: 0 0 2px rgba(255, 255, 255, 0.7); -} -@media (min-width: 768px) { - .notebook > div > div { - min-height: 300px; - } -} -@media (min-width: 1024px) { - .notebook > div > div { - min-height: 400px; - } -} -.notebook .tooltip { - vertical-align: super; - font-size: smaller; - font-weight: bold; - color: red; - pointer-events: none; - position: relative; - top: 2px; -} -.notebook .highlight { - background-color: #FFFF00; - color: #000000; -} -.notebook .highlight2 { - background-color: #00FFFF; - color: #000000; -} -.codeScreen { - position: relative; -} -.codeScreen .codeTab { - position: absolute; - width: 100%; - height: 100%; - overflow: auto; - left: 0; - top: 0; - padding: 20px 20px 5px; - /*overflow: auto;*/ - text-align: left; -} -.codeScreen .codeTab.tab-linux { - background: #f9f9f9; -} -.codeScreen .codeTab.tab-mac { - background: #f6f8ff; -} -.codeScreen .codeTab.tab-windows { - background: #000; -} -.codeScreen .codeTab.tab-demo { - background: #202020; -} -@media (min-width: 1024px) { - .codeScreen .codeTab { - font-size: 15px; - padding: 30px 40px 5px; - } -} -.codeScreen .codeTab::-webkit-scrollbar { - width: 6px; - background-color: transparent; -} -.codeScreen .codeTab::-webkit-scrollbar-thumb { - background-color: rgba(200, 200, 200, 0.4); -} -.codeScreen .codeTab::-webkit-scrollbar-track { - box-shadow: none; - background-color: rgba(200, 200, 200, 0.15); -} -.codeScreen pre { - white-space: pre-wrap; -} -/*---------------------------- 5. Common footer ------------------------------*/ -footer { - position: relative; - z-index: 51; - margin-top: -125px; - height: 125px; - text-align: center; -} -footer .footLogo { - display: none; -} -footer nav { - margin: 4px 0 20px; -} -footer nav a { - color: #f7931c; - font-size: 38px; - padding: 5px 10px; - line-height: 1; - transition: color 0.4s; - position: relative; -} -footer nav a i { - display: inline-block; - transition: transform 0.4s; - position: relative; - z-index: 2; -} -footer nav a:after { - content: ''; - display: inline-block; - background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 66%); - width: 30px; - height: 20px; - position: absolute; - bottom: 3px; - left: 50%; - margin-left: -15px; - transition: all 0.4s; - transform: translateY(-15px) scale(0); - opacity: 0; -} -.nonTouch footer nav a:hover { - color: #f26521; -} -.nonTouch footer nav a:hover i { - transform-origin: top center; - transform: translateY(-4px) scale(0.9); -} -.nonTouch footer nav a:hover:after { - transform: translateY(5px) scale(1); - opacity: 1; -} -footer .copyright { - font-size: 10px; - width: 180px; - margin: 0 auto; - color: #000; - text-transform: uppercase; - font-weight: 700; -} -footer .copyright ul { - margin: 5px 0 0; - padding: 0; -} -footer .copyright li { - display: inline-block; - vertical-align: top; - position: relative; -} -footer .copyright li:after { - content: '-'; -} -footer .copyright li:last-child:after { - content: ''; -} -footer .copyright li + li { - margin-left: -3px; -} -footer .copyright a { - color: #000; - border-bottom: 1px solid #bbb; - display: inline-block; - padding: 0 2px; - margin: 0 5px; - transition: all 0.4s; -} -.nonTouch footer .copyright a:hover { - border-bottom-color: #f36521; - color: #000; - text-shadow: 0 1px 0 #888; -} -@media (min-width: 768px) { - footer { - background: #fff; - border-top: 1px solid #f7f7f7; - overflow: hidden; - padding: 32px 5% 0; - margin-top: -120px; - height: 120px; - } - footer .footLogo { - display: block; - float: left; - } - footer .footLogo img { - display: block; - height: 50px; - } - footer .twitterLink { - float: right; - } - footer .copyright { - color: #333333; - opacity: 0.5; - margin: 0 auto; - padding: 0 0 12px; - } - footer .copyright a { - color: #333; - } - footer nav { - margin: 0 0 5px; - } - footer nav a { - font-size: 35px; - padding: 10px 5px; - } -} -@media (min-width: 1280px) { - footer { - margin-top: -128px; - height: 128px; - padding: 36px 9% 0; - } - footer .copyright { - font-size: 11px; - width: 210px; - } -} -@keyframes flash { - 0%, - 50%, - 100% { - opacity: 1; - } - 25%, - 75% { - opacity: 0; - } -} -@keyframes shake { - 0%, - 100% { - transform: translate3d(0, 0, 0); - } - 10%, - 30%, - 50%, - 70%, - 90% { - transform: translate3d(-10px, 0, 0); - } - 20%, - 40%, - 60%, - 80% { - transform: translate3d(10px, 0, 0); - } -} -.nonTouch .listItem { - transition: 0.35s ease-out; -} -.nonTouch .listItem:hover { - transform: translateY(-5px); - z-index: 1; - box-shadow: 15px 40px 40px 0 rgba(0, 0, 0, 0.15); -} -.nonTouch .listItem:hover .listItemTitle:before { - color: #f9f9f9; -} diff --git a/_site/assets/css/page.css b/_site/assets/css/page.css deleted file mode 100755 index 975696bc..00000000 --- a/_site/assets/css/page.css +++ /dev/null @@ -1,1219 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -/* Default Page styles */ -.defaultPage { - display: flex; - color: #333; - font-size: 14px; - text-align: center; - min-height: 100%; - max-width: 100vw; - padding: 20px 0 120px; -} -@media (min-width: 1024px) { - .defaultPage { - font-size: 15px; - padding-top: 30px; - } -} -@media (min-width: 1600px) { - .defaultPage { - font-size: 16px; - } -} -.defaultPage h1 { - margin: 0; - padding: 15px 0 25px; - font-size: 20px; - text-transform: uppercase; -} -@media (min-width: 768px) { - .defaultPage h1 { - margin: 0; - padding: 18px 0 32px; - font-size: 25px; - text-transform: uppercase; - } -} -@media (min-width: 1600px) { - .defaultPage h1 { - font-size: 28px; - } -} -.defaultPage h1 strong { - font-size: 115%; - font-weight: 700; -} -.defaultPage h5 { - font-weight: 700; - font-size: 15px; - margin: 0 0 14px; -} -@media (min-width: 768px) { - .defaultPage h5 { - font-size: 17px; - font-weight: 600; - margin-bottom: 20px; - } -} -@media (min-width: 1280px) { - .defaultPage h5 { - font-size: 19px; - } -} -.defaultPage h3 { - font-size: 18px; -} -@media (min-width: 768px) { - .defaultPage h3 { - font-size: 21px; - } -} -@media (min-width: 1024px) { - .defaultPage h3 { - font-size: 25px; - } -} -@media (min-width: 1600px) { - .defaultPage h3 { - font-size: 28px; - } -} -@media (min-width: 1890px) { - .defaultPage h3 { - font-size: 30px; - } -} -.defaultPage article { - margin: auto; - position: relative; - z-index: 2; -} -.defaultPage .pageWrapper { - padding: 0 15px 40px; - margin: 0 auto; - max-width: 1260px; -} -@media (min-width: 768px) { - .defaultPage .pageWrapper { - padding-bottom: 20px; - } -} -.ie10 .wikiPage, -.ie11 .wikiPage, -.ie10 .versionsPage, -.ie11 .versionsPage, -.ie10 .authorsPage, -.ie11 .authorsPage { - display: block; - text-align: center; -} -.ie10 .wikiPage:before, -.ie11 .wikiPage:before, -.ie10 .versionsPage:before, -.ie11 .versionsPage:before, -.ie10 .authorsPage:before, -.ie11 .authorsPage:before { - display: inline-block; - vertical-align: middle; - content: ''; - height: 70vh; -} -.ie10 .wikiPage > div, -.ie11 .wikiPage > div, -.ie10 .versionsPage > div, -.ie11 .versionsPage > div, -.ie10 .authorsPage > div, -.ie11 .authorsPage > div, -.ie10 .wikiPage > article, -.ie11 .wikiPage > article, -.ie10 .versionsPage > article, -.ie11 .versionsPage > article, -.ie10 .authorsPage > article, -.ie11 .authorsPage > article { - display: inline-block; - vertical-align: middle; - text-align: left; -} -/* Author Page */ -@media (min-width: 768px) { - .authorPageContent { - width: 90%; - } -} -@media (min-width: 1280px) { - .authorPageContent { - width: 810px; - } -} -@media (min-width: 1600px) { - .authorPageContent { - width: 850px; - } -} -.authorPageContent nav a { - color: #333; - transition: all 0.35s; -} -.nonTouch .authorPageContent nav a:hover { - color: #f36521; -} -.authorPageContent h5 { - font-size: 110%; -} -.authorPageContent .contentInfoBox + .contentInfoBox { - margin-top: 60px; -} -@media (min-width: 768px) { - .authorPageContent .contentInfoBox + .contentInfoBox { - margin-top: 75px; - } -} -@media (min-width: 1890px) { - .authorPageContent .contentInfoBox + .contentInfoBox { - margin-top: 90px; - } -} -@media (min-width: 1890px) { - .authorPageContent .contentInfoBox { - margin-top: 20px; - } -} -.authorPageContent .authorInfo { - margin-bottom: 15px; -} -.authorPageContent .authorInfo p { - display: table; - margin: 7px auto; -} -.authorPageContent .authorInfo .title { - display: block; - font-size: 110%; - font-weight: 600; -} -.authorPageContent .authorInfo img { - height: 50px; -} -@media (min-width: 768px) { - .authorList { - padding-top: 5px; - } - .authorList .authorInfo { - text-align: left; - display: inline-block; - width: 152px; - vertical-align: top; - padding: 0 8px 12px; - } - .authorList .authorInfo p { - display: block; - } -} -@media (min-width: 1024px) { - .authorList .authorInfo { - width: 190px; - padding: 0 14px 12px; - } -} -@media (min-width: 1280px) { - .authorList .authorInfo .title { - margin-bottom: 4px; - } -} -/* Usage Page styles */ -.usagePage { - padding-top: 0; - overflow: hidden; -} -.usagePageContent { - text-align: left; -} -.codeDemoHead { - background: #fff; - color: #fff; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.25); -} -@media (min-width: 768px) { - .codeDemoHead { - margin: 30px auto 0; - width: 86%; - max-width: 1260px; - } -} -@media (min-width: 1024px) { - .codeDemoHead { - box-shadow: rgba(0, 0, 0, 0.3) 0px 54px 70px 0px; - width: 74%; - } -} -.codeDemoHead .tabletScreen { - width: 290px; - padding-bottom: 170px; -} -@media (min-width: 360px) { - .codeDemoHead .tabletScreen { - width: 330px; - padding-bottom: 190px; - } -} -@media (min-width: 768px) { - .codeDemoHead .tabletScreen { - width: 440px; - padding-bottom: 254px; - } -} -@media (min-width: 1600px) { - .codeDemoHead .tabletScreen { - width: 700px; - padding-bottom: 400px; - } -} -@media (min-width: 1890px) { - .codeDemoHead .tabletScreen { - width: 810px; - padding-bottom: 464px; - } -} -.codeDemoHead .tabletScreen .code { - line-height: 11px; - top: 0; - margin-top: 10%; -} -@media (min-width: 768px) { - .codeDemoHead .tabletScreen .code { - line-height: 1.1; - } -} -@media (max-width: 1023px) { - .codeDemoHead .arrowTooltip.left u { - width: 32px; - } - .codeDemoHead .arrowTooltip.right { - margin-left: 236px; - margin-bottom: 70px; - } - .codeDemoHead .arrowTooltip.tooltip1 { - left: 5%; - } - .codeDemoHead .arrowTooltip.tooltip1 u { - height: 58px; - } - .codeDemoHead .arrowTooltip.tooltip2 { - margin-left: 184px; - margin-bottom: 22px; - } - .codeDemoHead .arrowTooltip.tooltip2 u { - width: 56px; - height: 120px; - } - .codeDemoHead .arrowTooltip.tooltip3 { - left: 2%; - margin-bottom: 62px; - } - .codeDemoHead .arrowTooltip.tooltip3 u { - height: 208px; - } -} -@media (min-width: 1024px) { - .codeDemoHead .arrowTooltip.tooltip3 { - left: 0; - top: 225px; - margin-left: -140px; - } - .codeDemoHead .arrowTooltip.tooltip3 u { - height: 208px; - } -} -.codeDemoHead figure img { - display: block; - margin: 0 auto; -} -.contentWrap { - padding: 0 15px; -} -@media (min-width: 768px) { - .contentWrap { - padding: 0; - margin-left: auto; - margin-right: auto; - width: 86%; - max-width: 1260px; - } -} -@media (min-width: 1024px) { - .contentWrap { - width: 74%; - } -} -.contentFluid { - width: 100vw; - display: block; - clear: both; -} -.paragraphGroup { - margin-bottom: 46px; -} -@media (min-width: 768px) { - .paragraphGroup { - margin-bottom: 55px; - } -} -@media (min-width: 1600px) { - .paragraphGroup { - margin-bottom: 68px; - } -} -@media (min-width: 1890px) { - .paragraphGroup { - margin-bottom: 75px; - } -} -.paragraphGroup h3 { - color: #484848; - margin: 0 0 23px; -} -@media (min-width: 768px) { - .paragraphGroup h3 { - margin-bottom: 32px; - } -} -@media (min-width: 1600px) { - .paragraphGroup h3 { - margin-bottom: 42px; - } -} -.paragraphGroup p { - margin: 0 0 15px; -} -@media (min-width: 768px) { - .paragraphGroup p { - margin-bottom: 20px; - } -} -.paragraphGroup:first-child { - margin-top: 35px; -} -@media (min-width: 768px) { - .paragraphGroup:first-child { - margin-top: 55px; - } -} -@media (min-width: 1600px) { - .paragraphGroup:first-child { - margin-top: 68px; - } -} -@media (min-width: 1890px) { - .paragraphGroup:first-child { - margin-top: 75px; - } -} -@media (min-width: 1024px) { - .paragraphGroup.splitBox { - display: flex; - align-items: center; - } - .paragraphGroup.splitBox h3 { - word-break: break-word; - padding-right: 20px; - width: 25%; - max-width: 25%; - flex: 0 1 25%; - } - .paragraphGroup.splitBox > div { - width: 75%; - max-width: 75%; - flex: 0 1 75%; - } -} -.recommendBlock { - background: #f6f6f6; - padding: 25px 0; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .recommendBlock { - padding: 40px 0 30px; - margin-bottom: 50px; - } -} -@media (min-width: 1024px) { - .recommendBlock { - padding: 50px 0 45px; - margin-bottom: 60px; - } -} -@media (min-width: 1600px) { - .recommendBlock { - padding: 60px 0; - margin-bottom: 90px; - } -} -.recommendBlock h3 { - margin: 0; -} -.recommendBlock .swiper-button-next, -.recommendBlock .swiper-button-prev { - color: #cdb178; - font-size: 42px; - text-shadow: 0 0 1px; -} -.recommendBlock .swiper-button-prev { - left: -10px; -} -.recommendBlock .swiper-button-next { - right: -10px; -} -.caseStudyItem { - padding: 30px 0; - text-align: center; -} -@media (min-width: 768px) { - .caseStudyItem { - width: 570px; - text-align: left; - margin: 0 auto; - } -} -@media (min-width: 1024px) { - .caseStudyItem { - width: 720px; - } -} -@media (min-width: 1600px) { - .caseStudyItem { - width: 810px; - padding: 30px 0 40px; - } -} -@media (min-width: 1890px) { - .caseStudyItem { - width: 850px; - } -} -.caseStudyItem figure { - background: #fff; - box-shadow: 0 12px 36px rgba(0, 0, 0, 0.1); - display: inline-block; - position: relative; - width: 200px; - height: 215px; - margin-bottom: 30px; -} -@media (min-width: 768px) { - .caseStudyItem figure { - box-shadow: 12px 12px 36px rgba(0, 0, 0, 0.1); - display: inline-block; - vertical-align: top; - margin: 0; - } -} -@media (min-width: 1600px) { - .caseStudyItem figure { - width: 230px; - height: 242px; - } -} -@media (min-width: 1890px) { - .caseStudyItem figure { - width: 250px; - height: 270px; - } -} -.caseStudyItem figure .img { - background-color: #fff; -} -.caseStudyItem h4 { - margin: 0 0 15px; - font-size: 18px; - text-transform: uppercase; -} -@media (min-width: 1024px) { - .caseStudyItem h4 { - font-size: 23px; - } -} -@media (min-width: 1600px) { - .caseStudyItem h4 { - font-size: 26px; - } -} -@media (min-width: 1890px) { - .caseStudyItem h4 { - font-size: 28px; - } -} -.caseStudyItem p { - margin: 0 0 20px; -} -.caseStudyItem > div { - padding: 0 20px; -} -@media (min-width: 768px) { - .caseStudyItem > div { - display: inline-block; - vertical-align: top; - width: 364px; - padding-top: 10px; - padding-right: 10px; - } -} -@media (min-width: 1024px) { - .caseStudyItem > div { - width: 510px; - padding-left: 30px; - } -} -@media (min-width: 1600px) { - .caseStudyItem > div { - width: 570px; - padding: 12px 20px 0 50px; - } -} -@media (min-width: 1890px) { - .caseStudyItem > div { - width: 580px; - padding: 14px 20px 0 54px; - } -} -/* Case study page */ -.caseStudyPage { - display: block; - text-align: left; - padding-top: 20px; - padding-top: 10px; -} -.breadcrumb { - margin-top: 10px; - margin-bottom: 10px; -} -@media (min-width: 1024px) { - .breadcrumb.backNavigation { - position: absolute; - transform: translateX(-100%); - width: auto; - margin: 0; - padding-right: 20px; - font-size: 84%; - } -} -.backLink { - color: #c19e56; - font-weight: 600; - font-size: 110%; - transition: all 0.35s; -} -.nonTouch .backLink:hover { - color: #f36521; -} -.backLink i { - font-size: 80%; - text-shadow: 0 1px 0; -} -@media (min-width: 1024px) { - .backLink i { - margin-right: 5px; - } -} -.backLink2 { - color: #c19e56; - font-weight: 600; - font-size: 110%; - transition: all 0.35s; -} -.nonTouch .backLink2:hover { - color: #f36521; -} -.backLink2 i { - font-size: 80%; - text-shadow: 0 1px 0; -} -@media (min-width: 1024px) { - .backLink2 i { - margin-right: 5px; - } -} -@media (min-width: 768px) { - .videoHead { - margin: 20px auto 0; - width: 86%; - max-width: 1260px; - } -} -@media (min-width: 1024px) { - .videoHead { - width: 74%; - margin-top: 35px; - margin-bottom: 45px; - } -} -.videoHead figure { - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.25); - position: relative; - width: 100%; - padding-bottom: 56.7%; -} -@media (min-width: 1024px) { - .videoHead figure { - box-shadow: 0 54px 70px 0 rgba(0, 0, 0, 0.3); - padding-bottom: 42%; - } -} -.videoHead iframe, -.videoHead video, -.videoHead img, -.videoHead .img { - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - bottom: 0; -} -.caseStudyHead { - text-align: center; - margin: 20px 0 0; -} -@media (min-width: 1024px) { - .caseStudyHead { - display: flex; - align-items: center; - justify-content: center; - } -} -.caseStudyHead .img { - background-size: contain; - mix-blend-mode: color; - display: inline-block; - width: 180px; - height: 45px; - vertical-align: middle; -} -@media (min-width: 1280px) { - .caseStudyHead .img { - width: 160px; - height: 54px; - } -} -.caseStudyHead img { - height: 50px; -} -@media (min-width: 1024px) { - .caseStudyHead img { - display: inline-block; - vertical-align: middle; - margin-left: 30px; - } -} -@media (min-width: 1600px) { - .caseStudyHead img { - height: 60px; - } -} -@media (min-width: 1600px) { - .caseStudyHead img { - height: 66px; - } -} -.caseStudyHead h1 { - padding: 8px 0 0; - font-size: 18px; -} -@media (min-width: 1024px) { - .caseStudyHead h1 { - display: inline-block; - vertical-align: middle; - max-width: 300px; - text-align: left; - padding: 3px 25px; - border-left: 1px solid #eee; - margin-left: 25px; - font-size: 21px; - } -} -@media (min-width: 1600px) { - .caseStudyHead h1 { - font-size: 25px; - margin-left: 30px; - padding: 4px 30px; - } -} -@media (min-width: 1600px) { - .caseStudyHead h1 { - font-size: 28px; - } -} -.arrowList li { - padding-left: 19px; - position: relative; - margin-bottom: 5px; - line-height: 1.5; -} -.arrowList li:before { - content: '\e906'; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 2px; - top: 0; - font-size: 75%; - line-height: 2.3; - color: #f79929; - text-shadow: -1px 0 0; -} -details { - display: block; - padding-left: 16px; - margin-bottom: 4px; - font-size: 90%; -} -details summary { - cursor: pointer; - display: block; - position: relative; - margin-bottom: 5px; - font-size: 14px; - transition: all 0.35s; -} -@media (min-width: 768px) { - details summary { - font-size: 15px; - } -} -@media (min-width: 1024px) { - details summary { - font-size: 16px; - } -} -@media (min-width: 1600px) { - details summary { - font-size: 17px; - } -} -details summary::-webkit-details-marker { - display: none; -} -details summary::-moz-details-marker { - display: none; -} -details summary:focus, -details summary:active { - outline: 0 none; -} -details summary + * { - animation: slideDownIn 0.35s; - padding-top: 6px; -} -details summary:before { - content: '\e906'; - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: -14px; - top: 0; - font-size: 75%; - line-height: 1.8; - color: #f79929; - text-shadow: -1px 0 0; - transition: all 0.35s; -} -.nonTouch details summary:hover { - color: #f16521; -} -details[open] summary { - color: #f16521; -} -details[open] summary:before { - transform: rotate(90deg) translate(1px, 2px); -} -html[class*=' ie'] details summary + * { - display: none; -} -html[class*=' ie'] details summary.active { - color: #f16521; -} -html[class*=' ie'] details summary.active:before { - transform: rotate(90deg) translate(2px, 2px); -} -html[class*=' ie'] details summary.active + * { - display: block; -} -/* Screen shots block */ -.screenshotsBlock { - margin-bottom: 50px; -} -@media (min-width: 1280px) { - .screenshotsBlock { - margin-bottom: 65px; - } -} -@media (min-width: 1890px) { - .screenshotsBlock { - margin-bottom: 80px; - } -} -.screenshotsList { - display: block; - font-size: 0; - margin: 0 -1%; -} -@media (min-width: 600px) { - .screenshotsList { - margin: 0 -16px; - } -} -.screenshotsList .screenshot { - display: inline-block; - cursor: pointer; - width: 48%; - height: 0; - padding-bottom: 34%; - position: relative; - overflow: hidden; - margin: 1%; -} -@media (min-width: 600px) { - .screenshotsList .screenshot { - width: 32.5%; - padding-bottom: 21%; - margin: 0 0.4% 0.8%; - } -} -.screenshotsList .screenshot .img { - position: absolute; - top: 0; - bottom: 0; - left: 0; -} -.screenshotsList .screenshot a { - color: #fff; - background: rgba(10, 10, 10, 0.8); - position: absolute; - bottom: 0; - left: 0; - width: 100%; - z-index: 3; - padding: 8px; - box-sizing: border-box; - font-size: 13px; - transition: all 0.35s; -} -.nonTouch .screenshotsList .screenshot a { - height: 100%; - opacity: 0; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -.nonTouch .screenshotsList .screenshot a:hover { - opacity: 1; -} -@media (min-width: 768px) { - .screenshotsList .screenshot a { - padding: 14px; - } -} -.recommendedCases { - margin-bottom: 50px; -} -@media (min-width: 1280px) { - .recommendedCases { - margin-bottom: 65px; - } -} -@media (min-width: 1890px) { - .recommendedCases { - margin-bottom: 80px; - } -} -.recommendedList { - display: flex; - justify-content: space-between; -} -@media (min-width: 600px) { - .recommendedList { - justify-content: flex-start; - margin: 0 -0.4%; - } -} -.recommendedList .casestudy { - width: 48.5%; - max-width: 48.5%; - flex: 0 0 48.5%; - margin: 0; - position: relative; - overflow: hidden; -} -@media (min-width: 600px) { - .recommendedList .casestudy { - width: 32.7%; - max-width: 32.7%; - flex-basis: 32.7%; - margin: 0 0.4% 0.8%; - } -} -.recommendedList .casestudy figure { - width: 100%; - padding-bottom: 70%; - position: relative; -} -.recommendedList .casestudy .img { - position: absolute; - top: 0; - bottom: 0; - left: 0; -} -.recommendedList .casestudy a { - color: #fff; - background: rgba(10, 10, 10, 0.8); - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 3; - padding: 8px; - box-sizing: border-box; - font-size: 80%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -@media (min-width: 768px) { - .recommendedList .casestudy a { - font-size: 100%; - padding: 14px; - } -} -@media (min-width: 1024px) { - .recommendedList .casestudy a { - align-items: flex-start; - padding: 20px 12%; - } - .recommendedList .casestudy a strong { - font-size: 110%; - display: block; - margin-bottom: 14px; - } -} -.recommendedList .casestudy a span { - display: none; -} -@media (min-width: 1024px) { - .recommendedList .casestudy a span { - display: block; - opacity: 0.8; - width: 100%; - } -} -/* Versions Page */ -.versionsPage { - text-align: left; - align-items: center; - justify-content: center; -} -.versionsPage:after { - display: none; -} -.versionsPage .wrap { - padding: 0 15px; - max-width: 540px; - z-index: 2; -} -@media (min-width: 1024px) { - .versionsPage .wrap { - max-width: 640px; - } -} -@media (min-width: 1600px) { - .versionsPage .wrap { - max-width: 720px; - } -} -.versionsPage .paragraphGroup p a { - color: #a1a1a1; - border-bottom-color: transparent; - position: relative; - transition: color 0.4s; -} -.versionsPage .paragraphGroup p a:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0; - height: 1px; - background-color: #484848; - transition: 0.5s ease-out; -} -.nonTouch .versionsPage .paragraphGroup p a:hover { - color: #f7931c; -} -.nonTouch .versionsPage .paragraphGroup p a:hover:before { - width: 100%; -} -.versionsPage .paragraphGroup:first-child { - margin-top: 0; - margin-bottom: 2.7em; -} -.versionsPage .versionsPageContent { - position: relative; - z-index: 2; -} -.versionsPage .versionsPageContent .btn + * { - margin-top: 30px; -} -.versionsPage .versionsPageContent ul { - list-style-type: none; - padding: 0; -} -.versionsPage .versionsList { - margin-bottom: 40px; -} -@media (min-width: 1280px) { - .versionsPage .versionsList li { - padding-left: 24px; - margin-bottom: 7px; - } -} -.versionsPage .versionsList a { - color: #484848; - font-weight: 600; - position: relative; - transition: color 0.4s; -} -.versionsPage .versionsList a:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0; - height: 1px; - background-color: #484848; - transition: 0.25s ease-out; -} -.nonTouch .versionsPage .versionsList a:hover { - color: #f7931c; -} -.nonTouch .versionsPage .versionsList a:hover:before { - width: 100%; -} -@media (min-width: 1280px) { - .versionsPageContent .btn { - font-size: 18px; - padding: 16px 32px 18px 42px; - } - .versionsPageContent .btn span .icon-download-arrow { - font-size: 15px; - } -} -.attachmentsBlock { - margin-top: 40px; - padding-bottom: 30px; -} -.attachmentsBlock .attachmentsList { - margin-bottom: 33px; -} -.attachmentsBlock h4 { - font-size: 110%; - color: #484848; - margin: 0 0 4px; - font-weight: 600; -} -@media (min-width: 1280px) { - .attachmentsBlock h4 { - font-size: 120%; - } -} -.attachmentsBlock h4 span { - color: #a1a1a1; -} -.attachmentsBlock .attachmentInfo { - font-weight: 300; - font-size: 90%; - display: flex; - align-items: center; - margin-bottom: -6px; -} -.attachmentsBlock .attachmentInfo time { - color: #a1a1a1; -} -.attachmentsBlock .attachmentInfo i { - background-image: url('../img/icons/icon-attachment.png'); - background-size: 100% auto; - background-repeat: no-repeat; - display: inline-block; - vertical-align: middle; - width: 3em; - height: 2.5em; - margin: 0 0.5em; - background-position: 0 0.1em; -} -.attachmentsBlock .attachmentInfo a { - color: #f7931c; - position: relative; - transition: 0.35s; -} -.attachmentsBlock .attachmentInfo a:before { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0; - height: 1px; - background-color: #f7931c; - transition: 0.5s ease-out; -} -.nonTouch .attachmentsBlock .attachmentInfo a:hover { - color: #333; -} -.nonTouch .attachmentsBlock .attachmentInfo a:hover:before { - width: 100%; -} -.attachmentsBlock .attachmentInfo a span { - color: #a1a1a1; -} -.attachmentsBlock .attachmentInfo.type-pdf i { - background-position: 0 -2.4em; -} -@keyframes slideDownIn { - from { - opacity: 0; - transform: translateY(-10px); - } -} diff --git a/_site/assets/css/plugin.css b/_site/assets/css/plugin.css deleted file mode 100755 index f66a17d8..00000000 --- a/_site/assets/css/plugin.css +++ /dev/null @@ -1,687 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -.tabs { - margin-bottom: 30px; -} -@media (min-width: 768px) { - .tabs { - margin-bottom: 55px; - } -} -.tabs > .wrap { - position: relative; - max-width: 1260px; - margin: 0 auto; - padding: 0 25px; -} -@media (min-width: 768px) { - .tabs > .wrap { - height: 90px; - padding: 28px 10px 0; - } -} -@media only screen and (min-width: 900px) { - .tabs > .wrap { - padding: 28px 25px 0; - } -} -@media only screen and (min-width: 1260px) { - .tabs > .wrap { - padding-left: 0; - padding-right: 0; - } -} -.tabs em { - margin: 0 40px; - width: 1px; - height: 27px; - display: inline-block; - vertical-align: middle; - opacity: 0.4; - background-color: #555; -} -@media (min-width: 768px) { - .tabs em { - margin: 0 30px; - } -} -@media only screen and (min-width: 900px) { - .tabs em { - margin: 0 45px; - } -} -.tabs .tabLink { - position: relative; - padding: 5px 0; - font-weight: 700; - font-size: 22px; - line-height: 27px; - color: #555; - display: inline-block; - vertical-align: middle; - opacity: 0.4; - transition: 0.3s; -} -.tabs .tabLink:after { - content: ''; - display: none; - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 2px; - background-color: #f7931c; -} -.tabs .tabLink:hover { - opacity: 0.6; -} -.tabs .tabLink.active { - opacity: 1; - cursor: default; - pointer-events: none; -} -.tabs .tabLink.active:after { - display: block; -} -.tabs .tabOptions { - padding-top: 30px; -} -@media (min-width: 768px) { - .tabs .tabOptions { - position: absolute; - top: 50%; - right: 10px; - transform: translateY(-50%); - padding: 0; - margin-top: 5px; - } -} -@media only screen and (min-width: 900px) { - .tabs .tabOptions { - right: 25px; - } -} -@media only screen and (min-width: 1260px) { - .tabs .tabOptions { - right: 0; - } -} -.tabs .pluginSearch { - position: relative; - padding: 0 0 10px 0; - /*border-bottom: 2px solid #b3b3b3;*/ - margin-bottom: 24px; - font-size: 14px; - font-weight: 700; - /* input[type="text"] { - height: 40px; - width: 100%; - min-width: 185px; - display: block; - border: 0; - border-bottom: 1px solid #fff; - @media @fromSmallScreen { - height: 24px; - } - &:focus { - border-bottom-color: #aaa; - } - } - - i { - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - font-size: 20px; - @media @fromSmallScreen { - font-size: 16px; - } - } */ -} -@media (min-width: 768px) { - .tabs .pluginSearch { - display: inline-block; - vertical-align: middle; - border: 0; - margin: 0; - padding: 0; - } -} -@media (min-width: 1024px) { - .tabs .pluginSearch { - padding-right: 26px; - } -} -@media (max-width: 767px) { - .tabs .pluginSearch .searchForm { - margin-left: auto; - margin-right: auto; - } -} -@media (min-width: 768px) { - .tabs .pluginSearch .searchForm { - width: 250px; - display: inline-block; - vertical-align: top; - margin-bottom: 0; - margin-right: 18px; - } -} -.tabs .pluginSearch input[type="text"] { - border-bottom-color: #f9f9f9; -} -.tabs .pluginSearch input[type="text"]:focus { - border-bottom-color: currentColor; -} -.tabs .pluginSearch .btn { - box-shadow: none; - font-weight: 500; -} -@media (max-width: 599px) { - .tabs .pluginSearch .btn { - font-size: 15px; - padding: 12px 30px; - } -} -@media (max-width: 767px) { - .tabs .pluginSearch .btn { - display: table; - margin: 0 auto; - } -} -@media (min-width: 768px) { - .tabs .pluginSearch .btn { - font-size: 16px; - font-weight: 400; - padding: 11px 30px 10px; - } -} -@media (min-width: 1280px) { - .tabs .pluginSearch .btn { - font-size: 17px; - padding: 12px 34px; - } -} -@media (max-width: 599px) { - .tabs .pluginSearch { - text-align: center; - } -} -.tabs .btnOwnPlugin { - display: table; - margin: 0 auto; - padding: 0 30px; - text-transform: uppercase; - color: #fff; - font-weight: 600; - font-size: 14px; - line-height: 40px; - background-color: #f7931c; - border-radius: 20px; - opacity: 1; -} -@media (min-width: 768px) { - .tabs .btnOwnPlugin { - display: inline-block; - vertical-align: middle; - line-height: 50px; - border-radius: 25px; - margin-left: 30px; - } -} -.tabs .goBackBtn { - margin-bottom: 10px; -} -.tabs .goBack { - position: static; - margin-bottom: 0; - padding: 0; - margin-right: 50px; -} -@media only screen and (max-width: 1499px) { - .tabs .goBack { - display: none; - } -} -@media only screen and (min-width: 1500px) { - .tabs .goBack { - /*position: absolute;*/ - left: auto; - top: 35px; - right: 100%; - margin-right: 50px; - white-space: nowrap; - } -} -@media (max-width: 1279px) { - .pagePlugin.pages .wrap { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 768px) { - .pagePlugin .bgTextbig, - .pluginDetail .bgTextbig { - font-size: 200px; - } -} -@media (min-width: 1024px) { - .pagePlugin .bgTextbig, - .pluginDetail .bgTextbig { - font-size: 260px; - } -} -@media (min-width: 1280px) { - .pagePlugin .bgTextbig, - .pluginDetail .bgTextbig { - font-size: 300px; - } -} -@media (min-width: 1600px) { - .pagePlugin .bgTextbig, - .pluginDetail .bgTextbig { - font-size: 360px; - } -} -@media (min-width: 768px) { - .pageKernel .bgTextbig { - font-size: 220px; - } -} -@media (min-width: 1024px) { - .pageKernel .bgTextbig { - font-size: 280px; - } -} -@media (min-width: 1280px) { - .pageKernel .bgTextbig { - font-size: 320px; - } -} -@media (min-width: 1600px) { - .pageKernel .bgTextbig { - font-size: 380px; - } -} -.aboutKernel { - margin: 70px 0; - overflow: hidden; -} -.aboutKernel h2 { - margin-bottom: 30px; -} -.pluginDetail { - min-height: 100%; -} -@media (max-width: 767px) { - .pluginDetail { - padding-top: 30px; - } -} -@media (max-width: 767px) { - .pluginDetail .tabs { - display: none; - } -} -@media (max-width: 1279px) { - .pluginDetail .pages { - padding-left: 15px; - padding-right: 15px; - } -} -.pluginDetail .pluginDetailThumb { - margin-bottom: 30px; -} -@media (min-width: 768px) { - .pluginDetail .pluginDetailThumb { - float: right; - width: 35%; - margin-top: -61px; - } -} -.pluginDetail .pluginDetailThumb img { - display: block; - max-width: 100%; - border: 1px solid #f7931c; - box-sizing: border-box; -} -.pluginDetail aside { - margin-bottom: 30px; -} -@media (min-width: 768px) { - .pluginDetail aside { - float: left; - width: 50%; - } -} -.pluginDetail p { - font-size: 14px; - margin-top: 0; - margin-bottom: 20px; - line-height: 1.3; -} -@media (min-width: 768px) { - .pluginDetail p { - font-size: 16px; - } -} -.pluginDetail p:last-child { - margin-bottom: 0; -} -.pluginDetail .defnitionList { - /*ul { - list-style-type: none; - padding: 0; - }*/ -} -@media (min-width: 768px) { - .pluginDetail .defnitionList { - width: 80%; - margin: 0 auto; - } -} -.swiper-button-next, -.swiper-button-prev { - position: absolute; - top: 37.5%; - transform: translateY(-50%); - margin: 0; - background: none; - width: auto; - height: auto; - padding: 10px; - color: #fff; - font-size: 30px; -} -.swiper-button-next:before, -.swiper-button-prev:before { - display: inline-block; - font-family: 'icomoon' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - letter-spacing: 0; - -webkit-font-feature-settings: "liga"; - -moz-font-feature-settings: "liga=1"; - -moz-font-feature-settings: "liga"; - -ms-font-feature-settings: "liga" 1; - -o-font-feature-settings: "liga"; - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.swiper-button-next { - right: 0; -} -.swiper-button-next:before { - content: '\e909'; -} -.swiper-button-prev { - left: 0; -} -.swiper-button-prev:before { - content: '\e908'; -} -.swiper-pagination { - bottom: 45px; - display: flex; - justify-content: center; - font-size: 0; -} -.swiper-pagination .swiper-pagination-bullet { - width: 15px; - height: 3px; - border-radius: 2px; - background-color: #000; - margin: 0 3px; -} -.swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active { - background-color: #f7931c; -} -@media (max-width: 1279px) { - .pageKernel.pages .wrap { - padding-left: 15px; - padding-right: 15px; - } -} -.pageKernel .kernelSwiper { - margin: 0 -15px; - padding: 0 15px 30px; -} -.pageKernel .swiper-pagination { - bottom: 0; -} -.pageKernel .swiper-slide { - width: 25%; - transition: 0.5s; -} -@media only screen and (min-width: 541px) { - .pageKernel .swiper-slide { - border: 1px solid #fbd5a5; - } -} -.pageKernel .swiper-slide a { - color: inherit; -} -.pageKernel .swiper-slide figure { - height: 0; - padding-bottom: 63%; - margin-bottom: 20px; - background-repeat: no-repeat; - background-position: center center; -} -@media only screen and (min-width: 541px) { - .pageKernel .swiper-slide figure { - margin-bottom: 0; - } -} -.pageKernel .swiper-slide .slideCaption { - font-size: 20px; - font-weight: 700; - text-transform: uppercase; - text-align: center; -} -@media only screen and (min-width: 541px) { - .pageKernel .swiper-slide .slideCaption { - line-height: 60px; - background-color: #f4f4f4; - } -} -.pluginSliderWrapper { - overflow-x: hidden; - position: relative; -} -@media (min-width: 768px) { - .pluginSliderWrapper { - padding-bottom: 40px; - } -} -@media (min-width: 1024px) { - .pluginSliderWrapper { - padding-bottom: 70px; - } -} -@media (min-width: 1280px) { - .pluginSliderWrapper { - padding-bottom: 100px; - } -} -@media (min-width: 768px) { - .pluginSliderWrapper .pluginSwiper { - max-width: 80%; - margin: 0 auto; - overflow: visible; - } -} -.pluginSwiper { - padding-bottom: 80px; -} -.pluginSwiper .swiper-slide { - width: 100%; - position: relative; - color: #fff; - background-color: #000; - background-position: center; - background-repeat: no-repeat; - opacity: 0.5; - box-shadow: 0 40px 70px 0 rgba(0, 0, 0, 0.3); - transition: opacity 0.4s; -} -@media (max-width: 767px) { - .pluginSwiper .swiper-slide { - height: 260px; - } -} -@media (min-width: 768px) { - .pluginSwiper .swiper-slide { - height: 350px; - } -} -@media (min-width: 1024px) { - .pluginSwiper .swiper-slide { - height: 450px; - } -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-slide { - height: 550px; - } -} -.pluginSwiper .swiper-slide.swiper-slide-active { - opacity: 1; -} -.pluginSwiper .swiper-slide > div { - position: absolute; - top: 50%; - left: 10%; - width: 80%; - max-width: 400px; - max-height: 96%; - overflow: hidden; - transform: translateY(-50%); -} -.pluginSwiper .swiper-slide > div h3 { - position: relative; - font-weight: 700; - font-size: 20px; - margin-top: 0; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .pluginSwiper .swiper-slide > div h3 { - font-size: 24px; - } -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-slide > div h3 { - font-size: 30px; - margin-bottom: 20px; - } -} -.pluginSwiper .swiper-slide > div h3 i { - display: inline-block; - margin-left: 30px; - font-size: 80%; - color: #aaa; -} -.pluginSwiper .swiper-slide > div p { - font-size: 14px; - margin-bottom: 15px; - margin-top: 0; - color: #aaa; -} -@media (min-width: 768px) { - .pluginSwiper .swiper-slide > div p { - font-size: 16px; - } -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-slide > div p { - font-size: 18px; - margin-bottom: 30px; - } -} -.pluginSwiper .swiper-slide > div .readMore { - position: relative; - color: #d6be98; - font-size: 14px; - display: inline-block; -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-slide > div .readMore { - font-size: 15px; - } -} -.pluginSwiper .swiper-slide > div .readMore:before { - content: ''; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - width: 100%; - height: 1px; - background-color: currentColor; - transition: 0.35s ease-out; -} -.pluginSwiper .swiper-pagination { - bottom: 40px; -} -@media (min-width: 768px) { - .pluginSwiper .swiper-pagination { - display: none; - } -} -.pluginSwiper .swiper-button-next, -.pluginSwiper .swiper-button-prev { - margin-top: -40px; -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-button-next, - .pluginSwiper .swiper-button-prev { - font-size: 50px; - } -} -@media (min-width: 768px) { - .pluginSwiper .swiper-button-prev { - left: -50px; - } -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-button-prev { - left: -96px; - } -} -@media (min-width: 768px) { - .pluginSwiper .swiper-button-next { - right: -50px; - } -} -@media (min-width: 1280px) { - .pluginSwiper .swiper-button-next { - right: -96px; - } -} -.search-section { - position: relative; - z-index: 2; -} -@media (max-width: 1279px) { - .search-section { - padding: 0 15px; - } -} -.nonTouch .pluginSwiper .swiper-slide .readMore:hover:before { - width: 40%; -} -.nonTouch .kernelSwiper:hover .swiper-slide { - opacity: 0.5; -} -.nonTouch .kernelSwiper:hover .swiper-slide:hover { - opacity: 1; -} diff --git a/_site/assets/css/terms.css b/_site/assets/css/terms.css deleted file mode 100755 index be43ee06..00000000 --- a/_site/assets/css/terms.css +++ /dev/null @@ -1,68 +0,0 @@ -/* Paths */ -/* Colors */ -/* Global Media Queries */ -/* Direction */ -.pageTerms { - padding-top: 40px; -} -@media (max-width: 1279px) { - .pageTerms { - padding-left: 15px; - padding-right: 15px; - } -} -@media (min-width: 768px) { - .pageTerms { - padding-top: 70px; - } -} -.pageTerms .pageTitle { - padding: 0; -} -@media (min-width: 768px) { - .pageTerms .defnitionList dt { - width: 25%; - padding-right: 20px; - } -} -.pageTerms .defnitionList dd { - overflow: hidden; -} -@media (min-width: 768px) { - .pageTerms .defnitionList dd { - width: 75%; - } -} -.pageTerms .defnitionList dd p { - margin: 0; - font-size: 15px; -} -@media (min-width: 768px) { - .pageTerms .defnitionList dd p { - font-size: 16px; - } -} -@media (min-width: 768px) { - .pageTerms .defnitionList dd p { - font-size: 18px; - } -} -.pageTerms .defnitionList dd > div { - margin-top: 15px; - color: #a1a1a1; -} -@media (min-width: 768px) { - .pageTerms .defnitionList dd > div { - width: 50%; - float: left; - padding-right: 20px; - } -} -.pageTerms .defnitionList dd h5 { - color: #333; - font-size: inherit; - margin-top: 0; - margin-bottom: 5px; - font-weight: 600; - text-transform: uppercase; -} diff --git a/_site/assets/fonts/icomoon.eot b/_site/assets/fonts/icomoon.eot deleted file mode 100644 index 309f7f014d56eb8e762f02d46f63cd127171a182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7180 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 O;$~qdAeZ>M=YIiPrN4dv diff --git a/_site/assets/fonts/icomoon.svg b/_site/assets/fonts/icomoon.svg deleted file mode 100644 index e200f364..00000000 --- a/_site/assets/fonts/icomoon.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:693af110bfb05f378f4b6a97bf743a9af3020fcecbbaff978b78f552dc3f9ab4 -size 24625 diff --git a/_site/assets/fonts/icomoon.ttf b/_site/assets/fonts/icomoon.ttf deleted file mode 100644 index da5c843bcead8fa4e9c008f5fcc4707755dd2e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7016 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 LaV*@D-){dOBcrZ$ diff --git a/_site/assets/fonts/icomoon.woff b/_site/assets/fonts/icomoon.woff deleted file mode 100644 index fe42d912e08454a41c1f683e7716e2b1552ec763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7092 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 diff --git a/_site/assets/fonts/selection.json b/_site/assets/fonts/selection.json deleted file mode 100644 index fd38ed52..00000000 --- a/_site/assets/fonts/selection.json +++ /dev/null @@ -1,896 +0,0 @@ -{ - "IcoMoonType": "selection", - "icons": [ - { - "icon": { - "paths": [ - "M1039.268 833.857c0 105.441-84.61 190.112-189.975 190.112-95.797 0-175.624-70.289-188.401-162.954-63.855 31.958-134.098 49.534-205.946 49.534-250.651 0-455.008-204.494-455.008-455.313s202.752-455.313 453.418-455.313c250.651 0 455.008 204.494 455.008 455.313 0 67.095-14.382 130.996-41.51 190.112 95.782 9.583 170.825 91.060 172.414 188.508zM886.005 455.237c0-238.042-193.169-431.349-431.058-431.349-237.874 0-431.058 193.307-431.058 431.349s193.184 431.349 431.058 431.349c70.243 0 140.487-17.576 204.357-51.124 0-102.247 81.416-186.918 183.602-190.112 28.733-59.117 43.1-123.018 43.1-190.112zM847.689 669.314c-90.998 0-166.041 75.088-166.041 166.148s75.042 166.148 166.041 166.148c90.998 0 166.041-75.088 166.041-166.148s-75.042-166.148-166.041-166.148zM747.107 856.232l17.561-15.987 43.115 43.146 122.926-123.018 17.561 15.971-140.487 140.594-60.676-60.706zM688.036 659.731h-23.949c0-86.276-44.704-161.364-111.754-190.112 0 1.589 0 4.784 0 6.389 0 15.971-3.194 30.353-9.583 43.13 47.899 22.375 79.826 78.283 78.237 142.183 0 39.936-14.367 78.283-38.316 107.046l-17.561-15.987c20.755-25.554 31.927-57.512 31.927-92.649 0-54.318-27.144-102.247-68.654-119.823-17.561 22.36-44.704 35.152-75.027 35.152-30.338 0-57.482-14.382-75.042-35.152-39.905 17.576-68.654 65.505-68.654 119.823 0 35.137 9.583 67.095 30.338 91.060l-17.561 14.382c-23.949-27.159-36.726-65.505-36.726-105.441 0-62.311 31.943-118.219 79.826-140.594-6.373-12.777-9.568-27.159-9.568-43.13 0-1.605 0-4.799 0-6.389-67.064 28.748-111.769 103.837-111.769 190.112h-23.934c0-102.247 59.071-190.112 142.076-217.271 3.194-11.188 9.583-20.77 15.971-28.764-83.020-20.77-142.091-95.843-142.091-186.918 0-27.159 6.389-54.318 15.971-78.283l22.345 9.583c-9.583 22.375-14.367 44.735-14.367 68.7 0 84.671 60.661 156.565 140.487 167.753 4.799-3.194 9.583-6.389 14.382-7.993-9.583-7.978-15.971-19.166-17.561-31.943-57.482-12.792-98.992-65.505-98.992-127.817 0-6.389 0-12.777 1.605-19.166l23.934 3.194c-1.589 4.799-1.589 11.188-1.589 15.971 0 49.534 33.532 91.075 76.632 102.247 3.194-11.172 9.583-20.77 19.166-28.748v-36.757h23.934v25.569c4.799-1.605 7.993-1.605 12.777-1.605s9.583 0 12.777 1.605v-25.569h23.949v36.757c9.568 7.978 15.956 17.576 19.15 28.748 43.1-11.172 75.042-52.713 75.042-102.247 0-4.784-1.605-11.172-1.605-15.971l23.949-3.194c1.605 6.389 1.605 12.777 1.605 19.166 0 62.311-41.51 115.024-97.387 127.817-3.194 12.777-7.993 23.965-17.576 31.943 4.799 1.605 9.583 4.799 14.382 7.993 79.826-11.188 138.897-83.082 138.897-167.753 0-23.965-4.799-46.325-14.367-68.7l22.345-9.583c11.172 25.569 15.971 51.124 15.971 78.283 0 89.47-59.071 166.148-140.502 186.918 6.389 7.993 12.777 17.576 15.971 28.764 83.020 27.159 140.487 115.024 140.487 217.271zM454.946 309.859c-19.15 0-33.532 14.382-33.532 33.547s14.382 33.547 33.532 33.547c19.166 0 33.532-14.382 33.532-33.547s-14.367-33.547-33.532-33.547zM454.946 399.314c-41.51 0-75.042 33.563-75.042 75.088 0 41.541 33.532 75.088 75.042 75.088s75.042-33.547 75.042-75.088c0-41.525-33.532-75.088-75.042-75.088z" - ], - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "width": 1039, - "isMulticolor": false, - "isMulticolor2": false, - "grid": 16, - "tags": [ - "bug-tracker" - ] - }, - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "properties": { - "order": 145, - "id": 27, - "name": "bug-tracker", - "prevSize": 32, - "code": 59665 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 0 - }, - { - "icon": { - "paths": [ - "M1126.747 1024h-1046.784c-43.904 0-79.781-35.785-79.781-79.141v-548.754c-0.201-1.298-0.201-2.597 0-3.895v-149.614c0-43.246 35.84-78.702 79.781-78.702h267.831v-57.947c0-58.368 48.293-105.947 107.392-105.947h296.32c58.971 0 107.41 47.561 107.41 105.947v57.947h267.831c43.813 0 79.781 35.419 79.781 78.702v148.754c0.329 1.719 0.329 3.474 0 5.175v548.334c0 43.392-36.005 79.141-79.781 79.141zM830.848 105.947c0-43.355-35.73-78.281-79.342-78.281h-296.32c-43.776 0-79.342 34.889-79.342 78.281v57.947h455.003v-57.947zM1178.478 242.597c0-28.178-23.314-51.035-51.73-51.035h-764.489c-0.146 0-0.293 0-0.439 0h-281.856c-28.599 0-51.73 22.821-51.73 51.035v144c175.872 111.781 343.79 174.903 508.050 189.842v-64.018c0-7.625 6.272-13.824 14.025-13.824h106.075c7.753 0 14.043 6.199 14.043 13.824v65.298c169.161-11.593 336.713-74.77 508.050-190.702v-144.421zM564.334 526.263v135.351h78.025v-135.351h-78.025zM1178.478 420.315c-169.655 111.762-337.829 173.751-508.050 185.088v70.053c-0.018 7.643-6.29 13.842-14.043 13.842h-106.075c-7.753 0-14.025-6.199-14.025-13.842v-71.351c-165.705-14.592-333.879-76.398-508.050-184.649v525.403c0 28.379 23.095 51.456 51.73 51.456h1046.784c28.453 0 51.73-23.113 51.73-51.456v-524.544zM181.449 339.566c-7.753-0.11-13.952-6.4-13.824-14.043 0.091-7.643 6.473-13.751 14.208-13.641h843.154c0.128 0 0.274 0 0.402 0 7.735 0.11 13.934 6.4 13.824 14.043s-6.473 13.751-14.226 13.641h-843.154c-0.128 0-0.256 0-0.384 0z" - ], - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "width": 1207, - "isMulticolor": false, - "isMulticolor2": false, - "grid": 16, - "tags": [ - "careers" - ] - }, - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "properties": { - "order": 146, - "id": 26, - "name": "careers", - "prevSize": 32, - "code": 59666 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 1 - }, - { - "icon": { - "paths": [ - "M665.508 648.528c-56.855 0-113.251-12.334-163.641-35.748-18.814 9.415-38.667 17.316-57.986 23.934v29.008c0 18.784-8.452 36.329-22.895 48.159-14 52.438-47.226 84.411-62.342 96.73v46.814c0 13.541 17.041 41.51 29.421 48.25l72.307 46.172c14.81 9.445 21.428 27.113 16.491 43.971-4.906 16.858-20.021 28.183-37.582 28.183h-400.185c-17.576 0-32.661-11.325-37.582-28.183s1.696-34.526 16.491-43.971l71.267-45.56c13.388-7.351 30.43-35.32 30.43-48.862v-46.814c-15.1-12.319-48.327-44.292-62.311-96.73-14.443-11.829-22.895-29.375-22.895-48.159v-60.523c0-15.513 6.985-34.113 16.949-46.508v-46.691c-0.138-0.596-5.089-55.189 35.030-99.573 32.447-35.855 83.815-54.027 152.698-54.027 26.135 0 49.794 2.965 71.115 8.375-2.063-14.030-3.194-28.229-3.194-42.519 0-178.803 160.799-324.256 358.415-324.256s358.4 145.454 358.4 324.256c0 178.818-160.783 324.272-358.4 324.272zM239.173 392.528c-58.551 0-101.3 14.29-127.037 42.443-30.093 32.906-26.67 74.997-26.624 75.409l0.061 62.54-5.609 5.089c-5.624 5.074-11.34 18.799-11.34 27.189v60.523c0 9.537 4.906 18.432 13.129 23.72l5.823 3.775 1.528 6.755c13.45 58.49 56.672 87.636 57.099 87.926l7.642 5.044v64.481c0 25.997-23.812 65.444-47.18 78.221l-70.259 44.964c-2.124 1.345-2.827 3.225-2.124 5.64 0.703 2.4 2.308 3.622 4.814 3.622h400.185c2.491 0 4.111-1.223 4.83-3.622 0.703-2.415-0.015-4.295-2.109-5.64l-71.313-45.56c-22.329-12.181-46.172-51.628-46.172-77.625v-64.481l7.657-5.044c0.367-0.275 43.787-30.017 57.084-87.926l1.559-6.755 5.823-3.775c8.192-5.288 13.098-14.168 13.098-23.72v-18.432c-44.888 12.594-80.697 17.79-83.204 18.142-0.779 0.107-1.589 0.168-2.369 0.168-6.404 0-12.38-3.607-15.268-9.461-3.286-6.557-1.987-14.489 3.21-19.67 24.347-24.362 41.052-73.422 48.495-142.137-19.043-27.893-33.013-58.016-41.953-89.302-22.253-8.146-48.77-12.502-79.475-12.502zM665.508 34.128c-178.818 0-324.272 130.155-324.272 290.128 0 55.082 17.591 108.88 50.894 155.602 2.4 3.347 3.5 7.474 3.087 11.57-5.487 55.816-16.613 100.169-33.15 132.585 35.381-7.84 87.804-22.176 131.24-45.224 29.497-17.928 62.326-38.53 70.121-44.368 5.258-6.465 14.611-8.223 21.947-3.821 5.135 3.057 8.345 8.712 8.36 14.672 0.046 9.98 0 12.028-54.853 45.698 39.921 15.161 83.020 23.43 126.624 23.43 178.803 0 324.256-130.155 324.256-290.144 0-159.973-145.454-290.128-324.256-290.128zM850.745 363.413v67.92c0 0 0 42.458-50.971 42.458v-21.229c0 0 25.478 0 25.478-21.229s0-67.92 0-67.92c0 0 0-42.458 25.493-42.458 0 0-25.493 0-25.493-42.458s0-67.92 0-67.92c0 0 0-21.229-25.478-21.229v-21.229c0 0 50.971 0 50.971 42.458v67.92c0 0 0 42.458 50.986 42.458 0 0-50.986 0-50.986 42.458zM628.904 473.791c-1.162 0-2.354-0.076-3.531-0.275-9.72-1.421-16.032-8.36-14.076-15.513l71.787-264.039c1.941-7.168 11.386-11.845 21.107-10.347 9.72 1.421 16.032 8.375 14.076 15.528l-71.787 264.024c-1.696 6.297-9.201 10.622-17.576 10.622zM494.21 431.333v-67.92c0-42.458-50.986-42.458-50.986-42.458 50.986 0 50.986-42.458 50.986-42.458v-67.92c0-42.458 50.971-42.458 50.971-42.458v21.229c-25.493 0-25.493 21.229-25.493 21.229s0 25.462 0 67.92c0 42.458-25.478 42.458-25.478 42.458 25.478 0 25.478 42.458 25.478 42.458s0 46.691 0 67.92c0 21.229 25.493 21.229 25.493 21.229v21.229c-50.971 0-50.971-42.458-50.971-42.458z" - ], - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "isMulticolor": false, - "isMulticolor2": false, - "grid": 16, - "tags": [ - "discussion" - ] - }, - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "properties": { - "order": 147, - "id": 25, - "name": "discussion", - "prevSize": 32, - "code": 59667 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 2 - }, - { - "icon": { - "paths": [ - "M282.95 0c-37.097 0-67.367 30.286-67.367 67.367v148.216h-148.216c-37.097 0-67.367 30.27-67.367 67.367v673.683c0 37.081 30.27 67.367 67.367 67.367h673.683c37.097 0 67.367-30.286 67.367-67.367v-148.216h148.216c37.081 0 67.367-30.286 67.367-67.367v-673.683c0-37.081-30.286-67.367-67.367-67.367h-673.683zM282.95 26.95h673.683c22.621 0 40.417 17.796 40.417 40.417v673.683c0 22.621-17.796 40.417-40.417 40.417h-673.683c-22.637 0-40.432-17.796-40.432-40.417v-673.683c0-22.621 17.796-40.417 40.432-40.417zM67.367 242.517h148.216v498.533c0 37.081 30.27 67.367 67.367 67.367h498.517v148.216c0 22.621-17.796 40.417-40.417 40.417h-673.683c-22.621 0-40.417-17.796-40.417-40.417v-673.683c0-22.637 17.796-40.432 40.417-40.432z" - ], - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "isMulticolor": false, - "isMulticolor2": false, - "grid": 16, - "tags": [ - "stack" - ] - }, - "attrs": [ - { - "fill": "rgb(72, 72, 72)" - } - ], - "properties": { - "order": 148, - "id": 24, - "name": "stack", - "prevSize": 32, - "code": 59668 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 3 - }, - { - "icon": { - "width": 1349, - "paths": [ - "M414.306 105.063c-23.68-21.232-59.201-18.859-80.508 4.696l-319.585 365.222c-18.934 21.207-18.934 54.18 0 75.412l319.585 365.222c11.84 11.79 26.028 18.834 42.615 18.834 14.213 0 28.401-4.696 37.894-14.113 11.84-9.442 18.934-23.555 18.934-40.067 0-14.138-4.721-30.65-14.188-42.415l-286.462-325.18 286.437-327.528c21.307-23.555 18.959-58.901-4.721-80.084zM1335.217 477.329l-319.61-367.57c-9.467-11.79-23.655-18.859-40.242-18.859-14.188 0-30.749 4.696-42.59 14.138-23.68 21.207-26.053 56.553-4.721 80.084l288.835 327.528-286.512 327.553c-9.467 11.79-14.188 25.903-14.188 42.415 0 14.113 7.094 28.252 18.934 40.067 9.492 9.417 23.68 14.113 37.919 14.113 16.536 0 33.123-7.069 42.59-18.859l319.61-365.222c18.909-21.182 18.909-54.18-0.025-75.387zM776.505 1.349c-30.774-7.044-61.549 14.138-68.643 44.788l-182.299 909.52c-7.094 30.625 14.213 61.249 44.988 68.318h11.84c28.426 0 52.082-18.859 56.828-47.136l182.274-909.52c7.119-30.625-11.84-58.901-44.988-65.97z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "code" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 134, - "id": 0, - "name": "code", - "prevSize": 32, - "code": 59648 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 4 - }, - { - "icon": { - "width": 731, - "paths": [ - "M365.61 0c-165.575 0-300.784 128.313-300.784 286.469v127.206c-7.858 1.693-15.862 3.009-23.74 4.807-24.221 5.601-41.085 26.708-41.085 50.427v453.548c0 22.026 14.566 42.109 36.592 49.131 219.491 69.883 438.836 69.883 658.223 0 21.943-7.022 36.613-27.105 36.613-49.11v-453.569c-0.104-23.636-16.969-44.91-41.085-50.427-7.983-1.902-15.987-3.114-23.949-4.807v-127.206c0.021-158.156-134.729-286.469-300.784-286.469v0zM365.61 122.546c94.898 0 171.907 73.624 171.907 163.924v105.514c-114.604-13.96-229.272-13.96-344.001 0v-105.514c0-90.279 77.302-163.924 172.095-163.924v0zM365.777 577.014c39.769 0 72.244 30.636 72.244 68.608 0 21.838-10.992 41.253-27.648 53.77l18.307 145.91h-125.952l18.495-145.91c-16.76-12.539-27.648-31.828-27.648-53.77-0.021-37.867 32.35-68.608 72.202-68.608v0z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "lock" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 135, - "id": 1, - "name": "lock", - "prevSize": 32, - "code": 59649 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 5 - }, - { - "icon": { - "width": 1002, - "paths": [ - "M985.865 930.253l-183.505-187.515c62.977-82.742 97.146-182.024 97.146-283.136 0-253.696-201.483-459.603-449.753-459.603s-449.753 205.907-449.753 459.603c0 253.717 201.483 459.603 449.753 459.603 100.742 0 199.696-34.953 277.034-99.282l183.505 187.515c10.809 11.026 23.382 16.54 37.786 16.54 14.382 0 26.978-5.513 37.765-16.54 21.595-22.053 21.595-55.132 0.022-77.185zM791.573 461.433c0 193.028-152.932 349.316-341.82 349.316s-341.82-156.288-341.82-349.316c0-193.028 152.932-349.294 341.82-349.294s341.82 156.266 341.82 349.294z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "search" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 136, - "id": 2, - "name": "search", - "prevSize": 32, - "code": 59650 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 6 - }, - { - "icon": { - "width": 917, - "paths": [ - "M581.363 327.294c-10.625-8.044-26.542-8.044-37.167 2.667-119.46 136.657-124.773 367.107-127.419 589.514-2.646 26.819-2.646 50.929-2.646 77.727 0 13.399 10.625 26.798 26.542 26.798 13.292 0 26.563-10.732 26.563-26.798 2.667-26.798 2.667-50.908 2.667-77.727 2.646-214.363 7.958-434.102 114.148-554.672 7.916-10.711 7.916-26.798-2.688-37.509zM899.91 597.92c-13.271-5.334-29.188 2.688-34.5 16.087-13.271 34.842-21.229 101.815-23.875 211.696 0 13.399 10.604 26.798 26.542 26.798 13.25 0 26.542-10.711 29.188-26.798 2.646-99.127 7.958-166.122 18.562-192.941 5.334-13.378-2.624-29.465-15.917-34.842zM262.817 43.248c-10.625-8.044-26.563-8.044-37.167 2.688-172.544 195.608-212.379 439.458-225.65 608.289 0 16.066 10.625 29.465 26.542 29.465 13.292 0 26.563-10.711 26.563-26.798 13.271-158.1 50.438-393.905 212.357-576.115 7.958-10.732 7.958-26.819-2.646-37.53zM854.784 163.818c-7.958-10.711-23.875-16.066-37.146-8.022-10.625 8.022-15.938 24.11-7.98 37.509 69.022 112.547 55.751 254.581-31.833 353.708-37.167 48.241-42.48 214.384-45.126 377.818v72.372c0 13.399 10.625 26.798 26.542 26.798 13.271 0 26.542-10.732 26.542-29.486v-72.35c0-83.082 2.646-305.468 31.855-342.998 100.855-115.214 116.772-284.025 37.146-415.348zM217.691 303.163c2.667 2.688 5.313 2.688 10.625 2.688 7.958 0 18.584-5.377 21.229-13.399 23.896-50.908 55.751-99.148 92.918-139.345 98.21-109.859 254.837-131.302 376.943-50.908 13.271 8.044 29.188 5.355 37.146-8.022s5.334-29.486-7.958-37.53c-140.69-93.793-329.172-69.662-440.652 61.618-39.813 42.885-74.313 93.793-100.877 150.056-7.958 10.732-2.646 29.486 10.625 34.842zM156.628 485.394c-13.271-2.667-26.542 5.355-29.209 21.443-23.896 133.969-26.542 273.336-29.209 407.304-2.646 24.131-2.646 50.929-2.646 75.039v8.044c0 16.066 10.625 26.798 26.542 26.798 13.271 0 26.542-10.732 23.896-24.11v-8.044c2.667-24.131 2.667-50.929 2.667-75.039 2.646-131.302 5.313-267.98 29.209-399.261 2.624-16.109-7.98-29.508-21.251-32.175zM653.031 249.589c-55.751-48.241-140.711-42.885-188.482 10.711-61.064 66.995-100.877 155.433-124.773 265.292-2.667 16.066 7.958 29.465 21.229 32.153 13.271 2.667 29.209-8.044 31.855-21.443 21.251-101.815 58.397-182.231 111.502-241.161 29.188-32.153 79.626-34.842 111.502-5.355s34.5 80.394 5.313 112.547c-92.897 107.192-98.231 316.2-100.877 503.764 0 13.399 10.604 26.798 26.542 26.798 15.917 0 26.542-10.711 29.188-24.11 2.646-176.854 7.958-377.818 87.606-468.944 47.793-56.284 45.147-142.034-10.604-190.253zM350.401 627.406c-15.938-2.667-26.542 10.732-29.209 24.131-7.958 85.749-7.958 176.854-10.625 265.292-2.667 26.798-2.667 53.596-2.667 77.706 0 13.42 10.625 26.798 26.542 26.798 13.271 0 26.542-10.711 26.542-26.798 2.667-26.798 2.667-50.908 2.667-77.706 0-85.771 2.667-176.854 10.625-259.936 2.667-16.087-10.604-26.798-23.875-29.486zM740.637 471.995c-10.625-8.044-26.542-8.044-37.167 2.688-69.001 77.706-71.668 267.98-74.313 450.168-2.646 24.131-2.646 48.262-2.646 72.372 0 13.399 10.604 26.798 26.542 26.798 13.25 0 26.542-10.732 26.542-26.798 2.646-26.798 2.646-50.908 2.646-75.039 2.646-155.411 7.98-351.020 61.064-412.66 7.958-10.753 7.958-26.819-2.667-37.53zM554.821 161.151c50.417-2.688 98.231 16.066 135.398 48.241 39.792 37.509 63.688 91.105 61.042 147.368 0 13.399 10.625 26.798 26.542 26.798 13.25 0 26.542-10.711 26.542-26.798 2.646-69.683-26.542-139.345-79.626-187.565-47.793-42.885-108.856-66.995-172.566-61.64s-122.106 32.153-164.586 80.394c-175.19 195.608-177.857 479.655-183.148 728.859-2.667 24.11-2.667 50.908-2.667 75.039v5.355c0 16.066 10.625 26.798 26.542 26.798 13.271 0 26.542-10.732 26.542-26.798v-5.355c2.667-24.131 2.667-50.929 2.667-75.039 5.313-241.182 10.625-514.496 169.877-694.017 31.855-37.509 77.002-58.973 127.44-61.64z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "thumb" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 137, - "id": 3, - "name": "thumb", - "prevSize": 32, - "code": 59651 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 7 - }, - { - "icon": { - "width": 1887, - "paths": [ - "M22.123 22.123c31.605-31.605 82.173-31.605 110.617 0l809.086 809.086 809.086-809.086c31.605-31.605 82.173-31.605 110.617 0 31.605 31.605 31.605 82.173 0 110.617l-865.975 865.975c-15.802 15.802-34.765 22.123-56.889 22.123s-41.086-9.481-56.889-22.123l-865.975-865.975c-15.802-15.802-22.123-34.765-22.123-56.889 6.321-18.963 12.642-37.926 28.444-53.728z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-down" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 121, - "id": 4, - "name": "arrow-down", - "prevSize": 32, - "code": 59652 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 8 - }, - { - "icon": { - "width": 556, - "paths": [ - "M511.142 1024c-10.291 0-22.298-3.43-30.874-12.007l-469.977-469.977c-8.576-8.576-12.007-18.868-12.007-30.874s5.146-22.298 12.007-30.874l469.977-469.977c17.152-17.152 44.596-17.152 60.034 0 17.152 17.152 17.152 44.596 0 60.034l-439.102 439.102 439.102 439.102c17.152 17.152 17.152 44.596 0 60.034-6.861 12.007-17.152 15.437-29.159 15.437z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-left" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 122, - "id": 5, - "name": "arrow-left", - "prevSize": 32, - "code": 59653 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 9 - }, - { - "icon": { - "width": 556, - "paths": [ - "M42.881 0c10.291 0 22.298 3.43 30.874 12.007l469.977 469.977c8.576 8.576 12.007 18.868 12.007 30.874s-5.146 22.298-12.007 30.874l-469.977 469.977c-17.152 17.152-44.596 17.152-60.034 0-17.152-17.152-17.152-44.596 0-60.034l439.102-439.102-439.102-439.102c-17.152-17.152-17.152-44.596 0-60.034 6.861-12.007 17.152-15.437 29.159-15.437z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-right" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 123, - "id": 6, - "name": "arrow-right", - "prevSize": 32, - "code": 59654 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 10 - }, - { - "icon": { - "width": 2762, - "paths": [ - "M2694.946-23.814l-1313.736 881.116-1313.736-881.116-67.473 99.225 1381.209 924.775 1381.209-924.775z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-thin-dwn" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 125, - "id": 7, - "name": "arrow-thin-dwn", - "prevSize": 32, - "code": 59655 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 11 - }, - { - "icon": { - "width": 406, - "paths": [ - "M392.813 1024l13.43-10.072-384.979-501.368 384.979-502.487-13.43-10.072-392.813 512.56z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-thin-lft" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 127, - "id": 8, - "name": "arrow-thin-lft", - "prevSize": 32, - "code": 59656 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 12 - }, - { - "icon": { - "width": 406, - "paths": [ - "M13.43 1024l-13.43-10.072 384.979-501.368-384.979-502.487 13.43-10.072 392.813 512.56z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-thin-rgt" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 128, - "id": 9, - "name": "arrow-thin-rgt", - "prevSize": 32, - "code": 59657 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 13 - }, - { - "icon": { - "width": 2762, - "paths": [ - "M2694.946 1000.186l-1313.736-881.116-1313.736 881.116-67.473-99.225 1381.209-924.775 1381.209 924.775z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-thin-up" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 126, - "id": 10, - "name": "arrow-thin-up", - "prevSize": 32, - "code": 59658 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 14 - }, - { - "icon": { - "width": 1887, - "paths": [ - "M0 941.827c0-18.963 6.321-41.086 22.123-56.889l865.975-865.975c15.802-15.802 34.765-22.123 56.889-22.123s41.086 9.481 56.889 22.123l865.975 865.975c31.605 31.605 31.605 82.173 0 110.617-31.605 31.605-82.173 31.605-110.617 0l-809.086-809.086-809.086 809.086c-31.605 31.605-82.173 31.605-110.617 0-22.123-12.642-28.444-31.605-28.444-53.728z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "arrow-up" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 124, - "id": 11, - "name": "arrow-up", - "prevSize": 32, - "code": 59659 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 15 - }, - { - "icon": { - "width": 1199, - "paths": [ - "M0 1024l157.538-512-157.538-512 1199.043 512-1199.043 512zM70.017 78.769l135.658 433.231-135.658 433.231 1019.624-433.231-1019.624-433.231z", - "M192.547 490.12h371.966v43.761h-371.966v-43.761z" - ], - "attrs": [ - {}, - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "btn-submit" - ], - "grid": 16 - }, - "attrs": [ - {}, - {} - ], - "properties": { - "order": 129, - "id": 12, - "name": "btn-submit", - "prevSize": 32, - "code": 59660 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 16 - }, - { - "icon": { - "paths": [ - "M1005.769 920.688c24.309 24.309 24.309 60.772 0 85.080s-60.772 24.309-85.080 0l-407.169-407.169-407.169 407.169c-24.309 24.309-60.772 24.309-85.080 0s-24.309-60.772 0-85.080l407.169-407.169-407.169-407.169c-24.309-24.309-24.309-60.772 0-85.080s60.772-24.309 85.080 0l407.169 407.169 407.169-407.169c24.309-24.309 60.772-24.309 85.080 0s24.309 60.772 0 85.080l-407.169 407.169 407.169 407.169z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "close" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 130, - "id": 13, - "name": "close", - "prevSize": 32, - "code": 59661 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 17 - }, - { - "icon": { - "width": 238, - "paths": [ - "M43.236 459.662c38.684-39.822 36.409-108.089 36.409-118.329v-190.009c0-58.027 20.48-100.124 62.578-125.156 34.133-20.48 75.093-25.031 95.573-26.169v67.129c-61.44 9.102-97.849 45.511-97.849 100.124v235.52c0 36.409-18.204 69.404-48.924 88.747l-31.858 20.48 31.858 20.48c30.72 19.342 48.924 52.338 48.924 88.747v235.52c0 54.613 36.409 91.022 97.849 100.124v67.129c-21.618-1.138-61.44-5.689-95.573-26.169-40.96-25.031-62.578-67.129-62.578-125.156v-190.009c0-10.24 2.276-78.507-36.409-118.329-12.516-12.516-27.307-21.618-43.236-25.031v-53.476c17.067-4.551 31.858-13.653 43.236-26.169z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "curly-left" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 131, - "id": 14, - "name": "curly-left", - "prevSize": 32, - "code": 59662 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 18 - }, - { - "icon": { - "width": 238, - "paths": [ - "M194.56 459.662c12.516 12.516 27.307 21.618 43.236 25.031v53.476c-17.067 4.551-31.858 12.516-43.236 25.031-38.684 39.822-36.409 108.089-36.409 118.329v190.009c0 58.027-20.48 100.124-62.578 125.156-34.133 20.48-75.093 25.031-95.573 26.169v-65.991c61.44-9.102 97.849-45.511 97.849-100.124v-235.52c0-36.409 18.204-69.404 48.924-88.747l31.858-20.48-31.858-20.48c-30.72-19.342-48.924-52.338-48.924-88.747v-235.52c0-54.613-36.409-91.022-97.849-100.124v-67.129c21.618 1.138 61.44 5.689 95.573 26.169 40.96 25.031 62.578 67.129 62.578 125.156v190.009c0 10.24-2.276 78.507 36.409 118.329z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "curly-right" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 132, - "id": 15, - "name": "curly-right", - "prevSize": 32, - "code": 59663 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 19 - }, - { - "icon": { - "width": 819, - "paths": [ - "M360.448 1003.52l-333.824-331.776c-77.824-77.824 38.912-192.512 114.688-116.736l143.36 143.36c24.576 24.576 43.008 16.384 43.008-18.432v-600.064c0-45.056 36.864-81.92 81.92-81.92s81.92 36.864 81.92 81.92v604.16c0 34.816 18.432 40.96 43.008 18.432l143.36-143.36c77.824-77.824 192.512 38.912 114.688 116.736l-331.776 329.728c-26.624 26.624-71.68 26.624-100.352-2.048z" - ], - "attrs": [ - {} - ], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "download-arrow" - ], - "grid": 16 - }, - "attrs": [ - {} - ], - "properties": { - "order": 133, - "id": 16, - "name": "download-arrow", - "prevSize": 32, - "code": 59664 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 20 - }, - { - "icon": { - "paths": [ - "M1024 512c-1.278-66.862-15.784-133.516-42.576-194.462-26.704-61-65.462-116.258-113.042-161.92-47.552-45.696-103.944-81.82-164.984-105.652-61.004-23.924-126.596-35.352-191.398-33.966-64.81 1.282-129.332 15.374-188.334 41.356-59.048 25.896-112.542 63.47-156.734 109.576-44.224 46.082-79.16 100.708-102.186 159.798-23.114 59.062-34.128 122.52-32.746 185.27 1.286 62.76 14.964 125.148 40.134 182.206 25.088 57.1 61.476 108.828 106.11 151.548 44.61 42.754 97.472 76.504 154.614 98.72 57.118 22.304 118.446 32.902 179.142 31.526 60.708-1.29 120.962-14.554 176.076-38.914 55.15-24.282 105.116-59.48 146.366-102.644 41.282-43.14 73.844-94.236 95.254-149.43 13.034-33.458 21.88-68.4 26.542-103.798 1.246 0.072 2.498 0.12 3.762 0.12 35.346 0 64-28.652 64-64 0-1.796-0.094-3.572-0.238-5.332h0.238zM922.306 681.948c-23.472 53.202-57.484 101.4-99.178 141.18-41.67 39.81-91 71.186-144.244 91.79-53.228 20.678-110.29 30.452-166.884 29.082-56.604-1.298-112.596-13.736-163.82-36.474-51.25-22.666-97.684-55.49-135.994-95.712-38.338-40.198-68.528-87.764-88.322-139.058-19.87-51.284-29.228-106.214-27.864-160.756 1.302-54.552 13.328-108.412 35.254-157.69 21.858-49.3 53.498-93.97 92.246-130.81 38.73-36.868 84.53-65.87 133.874-84.856 49.338-19.060 102.136-28.006 154.626-26.644 52.5 1.306 104.228 12.918 151.562 34.034 47.352 21.050 90.256 51.502 125.624 88.782 35.396 37.258 63.21 81.294 81.39 128.688 18.248 47.392 26.782 98.058 25.424 148.496h0.238c-0.144 1.76-0.238 3.536-0.238 5.332 0 33.012 24.992 60.174 57.086 63.624-6.224 34.822-16.53 68.818-30.78 100.992z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "spinner", - "loading", - "loading-wheel", - "busy", - "wait" - ], - "defaultCode": 59771, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "spinner2, loading3", - "name": "spinner2", - "order": 140, - "id": 17, - "prevSize": 32, - "code": 59771 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 21 - }, - { - "icon": { - "paths": [ - "M512 92.774l429.102 855.226h-858.206l429.104-855.226zM512 0c-22.070 0-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.3 0 96.792-48.708 63.3-108.24h0.002l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648v0z", - "M576 832c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z", - "M512 704c-35.346 0-64-28.654-64-64v-192c0-35.346 28.654-64 64-64s64 28.654 64 64v192c0 35.346-28.654 64-64 64z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "warning", - "sign" - ], - "defaultCode": 59911, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "warning, sign", - "name": "warning", - "order": 141, - "id": 18, - "prevSize": 32, - "code": 59911 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 22 - }, - { - "icon": { - "paths": [ - "M448 304c0-26.4 21.6-48 48-48h32c26.4 0 48 21.6 48 48v32c0 26.4-21.6 48-48 48h-32c-26.4 0-48-21.6-48-48v-32z", - "M640 768h-256v-64h64v-192h-64v-64h192v256h64z", - "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "info", - "information" - ], - "defaultCode": 59916, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "info, information", - "name": "info", - "order": 142, - "id": 19, - "prevSize": 32, - "code": 59916 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 23 - }, - { - "icon": { - "paths": [ - "M608 192h160v-192h-160c-123.514 0-224 100.486-224 224v96h-128v192h128v512h192v-512h160l32-192h-192v-96c0-17.346 14.654-32 32-32z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "facebook", - "brand", - "social" - ], - "defaultCode": 60048, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "facebook, brand10", - "name": "facebook", - "order": 139, - "id": 20, - "prevSize": 32, - "code": 60048 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 24 - }, - { - "icon": { - "paths": [ - "M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "twitter", - "brand", - "tweet", - "social" - ], - "defaultCode": 60054, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "twitter, brand16", - "name": "twitter", - "order": 138, - "id": 21, - "prevSize": 32, - "code": 60054 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 25 - }, - { - "icon": { - "paths": [ - "M1014.662 822.66c-0.004-0.004-0.008-0.008-0.012-0.010l-310.644-310.65 310.644-310.65c0.004-0.004 0.008-0.006 0.012-0.010 3.344-3.346 5.762-7.254 7.312-11.416 4.246-11.376 1.824-24.682-7.324-33.83l-146.746-146.746c-9.148-9.146-22.45-11.566-33.828-7.32-4.16 1.55-8.070 3.968-11.418 7.31 0 0.004-0.004 0.006-0.008 0.010l-310.648 310.652-310.648-310.65c-0.004-0.004-0.006-0.006-0.010-0.010-3.346-3.342-7.254-5.76-11.414-7.31-11.38-4.248-24.682-1.826-33.83 7.32l-146.748 146.748c-9.148 9.148-11.568 22.452-7.322 33.828 1.552 4.16 3.97 8.072 7.312 11.416 0.004 0.002 0.006 0.006 0.010 0.010l310.65 310.648-310.65 310.652c-0.002 0.004-0.006 0.006-0.008 0.010-3.342 3.346-5.76 7.254-7.314 11.414-4.248 11.376-1.826 24.682 7.322 33.83l146.748 146.746c9.15 9.148 22.452 11.568 33.83 7.322 4.16-1.552 8.070-3.97 11.416-7.312 0.002-0.004 0.006-0.006 0.010-0.010l310.648-310.65 310.648 310.65c0.004 0.002 0.008 0.006 0.012 0.008 3.348 3.344 7.254 5.762 11.414 7.314 11.378 4.246 24.684 1.826 33.828-7.322l146.746-146.748c9.148-9.148 11.57-22.454 7.324-33.83-1.552-4.16-3.97-8.068-7.314-11.414z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "cross", - "cancel", - "close", - "quit", - "remove" - ], - "defaultCode": 59919, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "cross, cancel", - "name": "cross", - "order": 144, - "id": 22, - "prevSize": 32, - "code": 59919 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 26 - }, - { - "icon": { - "paths": [ - "M864 128l-480 480-224-224-160 160 384 384 640-640z" - ], - "attrs": [], - "isMulticolor": false, - "isMulticolor2": false, - "tags": [ - "checkmark", - "tick", - "correct", - "accept", - "ok" - ], - "defaultCode": 59920, - "grid": 16 - }, - "attrs": [], - "properties": { - "ligatures": "checkmark, tick", - "name": "checkmark", - "order": 143, - "id": 23, - "prevSize": 32, - "code": 59920 - }, - "setIdx": 0, - "setId": 5, - "iconIdx": 27 - } - ], - "height": 1024, - "metadata": { - "name": "icomoon" - }, - "preferences": { - "showGlyphs": true, - "showQuickUse": true, - "showQuickUse2": true, - "showSVGs": true, - "fontPref": { - "prefix": "icon-", - "metadata": { - "fontFamily": "icomoon" - }, - "metrics": { - "emSize": 1024, - "baseline": 6.25, - "whitespace": 50 - }, - "embed": false - }, - "imagePref": { - "prefix": "icon-", - "png": true, - "useClassSelector": true, - "color": 0, - "bgColor": 16777215, - "classSelector": ".icon" - }, - "historySize": 50, - "showCodes": true, - "gridSize": 16 - } -} \ No newline at end of file diff --git a/_site/assets/img/author/inria.jpg b/_site/assets/img/author/inria.jpg deleted file mode 100644 index e000305f0f7e3d00a4312df654a2813b5d2a5885..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10431 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 NXmkrU9!H$L{a>uJ)Exi- diff --git a/_site/assets/img/author/list-cea-tech.jpg b/_site/assets/img/author/list-cea-tech.jpg deleted file mode 100644 index 2c9289dc6030c8eff109ec6062baafb942f6a3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6556 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 bn!ji~nbUaESf3Zvya0qI7Jz8Z;-mip*K90F diff --git a/_site/assets/img/banner-careers.jpg b/_site/assets/img/banner-careers.jpg deleted file mode 100644 index 9581f471fe19a312c5192545b9a88f81ce172dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32832 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 RanSz<-iEwfP8I#u`(NhimA3!@ diff --git a/_site/assets/img/bg-code-screen.png b/_site/assets/img/bg-code-screen.png deleted file mode 100644 index 862ff699adb1e4887c2fc2cbdcac5f726d40b24e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13438 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 JNXF>h{{eZf_h$eA diff --git a/_site/assets/img/bg-contact-location.jpg b/_site/assets/img/bg-contact-location.jpg deleted file mode 100644 index f750352108aac645bf4e73d8dc165c4ab353a3ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71618 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πNAh5K28F=Aqpp}Aj^ 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�mb+yI8vg*{QwmJCx?Vlk7r+gE6w;ox5}LI! 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 U@;HXTR5IxVed2M})*s#f2V}S7>;M1& diff --git a/_site/assets/img/bg-dotted-focus.png b/_site/assets/img/bg-dotted-focus.png deleted file mode 100644 index 62f71fbcc364d459cbba30103398d658c862233f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmaJ=PiWIn9DZGg%(B8RgDD=K8G?$<pSDTXxH`M0-6E#cuCR(AOOv-XZpn+u>zWOP zF+^1K;Khp`+{xPxUKRA>!HXwP;z2K7y^Anky0-IR4GH=E9^d!<{=SFR%0e=6G64Wc zYKv-({wL^{8#@L-Y;pPdaq65Pr3P8TtE6N22ox;bL{M{#HB>`}wRQU=ngt-v*!2c! z=vNgJJFF35*wFDP8-Url&@;?+L|_xG*>0Zs`Q{x1Z7a_#i#o4+Mbxqvw|%s<U8$Sf z>t@bk<}Sh6P@w`2A_fed4L4B2Jk!-xs2v@14D3S4dY(B<s-ah55&H;=Y$j#$f&e9n z6|$lv2^V0R7t$P0UnwPI6;V>sGVDDJjpkdcN=+^IVo@*8v<UGOj_Y(fY$wBFe~lAz zxm=`?PNyg$6>Pc02vcq_-B(aiVEVR4Z0y2F(P-i}$ul(5!x9{CAnOLbHqnN0q2X}? z%SR>kfx7;GsN)RK0jZ&*eE%sN)VDmu)lh)jzDWnSIvs`bl%kIeg8e$i8~rX;TbSUW zg*{kYlHl28+qG~fIM>DNx}v!OF<cXAYM!AAtZiFLMxK!+Rg~rVOhFJzazPgPc~#A3 zN`;x6P*(d~6`O4bxunmvj<_>JxzQ>(9*wLb-`+%4*~bp-maN#ra}kH?^|;pXT%@5~ zjwZuJgZ*pJ{Uf?PkvUjf>I@bixpdooy4LLVc8*?&Tbf#^hhLh%4-V$yW4v%Vrj0+7 zFBaebij6#YdgTWgo%nic{7iNdjJ=G#-rO1ewwH{9*uC#}cgv5@PrXfmkych(n56cL w1pnwJ0TU~u8SX=6N?iH8b1hy@c8xs*z?1#cukPHx@hQ5ATB)M$&#&zM0SB-)1^@s6 diff --git a/_site/assets/img/bg-dotted-line-red.png b/_site/assets/img/bg-dotted-line-red.png deleted file mode 100644 index 0eb975f64c9da8a49bcad7c02b2cda31d9e39d02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1018 zcmaJ=&rj4q6rKek>ju=AkSOsmDe+h0cG~Wb?p7AqZHv2!yCKUatQSMK9oPcx)OK(S z2V;mKG2yIHj$AzH!NiLPjq&1*vwwu*U4zqQ7d#+MCVlVa``-KJy*JP2YWGGH;|T!3 zXr-*x+5Zwd`S>sZvGT(1dFEWDdXvtRCE78342l+MVOVjDWn9OGwejd1o&;d<hTUk= zX7#>e5{EY;3?DikV*@Zb9eRejiYaX2W!o)qKR<rrplubng-lhbdMa+)<xL;YZ`K;- z=Bk;uxalc487eG+gQ)>SXUz?iu)uZmD$I_;h=W}ST`h1&qMFq?s1hH;44+M!LRN-y zo)<H+oR;rENf0wgNTHOFlu}AsP|_0YeH^RiTT4n^o9)$NUV&><>M00yIvu`~;)%bE z#C$%F1PMt}k|C18hD(hw=>`-13>pqh-}b0YTo`3ET4bFTIHvUI3XWH;9w&B#UZYsc zP-u8a<OSq7(Y?CpfY$Mej8oA;W5dI!jsvppn`|CS6MZu4-PwgAAXB4g#9Vi<ODkG| zV-eo6EhQ&uC4u!#&WXAx>T*d_OIj)?sd`Z^>7{g^TX6$wxF+s%?GtYHOs=B(*r3F3 z5VF>v-dvkd610g2Rkb@Ucx%CSEz${YNA2yY#lHO*TeCiKV7EVteToJls|qDOr^=Eh zMf&rZY&NGCMHUoOaxTU7xYj9m?{T&NauE}QqT&8C?0$%CP-GsjE_05TAG>VheYV=~ zK0JHEp2bQ<D>lOKt>1@-(}QtAoQYLNUcBGgS^NWHU(446Fc5byY+rtz0O$6>gS#^W z2m9Nxr{K%MRB>W<Y~<k(h^5DO_Y%ym4PDWZ0^-8ftCy{tJLAI2=Qpvv;jXbS0Wdal U?eItN>tgg8D|$_PTUy-u3$2qkAOHXW diff --git a/_site/assets/img/bg-dotted-line.png b/_site/assets/img/bg-dotted-line.png deleted file mode 100644 index d4d36dd7afaf99e050fb33e39a03b3aded161877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069 zcmaJ=O-vI(6dov;LL_h@7GhwtBu2q@e@g#0lv27a)L6t)Lyv5C2fBgXS$C&);h@Bm zCMq{CYP@(h+%#(9foNhh(Ss*rVxmVeCVDUtYn?4^@nGF#vhTgT?|a{S^XBUO+)PjR zU^f7uCp{}>$-j@Bi2D!#ZL^EFx`;D?lX<*=mT_4!A&4ue0I9Slt-vgll=bs3-~<4! zV`?ss^O@6vj5MF*<oImOAZP$4Vzwd4s}NHKxT5M&`s?GTG^Hw0dNGh;Ge!ay)!7Xb zE^N%@<c(E1qR_EPYQh!>fd;We+1i?J33imO@e0It!VFE-Qt)b&-WQe6%u@+uLMq@3 zdSx~kqCycL7YK#MLnkSo<pK=rXZ);}_Y32!FwRr;k0#YjWm(9Isd_EqMd>2OhQKi8 za@kk*`;fW9aFIxaVR?q<y(GhHt?O8_y}C8hU=X1to2r3Tq*D%~R6r#hrHRu07Br(t zt6TLkk%2L`WH6kMby{j9W-|Xz)wE`|g|qNL?>~vH+`0joEVNL`l*z>{k2s|aAz?xZ zBQuB4T4RdyMTC)6L<W^e)TTxqUsQDkm8}ysOeQ0wbqh<n4AWwiCM-TxRRlJeV5gJe zM2Hu8j!T9jfnYG4jB_N&`9ooU11loAq(L1wu*v~eY>9Q&K{H5Y5t`}+sH9A!QMI-O zwY8RbOTIc*X{}|tC6*y#80T{Ty6i@XY>;C%SC=@=<%c@ic$2L5r*DHE@+|J8#dyws zSNK(}#$0Zen`%?9&1?--s+GMTmo`D+-m9ZG&)l7?tjMwq+|<K}=TvbN^i8>xFQ9At z$;HagSZ{ByYiw+6=K=cQ0qyRcy^iaibFAGDI^Go5Zj2H;+`s+)QR#DaYdGd1h|cHL z-xYbOP-s8$Y<G9}FlbA$-?O*(W_mn<rMH`BT`9*X4gm1-^_Ahyp^pjY0jHC5;{EBR G%YOj2;Z!mJ diff --git a/_site/assets/img/bg-scale.jpg b/_site/assets/img/bg-scale.jpg deleted file mode 100644 index dafa1e3ec55e0ddb59a66a408b034bf586164695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1290 zcma)5Pi)gx7=Mn_q_m;Lq)1hZG|LqT*kZ>{?bKe=ir9^aMi?}e*a1y)?N@4o{Vdxd zX|&6xY1NMF4x8Y>iNo#_n~2yLLgD}t>JDsOH3_uq{z>CHndgwC2z6+mZ0UR7_xpYS z-uJ?v!>3?kv1P3SP^p{%!(dm!-vOmHjQTntKpdOr00^IwZ>|M_t8kp-v$}~^AZs9- zYw0e>vpEjTEwo(SsKbC>ffp^O$o$p$o}n$X$eb6exvHzeHS1K{gSGaVWusj;WRqE# zr{`Kq%XV!T=yc1z?D$Hn$aI4%SdYvcLw6xTy~v!5veNHW&(bRLAT6@_tdZk+T9R0P zMwBG}En3L&0++*|l;vj>QBs5g-4h09^UPIcNh|kq;Zu?6HPvi3*=C+a-bId=WjTr= z2w9BC`s+@hx3Z2u-H)I_-|#Fqu#iJX5%m?+2#O4@^hFD{TdfWP?>Q~oj{54N{a^|1 zma!+=UtV`1w*-CE@C=CI(|t0Y-Rl!YKwOQYA){eKC#Yye23uIuG8IXi5f{~*He1Te zJik~d@tPo)1XYqsqN?TPKDXldf$kWv&$V{B>T9`*>Onm~-ZDa$`?q&?4F$+wLoTh> zB>LES%P~>YKOT*?S1I(YE6^-^$fmoqQLH`ktD;aY6?kd3u-L6#KA9_PB0nn$f}~3M zJk#Tvd-UDo7XFjV;bOSxVqd!Gz6oznqz={=9|nsL9lY%xUhD8rFxFjGVBW#chX{AT z#~=}p$A{vHp`paS1pY^d6N%x`)X2!_$Ve)k>Pk8_b|8IVES1TOk7qK6r>3S3zcCOZ znN03a?Vm`eCngV3hb9M(|Eq*|05y!?d5I(_5Tgi^BEoxM6%Yim`}8A?NMh3~MuLo| z0f-zgVYgzNWPE&?s!@Q5B|(fF_y`a?_u0}WnHi^qt%LFK7my;cjUp+q0Dk(W_Rp`> z?W1z?kGshZJ6h#F-0WCE`PrAZzpcX`#Q8+!))(5ll?`Wd+l`#gjjgF4^_@>{UdX)j z#Jpzx`&;|;+wS8BA6@z&^?75V7<soh?qBa5ov%fJuLiMZzU#(9l}~pz9(CA#H~to? VU*DQ;pML+Lc=O5C>*SGe`#HE6ZDjxe diff --git a/_site/assets/img/default-blog.jpg b/_site/assets/img/default-blog.jpg deleted file mode 100644 index 9ff487838cd3d559720057549c702b7503e791c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28135 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 Zg+y1XoGJ>|_nysW4^GG%OVu{}{~w2Vc)$Pv diff --git a/_site/assets/img/favicon.ico b/_site/assets/img/favicon.ico deleted file mode 100644 index fcf81e5093227c5464a147e7b17c8faacd7a42b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZQzU<5(|0R|vYV8~!$U=RbcG=LZ+qyWT>V3L8s0VszK6jML_r#}9SW+sUL5lsxY zz49ra{>vqQ1maKsL2SiT;`J*4{S)5(^?&Ws@Be$&|M;IU>Dzw=xEZ+ZM1;Y||4L~e z|97wd{{P6e-~SB@iMJbO2FTs*Yrg+KeD(K#y*zUCfBfHpqMsOdBh-Mx4q-n+9OgcJ zv;r`mK>A_!>*hi9L&A`-S)lL_>G=A8?XjQ#uRQ$oKXdxG|K=s1p>aT1KgexLK-{(V z2RQtV3W5BzPya#Y5}Sr(lRo~hUh@6_Az=9H=7Q1^vi*e9At=p(($K*xzyAlce)-?B z>c@XrIN%FAh#bUx^{h|-=kNLXKW*x_|J%?0`fphVN(aRGAEXWx-XOmxPyY5l7#N<) o>4e=4(x;m7>AzME6lZ__uLZ=KAQ~+8861|#?qFc}|DO^J0Jm_lP5=M^ diff --git a/_site/assets/img/framac.gif b/_site/assets/img/framac.gif deleted file mode 100644 index 7de9edb3f6c4c17049aad9b5802ce7d1038b8aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6979 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 XqV2Ki&xrQ_4xBpP@utI&0$BVXddd-M diff --git a/_site/assets/img/icons/arrow-down.svg b/_site/assets/img/icons/arrow-down.svg deleted file mode 100644 index 140c364e..00000000 --- a/_site/assets/img/icons/arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8ad58ece51977048ed402bd67614e657b9fd32d14eb42e30c8b172c34739c50 -size 654 diff --git a/_site/assets/img/icons/arrow-left.svg b/_site/assets/img/icons/arrow-left.svg deleted file mode 100644 index a33ad259..00000000 --- a/_site/assets/img/icons/arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:90b7056f55a21a955187d4dff4c183637062f40bd323d7aa8d082faee96aa277 -size 660 diff --git a/_site/assets/img/icons/arrow-right.svg b/_site/assets/img/icons/arrow-right.svg deleted file mode 100644 index 92f3549d..00000000 --- a/_site/assets/img/icons/arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2fbd6717f89d5e059f66cfd45e0bcfcb43740a4fa7265b42a20db2af263f0968 -size 659 diff --git a/_site/assets/img/icons/arrow-up.svg b/_site/assets/img/icons/arrow-up.svg deleted file mode 100644 index 49e790c5..00000000 --- a/_site/assets/img/icons/arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:489100fb5b31686f2fd5371afd5de42207eeabde279851cb92c082d923e2c5e1 -size 655 diff --git a/_site/assets/img/icons/code.svg b/_site/assets/img/icons/code.svg deleted file mode 100644 index d770e358..00000000 --- a/_site/assets/img/icons/code.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f0555bc71d6b9737e77409c14a73cf5884e955c6d8cbebf57f3fd4e3104c3f92 -size 1431 diff --git a/_site/assets/img/icons/icon-attachment.png b/_site/assets/img/icons/icon-attachment.png deleted file mode 100644 index d200cb558ec695f5318cde4b9d687ef5952c94aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7196 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 diff --git a/_site/assets/img/icons/icon-code.png b/_site/assets/img/icons/icon-code.png deleted file mode 100644 index 35e2bc9b927f52fb5b8737a4570567bce8e351ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5679 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 biJk(D+kAH*VKl!_fB^<Nrl@CH&e8t^_!=Nr diff --git a/_site/assets/img/icons/icon-error-free.png b/_site/assets/img/icons/icon-error-free.png deleted file mode 100644 index 1ffd8bbe230789079d18bb73b88bbfe88295e315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4509 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 diff --git a/_site/assets/img/icons/icon-layer.png b/_site/assets/img/icons/icon-layer.png deleted file mode 100644 index 2ec5fb0ab168f5de6511e95478f59a0afe51c93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1719 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|#=yWhCD@=2$dN2@jVKAuPb(=;EJ|f?Ovz75 zRq)JBOiv9;O-!jQJeg|4z`(4O84^(v;p=0SoS&<g2vVb0ky`-N&A?z|Ur~^loSj;t zkd&I9nP;o?e)oPQh0GLNrEpVU1K$GY)Qn7zs-o23D!-8As_bOT6eW8*1)B;hpaHq5 zC5Z|ZxjA{oRu#5NU~{d2Y>=?Nk^)#sNw%#L#8DBx0SeCfMX3s=dd9lR28M<TW@dVZ zCZ=X)hB^vH28KrZ20&z{YiMF+YG!3*t^fr}K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFi6$MtEjkN`85< zCRn|%ua#$BaY<rca;m3`trE}#z0AxMD@$ifGc!kXXA2igOG86fa|;tQXBQ_|OEU{s zOA|*kCzxKB{N&Qy)Vvay-V}sh7o2)QNg=lYXtPUdQD#|cid#{Bt^(N0R++fn;)v5c zsNNLZZgIk?S0CsYeNe<AMKnwZn0i1=c(Mg@;0Zr95187EfXRB}w7yTk+@kI2;uunK zE9uLJ4+#xTmJV~yG;p%aoM55paHfMbpG|YtQ3r+wk)=Y5I~w!4R5}Bf9AZ*oX{az4 z^GsC;V=`o5>JZd4_@8Xt#@cz-V_Gx&ZYIka=HDN1Foz2;3OJl#bk(ysbHsu5K#TS& z57U;!9}<U}oMSp0>@*eX*ivslGI}D%==_i2qp}3MLc@lo!a+%|Il0Bo_LT4jtda=u zUCFqX`CV%u^NO4U@m`xvJM{UFoT>Qog}G31%3qP_X>}e4F6p0$ocG8ep)u{Dt;&mw z4$l}^1QvFsiwewVc@)QXiy<K5f1=_74Uvw+5*h3cn$J0e4=XVEcpUsE&%KO0K`}u8 z&+>E+o~{=XrAJmMyU9A{Y?ff#vM}|iO@{WgTL(BgR5>gkNv-6Kkx9@L2v;&c%APu_ z!fU}#C*B2YNAwFknSi!^Yf%xH&wNyxSBA|idve2$hJX^A=5J>uG8-Jr{xdwXtKkf0 z>zICVhuT_(NA*6<3wRP`bPd_(DyJ-1DYCcr=Y)BE6+A~|A~sF1v6U@MG4buOO1dJr zxDV<gLmAnRT(=%9%v2Un;oqlbzhdiB_9N{LKdg9V4sadmbkOl#;jF`vTk08@@i3O{ zgp0n>58fl5M|gM-I6aXQt*Og5Dd&-Nzpyy-zwmq&jl?>pN9rc0+7uoz9oh6lgn=dF zeovqPTa$*>i$x0Gnszq!vR~ltP!HI!MO;7eHDk`&H+vgfTYH5B1X;AJUkjw)&{Tcl z=3MquzE1mzs`ch~^Gz);)oG?!Zz^Urk8RuM(Y0iWzo2#6_nyc6S8s%WTX~|syFMT^ zKIzRaho=&2&+VIV-|Nd8#Z>|!^Cs~Ms7|U3W{KYQ`E-!Ai@>LV>fCnrZ-M3WBeU8# zoDNM<uQlJUUfo`pVd^yPP&1dzWQUC`91RR;sH1-hQ_EDIrrev#pMJ+U<t_bsbG40k z@`-mF)Kiu(3qG&2F>iVflbNYy=e(QEllI)*S~pk7;%=bMMN@`H=?YHSt)1E(OSesE zT^`@z^2b<riu5M&pg9g_PWEY;o=`iyZ>wXcQp!E=CaveYSL+wty6nvBQ1=Z~m3X@P KxvX<aXaWFcNoN-T diff --git a/_site/assets/img/icons/icon-suitcase.png b/_site/assets/img/icons/icon-suitcase.png deleted file mode 100644 index 832699df9cfb5ac5db4875e4d538e996b83b54d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2337 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 diff --git a/_site/assets/img/icons/lock.svg b/_site/assets/img/icons/lock.svg deleted file mode 100644 index b7752389..00000000 --- a/_site/assets/img/icons/lock.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:385cfdd6792716815879bb919de6fb0d2159b5c5f92bf5dcb2898d7c28554642 -size 1207 diff --git a/_site/assets/img/icons/search.svg b/_site/assets/img/icons/search.svg deleted file mode 100644 index 7b7ec191..00000000 --- a/_site/assets/img/icons/search.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45921295422a095b17ca58f6ac2d4ac704e1ef73003d4fe85c1e42a971ad8414 -size 954 diff --git a/_site/assets/img/icons/thumb.svg b/_site/assets/img/icons/thumb.svg deleted file mode 100644 index fce85fe7..00000000 --- a/_site/assets/img/icons/thumb.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7e21a16e82554b4e6c5a3f36c49ecd8086c1891e724fc5312309842ba46e3b4 -size 3935 diff --git a/_site/assets/img/img-code-screen.png b/_site/assets/img/img-code-screen.png deleted file mode 100644 index c209b57ea512918c1ad9a3464efc1a529b7c42e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72053 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 ZbDo<$o}Eqrv-4lTrLF>fgi*2x`5$d4&ffq4 diff --git a/_site/assets/img/laptop.png b/_site/assets/img/laptop.png deleted file mode 100644 index 55d1c9a587e7b32814b73f48c521fd7c3bd032e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7383 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 QX9j?adPcfM+V+wE1%tSYE&u=k diff --git a/_site/assets/img/plugins/acsl.png b/_site/assets/img/plugins/acsl.png deleted file mode 100755 index 1991b882c5e01b68362c9e1a9294aec2a6df143b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15641 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 diff --git a/_site/assets/img/plugins/acsl2.png b/_site/assets/img/plugins/acsl2.png deleted file mode 100755 index 0d501b43542bac4633e0a7eb62d6c1660c22f523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11215 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 F{Rg1}cfkMv diff --git a/_site/assets/img/plugins/aorai.png b/_site/assets/img/plugins/aorai.png deleted file mode 100755 index 3ae4157cfbd99a82e98b10a0d9fc8f37305c5e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13315 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 diff --git a/_site/assets/img/plugins/aorai2.png b/_site/assets/img/plugins/aorai2.png deleted file mode 100755 index c0909eec63c296905e43ebb4479f08e42db7e09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12856 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 diff --git a/_site/assets/img/plugins/eacsl.png b/_site/assets/img/plugins/eacsl.png deleted file mode 100755 index 22bcb9bfee561588631fdbe6893daf1230687fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15568 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 Mw2D-f#K*7y2NM0DQ2+n{ diff --git a/_site/assets/img/plugins/eacsl2.png b/_site/assets/img/plugins/eacsl2.png deleted file mode 100755 index 3c7005e7866deb6b3262a47c793b7df17b71041c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16021 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 Qdh3U{@OPmK0bT$91<0;QPXGV_ diff --git a/_site/assets/img/plugins/eva.png b/_site/assets/img/plugins/eva.png deleted file mode 100755 index b3d91abfdf927ad03dae0efe64cf79b6f2ab0937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10581 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 A^8f$< diff --git a/_site/assets/img/plugins/eva2.png b/_site/assets/img/plugins/eva2.png deleted file mode 100755 index 66959a5ee710228fde83169a93386fba912c3978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13000 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 diff --git a/_site/assets/img/plugins/frama-c-chlorine.png b/_site/assets/img/plugins/frama-c-chlorine.png deleted file mode 100755 index 2e04f2aa16d548ff5d604fb008b61dbb276483a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16002 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 UZ>4h<um_mWQc9BL5{AM52Q4Y{c>n+a diff --git a/_site/assets/img/plugins/frama-c.png b/_site/assets/img/plugins/frama-c.png deleted file mode 100755 index 2451d873a47ceeab3ef2e4176c4d120bc5c8d2de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15121 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 diff --git a/_site/assets/img/plugins/frama-clang.png b/_site/assets/img/plugins/frama-clang.png deleted file mode 100755 index 03c6cec5a24f31e7c44a6295c0efd7dff53dde71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7548 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 Sl^5m!0000<MNUMnLSTaLF~4E} diff --git a/_site/assets/img/plugins/frama-clang2.png b/_site/assets/img/plugins/frama-clang2.png deleted file mode 100755 index 2901f1d622aa40fccf58776e7888e5e1abec5372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20999 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ÝntGdp>oRx*}-(SD6MUW!A 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஄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 K)XzP3Dd@j4?6&y; diff --git a/_site/assets/img/plugins/gui.png b/_site/assets/img/plugins/gui.png deleted file mode 100755 index 6a30a84925c07e6ae79aa339cbe672f34e205e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9954 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 diff --git a/_site/assets/img/plugins/gui2.png b/_site/assets/img/plugins/gui2.png deleted file mode 100755 index f00c80e03e84356ee949b7812bff0afbf441a480..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12670 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 diff --git a/_site/assets/img/plugins/kernel.png b/_site/assets/img/plugins/kernel.png deleted file mode 100755 index d8385c0fc1f855ac783f247b30bb4994e442e00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13911 zcmd6NWpJE3v*tK)?8F>1#mp2lGmn|sj$?+HnJH$9nVFfH;+UD4nVEUtoUd-}sav;d zcmM5=nW+)9T2f2uex44NlM#c5!G-~WK=5F3VFeKAy)Os^LI3d`P-1bb_8lnSaaB^Y zSNQHkU~Ow<WctI9z~05$kigK{)CdG}UK~l(wAJE35PoY4QGX|Z4B3RsOKb#P^UTqx zTuocoOuWp4PrOh(IpguGU)U)7&%;=U)jh^HbvrnbvKbxo?UL)ssdeelii)|C?#pNQ zFA@wLk)E7*mwij!B^j5Tw6j;Pah*0VE<SO07Y`54l{c<2i%+6weD2HiPcbM~w{9Y5 zI6K#zbZ2WqvK4GOuhnUHZ@FjsXDMDUZJ0gtgD<u)2L=Nd4@o+*gQY}w+|CxyQcYxh zL}O2LV^)V4ygXZy5I6d9-wrY6p2D7Ma4T>;wB$Ob4?MK4pB{OXA00%ZJqZ##wI`%5 z;Ct|ooX#xo(&tV^i+pTn?(%u-?_0OJ!5mk1>N`vK6|D_>Emtd>L9o-Tktu{So(Iu| z_i;p;0a_emN6|gVlAHt1(x&p}e6!Vg>9g-8F07gc-rfHg2fO%a?OH!pp}V9ny|{3f zUTo8*CjCtDx!5~9zxloP@@k*s)>coXBUL6_rlxA^Sp_FH>Sc@W-S07{l<_Fx+}2(3 z4dDlrfXCqS{Cd!pLuk=ujOIfphZuaS#%9U4?%OA**dSx-P@f4Ay|_{ZQVj_*!7n)X za4PAxU=&DUzx)v@#Q}R?Qej_XyYK-!%gJlbuvXB|-DG$Z6N2AVB9eJ)*r?b7HR#G^ zW{b5)g-!9rbt)z0ie1%ciX}#~rAsDFartGe=4Cgmu7_AyQ{(0htFCAI=i~BFci5?X z?DSK^HBxB~i$7|{sxrr@BvrNR7Z1&kYp+D#{V88^T=Iw{hNeohy`I)DNb~IVH)mV3 zy_q#{Sn=#boL(*T6g{D~^$JgJm6t@6^Gtsc4(~F;Z$L^waTw;OL4&ZdgCwxG9oCCc zh$h}k>`AxnS4SyPf;J8%hVtDJpQPrid<tI9*hDWpJ==_L7ouage}moj6}p49_3A#s znZ9-2X5|C9U??b}GER9iVW73z`rHMLthJ0i_nP0Yz_xoy!{6g%%S-a5m@TNGksi0z zDw=dA^+E-0)8`c*6k?Zg6B8v?rzPUz?99<uTMT8cQHV{>QdTS+Yc)U4q>7~#2^Qmx zO=ynNmgK!CG04_w8y~pk$=R*Kx~5Gz<SS>rLtAoUHA^l4QHI7^kU7oJ87rq=AJ+z~ zaFgw+HZ696W<o<MQbvpNj@eZg%hHX64Dk0W%OYt^JKNnFO+cKvxTS2CJ1#@^fwWqM zp*!_9w_0)c@`QqA;mUjPK9S{~X67wvTNbgRS>96+s{z|5MRkE3VaT&E@~V{OUUOf| zZE`uTd%^C}MQuw9%zfQ~h3GRqvfGno<wSS41g;5=MQw9j^k4jHY{FPI3#jKz952eW zvudM7Bb1S_%ACP^T>5h@EzIzUpEG)&Jdh8_PDSin_RwI+%&{>R+tj^o1q-iR2>$RN zmM5qU^1`zRGrun?T0qeY)Z>zN#e13e>GkDK#gWZnnxUNLi!YjAnzzR&Gdwrv5;FEd zGCXsh<*?2Si%F<r8H9JA<iZt=FnJ72jV10`ppfwMyZY1XwwoE5Hf4BHv%Yv4xLigm zm71!>?`368l_s?i{x05?P(!}_aKV*yl2GU!#JbzE$(ly(udvOA$<Kx044EWBY(0jV zA%kqBr(s%ig?x`+18JzKk{x9mi<H`FjtynTTY>p2l^6BN7~B3npVo~-OQt+T6@p8? z|Aq>6sA0jH_M<{nW1r((%`G4*{occ*My%9$BZXb<s(C6{ps0LZ6>OhwH)U3qD*YaT zAdAUr!KK>=?>dWVzNp?Cw1N92ho9VZfnjVDZ0F;4Xc)hX18VSnF}9$qQR_1$UgO{= zg3c3huo@wlaxBL9UMxma-UQV=g^o-B6N6Fa&y~|<uby=+G`K(hLUV{#F8EsnCys;M zjZcz%q!%&XpMrm#X|Q+Z*Jo=abbDitocLu!7XPi8a!BTI6shbX?_vAQ(nirZ2)X{X zEC|l;m*-P(6?t19960Tl>iexkxqTO=r=~@6K08LidkVco;c(lWC26izKFN>v&RSBj z$Y1f8^Eg;b=ZOneQCsh=+E>6B&!u__v!g-ir198TW~{TbN?q^A8h+(3s&v?`+sAy3 zGMli8UcAUxzh~}Gmw~O@B@zkekF*hG@olO4`I#^fp&r$Aj{Vk$41PL<%aO0$wB6pg z7;zEawDhJ|5w1_<^9H!vNdLG++%o+~EMK*i)=q$^Dh4EPoXg%YQWHN-qPN65tpaM( zavST2kk-*3B%)dg!h!<JrQ#TSNaoeLv>vsG6mVf3@dM$*Rc6U>NuBOZ6Vn1ihA<$a zn(8gW<Q{CQS(QSVoEn$2<!JW3S`UHuZ8_30&?!=G-}POXwIThE*+hP-VGpHr*$J&= z#aQIhm3Qq@QIo!Z|9cymLkZ=@>9$t-w8@O*W3Lv;F--k<E8*8RL2Qm;j1ul+irJ`{ zx?rl(t#SMJ?u@y5+qn~WwschP7<%x-c9J>>B%YXLjkv6e1FXZ^?A$hmMonSog{QmI zaAF4~EQzs|NKJd^uvM><{@sMd`sj(VsAF8mfvLim*Xm*Wjh!KA^po&|0{9z}7*l#s zIaL#<TX;G|Lmd>I@UXW69%?chKU0-vAwDu^jjw&7v!QyS-#`!Ev<_Ga8r+ycbrm2T zE&KWLAmqSN0`B6-n#BsSDJ4b|6Ol-+K)iH%`vHQbMU9&+YaIu9{IdQ%ugg)q*dNnR z7#^#ittW`$!v=8lxk`*n1w7*!4beI89g|p^ls<`=p?`!tayB1@><X7rpU7JAFuT+h zW=ieF-Nw-{16z|IW6gARom+4Rrw-Z+dra|Hhrs<-4}oLxozhF|hg;;ayvSq4+cf(4 zIn>W5EUI&iV65f0B5^O{bxCi$4gOFl5eQQ2rxv$h0W~w!A*Hn*XIMXiFAss-Qyt^4 zKRJ@z2dCModpDFtjYmSHhxAZI_xH~n6seDErdL+wpS)b7mYAE~!B6aa^+=9ybLnml z%|z}>m(yQDd!oTOGdeWp!IMGs^Qci{!q>jUBG3JjO7;D0#IwjjYu*sl(-VxFXDmEV zisUz-UJI4Iv4s^S-4=Xa9d_{`%$!F+wkJm>8N18a-aTwxN0~3(C1nW@&9q8dw>uG$ zC~w*t@VL5T)?ox)Aow%8$?}gPx>+?<(fq+{WkpS|+aHmPmoAD+vhV%%vSiDUN!KFQ zo$P6zLSa0nHK(UeXL2}!43o@o1TGu3^DDOukV&Kq$Wp;R!H$JA)8ey<7_$)a+HNtm zJdMWEb<u4l9ZagJsPx#q0Ye&>jn=CtCT_NOyP*k1kCoz=Fn-7bSKCB2sM%1qgt<lz zI3&T4w9dc(7(}OVHGGDV7(-1FG$BN(B)hTiUh9{MJ@_%$bZDPHHk(+*T8Je=96R|Z zK(Gd?AT<oO_kAL3roJ_ap+eAoxRYJ2Rc@E-<%2h2G#-q8Oh)6!asph;UKHKSTc4<a zix*9!BRhK4NlFuYy=}Trd&%!nB82fKO})d1GdNRO6V&}Z9de?#eNu};X&L$*iEt)= zkRs|a53}2F=TOFoe8(Ke9Jkr$PsPs5J3f)7{$gYS6Q*xKlq*J~x)?{G+jRp|txErx zl^XPlT8PA5jLdMG3yqCKaKzxPH24$a7aOZ0UFQY`R>Vh%%0F#3-7P#l2FERVp^i|` zA(WVHJ;FuHWOJXT5pW3JO{!ywJgH@RjXu&`wDB8Rnt=nZy8~e8TfacvM-!R)HoQh< z7#lb13waV2Wb0de>e~LWiCUCU$+cU$ebe5>Eo1}-El4Kn@eXr@hWUqHfWa{P7bHWA z?Z^Yz7D8O-F{Tmh15z7<oFGoB%`-?ko7(~iMUj9Y>N2;_A17mywhVfw{-}9z&VC|4 z^iNRKSQuL3_Ejw$HCe=kaYG25XKgOSt69Kg)~?3?_Wh%61YZp_0t=oY>N)r8M}3jr z(bEgl+%Ei5D0Vs&BXa+E(b-5-hOa{*{L%BsI}Ua?AjzD}@3G<eZNv1?;aS50-|Zk; z$aDF|(m7(%tHlI}I?nBwU~X7kTGtSMK@3rNCZ_hk?c#e%S@XNd`wAS@7~yewIGv)W zz`@uH6L+7U_CDHR$`PH?_Xa{OB?&WkS?eu-*N9ww$6LlzcX2O?-?NloK&TY*6kXPg zlHBT3zjQS~F>@(qfX7)72)^fnz8wrslTZGjZ-!a#MU*Ln`0LNqrtdq{;Gcu30#$qG zhz_{00kTlelUvM4Qo$1lnjgTUG5h$ONaDJfR8qdpaw%;NY+q?8?`bO?HY=NDKVu{z zu49d;n_A+MxNIAXM$MWsOw#)f7S1Id|Mo#0dv*|GH$>pB!jJyY8JsxH&7r>#Q!2UH z_8NT5y}*t>cB76|j-2wM537L`Nw`Nq%-$v|@4-loi3V~bR^;Z6Jljx3yy_zT`b)Wj zdvfn$8c(4YI+kDD@I%68`nGAn%bJt{Au_EysKKCyM;3}@nre$dvZYUiL#n(aCcvL2 z8OiHXxi>WD3`zNSL&mtWI+SA5_*(?_r)%C;hb1w7eu{kZ_xzuuNeTZrgz;P7NP;NB zMl>1lq|uti*iRHWO&geHr7$cA7@qnFhn>GaWD58bd&#N3D;78DQ7g}r<X(<u+i|~y zRwH`Uz%qnYXxq6F2#&|?s!^yt&S-yKTcPMWUg`3J7^o7MV#t<E1ERm5rb0q;U?HLZ z3iyC9FV!Q8N4$$4x96K;s4^9i<FCzMS)A%fXg1SSs9A!AXc`XmP1mr=%p{a_5x(Y~ zosm7oexWtx2<5&6_Yj+#hq?Piq_1BoYlCjq8}ZLhc}`a$1lxw0OU!Y{?U$rTH}%L` zs2n?pf<C$;{q`QF(U*yi-e+$=-Pk(P4l{P(z1!PYv_pUIPIN)TB$eXq=j=Mg%6^6t zs4lM(JQmz1)l6_fJcky!#*U$d?rbzKRj?b})vcEm9>;1VqDY)h6j7Wk^B~x(A9sar zT&86>;&zD<VEZ`8IA@AL>?1-W;QR4|a;#iHIA$3qCAvZ_{@HqDqi3)dOp}D}wi^Ej zY=b$(SLlwGy2}_89R&&mNFCfgeaQXQ57;by54?`4y`R>-pvte~I~1Uec)=BQwfmpP zJK(jn8kh|c8<!yh(%}|jwFhJs`}chAm>%<K=$&D&%U#-7?ra`GxkV-0@YdEJ!_X<* z+PYf&PTF4F@)y<+VZPaVU?xUl0de>zYjJfu5D3BH?+2nuU!D;tgtiAui$HIE#Quba zYGcVN2Lcg*z`_Db&Wk52D|SlC*>@K+V5yk-&X2U8FvG(h>0LN%rnPd-ohb@)kj{&U z?D(-<Wa21o^=)3grxjT+wB#H@`1nIZO{ukTh4J&@FvvE_GTHBc!g8}Sq|N4FMj;U} zBW1?SCo#Wh*&o~M?Auqo)ZZ?y$x2JJRDHYEaXV@AayzM;y<J&rkOuSv-BM+L1b+D8 zJ^<egsK6IN0DvlZWBvsjkc1%qt12k#zp6mpz%2fcRUkbIpw&OU{v-B(_xhi!{xjk~ zz5b=lKfV6vs{dKf|DUGdO(a3#D``&b<t`J8j`7@S*C0GJ0(FKuy;l<8SSI~J0`_&? znds(CPeil#u;>S{^j%I~YpfMzS8ExOwWSPi=3dUfiXV#PQxrntc}th9+lH%;Vj}}W zZ^P%Rpx*(THluZSn05C}YT?#SQB`X}BDoO1^!n-eO*;V{<L^%LPI#$^)R)`YLU`gi z=TRM~w#JejL8(@p7gdsM%m3Y<a@AW`;WYoIC-Y+N;?<W&uaMZHMYcq4VEY-S4e83l ze-x=WU7&(hB@C}|_xb)Q{?M+2v7ojSA>u$4CMt>FK4HD$pm{rm|K1|fY(W(Q7?*1A zN?8bhI$x_{o;6Uuq1L-Neg!ZkhFJTZ2_mAfzp9gZYy4?8J$Hb~v;*6V23dW|0f8FR zsquGRTG+D`e=jOnfOV!B{a^?OC2F-<Kp^fOkFqRmF{GMP_HSk3%;l3Er&OHq=payk z<dBBYjU^Pd8xOLZ;rM-mGa=ARrQ&>o<{xcsF^2kDe{tv((xaAfV-AUD|21CP>zB}| z2DW8FjnDn*wVObb`J}&!C*w1|RxXB4guo?t0M%FzD+EtWAi(7NCKK6WDA@A-kt%q% zs4cT`|1NK|fHalQm@2%ygbNiddV@~BG;o0QD6ppCfVpSqAyVdXmwh`3ot7i}J7(Ss z3RrIx2YzlK^TFIxhGyv}9LU?OT_a}jxkIdw-Q%TbFTim&w=e>hCUH3(PD9QH0+d-g zXuY<{7vWTkEcAu{w+5?*yfBG8$h#b3n(Mn#Q_3Y|sUd72Q8pa}sP&h?l{+Fs>@xpn zc`XoV`>51}fuRgp2n+`t#G#{4ysK!uzuun4pgp?fV0%JPlqB|DU8Yc^(r?RfDK7?p zw_GQ?8hb!w%8jW!OA4IbsUA;P<0@fg3oBC4>`Ytdk)Gvh&3BYhW^Fi}JY-g!$W=Ja zVt|HuxVH0m)JRD+ga$IlFOjZtbB6OHWqA`Rr+#?kpv*`bjbA_Ru6=+3t$z_gg=qb~ zE172a)y_Q9Jxej+YS8-IzM5(T+c6A&kc^TdA_V_OhIQG6TS~n`jR$^@De&NLWMFTO zAF`e`U+F@<@vxXP8vG+1ZXof2#vqs;IhykZoa^kG?j@Yl`E%+I@Sg6}?#skj%ob-^ ziqk?MZz_h^{PCW}(^<uj=o}5bm&PM*RHg?!MT{W+J<P`&PR9Moaz4F$9LZy6ohDxg ztLPX_TiPd92+%Ty5Sxnpt1SI9m7#9b>5LGnuit@7t}k#gT5|?0TDwiR`GWcUb))XS z)zU+`<Q9#I!&;6IH}k#+rAB1Itm1vpHHAVGq>tnQ{ocTQ1RKU?f13>cEHfDoSdU^g z6Bb}9d;0qwWyX)c^DNrB=v{{5&=sLZ4aQ-g8sx)3pg?_!cor5REdCO>#g2kBuFHRl z8icPVcm_W$2}-G%+X3>YKUm5~|5r^X$?Z6$A7CsBK+&E)1*id7)ffQ?P;$4NWx%d= zL`uApNDrgQz8VHFd?px91c8<fhXV2!&;+<?4dfUpK>VSYgBIhyTCLJp-f%F0k^gbD zim;7b)d+qRfbsdK<eg*5H4_IlAc7z6rq$|H0gAxy9dMVRuS1zw;&^VLbN6Qg=b-RI zBLvJ}(bfb3L|!XsbCX}o`6T4A;~#SwC7?+E>5@2etHAw2#PLj(_q}LE8O%uWk5qpo zL3b=%D(WN;?YL`2g7{*pJIimM0quUHFkDY+kd=?^1VY=ftvPl44tM@L#3Oapo^idB z;&jvW^RzhOZ`K5nby|I_+Pn3QacefxPatanxDS~@R|4ObvbIFqv%F;8D6B)HAwihJ zYjQKvBXUsmY<{=c!<h~S!0X1Kr2h>naPn)jSdtamKLx1hM>;$yyqYCO&{TCRWd&;d zP#=IJ{k?r6xGC$RB|XFA3q_tTKa|6&IM^(g#9^_4@hYJvJCAWW;dO1(NnrtI1|>DE zg^g1_jc%qUn^ZfUb0)iDHaEUh5YcFG(u?~<6Z|qz#bzi$qs>#j2DWL!7K%+xXys%R z^Dt%DfnY4`+Uqd6OiFfkaTP3)ApD86z@&bh>}8hfmZq)eWr_buY8H*JFv-TSAQ=#g zEj9$4u<sKg?sa50qa7Ji9ji}E_(Dm@2>AW6dlRE&TzVoZKbFn$pG~b-w(<K)7x@c3 zs6!QQk{nzV(2993MIL)vu8zjqZrI8+Sy}E{lCjp*C!*VK5@J2OqMy=cmQYpB0T*H< zAcN8^%|$4~<WQn3`a|3USDvxv0}k`Lti|KKK~_e!{jD^k$!q8ST-CTQQ!3@-+cK|~ zo4(lamxM$PvRD=!`5l-Ct1r;6>ROELX0RF+H8n#_q>4sp>wZbqQq|WQI}FYOdUSSd zB?sFw=oq(F<`Vnp)u!+tYDJ(%_6*La+v>9Pwa?UUQGg#pwp5HM0ovHB4o4@;HQbmc z=wuljTmM#ScimhM<4pGN6A`~;!l8s5$z+r@6kXb%`IhX>wvRrMy;Sj?!r)h0b_{93 z6?Uw-;4(~qpj$=9DWQP+B`^{@3ZL@hxo6l#euONXoCV#;oNHQh|IZyH{uz(`pzdPf z0Vm-X6zJ!odLfU8()MLpOz`}Jq_LJ=3kAE{)a_#XTGC8D!W4rrm@uOPd+^oRX!<!N z2ObrnKhp^7ynw391APT%xDU8AcVixoQNvaDI?f-wPShu=@5U*Y6skKv=+NJiX8g3U z6IpcIk2PZ{$ZTzQ*3GbR^hZ<*c*;iMo`}K>dFVy4b81|5^ITmiKT(dP#0NBYP^lHS zAE@@_B=3RnqPkXBeLagLe{nJLpnhCLC&>^Qk)h)0?0ZlpsX?w69vSfBXgVK4=bYVH z#g&EgCv~k*HPA^IIU|xkFmA-}&&=mI(JT_A*Kk*`=T<;n6w1s$5<X?)PNb|MIzqgM zJ&kWZ&Zet8a7?16np_nsU}WN<9L*lorSDS>cp@oA3ChAYb5oKe^oBF5tI6J3>F_My ztv&%(aKT94ZYgjy1RW(X#JENE`@<*mh52F`5x@%l9~%;>f%Q>_+ERk;OYcD<<wrTF zA}|;y9rJIQ*7<Xd3yzmrF)WAhG8<r3k_>g7$>|fkFBD&x$$uL=agbe8s0k>{xSGV! zrCU6!6*e#AdOr7Ff>wjVvL7%x%`VrC+i1TMz;NoRYA%F5;nv;Mp1TsrNJgWyFO}?M zotSEmqcbzlZJ=O475sPsHe~MeDtjo3BJy<*Q=nzqf5;pw5+IpeM7U{Y4mNYA^P*QY zs;meth&Hj$)>uHGCz02q*iDidZF^liiVj_?)P*5Ww6qrtG%{k`kH%8k+0Rr*uG^qF zolcwD7p|*r!>NfWByu3@Q*12k`s+ejvF#$@N=AgfeH&gdsOs;>1}?`~lEH^3aLI1G zT%MpmAO3X{vtP9EO=Q+WjlSOLZ<_|*I~<h?-BB`gi&T3jI8r}4)^*t?PQPaA;6=M# z$6U&3hpg^}4~|cD_~2<u*6>(9o05G$jc5vfsJhexePUNcJOp^BZ|FV>Z^Tt5nZw?E zENO)%=ocof&6(i!D{yv5<VLuRQXtLiCqLO3@`y$@zkEcwJ->G4NW8DB2S1SxUdp{Z zmTo)TO-}QTk6Qy6uG`#hvRMUfa6V@MQbQmN<WeSu&N{n-#mHIv6b^D{Xg2kVq86n; zWgyuQ3Tv;=I*T0v3;V5Vs`M&*(6}48u{9fqvcJlTc@YX{&ac!_v^_A+(VHGTll&Yf z6HH1Jc)F`a>|kytR#C!05)2xtn%-1z_LR&6q?t6jwdO2wJ$+$7jc-)ry}h+Pdsvdj zryV5l+ig~oe54+^PiOklk|Ls2o@Ql7L#kJ^C!#nyVwV2700qqgAD``>l=y_JgW40Y zuH9dDC5|e!m`S+Ib~n*4eIj%87Yj4Er+8=kGJDevfBK}=UrkyUciWa?r_(7Ln!O7{ z(ZFX;MsWt*2Tr+I>6kFat@2#;$F;+?6e*|6v=f3*Ga|C*7pp?#aGnGHFH6bD?M6)T z#&$F;s}qMI;8s%ci~}YMZNVV^DiiciQF0})rPqp_;aY9Xp^fTwq}S>RM;e!O$7|?} zMcBELllL{;X3a9VC(F&mz4Vqt^4+6pEHwcGdzc~DU{X6)^}HRU_gG3eP-C3NoQ{!B zwX8{Bf`K6~B4$rVPY^8aMS!lHs}mX+jd^QDFMnPww!V~&bkx~km(l{)F4H~FM5D)4 z5O!(mfyVbo&jw-@=G6%^`iK_G+3$M$jHj=I@H;N`VKaMI^((^*kc@>rr1}y8{e&xw zhYKXhGNu}=H0m}t(Fi%B?VZb6w(+M<DswP?q^8E1<N+Gx+=F)B21;>E#wh)nO_(l5 z`hbDduXN&`nVhUm(Y@HP@oH0k;ZH%v#_OJB>1!@Y0MuUf3sf$r74^*al5I(QO0x$q zqVET1dGBdqU&#S}(SEXkzYkXO<6Uh*p#D-mowX!qaI?8W?=`JF?fXKc>=wHgc$U6? z*?Bq5T(3W`lAGh!4cDH1)7sr~FCvooyAPwG4V1J~t&UwRUxYXib_rHc50$Peqeu?3 z;fn7TX)!;Zbw<Zp!Z>Vs&Y|R*<1#3j&wPD}-s4)st>fm99;p<#9?onwQa{L-gH8#| z8w)zL66Uh1cQrT}wLgx3S~vV$X<4+LESPqJP4Y4oraVa=Afs)X**#Ug#4^WIHtA7f zh2!a*`KDXF6mzO3W~bk$t~x3k7izCqxFrvM3^OsUr>EdS(wXz?6@QWuo0VyPI^dh_ zFq|L)s|xm&1YSp2<-X@c4aw@KDAcZL*-TCwQn`wG^&3#}Jo9y6Zaa{46%;m<E`5sW zE{JfnR3@nfyAPIvN2QIe6{va~oGhKJ8SR>?S?(UBda1LBMz(FQz7Kpc147R3-eNIS z-#ImV0K8u=P~;;IMzMHHcXTj9h;CUc*6osV+H+iLmUOi~$@S7sE6$ct4bT56n=KjU zkc8)mA0g}YhU>3Wh(UGSZqApMJIykjX}WlA7mY)bHLb1R^i)>NGW<)xf_}1Hk<K=$ zodjDdugGTZv)=wCt4w*;cz9*)meKA|%zMteP36|eYWOa>Ys_*I264g82`1!*k8x&+ z98*;(aAxnD=pa;tMT3i&(T*z#Z76hmk)`!0(1Y3-)yAJ_PZ|&Wb+STgPQ(k=tVt81 z%_|fPG8F)`i|6$Sfiv?m7?wUo|H+C$1*bGg62PeQn$ludaniAIYLoGrZRxY*QrAZ9 z&cDMjHxxqt;_oTEu)s;W7*dJ@sjW6x<#g%A6<&Kb-595u+@V(hKeL2~44>VRq9yQU zoG?JI>nq*I&1N0i+LbbLzx*~d-qY34r{r>!zhV%+Bio4iKV7<xAs((b-s29;Ul{%> zbmq)+3GPBb4bSRAY#O8)?zv=u5zv>p;fzjy`Vv77XKc*<D_wB~ZMs#jNsHy=_?@^` zo!Q%O`bL%jm2Y{7dfz=eMlUg4N8js1&-~bANfdyGddGI#k|3@d!nX3F^lILjfYdOA ztF^AsQD4(fsi~~O6Ww%9e-RNV%(uIdAga7NiwrG$P>?8Ch8ZGg=tTHMR&6qV+18FV zJFX26+`;ad_9E@DlD3p0vb-M5#JN$8rAC6BxVeHzB6Gfs|ML-J_;7flg(Mil5xGr2 z%LL9aGa5;6+sO|(<FSLyV$tlZ`_O^P;-y&YR$Pa83nbXryv(8nCh}2d@FB{)uY-~5 z<Gy|DmKz&PzrUI>Hb9_$b6vZ%Pc%jHr)Dff(zBy6%*BZ>38X#{$OflKLoMwuG61gs zch+(z{X#YzVYG~tt0#=T594R2=C<imrPZ_?Ia!@HXqH&zxkm?bdTpo5;}M_~DRL^9 zmmq396%vL6%mgoBz{0JZjfLd%z?rL8ohK&0f#oQHDL6-DhaPLv;N!fbny18h<oc+6 z(SwjiGKTG-A-*y_3LfDr3|bG9m4q{#3e9tjCeISH$)aT1Cj*S&K%vnRqd`Q~=zg7Y z%w?*HtH=V_Kdj9vticb^jn7k5K$wKa(lP&Fm*iQZ$fU*ENamM66&A%hF<wR2Bc%EE z$ci({3_9+p-n@*&JOquArI>$3n_W)iNgtTy;O$6j@UfI_J{FWqfl(PpDG$GHvErI8 zvE>jCQ}Q@m)rhzOWo9Cyp>Lj66wOd`GobbC3m-15>AbzFKPX!^Ef5qFlf`>A0gtFb zSL@j`BYP~5@f0GW0*hejbGtl!gw6>ZmC@76kSvV?*6GxNd^q59D-r%Ss>LS4mspPd z8hOZpU}VFkb$M6<LuZ`-{66pMwf)K8rAh39;nl_R-B*Kg=C5$7?{wey1_)hYQrWk% zc$pRzSV6^j!e3smd|R;*A3U8otb<E_D2>X9XsK!b8&vAtErvs-Z93eBH0IwtYR+M_ zN5N73oX3?6uN~rZEzduKM3hs(9Z>?B?m~ZQ(5$9ZvMET%(RdcS<CQtMcbMBF_rqeQ zl}n|+w3!K@j%o(5O$mE7(Pm0!u~wb)%4}{!#B#Qy2T{K}qYh(ZX^3y^>2f^q28iXC zKcLc9)a;RGFvhT;XW+W!vb(s~mbH1CX`R*N)2pH9Qf}OH5-JAVBfZ2Ao-Qq|)Y%vS zZ|rX<T><%#ush%zcDz>68z!xzeka-CUb61l8zKg`#z7$TX}guVE0i?XRMk>{A67Xe zNHFM?=LFSvlwtY=%xo9wR@H+zY%kKO@(A>r<Kel}Sg_f*OjR2^1g36+ZbK|48$eCj z-+#{pvbF56PZ1pF4rtc6<vCTe*_>Pqf?43?<#_^<6=-*^ARn%+^E&w6G%Hj{`?6Xd zv3r~0l2tJ1udiu)GRn6Fp!zZ(e*I?J;rT42jZKCQhvS-c&__EXL8E44P|uAqTxYLm zQ13zg1kMWeXtT8BS02K481l0J(<265!eoM-CR}GzYe(%50?_=vA<Asw1=5t}$@S(1 z-|9ek=~?*r;Jg~`T(Zd@gRj5D4c8bFDCWzYF0oPSt0drf(M*+I%{J5-O*}6Q0k~!o zpO0Dthy*vs4@v>I%*pyItRoO0vC6{;0?x^xr!i+9>~#mx*TzB$jIc2EHa%7XI)tf_ zv4OY2nZ>4-y*CD`rU#Nu{jK7rxje7+q)W?@Ou?WpRYb%X*DZgb=M6@&&rB@PZ3ZDK zrGc9saB#Tv4CJoj3R|rmrl_@*Vi$<@OU?T%w02UOS)W|joZFCw-o~TM+wag{E|zJd z4(P3`+>cKL<FgW@sPb)d3*-SQOK+E1%f>*EBF5FgX)AoY`|RHajTjiv;^rI40sF50 zU~NhVqmgA@mW9-vFr+JmL8)<X_F1e;<SG66+mKEqyYt&)o15gai&fJCy@TED4FF_S zk~>SAG-?JR=JB-yF(AfGlr0r=N`2K&B*9+-8+4XuqUspur+Hr)u7knMNyt;+DDiwU zV__mnWbo&Vi<d_=DYBlf+%r!FNTc-CU(U0yM$;ZwLIugB>bI^WygY1L1M8}k%0lxo zJ2J?k0l3NmPs_H+gufv~`$ZTQ&$7U9+Nn&>f)reFw=;{Ky?LT!95V!*oKb^#jVKgo zd$Xb%mWMG*{h6ZnPL^zp@G+VJ)HfAYu<%YbO%QZ%{BUu1;2pV4@z}?1MP9=0*0--0 zdFfPxuLTs~4vOTL0;D4342txpg8t_k_M@~OUir<dPYh>#Xc%bYIMwnrSF;s!BCLyQ zCS$L6KO$!U;Oz{S@aMb&tqdRL5_^-V-=W(@y>m?3yf@(Li$9G552r2u8XB*zmtUc9 z#q5dKgLSJPCXDq1v|b^^Tm5RkIKp0w)3U2e<)hhFFBMbA)pX%}GhKyK``f10L0j9# z=yV)QM7N$@8;68qp*&Ope+Ar~_I$_4=&2%<Tiv@#=mf9+z?8+|70)M!7YRF=nY9k~ zxvy7VtMN23QhPFX`V2Rn;c)dPmXG(jX_C};QWFq-h`bQn7u#w`LJs110Fo5uHGr?O z_cXeUQqg>R0N`v#0FpY=-*@8P9KHOk0(b_UDp0xF<;nFY*`K@RE(4VvJ9N!sq>OsK z#ifM{NF<<Gv=#q2<?A;@SpkS%NvrSV%Qpz|Z?6y3CPMy>46&$0o&9zxN>g@zL+0jG z!9jOtrU|dk`)YHBpXHi&A@OVCAh^JM#P7T1s)LR^oW6~XS_72BLL+(+>@wr!1rWZR z9QabsNn5;(9nE)pkDzvNeqd1I4PAbTV}NejG&&gze=MVc-%zmwUcM$vv#hb^`F8J- z1TQQ9NJaZ``Tzi?&k6t0;l8<RutI=^`oOi=G}GT_0eEI}($e(0@96nmZP|8<ywe$` zhnlv*LJ{$`uKoxGI*f%Dj@=<}^}$qJS_A#WIiUV37a2ArAuxHorelAUQI8;$Ljv&n zl`MV9>$~ZT@nl6J5OYN(<`K@afFsQ@i99*_=m(#z(!j+U+PDmz)b#0><5S*}Eq-nw zg?&U8NgS>gj~I{U><oB%l;h+^jh^3Ta;4fIX~LQ1!$%AK!oI6PU+{an@G9x=5kMd` z2*pc0)JrSKA91b7Bb4F5Ad1A<C-=1=UY{+r=Ivn-{>$LTy#s>U=n}3ZR??J?8i&?^ zc-OGz##ZWQh)<JSJ0J8RvpnF?1XEvMIS?&-JhmJpUx5htm*m`j%Ttk)o|Iw*q@UfQ zCZ`s-`8%11C`s@;)*MMV=Ey7@@;T>i2uUw5&j*=|vyT12g~iP&*U`2!ok0Xu#z}f& zlN5;DLcTispe&h1MinnT;Wv`SYNLaWmNw%*=UqxRKk2dtn<~9hlF9M>JfHwriQ62H zqCX;WVw)e?f0RM#W7SOrd32#?0DgXP#Uw&;HsF=J7RyM=azj1AeI&fa<Gj($mnxb( z{X_=f_5d;hFc0bzM9v8C*UfawOu?RYWB{OKaOPAg5L`}Oe<SnqiJ`Wpx25k?Tsn6_ z8J64m>&+z#V_|c$NGkxl0tZp<5oZ(J(YdrQ30%A^&Jra6qC>xY_nQU~-lqPxjK)jw zbDpHT4)OI`Y5?^HDMTv)n;Y98x)A1R1;GCniNCehm~<%aRc2NZh0j?Wr9Ij;v{n;N z@#xhod8cTzs2!!W_`(&p1EE_~<eYt)oQu-0nh~a?-7#GCB+aDpU6WsJYiYM-_6BHB z&qdds3GGN8lbcm*pM`enmVca!Bd;*3WXP;qYTZlf177(xv;#CtAT?HpNTSDJm1T5M z55Ubxya8yrD(~5z4&n6o${d;A7O$7(-9o3uhHA#;hJ&pbms2Nz2okPyFjI;NmT42} zw5bNbjHrPW^p9VTB*ePXbtfllbPXHN(!BW8$Dy745$VTJQ3+q9R+ce*;%|S-ybb;p zd69!YDbZRP4dC&k!TsnbcqF$s&HX7kb`Yn3iM5Wl^imue6gqa*FCC})o^o>wpQ*7; z*G#uJj^j3Xr`)vECywmTvZf9&=6LU?RA(-}ROua5U{iucV#cPsho;KDo?)vM7iW|R zdz+h6bUKe6_h9%eeB)J!E>60@S~xQ^a-Rq`)8Glt8YQ2Q6p132w%u01De0cxU*=oF zn=#U<&=G+0_b=^the`j;WESZzpK>$y%GUrmCpeI9z61FeO-m9B1;f{kfeYKTKh-@l z{+^y6?+)1)n;d|*UB%tbu(5*iC}Sb#y85ogXRvP}Aqe)Ci%_^f%s;rd<f!qPH~{-% zF+3pM3+}`@-9<Lm+G9P=DcW<evklJZuPp+obuT%A);fSqr10{Z-ZUFGlpc>%MNA_* z|Bg_T2ck|KJg6w1UleW~=Cy_$TbE-*BIz1SwE8z0ub8?eT$YCtLcidOMUYu8ZKyTm z0Pq7i@ISDB%cSU2`XNRGbSL#9-c0ightLp}8&CG-rs=oWbUpejk*!^)g;iY1Bo=Q~ zY2a;FyvR&${!QB!Q@ARIrbht|iUw@v$A?cIvxYqiETN6P7TL0qo&r7Z!P7>&GO(bE zKDkRILj;sD9<yD2+8C3!^xJ$$mFd)25D3cjZ!Q1|tH4T*Py81OQy9{K=#Y3v)000> zXDcOvs9K{Nfs~Aey<w@&k8=&`3Bn`EvpSyv9hg)w4yTS`D!pX6q_eu^qW34!Wdj~x zLkFclSZ^m+JW?SZPN&+hGu^8lE+-@NS}YogE;=RO+zbC!0A_1(+XDDkWsSEnEd^OS zX}^dZF*OcK=~nMfT?}pIzOK<KbDW1e)i%H6I)8s-&D%9|5K%6;^R4lx2cW6j4ST?I zs`Uei#cb5lQRbtGuQsy`7lf%pWE^bhrcQge7ZECwT|X^Syk91qsccnU0s>m#d7tJw zVfl<ckp?V&NrXCU@-%t^UbZ5l8(k49=0Iu4+UDu_M)POw3&mR+&E~dQk+#`M2z$HX z%dN?sV$+hZtn>KNHoW_GEAfk;scq*@g6u(cS!hk;Lwwr$3=H<8Lvz?GyiFcgb_Q|@ zJM=H7_o%L=wM~$dZL_F+nM>&WOon<lJy1`?nr5vz$``#xOYcmQlOu)eGtOSyEn@$? z3z2<GCk9yYZ9Z=Cndj{T2rxh(m7Uvs{kD>h_;~4Fy#_#ZxW_H=Z}HV)zz%wqwjU_@ zY(JRH0xP-VaFV<BTG$!Sc!{e!1w{V#RG)7l@%J9+IgAnGfbB6Eb#?D*Ff7%H>Upi` zhXuUNBEAXdn`)FACnw8>vL?w9lHz{TYV!O0g%GbQ``@0Hz#fz1rCGN!Zr2O|7*>l- zFU82M7*GB5f3VR`0A`haI+x7h(nDB7i6DPr(I#hZxg`#8r4A-j)O$>UBJ4I;SwBRR z(V=A^pnMzB`fBevru_~^XBprvD&AbuL=YWqhZac1m}Y=;6_HW1fPb^3006nb74c)~ z47KTS2tbYj5+~PK7QI{UOSB2+8%IkmfV^v?`xI>X41acP&AD+OFR&rrkKRi>W{r%x zO-m@rpZV$oAhuU0lZKj<Bw<dq2=|IqYu_|0PyYj?N<{Wz0`qvOpZ0|}(7T3%ccN}z z10=4IzeTmNXxkK$1ZbR^o#<{+&2Sm8;|K-f=O?D&x#FA`oGPPQMC4sI`PFB_=aAnw z?nXs&&_D#gSaQlw&}=@~m#9^)QQ~n5z|r#8UT**-dvF$qCpHL_DJL~w+uD2(cNj<u z@P`1Oc^KR;;sa3PdK8`J=|FY{Yr^}#Tr85%iA**RTkO$IYhE%9!r$D8<|RgzvjqxK zfa(Kcx_3!syx6x<0NDuegK;FBY1f0vr#KbHq3{24omA29;rS3-v+Y1>8=~BQ$Dt~s zI+$ZAl-4#yT8sWquZ!+pY@j=m(3b%V;8Ggb7x_z+dSf1v0htpkc<Uek`6m%wGn2>g zSJ_J0Pa?Y7$h2-eo7o>c!$+V%pdSE>vGZNY#>q>1;v<mX0MIIA6Lt-;I<1!`#3`Tt z3TK(NRqXNE6Dz;4mie2$bK_k^4L=Yo2z#~4gEtB^N$o}=eUkFpdTu1u;D-Qt6Pdu@ z$RUvcge)+TxtRTnBi<CRD1hn(q$2^)%*lX%4$5#J<lp~^RshpC9agvYcI?H3kMeh- zdR11mP1>&$^j8eP<n$=wnH=&qCKHp^>a9{A5`p<mCRT#cDppJqo4?z0lK&kNNC}GO zVAOa#4-Ytk1PIqmHp@Zk0!!DO>9~LcgZ8txQ(pZIK(nWD?Bc?0{;pW01|2-Dj>}-C zu-oNx3#^igyh>mT8BlkN+ZWkMe<E$_J<N~2sy#-&xq3O?PoTp9NlgGfTNEB+{ued` zvNgO}_i=z3{l6q1{VT)hzvm_WtLlGDlKQ{PpZb?F{|Nj`!vED9SfGDZ{VRX!Uzt$< oJ+<mzRsYJL`bX?<mpA-V(oe?khX;XN77z$5A|qTbsO$T`0MW-QEdT%j diff --git a/_site/assets/img/plugins/kernel2.png b/_site/assets/img/plugins/kernel2.png deleted file mode 100755 index 482ec3950ad345b08f391cadc36efcbe1b254d5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11670 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 diff --git a/_site/assets/img/plugins/logos-plugins-non-officiels.zip b/_site/assets/img/plugins/logos-plugins-non-officiels.zip deleted file mode 100755 index e94909e545982704e3e9b2b65b252e6290fb33ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392916 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%0A;mw)08&7$zd`SDe^$Ca_us!WdQu|u#L=wU_<=vK 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 C+IBqv diff --git a/_site/assets/img/plugins/metrics.png b/_site/assets/img/plugins/metrics.png deleted file mode 100755 index a7d7512295911f5ca832655b762b44323847ae67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16711 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 diff --git a/_site/assets/img/plugins/metrics2.png b/_site/assets/img/plugins/metrics2.png deleted file mode 100755 index 75b5a3a330b743f5a70761e85e8a843cf2252cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15173 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 diff --git a/_site/assets/img/plugins/mthread.png b/_site/assets/img/plugins/mthread.png deleted file mode 100755 index 7b74f02a631a6e6b8d3ed26fa387329c06ea963f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16932 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 F{y(<h#UlU! diff --git a/_site/assets/img/plugins/mthread2.png b/_site/assets/img/plugins/mthread2.png deleted file mode 100755 index 2add1c1ac8528fda68afe2e02c8705fb8b8c6b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16702 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�>HH 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 M;tFErB8I{L2Qp=q4*&oF diff --git a/_site/assets/img/plugins/pathcrawler.png b/_site/assets/img/plugins/pathcrawler.png deleted file mode 100755 index 890f1e8d9c2518819d87f28dc2b0e02ea3a02700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19082 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 diff --git a/_site/assets/img/plugins/pathcrawler2.png b/_site/assets/img/plugins/pathcrawler2.png deleted file mode 100755 index f9fbc308619e14c4daf7fa852282529e5f81353c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21732 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 OrkawLVu`%foBsi_iaKfl diff --git a/_site/assets/img/plugins/rte.png b/_site/assets/img/plugins/rte.png deleted file mode 100755 index 16ccb1343f21114fee176a9ab2cea098c91848e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10753 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 AHUIzs diff --git a/_site/assets/img/plugins/rte2.png b/_site/assets/img/plugins/rte2.png deleted file mode 100755 index 027f4916af5ff61b73ae9f317e368613abc56781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10124 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 D>YJ?+ diff --git a/_site/assets/img/plugins/slicing.png b/_site/assets/img/plugins/slicing.png deleted file mode 100755 index 4e75ef58b57b405074a749bafc0e62e1c1338bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16516 zcmcJ#Wl$Vl^fx#JP4M6r+#z^y*9jINxVyW%TW}3d2o_v2xVyW%y9E!vO`hGYf7M&> zhuy9HKo8Y3x9{yM=ltY^f02_!euw`K1Og$0rNk6LAm~mI2#OWq4REJ5=y?zXLM`?9 zs^+Aq?@D6lU~6J-WlZAaZf8tl>}GBP0=X@grCK@=a-#&jTw;2{w1VRMHlQQt369Ti zMV*I|jmCmZ4fE|)U7f>W--Hi~$yUBRK7{z5D|sB{d_Lm&N-pR;9Y<~J;q}xUO*^}H zeYe1!e7nH3CpvIe=W`{k^Ig1VjzxBKXiU)T+S|vQpLo%yW#Fl0{2?L+He!wYa<@6q zi|Goc{qE|SP{OAr_1>KK%vXJNZ#BaAMT=m7tJ8xr)QU3cZ}aY4<~xN%1**PL%a3VK zG9IfBmW=n7&z;{ry`+D5SzT&AZ~Eve_!Ml_jQ7=EX=bhNB|HlF$|nm*Ci<v+^o^#` z@R~cFdtC9nZ@F1qDaDui-pYAh)w4&0^Knu=OHj#&;3eqx<c{d^hHI<9BDAa=4To4_ z(CD!sO)l+#$}^hRzg6q^PA|)zZ26NG6Jtzs_Rp^`vYd57-Y7Ez#!3yH2an{*SIe${ zpX$~3Myc(M<rpNQ+MYwssGsN7m=ITvnB@l&Xe&z5Rb9N$LsUm~8@>hPJ&YFd-N|k^ zhpqWGR|dZuOxPWTGu5h~oJG`OvPvo(rTn};iLd(<zv#{+^sT-Q4JoXg)`Bjcy(igG zI-JktkS(0=dm0Xw)O!lzpTjldZy9foZ+C4qJjzGnbqjNF-jRw+=d!b-^%N@?Pudb8 zjF5;Ihy7wdU^TLsDE?V2n^|Z=U-rp-QRB!OvLIcd-Pmc|5+fk_0Tw@j*$FbyhwJDt zrA}=rTb`Yv=ANYdok83Bnqzjk-E@vo({;%^hF@M_M+j<T-@Gu}zJL<?vx=-tnR=c6 zWk8LlO^d^I?b2EOrR2=2@{>l*S<=HpalY%!g%V9$`BN!=q2_}c8FyybT;#W%v|nzQ z??C&<91;98X)O*qzquUV=1Wn1KHtpP#>x$tQA|$vnLah$d9JqcKYpHS+*wop=yvc- zoP?;;D4+CDW7Af&n2NfRTqv{}yp0*c09m6`ey`C`bQ`H1pUB|oN-t}e<yxM6*n($6 zudTXvTb`<F!@9*)vhrE13-YbHXvAe>jK`%d!ELHIO&WY$fYVA-!+1eP@+HVChGMpG zo2!qC>~GX#!nVQ`MsmcepkRn#;}@qrui061E8iH%uvA9|^gQA3YSn)5>8}U;i7cw| zZtIc1MV^>00cD`yWdo~zhT4{fI^y3|&p?OetS4Gkc1MuZ%QV`GrWo>?Kn0h!oI5rH z<B9nvR_t_B%ht{$@--+Q+I3P!_uv9f;*p=-l^Re;iyb$9VTw)NZ_@Br1K|kFf1rIe zbNMJIYH5sdzHL(kKl#Bq18TLuog0UF_)yw90fo%rD=6=ZVExRnGxu^itK2VKX6kxT zaUq9Oz}hy&dwnDi-EC6C)B3D*A!vWw;Yt&873$-DjpE(rBIkEq_Rh&v6TzclBzy$U za(nba>ZiVt4ACXB!RM#Sl@@Kk*=mKaRQX!@Xy9MUrsDWfw(alhPGoWPtWPWmG^HDA zgH#_k(r)(+<OhvSXW7%EN}5XGl0@g&(Hz&|Z`9$n$?{rGW_J~qOl<HEM{0MuAkJ1n zIWA?LaQ3P^PO!y;oX*J!XHY_va!oT~v`M2VL09<B4n@&%OE`&5zv}pC)Cv<6Z1qdm zzLBLvQWRo15YG#}QT&J$e*`faN`}Eou#dzjTOoE$^{zAyt~5-H`q!T6#J~!vmG%48 zsL|Zk6x6;WA3#Sl`W;Xv%u0%T*zSrp4Zd@6Xw`l|pE7f*&;1#jBP+W>{r3-9c9QJZ z8w9Pfo@bIABW26bI)k4mFiC$TjgUkvwoT<?hItrvgFGLE3I|S9?7vz4;_4yxG<Nv3 zOdlSr`B~0_9rSKheikqGPi<bovIf{D`_Z(FK@EQ~wI6mp$ZbGrk?}pItSNMajzy*0 z7DvTxVh_u?g>+AP5@RI>jsG#vW*m&<JjP)$b*82&vC0onY4+d;k!I~EbEvmLv@jQz zv7AkQMiTJ&SDR+7;%=(g#Ep*1wOf-vCOU<s=-00vBY#zjR9r4#jT|xQoU#8>Jvm01 z72(y!Tza1k`{APNdvFYA1-Z4%UORlScnfd8Y|C34Bisd6=>@c_9=B`{@}06G-rOtM znUE{~T;Z?B$u}-pS1xHSaTJRtPGP=fQrJU{rFsPi(X<|OtH$U%X2MNEc-&oVW~d^d zn9<gCL)P*T(Pm7&7z;Bh3?dw>3poDhBEt_~+_n5gR+8YhH=(r8TrT`1`>k%9CPO?x zd&%{EhiL`+mwxzu63>YRxlxSP8b%n*iEG&REy=v!Ct>Zn3JQ0v{qoNy$IBJxcyL&` z*1dIjT5i?NpQTE8tK+=t^N0qWHNiwdm*{O@KvUj4CB}+KxYkoE@Slr~cBw-7x=|V| zQIQ<Gro=l{AvJ1|7n9?>OtDRR%)cU2aYTaJ%<!f22rJt;Fq3epV0rwx^jw5ELa6!+ zHY{kG+E41kyunLB?>x!WYE$Oyy=9Irs<<)I>$);JesQUoF)ZUKs<dBRC5MKS(8N#s zPqdRLh*nA;;}b`K23C-xXuir|b@5ldmslGjSk;>s9uj4gvNZHWk_}v(aK#aJ55n%x z$+Xv*Y#{AUT_=p!Zif~RJcRWRCBf=YzNwVUphq7e;kf!!J($$AtIE4FqDJ-!JTHUG z*e4^B2v%R-Gq8y*p8sQSz7wFRfAxWDY7jN}DY-+1CS>Y@S4eCwsjn)?s@+S=7pW7w zL)y4=EwA2caHS^&PP<6b&}d9xT8aVji)8KQ!}$PAW=6R<?8+E(EdCpfJ8a>(uy5Vo z#48*;17>)ovq*ic;bD7;%>;3`Q9T@l>mv60NWt@L0pFN}jBDX#i5aJ(J~EC7+cfE0 znt5z<($B_DuJfSyI%(%eY>Z&MbEC4B?5@e$2#Da$*Wko@BX&;`uFr_}wg7@Z$6Sa! zIlPuDYK*HA<SvfMK4ZZc$3%#Il}4-N3@=Md?H}+5y>x05;$*(=5_K6lSGm*~-&my( z;&|Cdz$x!mz*DF$VU=2K2z!IT8WkHr__#8~+t5gmXEU}z=R#XC!uwJ#MiArrKJ-fB z1EJu;sc>FMI>O7vI2!A|!!X<s4@B#|^-U|Q&X&zR=f=gc!8QwBke-5_l|ZEt!_z1f zCp1&GrrC?^R<8lG9UBt<f(y2vNDTa9pQF;FjA&%Ldk8m(VK>b$aGaftew7`C)v)g< zQv9cLkXM}5VW<a)76B`rlLnzK;$1tz$~$TH3xba~fo062%yn++)aKb=JbDL2ob=!l z>3$pz@`=b;4XxFm_s8y>AQ}Ea&q~U>cZ`HW#K%VFyXZ@aNdTE<LdXg#^t_`!gx@Ad zvKJoQ8}6f<g=UMyeUi)114(;2IDPM{W9!DcdV`Wzf^NpB$9!icP9aAx!+lJ**@4&3 z@WpR1*7a8kQX!2DB3wbuHgxB&2;qT5+0tNcn8=isldJ$Z3D$9FGrl#<S`4ltS)!o` ze~ab!)FMQ`vKMygZ>YXz>i<X)6vB&j;ZW;`o3<sAS$VIg^#_60F8u_CJSebK;JytG z?~KWJOCDFZPv8D8-(i<T$-7Df=F)HBMzH$v>+hRe^^)qHe4D<u;PAlgXmla_>&wMd zS9JG6%SMMw)YX$uAx1?Cl3@N&?pHS#;xaTz$>UXXB96^Hn{9z5ryosBKH(VO`{e(& zvkHp7i$MTNLBBXJKLbk7+~lC+cp>-ey^sVIsg*&de}vwbty<D=uI}y`jPuvrDkWpW zbCQ&L0*C?x)&<E$)+R{Xv!4jqj(f@m4Zet@#t!yu2b#JP2@q44isblR<Kdk<M=M|& zR<Lk>JhP)D_+IbDMNN++We-=+olC~6A@22OF>X}*HoQ_WN@&RhM|4}>MuFY4$c50; zSTk5Xlp+#qwu_ZUXj_$+un$HjZmo+UEl23bz~9gZ!&)OdTbo<FIqeI~qYw$wIEMhi z)gTQVjT5Uam4u~5t9gkVkN~m)ORvtnCG%Ty!4y`Bx6Bcdg@G>xq=A2-X;%>AI~(&) zP`o~sZU)z|h+?RG9{s$&p863y9`PMc)5@(&HT6wbL<H3o-bWI2XZ6!cFR?%#6)eS^ zO+!XcuMf}(V`eBY*Bb}-Rx;A?^8EbpD_gfL%`kzhvHCy0bc<K4pMG&_3^*sfXUnBZ z!JxXV|AEsyf3gtp;F6L%RWfzwry|fENV>b}rT(Ul^J9-NHJehT4to<M_5H&SzlZ(h z;aUG{0yUnHqeShhpEyzGG2I#aLDF>R4ZrnO?dd!k1^;$<p))Jt$cW2&VeVKUKo1pP zZS=mmPngw&O7llLjqu&kaJBpqsE|KBLE+AE<({_LRhGPtnvo(=@jdpqUc;4eKNt6C zcCS8@_#kzAzq5gi26`d5rG_@aU%|0B1hdN;SH`zrxvHiB;oU>O9rouw>&e`lHO$2K z&*S5`T~BBebwQolDQfThD?Pz~mY%z%E%E+}nqVH&t^_X>*j4%xA`z~nV@J26fo(Tm zvZ1*?!F6$vm=uj(62<p;>Bp($p3U7;r91T&Sc>$)d~?L02yQxi{sKR_%C87lkMsai zb<K|JQ}|xmN32Qa&<L_7Ws~yx6G|C#J#?Sk^8I<@T1s;0bW9!8$zPulFbR#aoc|y~ zC8gKH(A!UR7<lR3p{UgF%H)RS+*OaWe37$7g@LwIcA6nfnVcFD^9QZIfS>P<5q6m= z1Y!B_RM<VzJ(tmLur<zu%Tp>E2DKsF4FTe3sS(%~<|<_z5gu4{(_c_8G`W+@PPF~K z4bb*hn7PnOx#4GB#5f&+!C5~JScI?GG4MnNMh<hnL$kqRb;jbAD*fWTjrQ44Z!we! zBJIikqMASUZp-UZdf`euV%+5>bbAtliS0PHo)8s>q8I?7l7V&sHMkN*-Er|yjD=>v zAK^xQ^8RTvhQ=<Bn3zDpA%WvCg^Ry0#m9V#C2@wcI(B|?26aA@b7gRQ{_a{*Smrjj zUH@lHVYfWS{T}(v2R6Yin^cyFGUoHal$zcwjJ$*QesgqW^%_Cvf48gQKHYAb!TB#8 z=~MY)?;MG};Pm}TXZmxT%06k1D<*yP_X?IRd3l(ajg^QZ<CFRu-2Mq8DII_F+&gl8 z3b+P~;nCsZIRXYl$vu!nKWC;T-ey><pZt&h?c^Xlo-fm-^qUfBNitv-WfpNv(09)7 zf@)naem>n;^7<bc5}-0!@dydze=^yLrI`PM>kDzKdSeKkHSg`%BFCk*6;mgj4~+o7 zT{6a-0{vzjb?B=gCG(>K)yw){R2+l9Fnk+r?+f06;M%B#01_W$E-Ly3EGqhc@pgc% zXL!f)OLYkm_UI}_DASR-#BRps@Tj9<*-z79=7{{l(r{*OxI#>0r=a~99bnnf5z|u~ z81cItr96P-FVyDdVctF&<uem4B<y;<p7`vP|8x~fq-B`B#FB8_X-S51(}1dp&ZUhk z48a4f-EWw|P%b`xpR4tBW9vve($rbtc5h$F5gXcz?3{s3CfzO2&132l*BM5rx`Imh zSa_dIBgr}W99GO47mgOTo5{RP;cj?Ww?R%+(kByfCGsq?=;AcFJCR<)q)TkmGA-i~ z&kLLohx<X+Idc?pe{lxk00dajOHxMe)F*oqM1v-OyIpKz^r4WIS4)r4U2jpk6F z;oF*OE)p<w6lqXkbO`qhVfI&H@j3eL1Y9zD->&<@m0u;dDZ-lwfGcVs`{?6s$XZ%; z?8d0|%TOU%NDGPD1M*7!d;Yg<_XP~hZirXq?kya*_V=K?qLOW7J3E9(Y#Ps&uBO0~ zmM71Gg*DW7x(?pBDKU6}obuLAO5G6zLUDfmgK98TU<Gc%JAq}z;kOX*-(oSf8?QNm zKqMfrnDAG(#gmmYTTIogvvVaI_zKg-$W(KGCQF!7H#;J7Oqj->SV6JzuuE~X!?4K+ z;%O=#aby?pYV<o$sIg=(P!YJo<dPy`m25bddQaqjL1_J#ehB5k=X_!1!fv=3OPnb+ zL={9!&ct6Q&-I!PuZonE3yW8o&Pmu@>PqCVW8}RbJV&c^yuH+bA%cEMAd9|!qUAyX zR|9t7A`}S+T*D@S3y1~(|Gtt)Km-4Gn*kR;Tx8(-Uz7jW4gdA^zv=P6zWz5o{(oy2 zYfyvaFYz5e`%%fpTskoS2<63k_`Qf1-`yueL=Z?1^Ju0o6c4th`|-eqH(s#CEaFn0 zv6=&TUlty?*%r3=DkT0|PYi>x2$fNEV6x224%MdS(j{+fzxCyuu2FOspzpQeShKu@ zNdc226p1o%p%V3U?uCFSJ$?4fq9~YM?YMTl4FN<rGfAaTG?7GCzF97&aT#_WpbxXe zLkp+;759kB_b+<%QN-Kkz)b_lH}>f)<BO}{!db}*wNqdngv7t4@fffhGaLOzrIiD2 ze5J;kF*6<1?pK04lMS0tmqt)f?zz1Pp%w{C_TU}vK8r-XL<g35o3a7l+r2A6Y3a=x zDdq5N*bqUMSMv;t$DPHuDWEUfsEH0|!SqjpO!abDoxpYw`ep#R0TETK$Up?W3P^!r zQ}9Vx%ES)LBYfF9-3bB)=m*nlrtQvB<aq3)t%p_s^z#0FZVgQLm6hbr{J6BN*Pr0_ znZ1<Q<+*!vzI-QsZ6p*KtsChw%T4u$H6G}<d%xX~cqyW^N8Uay<lony(y~9Id@G1# z27Zfg2ysA9bHiCQqc%(u0v;FCZMNeRxc=rUzn41O#<gV8LhHWEn6d4LVTne{ZX@jL z?#wm)8n2|5sZnODmeW91FI8sujz$`oDg!5@>3gRdcr!*s#-UJi#vwg;mIOso8Kq=k z-*@j<iho#SKc)ZZ8zeB7r3v;_u3sdV8EgIY`VvHKNM$S~=0*HXY9$P1{6g^G3$a=$ ze=q<m9X8RS_zUXjo0%~D!nY(MoSY}~oQk#FMMEm^zdpZ^flY+jZNDZNcMXpZnJ=*A z7YCYt$No1FT%wi-n_+ZqALS<}J_L>{WR&0V1XTl*Pa+|ikn^-x+22*-?-gy)Z;A%o zJ7H-o)+iVwgJfrxlh>I=NRRn^_ysI-SW&Fc8yn>ai-bI230O3=%{rt#{akD>mFM$& z#-Qh(_aBjJywuYu{u}KsqhOr0YWG()=273Hu+H4sdcEw6lp#Som85_3@FPAsdxz)| zUj2nz{sb4oAiejpL0|ESF?%;~-VWILB&jSsL1$0iR8lR<lNP8Fp4C^}_=Bpf@xI^x z>tVvwOi&wnv2Iiau^Ng4`QiBX3oqRO{D<X!Xv>2kMwdi3&a!L9)VUEvZ0I*2W*!N6 z?X0gKo8Vg5!X5)CNM)LpK2X+F(hF|HgF_KI>@vOAm)DC0(->-51VA7RLx_=w(vad{ zgkcc&iqQw3l!r%J+qGZJ1`^uhBqKUZ)3#5WjYCY24{eW^f{QN$LQo)znQng3xigi4 z@!zPLT}alqRL#EB!!57pF~fWQ-fK_=_r&=ulID>yY79fD<H{h@GXz_Nu+8nnzdyuF zZ>y#jZL@ZMP7U9!<%_Rx?#ZJd^O{?kw{Px~M^0-MyPf87Nro)w0Nss)XCJ8y?FTuY z*_de5Vf!@Q)H_LneKsh&jme=ZMY9#6x}MhDd^XFctIu;e(GJLaqcYwN`3Wn!W!F=J z*kjGq&)qao-TScyPF$80lIdg1eWb(DDBAjI6hxM`i6as?zB^ZJr3{6XdT=_1=0A$p zP<g;jq0Eyh8_N~G^=NOxCUSbsg1LidOaw3tQXjZ*-xHRUox&&Psl&?KYJITLI;1g` zFipEq^@J=JCa^v@L^M%Z4x=t8C;b!+n?M!2d73019=Jj{jXzd7pVwg-`2mbZFG0Pg ziZ%mT>&hV;-u&wm$3E7*)Fi3c-Y#s(;`>s0QDW@g-)rgI;uVWI^`7^C%DIPP1M!%g zOxPUxN@ST^)aI5QyE3F%L2-zW^o5A>ErL<C>}oqiG1no@;+n$(RvZ+fh@>C+BStv4 zfb}sRO%r|YR!(ZJV^`C)HR;uNw$V7sOts+k6~uJ_mSwx*23VQ0D)#k9&z3K1-!<9w z)g%hji(3XBwE{`;G!Q119S!TF!!0KW%72%Pj9Zuz3PlE0t!EmchR8s%wvN<%=j7wA z8Ht{NLWC{|oupvQWvZ)xT39=>m`CUw4-Kv=^F5$3CA&L%$4&L)-A^NFr<Bkjv^OlW zlR^Q(=ZmA>zm-g^ImXhic97-y&bC)!7NiLVjG<<*ixE$=rfw#DsvimlfN{jNEjm^| zm>8PtITai{_g-PE3@B!}0)eJK9wN<A7e9Q{Od@)OI)%Q<2418T>N|bde4NQb6(DxP zUXaz#x^ZmXKMG6EJ}<0*ma1GFe^xwA&m5y{<OL>g%#}}PVa5J6oa^VeNJq&FtUT|g z7cAP$Z>TjqX0PUEde0wzFg<dO`4!c+$N$i9Dc0CF@w|T7Q7`yy&_n-<PAV<i60P(O z?ffrvd%DO|^?<zWVhd&&y-AWQU-=q;H7l?rtjWLD_zg7dr@8Zzq|Gb^H7q9Mj)oXH zlHuOR=6sJZl;wY4n%?^tTFNsL`~E)fdxEY?CtJyYOfWlz3~#vLaIUkUy$|+mEO?Su zw|?tdq~+omq84Pn8nLo6ppNur3l)fH8jRp3NgBqIMdfskT-nL^aNV<s#)@3UlY;me zD)a1H;@iZA>xiQPpU8JZlRa`T3zvg+{AvZ9JfD4f*T&r8g(7ET^R&sPTi)^)u|qWT zPt11Qvj#D1U6vuUg?WnUFV)m{G4`e3V=^!|o1we+_Y<x(9+^fqs564s%-8pr?qhQN z<*t`5f6iRe#uZcW^GrECZq{7!>0sxoA@0bGz5$Z3M?A_Yu2*mMA6{gyXYtgUx?Jzi zZqK8Qu8MJalBQ`$y2u($>o;qk`rLAqHdGSXWPi9|Pmgi|Ek`M=tC^KDU)pvWZd|tU zR(`K%f;+xuW18$I_M7YiTefVIrFR7F-JZxsBs7UcA31o43C=*Ocqq@Xy52Ni&c#yF zg3akOw&*X5qT?J4*kld1J{=Z*r=Mu!4RAmrRgb^1!m)Sh(uo8&Jgx@S|CzqX_=OWu zfG{SGgprY#J2<`-JUU>Yxug3R{?AcSeq!^99QKkCzIBBYk;Opkw$dOC<HC2<MilpF z4Pa`G%t(+ekhxI?_))sP7KM)rT4*=Ot~&tdWukgNi}%)>(3H6L6x|>OZ8Iswdn1|E zP+{_Ue`d)*^Kf<txBNG12BMv7((~`VOT!i*u0>za&5bP#rz_Z&1wNMN?CLFi$h4Vk zYL>wF$n|Yi!#_GXX|&I4THBFvPEpuxC*T?6Na(4}Igwlxd@!2P-9ND~^%wEO%{-)d zlF;qQ!YMOQ%23Q4rdnDYS=v<GO7I<I<bPPbUt7}@35%g#Lpdd-uub?w!g@6x-Z@{3 zBWE-Eg8Ak#WQAK3VItmJJ$%vCVRkj#d4!)c@$3c&z>xgjKx5B4&<BR4F6UZD#<;y) zS`-|SgdUx}PKUXSos16RF@{`dv|RAyg`D+oQ{CWmRWjeaQ)E&>>z_8(=4cPWmurI0 z&zH2CCRowz)aETmqA@r;XEtdkG;<ImacS;9ZXT6Z5yM)Pm;z`E#I<d0DrGjxL_1$q zbuwX+i#@yyxJ;ui*n}dfz|@lNeOrtoFSvA^L00CK-KXdZPlHppREkx;8<`o-VpH1O z>YviXSyN82rVL75tLK-#Yc4)J{q{Tyooa8l#0H`9QmObAr`h9vITBemt%S8F`f1GH zbiYEb996b=!!wX#S+5dfRRgsMQI{p!!7scute&queA8I>t*?I^<d;&+aaq|}1ZG;a z*_rwK38|iX2*A2AlPea-bVY0Y4z?mL@Sn$Kqc5WS-Vu?5S#|c=eccz2<+X`{h2Etd zx})=AI_m)W&9l}KE3{ITX~kstCboYr++!)R&Mx;(ZGK8G#?`r1e%xGrv;CX?9+-YN z>+^Ai@|?H0uaM9?KKf6Vp%VnyYj4d``39inz?Pu_z}6k4-h%>uaFd=lQ%jL(z7!@c zmcT7n^C?LP=WQI}YEYTA>P8{v$TP|-^5dX5U_?&Vh`(88X2J$*>>?O{FsF#ozL2lC zrN-+EaMG3YUK3yi@KyJISb`G*0UEx@MqEg;tg&2%DN|E&jaVn->A>W_AK+3S<b6W= z>lHa;vhRtp*{NiCqhE4)27D?s;)yw={qPiC2_mv6{#l#qVynt~ru8}i@MP84_*kJ8 zHRqZ8L}T;%(?m(#9`O@yk@J)ISU{tOp*+RuHfEu9wJyM~y3OL9j@hn`yHrv+(t(pT z__d&I_1HDpC=$DEiML8_Lj^dQ=d}Q)WdQ)d7Sai3&d%9vkxbJ|bh3BbmSU{UX+w@3 zeR3T%fKX-Qqg_K(mbk{f$+2<_7h3DjdN%`7gZ~?p`S7@iGip!LvZk29H0eJWNMX(j z$udmfet+9@Hq0bNKgI;}--z(pAlvAJ!yHKWAKvs>5d8N5BeN%?UHnEtMaJJ)P-g5p zmTQn%)#tsV;QQXm_6y%6;_DskKFfyb$Pshx>x@<Ghve)paDzKFuh1xR=_uG^@1?nI zVpmyD;FV=z{9zvC{V?PeQ-KY`ueAG<v8E$yXqSX_!F7d~9Iql2w*u+puF$*I7uN?1 z!pGjfFX$;CI6LI2GQP#onK{U<W68;+_8*i20!Hhyfh2cAN=KV{*$c7YV<nI-1kOzN zyE@%&9(*A$QxJGJ-`tkV9;R9!`xWla<l&>;;QsrX3~G5p^Yxe>wzF_SZuv65=kX?{ z--Cr5HA?xm8b|4czCivq9IfXb!`lnk<3BG9YI#A+HB883;;Z4SgFPqCT{#o(u0%O; zA2j-)Ad_%4enWne?X9T2O81I<noTLGBv9uT;75_Em`tyBu<HaLJa<Y-FpBzWpD8a; zJ@*FtVy9fEG<<<{qwMQ+d$pnM=+Sxg6m{e4ovwSNK>zpF_s$fWDGCChoU@nD4h;Z6 z9Nsy7@Opc-lPu@rTXPsw?nGo@Jj33*kB|U)K|A)%ZcDjw$g3qOi#>rsT&1Lu81ky_ zJ#w-fQ_ISFI<0Ff&g8fRW9>Fv^5MQfbMQ=IE<495@lx}L-o5|BmjmXf6_%QYm89^V zWc5|}Uh}Nt^^n8Fcdbcf?|Xc)#1dk)FXr!>&7N@QrQ9_8jZVeq&z)Wh-Xfl8Ar$9! zt7huuq#FMI5F?%gvrp&pzKoKgIY~VdV-S}H&y*TIZl?L?;gTgh$PYHB9m+2!<FZV% z?pfmi8XnSIic7{N5{dUQyp8q5AcLs8j^=8*gQ~KW_7{*0tx#@?C?Dcov!}l)2qcFi zP6%WGji{S!LtKz977WU4hdJVPIhFLiG6n+t;r4d`aEmVuJ!HDlGisN4(o85q0ND|x z#w!RtvKl~kib);~a-_v|4YxS_g#c+1jY=+v-npep5Jnywj}P7E<~lX>v=v#(Vu~}R zP2+jbJUa6sCY5?+p59+*$y$36tjYl--+fp|p|N}m;sPBOYihfLB-DgGTDjhb7=`!+ z@egLQi!j739=t4gi&KrR5`2<fJB474yHo%Ei>#ziaHrFT4jfN^dn`LRzJBFBqkA!y zw~KMAA4S>UmPpCzk>~%w;t{+GndMA|lj$EHJ(%M4fZ`tso1i#QWBnxBG?&hnJk8Q~ zr1h(XvqkqF`b@p5z;1P9p{Vd8v*vEgtNNj&chc_$MsM0sRn51{TPWjlC|{$duVEIS z7A`uglU`(wl?ezu?07t%v#9%@QWBheijcb(U6GaBcJSk=Z6dra8OKaZq4(hEdDSV- zV0n3f1I>3UWwdyQyeT4;%ga5qUHZ~{!#S9$wqY&-q^^V<@^ziq<O3(v(_P^&t=%!& zi5(6sD=@1WXQd@O492njd-1)|=!R`ZTy{3&?FCe%-TN|Aai>0A*`ykahHtE8$RrZ- z2F5q+O_Uq|w7KYL$uP~Hj|SV}>Nq6Cgl7z<phWwdU)Rp#TxbyT-Gu{FL1DTN@HIeI zN%sW=9h&7BPvJ#xc*zZpiE+m)gTINULY%kD%)dnfgWOxb*!m10hmWaA5E&7+rILa% zaz$k)jm*G6rm+{f9HjNjwy6VvGH#L<+is?sptY}L;{$jSVcNQiDd>q@>b(L$S$oW6 zkQUxiw2qNwy>##YiFY!%c|c$XDCLK922|71V)&^RmafaDH->f3I!R-A<G>>lAZIu- z593khY)(Qr<!>FSO~spvwQHi2N5xu~O_vkQw2~J{f%jI5%PF}x9;@AbciW4Uy@rK5 zU$x~ZZD)E(x7zaq=eue6*tq@iOt?#f{Hl3X@*;$PeVLOtTl&~ut<94{CtsG04YD=; z$@3=Zn2Bjom_rW$4<^XGN*XR)mJG;OE;W5lZxL`)a=J1EICS=hO?JZ=^e2;Y=snqQ zc9PQyeSGFzT20e+N)wiyG*+(+Rt8O_rI^08pL*>ue|-5ldG~IoDI_h>IDHNl$U&LC zNZKcQ04#LAqtCi!d#L2l(WOGlr1`6>(0`}Z?0L^Dz0+kX^Y){tJoZw^(J^P%&xPT` zwgx_l<Fwx)wZ!Hx#~9i0?Im3=Au|9leYuQyageCqDWr-}=5z(dmT@`%U6Y4dp@LEo zSU&_`+d~o^%qP>aHVzldij*6|UgB(s<ITlf4|JR{{YL|KFpoIiVn)ZK$7O#Oj!EVh zMp*OE-+5QQk4GD>ZIm*(769Ojvl-dx;{5qrB-Ys`p7<z};Rbl|PwbEKFYY`wiERHT zRwUX<vnn`Dm{%xA7ZkU6xt^Xlpo%(6%>rHmde5nq28gtWG;@DTt<SKglB8tAc^o*3 zytfCA5<YQ@s_v|ceYtJ+O$ethe>rxKy1nVx3yjM5e;_zG7jnM38CvD{p1;eRQ-eOG zncMF3ppLKxKo{mFVxbzN5HL|1)l8~oNpxB&Q8+wL%cA{F{$|UkgYM#Hc)gq<kh+pg zYP#3C|Axfa0F&j}F@LESAiV)K5OZzOCQmK1hW*e#6`NC4u+tqZ#7mQ5k>TY5<Vzh- zFEBK<&{4~nmC47CRq}Imp2BTpD9P3@bJQdfg*@QCd=#S5&5?o{YbhTsSo=CjX;V7) z`+}ORTi(*obFC?)F#Aad8>a_daau)GOG)LT9nPf03`?x0j6u=@IIa%KFC4_4O^c$Q z;zn$aJ`z~n`&U%v7_0!AnH>~lM5U|$R$WD)Oy?!9t(+y`bDs9wW*<Nct;=LgUR)tZ zRxeX+y@;9mK)iMtQI|{6so}P$p2vR9gVZDbyw%%Lznn6`=-gF$_ROG)uqI{tvE7VK zBOO|rOp0coWp5@G;<M#@-?lw}`BT{n-#)x^Q1d%M{c)yYMapcoMQCA}uGU)Pag<N< ztc{M|X9JJBv*+Uz3&E7|dRMc#49Z?$4O&peX4OGCOm$-9p&}QEC$`RsmcWQCzS}t? zXZ|Ey=S0e#@=>ji__H}eD{Xmv7{a@1oJ@I8Ka+<%Jf5{(XJ8-GdD^z#O7OD^SU_)^ ze#J5X3XQIzD&~h|*XvEE?Z|~-TQU&C;cSd`e$|2D*`LvPOk~Rdr^e|j10+o3nVnRE z+yu-Mjn_!Wx@W+6+C&<kr&<G`7a+I2FH-6;O{aZ&4{jv<w%sY(kjYtJwjx<L<9c3t zoF9K7j{)rd#VZPHhY%OtXi<T6x;ksONkw$js}`mUCy_ijyfh`eH#<J}zJH(3-tbTe z=9@XPLb$W3fY1-I2QLO8J=q%00vam)%got_x26E+tGQHhw$MbH^<y(lUD}CD+YyNG zmZwb{Ghu~%wD?_8bH;x9N9o(A8}W|LNq>WH8~EVGX}r*oQtR7;o3MmmrfO}R`uisI z@&8!drzw|TJiw}762GcLwa@vv85<{L!5&SEsI2dd%w*|Kj;X$U6i@fkcdxX%b*VX8 z(S3{cHFr*Ka(5<gt5sgVMwQ5CF?Xxp<Eq$p#H3s&v2AfH@z=rzWkF)aIIvC<BeY_r zY!J~ix$?meVWo@6(Awo+RpWOFC=8qy6P$kFEe_8l23p2Mqj%xV=(ctty7PQY+!A@! z4@&6$kXm+)8z!H*7ESS5b?*Zgk)!B-_3h+g0QfzJ>OhDM600UMDtLm->|^o{Uts7D z^5~&>2o4{eyN6RjIBj@{QZ%9!yi^EEfCfplQB!u(J|C4t*A)ekQwWMMn(Q{v%BPvb z$9by7fCpQ%TKS&e?N$mGdyGsJUX}JseNwsXG0~vz#Q2t2WXJ@V2MUj;KC@+ou^a$i z_N%o_A0G&KBRnHV+25v!aeqvyO~JvWC~_)xtwO1(FryI<#I<&cM`09&uRB=-xP##D zr$@0r(qr+>eb+`+WpyPhu|?b;0Th(cQ|L~>5~QK^12YpOgE|v^4#TpzOhIHqbf2qg z`=E|(SO$H$HpIeXdFTEm+!uZ<<~nWd6JyZ)eb068q>!#nxNCgMPoOQ8JZe-enH_cE zg>Y9SKU(gH?BvF+!*=UJQGVb8cnr|&)J@6RlWNV`RQpP}7M`&9rzRAS_J3eT{SfE% zR4)5PxE!(_hF+^%BmjnQV~g0v_7=VpeUP8z&Z3+c0K)#80q8hoohVW>AZj)hq7twU z30OZrY@)ua!(Y1jnJ+T}8=mjtK9-IPGh^06L1ZM`*t}IW48xVMhiNf=lm257v{|#O zT|;+$pxFc1+496(oc*nvabMDtW`slF03GHI+{mDCC?_9+E&S1pNK1&5QJ(i{3Sd`w z*E5gj5p!zY&_Xg3xX1>;*+@guP7?REHYYviGE9tikd?kM&KI-pB;}59`y)g35rnR2 zX<xvC-);6A08t*4x2+L(lB?Fs9gN#JmPyGm^xC07aiEke54#0@J{nG}l?CG{yF?%^ zkwv`A+NT(#7CONPOc4pmhThbq{ZbJk@SNnc1uB>aG9?QzNCT(Gc*sMkFzeN4jRFvr z&w*JKO7h8$HnF~(3<Wqe5F1}Ff5Lp#3t-Hm@i*kbPvfWgW{lEWhKxhhR3TH>0B7mi zWdL=4f2j@?28^o#Fi$X^#zXDlm*34t<on^_)J<&$?Xq2uB6^fvoQ-dQ#3CEw($(D| z^_7b1#-#>+`odoG*f0YMcXZo&Mi@YMg`BT2C$30z>YT7F(0IxG4$x)hJjZ~1ak^bE z@#Y`tH8NX)(iq3GR?Bj^FXUL=1Hc{JEFpU-G(A6>IviBAMhHnP1!J9GW)ncqe~ACJ z)poP+?xw*l$kp0%8jqIaG*2yM(=z?tpGKNi$c5gXK071(b~TqI=m$QLUVN6ph~Y?< z`~t)=rIhmF0?0|vXM1HYw`;gEpx*m(|6`a}C=en#NP=rKm%*WKb;%7CcU=fdIo3-> zb$un}=T&C#lkdxnLvc#u1N%I@M+Ne((EwEe0Izu*DZbs1&J=qSV!E|QK>x-S#Td^+ z`A5#10Ws7BZ8L0y7eoP&ML%Fh0U}PIiO&%4Bx9cHgaCqiYsN;4mMa`D=N50W5`zZd zoN0ml`OqGiuPd=`cU3xYP_HZ>sLu|J&5|#YmFHw}0)Y~$o<8q`H9Sm{5#^QQ@a3&b zHYb1j+#)pL7EpTmE{Iyz=m79&H;W(=x>8Hm=71s>*ccb_PD{4Qla-1W$0gb1tYDrZ z8?2bBzY^OYtkP^vF#XzQ6jbgsp8fj)g(&ia*<lzBSlY=o&st{%2oe|eie)9~254l3 zwWctZZqW2kl~3OP#s&%3_n5HMqd1ynh95%h!_g%N(bxFiybS~#TJWOSWlVDdpqFSw z;_%?XyiR5K=gHHycGgM106>on)<mAO*N&igaNK1K)|@zdU5G`kQ}4<6l1#1DKS6sb zZ~OH_QU;1;zTJnOy+r4T1{BF+=dHbcWgwu<0QlqqXd1MC;sxGq07NFg;e=C~uStek zaIT#M#GI_*dFAgIh(yGK573|Z@cxf2#KQ(i7>K34{2wdnx#AhqQ<a)XVa*NLr6zYB z-Zlx`!nIvRQqFgZB1j8qfhym>er1rFr&R62s?S-Y7VyoIlmz>X+n!eH@;%C%bbo@> zyd4)rR2$7>=_ooxEx-(RiR`@t!sDe8VjmEc=Fg5g3hn}p;h4|{J%7iHve!IbP(p`^ zDL(()ZExrpFd)E7!;OMaAAAmeQ0n3R+aTm)D{}1KF}jK-;;c?nlUYJ4+MvwuTT=+& zIHjs5TyLOGVC=OP0J;>Zh>F^r)ydB6keLfC5B63$I6NI+qOA5!0A%;h>Jh!?sMP5j zeRL7RgHzM1*sreg#44>P`!WfsXYEF2uUq~P4B?l;>muvgF;9USS^gmJ7WW`ih3)Cx zwX1CYv2oa9%97RejzZRWi@A(@s|>(h;N|{Jb-6sCKI}&Ua1YTkFg$6o;Zj?;>6h-r zAvQ;)<6CsDod9+){@dL`67RgGHYU?S6IfRV>@^~EV3+Gm1sAGN)CK3YE-OA;#4K7L zv?BXw2SAvw>8;wS1!2uey9Z7yWZW?8dH|V?1s~Wfi+Ac4T^Yta8M7NeQrTIPwe)6X zg<SN7-#M;gbjb_z_|}A`vA-XX7hZH1Y-79;|GT=Rh7V{4UG5YT<joY`wq$=of7t1T z+uHa5?i*kQ5~yzj^jR*ewT-15YXRV+vGGXDcMMX9myNu=mM0GcCx2UA^a8XUlgFHo z0KPAFF<H-ebG|AaDFFjs9PT-IWamt8lad0AnIoJzZJ&+6F?a%L=v+40bB$vIr-Fg8 z@8L2Zkrn{V`<y*MHC*Ze*i35p^LGy&ujY&nZwMjorqqy0wmy~lxAAT>v5Y+E#etqZ zg|Z$;!bgU4^nimNo`JPt-4lDd*<DUgE_!;}ThW)lZhao^`JqKX$a|UGk#hA7S~CDP zRGG7aM_yC*2b*6LliIslqp;q;FmuSeZ|GTMCjC!_SsyBuSq~bQ9l4$s8f;ze!`B;r zjTt)1&(JFXE|~0AdeaT))gOgo6R7*)bZ`+q#%n*Q2Y{~5<y||c0$Sf1>N96j9-aMZ zMJ=&+36Ny8<K^(1+qw;&hnLYEV0H+1zKVxhIPoPoO>>xk_ncLp`FQ4Lr3W)7(u&zK z%UgYU1`u!e@cU<prYiRK$vpc#N4c4c;X@}fSPzJIgZLgL$=!^k;}~)+l*sl~t1Yi> zvy;78w1tz^zbCdl#8yyT?i+m0!E7nsvHbyztaa&mu52xQH<-Eiq@ZTCDBAZ2$H2*Z zr)r6=RHgi*)Pp?DJ?^{HI-aoufH442UQqoB88w4oy9tG6TshXocMZF9tIYEi+gD~( z=yK6^o5kjNH*k{P)IW>7s_3+cM)Yf%+5ahC&Z}PDt9Nc?PsekcE4F1z2HBT*c3QXR zfKcyh+&```XtEn3hk2oU19P6?b<?!AYMXXSV>+GXGlH0mVT{i$ALbkH;=ZO6aXCEZ z$Qm{w<rS}U8y&K`U%?r3tou-yb@Z)1a=^f%b<x>Gs|<_xS&i>9>+e*tV6oB8&e^&g zv5XLr8^B@r%(XfEUarryvZ6Fq#W3~+Pi-NY78z)r4H}+X?!V}H0I^WObruB1Cjm|- zw9F)+PjKgNInvd8H}4VGTtLu$A9^;^1>ZgCsb!J}+vi-UCf~xIL|(ZgP;h~Hamuxj z%=$39#3;<6O$d2jmcOS?DZWkis-(L7?W{#6n1Ks3il8U(5>YCd4}_vA$yem5(VK6o zm}GG~g2+F&Fg~gL{?~dd4|SFQWi>Vr&$^Oi164Fr)N1)nps`9ZKvtf?ufTEWF>Ndw z<$Jir?$>JXQ+8<;Q3O+JFz@G!Z=yVF_5Hwspr8P+rH}u?_1<0YSB)&!V?$tt++7&9 zgmcR_Z~nMFp~r4<Pw4sd8X(?+C$okuxt3kE&xboYtQSS1r;VG(!6DIcFiy%BUV$!v zJq3_ux5Yp};6?%Lv9<BNa{BW{h%vwx*SP5|PO}7Lw3&4Pkfi4O0fWk5L++zb=8<O) zB(+8UUqg&seVh35+TS9omNjFwu~IJI&bNov8$9prHou?QeH-79zf}Co1!z35PR#E# z6$vJ%dDX2VR^T0NRXw-+2$wN*HgZx4m3{e@uOmidAJd4BIEwLE)vcE33*L%!o28`Z z0aXNvk$E^-8p^?{w}IzYh~Wy7eS>3*$;U&0e*ruue%D!9Of5(y3<Z!G*5#aPIPZXb znJbWEc>d@l(son+CAZue>*I}#O@gwUdCKqAW+mkC$Fz~4BZ=3<R&7FD+bCv4EhPPM zBuBcLhiCRa!*SOcZ`E1#gx533GOEWrB+5LPa>~M%KEcKgY(S;C(tvOkPhKCv|F^*> zV!Ld~J>B?|K1Hc2F|i5e`%;Fwz8vNsdma2ELxfpF{3#0)q=rt7w15&R0}UayJ(`Mm z^~flE?*NlV2>LSsK#XoxFLK7`m3z;&OUYNBBw+W^dW(x?*8@Hxt6X<~^4<6i#FO?0 z;X7%}1Xn@ilNp5*bLIJ-*ms<-fGLLJgiWHt)3n>TXa8^S{x^8ChpwC3CBcX8KU;)6 z3b;!*oe;&;?NCXs>=DtW7^y7DOTl(Pc}X2<i@Gs)FL7fSPHWkAq|L}>Jq#z>4Hnj_ zUV)DDZo7g%apl$7|7w{)E`gC7H%xKj69klY5ad4L{0^TMz|%R6zk5VDf$sVh_?8=V zFzI{qSW@(Y^$eRXlcT`B^G7S*oeM~+(JNVr8W)h4OQ}dI3G!5MT6A=Z#9<CbaJV&w z{lS1EEp({Xgwu-@B3n=@9?r73L-qES)L+uEop7Q)r0omLZ_?^3D|VSJmZKMsDueEo z{|qtdA-2ys;;~4wkrGG%qW5Q9G<ZhO-=|ysvA2hR^UXZCSd=XHvY1#ese>iwuKvRO z(942HGR3cOGc%*c)gZI{{k2=pWk-Q~ZkDqxU;DYpUN)Ppc+wfNm%&k#H{g17H?t!( z-@Lv!`W6L|8SVXDqV?#9b##-yGkl9=Nwk5A^~~EZQ9EdPci?@#V7_e6Bm^ldphDzd zv?M}JK!gISj0nPlsg<bruk%WF*j^p~#1ar_oUxu!JA8r!Y`OmO+_oyC3gEwc4ta$F zGKsEZU@2kF*188^Kth64)M&4V>&Cb4RZG1)Xn89KR6iQjN0)VmPe^@<cad)wDaZ7- zNMGvkJe_|7RC5iFaWEqQ0fHLbM6EX<`tIrj2qYDvD`$!aAjkLddHiRRCi$kfy!vH8 zwISimsV+?rE|U|hO}80tTAsF++aZ5p$8T!DsG@mAoN)fQ$XoG{y%9l=>)O4{`rDw& zQ6d0e)$C-?&B(Gi0jD!5kKdLi!H-rP8bo6LFg5b7&Y*_ZfPMJ$WEQ7-Vmh`IE#Sj} z-$hN3NRUTTw44$ZF#|<%7^(C8Fa5kw-(C53386q}834`;6pEBs2lE)Z2OR(&=yj9i z@=+hk0Nq70+|WxV2owt!l@ArHS*0D3rx60Oq&gsqSz$XO(D%5Wrq4SSuFmXg$$Rn| z9JSvC3^fr1dumf6g+|h-iTGa<T^!)hn(%NL-q2wv$5{}_4#0b=^)ut)Z$u>{C9L8h zM${pmv>GNgKy{oVfKR|DA%;sj%pTol-Q-|t6Ce>;s#)WM{MZ5SWvAli*Gg@!3>Sc% zP{0~K66?>h9;fgizi!@zr=&&X1?UXiC^ri8yJLb*lx+~Gw3w-mCdiBd8BiNmAhYSd z?G`1DT-B-EqxF3M)k8|rNms0FoOUWnx5957jgTk)gaT~<l{G*@*1DE_Ij;y^dz$U$ z=Jt8D-9@BtDEG8K%$R-c@RbF2B>zKYO|gK<Ez-!a2uKJGD9)-#$_Yjz_7d2qu7m@` zx9!VVpT8rz+-J%;_)*10GkG%>y;&!Oubl{sDc;>|=Aa@9KHgVMl-GFu^U64~T|0M! z|E=s(x7Jvj2*B@Qgv&|^z(_6sDqMtLZXIv0^j)-zuw{w9kglyLte&ggRn(gTCT<2W z5k9D5D%@VYFF+YoMtHa|{61ipBqQ<b>{E!+>#^DWm709d0hq|MmqamGH#k>Td-In8 zitHevHo(3=yZiv?Di?xJw}8;XR5!0My3f<xy1WS(hnj8m&;G5U!*7Tz%ntpS;#Y{q z3XhB9*%>E5e!pONT>t!MGy*oMtL!X0lN6R;pXJF$FC{e(yuB14L{#m(`<D$NV$h&? z{9M^CGFKnFbEr0ohdiJTD&BiiBe?*m&dd6jU#Y=Uqfnr*Szy9Hf1ssbM$e7Q0C+qc zNX*7+DT1AE7!V=2=Kdw(gd8Xkl~k8k(`va(0oME6xLAsl)EpdZ2^<hwypby};1Ccq zTvmOKlpu?T3{Q96NxsfKAc6r^90TKa9RaQgL63B9W36>Jwikan7PxPO%%1Tw>2 z`f{ZIFg`FU5U3L({|a;ZJh+p(&GKjfTL=oYi<@aP=(~W?)YYoYSF0-Hcn`_t#D|JM zPS6<&E<El6s{f><Z+48TPE^j-v{33_j_+P66%WbRTy(CQG|1!b1_&f(;89iHuoqGl z>iW+m#moaxm~MPQCNv0*95{8N(Rn~S-PU?JKOlbR0|E{*C@i;idGe+(J@+vC!@o+j z3|Is9$#lSF0*Y3F@dH8FhdUFQM>!$uHPXF~73@N7dXlNO*Os}c-eOZfTHqLniwsCS z_@G#wE@#1Viy9RM7a#v|nMk;9pzK%WR7(n&aS)5*5E_Y>rw(Ma^=|`%tlw)1rJ0Zl zP^<Mj5~!ICqjq5d;?@7Gs{UW9oBwB3_5V_c{XfdF|DQGd|FMGmf0TZsrM;laJ0Mzp U9FWNaUK0csmlG=&(F^!L0AkFyz5oCK diff --git a/_site/assets/img/plugins/slicing2.png b/_site/assets/img/plugins/slicing2.png deleted file mode 100755 index 410426baed251e85c9cb424d2d148e86369a1ff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15443 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 diff --git a/_site/assets/img/plugins/wp.png b/_site/assets/img/plugins/wp.png deleted file mode 100755 index b6055b2cd09c40019190eb77ca5fb9ea8bc63537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11008 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 diff --git a/_site/assets/img/plugins/wp2.png b/_site/assets/img/plugins/wp2.png deleted file mode 100755 index 29f22930a30676a6311a69343a8c6952d139394b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8934 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 R8<>cJ6lGOqs-?_>{s;8Sak>Bi diff --git a/_site/assets/img/timeline-mask.png b/_site/assets/img/timeline-mask.png deleted file mode 100644 index 1b47baf16da5c00b04fbd7fe7a1b160578ad55c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2122 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 Tr=J<!%T!dRq{}~&E`8-sU5N9- diff --git a/_site/assets/js/lib.js b/_site/assets/js/lib.js deleted file mode 100644 index 5c71ba45..00000000 --- a/_site/assets/js/lib.js +++ /dev/null @@ -1,21205 +0,0 @@ -webpackJsonp([0],{ - -/***/ "../../../../../node_modules/ansi-html/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = ansiHTML - -// Reference to https://github.com/sindresorhus/ansi-regex -var _regANSI = /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/ - -var _defColors = { - reset: ['fff', '000'], // [FOREGROUD_COLOR, BACKGROUND_COLOR] - black: '000', - red: 'ff0000', - green: '209805', - yellow: 'e8bf03', - blue: '0000ff', - magenta: 'ff00ff', - cyan: '00ffee', - lightgrey: 'f0f0f0', - darkgrey: '888' -} -var _styles = { - 30: 'black', - 31: 'red', - 32: 'green', - 33: 'yellow', - 34: 'blue', - 35: 'magenta', - 36: 'cyan', - 37: 'lightgrey' -} -var _openTags = { - '1': 'font-weight:bold', // bold - '2': 'opacity:0.5', // dim - '3': '<i>', // italic - '4': '<u>', // underscore - '8': 'display:none', // hidden - '9': '<del>' // delete -} -var _closeTags = { - '23': '</i>', // reset italic - '24': '</u>', // reset underscore - '29': '</del>' // reset delete -} - -;[0, 21, 22, 27, 28, 39, 49].forEach(function (n) { - _closeTags[n] = '</span>' -}) - -/** - * Converts text with ANSI color codes to HTML markup. - * @param {String} text - * @returns {*} - */ -function ansiHTML (text) { - // Returns the text if the string has no ANSI escape code. - if (!_regANSI.test(text)) { - return text - } - - // Cache opened sequence. - var ansiCodes = [] - // Replace with markup. - var ret = text.replace(/\033\[(\d+)*m/g, function (match, seq) { - var ot = _openTags[seq] - if (ot) { - // If current sequence has been opened, close it. - if (!!~ansiCodes.indexOf(seq)) { // eslint-disable-line no-extra-boolean-cast - ansiCodes.pop() - return '</span>' - } - // Open tag. - ansiCodes.push(seq) - return ot[0] === '<' ? ot : '<span style="' + ot + ';">' - } - - var ct = _closeTags[seq] - if (ct) { - // Pop sequence - ansiCodes.pop() - return ct - } - return '' - }) - - // Make sure tags are closed. - var l = ansiCodes.length - ;(l > 0) && (ret += Array(l + 1).join('</span>')) - - return ret -} - -/** - * Customize colors. - * @param {Object} colors reference to _defColors - */ -ansiHTML.setColors = function (colors) { - if (typeof colors !== 'object') { - throw new Error('`colors` parameter must be an Object.') - } - - var _finalColors = {} - for (var key in _defColors) { - var hex = colors.hasOwnProperty(key) ? colors[key] : null - if (!hex) { - _finalColors[key] = _defColors[key] - continue - } - if ('reset' === key) { - if (typeof hex === 'string') { - hex = [hex] - } - if (!Array.isArray(hex) || hex.length === 0 || hex.some(function (h) { - return typeof h !== 'string' - })) { - throw new Error('The value of `' + key + '` property must be an Array and each item could only be a hex string, e.g.: FF0000') - } - var defHexColor = _defColors[key] - if (!hex[0]) { - hex[0] = defHexColor[0] - } - if (hex.length === 1 || !hex[1]) { - hex = [hex[0]] - hex.push(defHexColor[1]) - } - - hex = hex.slice(0, 2) - } else if (typeof hex !== 'string') { - throw new Error('The value of `' + key + '` property must be a hex string, e.g.: FF0000') - } - _finalColors[key] = hex - } - _setTags(_finalColors) -} - -/** - * Reset colors. - */ -ansiHTML.reset = function () { - _setTags(_defColors) -} - -/** - * Expose tags, including open and close. - * @type {Object} - */ -ansiHTML.tags = {} - -if (Object.defineProperty) { - Object.defineProperty(ansiHTML.tags, 'open', { - get: function () { return _openTags } - }) - Object.defineProperty(ansiHTML.tags, 'close', { - get: function () { return _closeTags } - }) -} else { - ansiHTML.tags.open = _openTags - ansiHTML.tags.close = _closeTags -} - -function _setTags (colors) { - // reset all - _openTags['0'] = 'font-weight:normal;opacity:1;color:#' + colors.reset[0] + ';background:#' + colors.reset[1] - // inverse - _openTags['7'] = 'color:#' + colors.reset[1] + ';background:#' + colors.reset[0] - // dark grey - _openTags['90'] = 'color:#' + colors.darkgrey - - for (var code in _styles) { - var color = _styles[code] - var oriColor = colors[color] || '000' - _openTags[code] = 'color:#' + oriColor - code = parseInt(code) - _openTags[(code + 10).toString()] = 'background:#' + oriColor - } -} - -ansiHTML.reset() - - -/***/ }), - -/***/ "../../../../../node_modules/ansi-regex/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function () { - return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/debug/src/browser.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(process) {/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = __webpack_require__("../../../../../node_modules/debug/src/debug.js"); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/process/browser.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/debug/src/debug.js": -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = __webpack_require__("../../../../../node_modules/ms/index.js"); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - return debug; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} - - -/***/ }), - -/***/ "../../../../../node_modules/events/events.js": -/***/ (function(module, exports) { - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - - -/***/ }), - -/***/ "../../../../../node_modules/html-entities/index.js": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { - XmlEntities: __webpack_require__("../../../../../node_modules/html-entities/lib/xml-entities.js"), - Html4Entities: __webpack_require__("../../../../../node_modules/html-entities/lib/html4-entities.js"), - Html5Entities: __webpack_require__("../../../../../node_modules/html-entities/lib/html5-entities.js"), - AllHtmlEntities: __webpack_require__("../../../../../node_modules/html-entities/lib/html5-entities.js") -}; - - -/***/ }), - -/***/ "../../../../../node_modules/html-entities/lib/html4-entities.js": -/***/ (function(module, exports) { - -var HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'Aelig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams']; -var HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830]; - -var alphaIndex = {}; -var numIndex = {}; - -var i = 0; -var length = HTML_ALPHA.length; -while (i < length) { - var a = HTML_ALPHA[i]; - var c = HTML_CODES[i]; - alphaIndex[a] = String.fromCharCode(c); - numIndex[c] = a; - i++; -} - -/** - * @constructor - */ -function Html4Entities() {} - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.prototype.decode = function(str) { - if (!str || !str.length) { - return ''; - } - return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) { - var chr; - if (entity.charAt(0) === "#") { - var code = entity.charAt(1).toLowerCase() === 'x' ? - parseInt(entity.substr(2), 16) : - parseInt(entity.substr(1)); - - if (!(isNaN(code) || code < -32768 || code > 65535)) { - chr = String.fromCharCode(code); - } - } else { - chr = alphaIndex[entity]; - } - return chr || s; - }); -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.decode = function(str) { - return new Html4Entities().decode(str); -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.prototype.encode = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var alpha = numIndex[str.charCodeAt(i)]; - result += alpha ? "&" + alpha + ";" : str.charAt(i); - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.encode = function(str) { - return new Html4Entities().encode(str); -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.prototype.encodeNonUTF = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var cc = str.charCodeAt(i); - var alpha = numIndex[cc]; - if (alpha) { - result += "&" + alpha + ";"; - } else if (cc < 32 || cc > 126) { - result += "&#" + cc + ";"; - } else { - result += str.charAt(i); - } - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.encodeNonUTF = function(str) { - return new Html4Entities().encodeNonUTF(str); -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.prototype.encodeNonASCII = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var c = str.charCodeAt(i); - if (c <= 255) { - result += str[i++]; - continue; - } - result += '&#' + c + ';'; - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ -Html4Entities.encodeNonASCII = function(str) { - return new Html4Entities().encodeNonASCII(str); -}; - -module.exports = Html4Entities; - - -/***/ }), - -/***/ "../../../../../node_modules/html-entities/lib/html5-entities.js": -/***/ (function(module, exports) { - -var ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]]; - -var alphaIndex = {}; -var charIndex = {}; - -createIndexes(alphaIndex, charIndex); - -/** - * @constructor - */ -function Html5Entities() {} - -/** - * @param {String} str - * @returns {String} - */ -Html5Entities.prototype.decode = function(str) { - if (!str || !str.length) { - return ''; - } - return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) { - var chr; - if (entity.charAt(0) === "#") { - var code = entity.charAt(1) === 'x' ? - parseInt(entity.substr(2).toLowerCase(), 16) : - parseInt(entity.substr(1)); - - if (!(isNaN(code) || code < -32768 || code > 65535)) { - chr = String.fromCharCode(code); - } - } else { - chr = alphaIndex[entity]; - } - return chr || s; - }); -}; - -/** - * @param {String} str - * @returns {String} - */ - Html5Entities.decode = function(str) { - return new Html5Entities().decode(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -Html5Entities.prototype.encode = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var charInfo = charIndex[str.charCodeAt(i)]; - if (charInfo) { - var alpha = charInfo[str.charCodeAt(i + 1)]; - if (alpha) { - i++; - } else { - alpha = charInfo['']; - } - if (alpha) { - result += "&" + alpha + ";"; - i++; - continue; - } - } - result += str.charAt(i); - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ - Html5Entities.encode = function(str) { - return new Html5Entities().encode(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -Html5Entities.prototype.encodeNonUTF = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var c = str.charCodeAt(i); - var charInfo = charIndex[c]; - if (charInfo) { - var alpha = charInfo[str.charCodeAt(i + 1)]; - if (alpha) { - i++; - } else { - alpha = charInfo['']; - } - if (alpha) { - result += "&" + alpha + ";"; - i++; - continue; - } - } - if (c < 32 || c > 126) { - result += '&#' + c + ';'; - } else { - result += str.charAt(i); - } - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ - Html5Entities.encodeNonUTF = function(str) { - return new Html5Entities().encodeNonUTF(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -Html5Entities.prototype.encodeNonASCII = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var c = str.charCodeAt(i); - if (c <= 255) { - result += str[i++]; - continue; - } - result += '&#' + c + ';'; - i++ - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ - Html5Entities.encodeNonASCII = function(str) { - return new Html5Entities().encodeNonASCII(str); - }; - -/** - * @param {Object} alphaIndex Passed by reference. - * @param {Object} charIndex Passed by reference. - */ -function createIndexes(alphaIndex, charIndex) { - var i = ENTITIES.length; - var _results = []; - while (i--) { - var e = ENTITIES[i]; - var alpha = e[0]; - var chars = e[1]; - var chr = chars[0]; - var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39; - var charInfo; - if (addChar) { - charInfo = charIndex[chr] = charIndex[chr] || {}; - } - if (chars[1]) { - var chr2 = chars[1]; - alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2); - _results.push(addChar && (charInfo[chr2] = alpha)); - } else { - alphaIndex[alpha] = String.fromCharCode(chr); - _results.push(addChar && (charInfo[''] = alpha)); - } - } -} - -module.exports = Html5Entities; - - -/***/ }), - -/***/ "../../../../../node_modules/html-entities/lib/xml-entities.js": -/***/ (function(module, exports) { - -var ALPHA_INDEX = { - '<': '<', - '>': '>', - '"': '"', - '&apos': '\'', - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': '\'', - '&': '&' -}; - -var CHAR_INDEX = { - 60: 'lt', - 62: 'gt', - 34: 'quot', - 39: 'apos', - 38: 'amp' -}; - -var CHAR_S_INDEX = { - '<': '<', - '>': '>', - '"': '"', - '\'': ''', - '&': '&' -}; - -/** - * @constructor - */ -function XmlEntities() {} - -/** - * @param {String} str - * @returns {String} - */ -XmlEntities.prototype.encode = function(str) { - if (!str || !str.length) { - return ''; - } - return str.replace(/<|>|"|'|&/g, function(s) { - return CHAR_S_INDEX[s]; - }); -}; - -/** - * @param {String} str - * @returns {String} - */ - XmlEntities.encode = function(str) { - return new XmlEntities().encode(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -XmlEntities.prototype.decode = function(str) { - if (!str || !str.length) { - return ''; - } - return str.replace(/&#?[0-9a-zA-Z]+;?/g, function(s) { - if (s.charAt(1) === '#') { - var code = s.charAt(2).toLowerCase() === 'x' ? - parseInt(s.substr(3), 16) : - parseInt(s.substr(2)); - - if (isNaN(code) || code < -32768 || code > 65535) { - return ''; - } - return String.fromCharCode(code); - } - return ALPHA_INDEX[s] || s; - }); -}; - -/** - * @param {String} str - * @returns {String} - */ - XmlEntities.decode = function(str) { - return new XmlEntities().decode(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -XmlEntities.prototype.encodeNonUTF = function(str) { - if (!str || !str.length) { - return ''; - } - var strLength = str.length; - var result = ''; - var i = 0; - while (i < strLength) { - var c = str.charCodeAt(i); - var alpha = CHAR_INDEX[c]; - if (alpha) { - result += "&" + alpha + ";"; - i++; - continue; - } - if (c < 32 || c > 126) { - result += '&#' + c + ';'; - } else { - result += str.charAt(i); - } - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ - XmlEntities.encodeNonUTF = function(str) { - return new XmlEntities().encodeNonUTF(str); - }; - -/** - * @param {String} str - * @returns {String} - */ -XmlEntities.prototype.encodeNonASCII = function(str) { - if (!str || !str.length) { - return ''; - } - var strLenght = str.length; - var result = ''; - var i = 0; - while (i < strLenght) { - var c = str.charCodeAt(i); - if (c <= 255) { - result += str[i++]; - continue; - } - result += '&#' + c + ';'; - i++; - } - return result; -}; - -/** - * @param {String} str - * @returns {String} - */ - XmlEntities.encodeNonASCII = function(str) { - return new XmlEntities().encodeNonASCII(str); - }; - -module.exports = XmlEntities; - - -/***/ }), - -/***/ "../../../../../node_modules/inherits/inherits_browser.js": -/***/ (function(module, exports) { - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - - -/***/ }), - -/***/ "../../../../../node_modules/jquery/dist/jquery.js": -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * jQuery JavaScript Library v3.2.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2017-03-20T18:59Z - */ -( 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.2.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 = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.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"; - }, - - 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 ); - }, - - 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; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -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 ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return 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 = 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, noValue ) { - 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 { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // 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.apply( 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, - !remaining ); - - // 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, - - // 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 ( Array.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 || Array.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 && 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 && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return 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; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( ">tbody", elem )[ 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, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - 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]).+)/, - rcustomProp = /^--/, - 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; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -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 computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // 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 ] ); - - // Fall back to offsetWidth/Height when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - if ( val === "auto" ) { - val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; - } - - // 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 ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( 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 ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - 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 ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( 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 ( Array.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, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - 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 ( Array.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 there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - 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 ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -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 - if ( jQuery.fx.off ) { - 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 ]; - - // Run the timer and safely remove it when done (allowing for external removal) - 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 ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = 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" && - 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 ( Array.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 || - !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 ( Array.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 ( Array.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 ( Array.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 ( Array.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; -}; - - - - -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 doc, docElem, rect, win, - elem = this[ 0 ]; - - if ( !elem ) { - return; - } - - // Return zeros for disconnected and hidden (display: none) elements (gh-2310) - // 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(); - - doc = elem.ownerDocument; - docElem = doc.documentElement; - win = doc.defaultView; - - return { - top: rect.top + win.pageYOffset - docElem.clientTop, - left: rect.left + win.pageXOffset - docElem.clientLeft - }; - }, - - 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 ( !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 ) { - - // Coalesce documents and windows - var win; - if ( jQuery.isWindow( elem ) ) { - win = elem; - } else if ( elem.nodeType === 9 ) { - win = elem.defaultView; - } - - 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.holdReady = function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } -}; -jQuery.isArray = Array.isArray; -jQuery.parseJSON = JSON.parse; -jQuery.nodeName = nodeName; - - - - -// 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 ( true ) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { - return jQuery; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); -} - - - - -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; -} ); - - -/***/ }), - -/***/ "../../../../../node_modules/json3/lib/json3.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */ -;(function () { - // Detect the `define` function exposed by asynchronous module loaders. The - // strict `define` check is necessary for compatibility with `r.js`. - var isLoader = "function" === "function" && __webpack_require__("../../../../../node_modules/webpack/buildin/amd-options.js"); - - // A set of types used to distinguish objects from primitives. - var objectTypes = { - "function": true, - "object": true - }; - - // Detect the `exports` object exposed by CommonJS implementations. - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - // Use the `global` object exposed by Node (including Browserify via - // `insert-module-globals`), Narwhal, and Ringo as the default context, - // and the `window` object in browsers. Rhino exports a `global` function - // instead. - var root = objectTypes[typeof window] && window || this, - freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global; - - if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) { - root = freeGlobal; - } - - // Public: Initializes JSON 3 using the given `context` object, attaching the - // `stringify` and `parse` functions to the specified `exports` object. - function runInContext(context, exports) { - context || (context = root["Object"]()); - exports || (exports = root["Object"]()); - - // Native constructor aliases. - var Number = context["Number"] || root["Number"], - String = context["String"] || root["String"], - Object = context["Object"] || root["Object"], - Date = context["Date"] || root["Date"], - SyntaxError = context["SyntaxError"] || root["SyntaxError"], - TypeError = context["TypeError"] || root["TypeError"], - Math = context["Math"] || root["Math"], - nativeJSON = context["JSON"] || root["JSON"]; - - // Delegate to the native `stringify` and `parse` implementations. - if (typeof nativeJSON == "object" && nativeJSON) { - exports.stringify = nativeJSON.stringify; - exports.parse = nativeJSON.parse; - } - - // Convenience aliases. - var objectProto = Object.prototype, - getClass = objectProto.toString, - isProperty, forEach, undef; - - // Test the `Date#getUTC*` methods. Based on work by @Yaffle. - var isExtended = new Date(-3509827334573292); - try { - // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical - // results for certain dates in Opera >= 10.53. - isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 && - // Safari < 2.0.2 stores the internal millisecond time value correctly, - // but clips the values returned by the date methods to the range of - // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]). - isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708; - } catch (exception) {} - - // Internal: Determines whether the native `JSON.stringify` and `parse` - // implementations are spec-compliant. Based on work by Ken Snyder. - function has(name) { - if (has[name] !== undef) { - // Return cached feature test result. - return has[name]; - } - var isSupported; - if (name == "bug-string-char-index") { - // IE <= 7 doesn't support accessing string characters using square - // bracket notation. IE 8 only supports this for primitives. - isSupported = "a"[0] != "a"; - } else if (name == "json") { - // Indicates whether both `JSON.stringify` and `JSON.parse` are - // supported. - isSupported = has("json-stringify") && has("json-parse"); - } else { - var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'; - // Test `JSON.stringify`. - if (name == "json-stringify") { - var stringify = exports.stringify, stringifySupported = typeof stringify == "function" && isExtended; - if (stringifySupported) { - // A test function object with a custom `toJSON` method. - (value = function () { - return 1; - }).toJSON = value; - try { - stringifySupported = - // Firefox 3.1b1 and b2 serialize string, number, and boolean - // primitives as object literals. - stringify(0) === "0" && - // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object - // literals. - stringify(new Number()) === "0" && - stringify(new String()) == '""' && - // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or - // does not define a canonical JSON representation (this applies to - // objects with `toJSON` properties as well, *unless* they are nested - // within an object or array). - stringify(getClass) === undef && - // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and - // FF 3.1b3 pass this test. - stringify(undef) === undef && - // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s, - // respectively, if the value is omitted entirely. - stringify() === undef && - // FF 3.1b1, 2 throw an error if the given value is not a number, - // string, array, object, Boolean, or `null` literal. This applies to - // objects with custom `toJSON` methods as well, unless they are nested - // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON` - // methods entirely. - stringify(value) === "1" && - stringify([value]) == "[1]" && - // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of - // `"[null]"`. - stringify([undef]) == "[null]" && - // YUI 3.0.0b1 fails to serialize `null` literals. - stringify(null) == "null" && - // FF 3.1b1, 2 halts serialization if an array contains a function: - // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3 - // elides non-JSON values from objects and arrays, unless they - // define custom `toJSON` methods. - stringify([undef, getClass, null]) == "[null,null,null]" && - // Simple serialization test. FF 3.1b1 uses Unicode escape sequences - // where character escape codes are expected (e.g., `\b` => `\u0008`). - stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized && - // FF 3.1b1 and b2 ignore the `filter` and `width` arguments. - stringify(null, value) === "1" && - stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" && - // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly - // serialize extended years. - stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' && - // The milliseconds are optional in ES 5, but required in 5.1. - stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' && - // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative - // four-digit years instead of six-digit years. Credits: @Yaffle. - stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' && - // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond - // values less than 1000. Credits: @Yaffle. - stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"'; - } catch (exception) { - stringifySupported = false; - } - } - isSupported = stringifySupported; - } - // Test `JSON.parse`. - if (name == "json-parse") { - var parse = exports.parse; - if (typeof parse == "function") { - try { - // FF 3.1b1, b2 will throw an exception if a bare literal is provided. - // Conforming implementations should also coerce the initial argument to - // a string prior to parsing. - if (parse("0") === 0 && !parse(false)) { - // Simple parsing test. - value = parse(serialized); - var parseSupported = value["a"].length == 5 && value["a"][0] === 1; - if (parseSupported) { - try { - // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings. - parseSupported = !parse('"\t"'); - } catch (exception) {} - if (parseSupported) { - try { - // FF 4.0 and 4.0.1 allow leading `+` signs and leading - // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow - // certain octal literals. - parseSupported = parse("01") !== 1; - } catch (exception) {} - } - if (parseSupported) { - try { - // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal - // points. These environments, along with FF 3.1b1 and 2, - // also allow trailing commas in JSON objects and arrays. - parseSupported = parse("1.") !== 1; - } catch (exception) {} - } - } - } - } catch (exception) { - parseSupported = false; - } - } - isSupported = parseSupported; - } - } - return has[name] = !!isSupported; - } - - if (!has("json")) { - // Common `[[Class]]` name aliases. - var functionClass = "[object Function]", - dateClass = "[object Date]", - numberClass = "[object Number]", - stringClass = "[object String]", - arrayClass = "[object Array]", - booleanClass = "[object Boolean]"; - - // Detect incomplete support for accessing string characters by index. - var charIndexBuggy = has("bug-string-char-index"); - - // Define additional utility methods if the `Date` methods are buggy. - if (!isExtended) { - var floor = Math.floor; - // A mapping between the months of the year and the number of days between - // January 1st and the first of the respective month. - var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - // Internal: Calculates the number of days between the Unix epoch and the - // first day of the given month. - var getDay = function (year, month) { - return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400); - }; - } - - // Internal: Determines if a property is a direct property of the given - // object. Delegates to the native `Object#hasOwnProperty` method. - if (!(isProperty = objectProto.hasOwnProperty)) { - isProperty = function (property) { - var members = {}, constructor; - if ((members.__proto__ = null, members.__proto__ = { - // The *proto* property cannot be set multiple times in recent - // versions of Firefox and SeaMonkey. - "toString": 1 - }, members).toString != getClass) { - // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but - // supports the mutable *proto* property. - isProperty = function (property) { - // Capture and break the object's prototype chain (see section 8.6.2 - // of the ES 5.1 spec). The parenthesized expression prevents an - // unsafe transformation by the Closure Compiler. - var original = this.__proto__, result = property in (this.__proto__ = null, this); - // Restore the original prototype chain. - this.__proto__ = original; - return result; - }; - } else { - // Capture a reference to the top-level `Object` constructor. - constructor = members.constructor; - // Use the `constructor` property to simulate `Object#hasOwnProperty` in - // other environments. - isProperty = function (property) { - var parent = (this.constructor || constructor).prototype; - return property in this && !(property in parent && this[property] === parent[property]); - }; - } - members = null; - return isProperty.call(this, property); - }; - } - - // Internal: Normalizes the `for...in` iteration algorithm across - // environments. Each enumerated key is yielded to a `callback` function. - forEach = function (object, callback) { - var size = 0, Properties, members, property; - - // Tests for bugs in the current environment's `for...in` algorithm. The - // `valueOf` property inherits the non-enumerable flag from - // `Object.prototype` in older versions of IE, Netscape, and Mozilla. - (Properties = function () { - this.valueOf = 0; - }).prototype.valueOf = 0; - - // Iterate over a new instance of the `Properties` class. - members = new Properties(); - for (property in members) { - // Ignore all properties inherited from `Object.prototype`. - if (isProperty.call(members, property)) { - size++; - } - } - Properties = members = null; - - // Normalize the iteration algorithm. - if (!size) { - // A list of non-enumerable properties inherited from `Object.prototype`. - members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"]; - // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable - // properties. - forEach = function (object, callback) { - var isFunction = getClass.call(object) == functionClass, property, length; - var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty; - for (property in object) { - // Gecko <= 1.0 enumerates the `prototype` property of functions under - // certain conditions; IE does not. - if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) { - callback(property); - } - } - // Manually invoke the callback for each non-enumerable property. - for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property)); - }; - } else if (size == 2) { - // Safari <= 2.0.4 enumerates shadowed properties twice. - forEach = function (object, callback) { - // Create a set of iterated properties. - var members = {}, isFunction = getClass.call(object) == functionClass, property; - for (property in object) { - // Store each property name to prevent double enumeration. The - // `prototype` property of functions is not enumerated due to cross- - // environment inconsistencies. - if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) { - callback(property); - } - } - }; - } else { - // No bugs detected; use the standard `for...in` algorithm. - forEach = function (object, callback) { - var isFunction = getClass.call(object) == functionClass, property, isConstructor; - for (property in object) { - if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) { - callback(property); - } - } - // Manually invoke the callback for the `constructor` property due to - // cross-environment inconsistencies. - if (isConstructor || isProperty.call(object, (property = "constructor"))) { - callback(property); - } - }; - } - return forEach(object, callback); - }; - - // Public: Serializes a JavaScript `value` as a JSON string. The optional - // `filter` argument may specify either a function that alters how object and - // array members are serialized, or an array of strings and numbers that - // indicates which properties should be serialized. The optional `width` - // argument may be either a string or number that specifies the indentation - // level of the output. - if (!has("json-stringify")) { - // Internal: A map of control characters and their escaped equivalents. - var Escapes = { - 92: "\\\\", - 34: '\\"', - 8: "\\b", - 12: "\\f", - 10: "\\n", - 13: "\\r", - 9: "\\t" - }; - - // Internal: Converts `value` into a zero-padded string such that its - // length is at least equal to `width`. The `width` must be <= 6. - var leadingZeroes = "000000"; - var toPaddedString = function (width, value) { - // The `|| 0` expression is necessary to work around a bug in - // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`. - return (leadingZeroes + (value || 0)).slice(-width); - }; - - // Internal: Double-quotes a string `value`, replacing all ASCII control - // characters (characters with code unit values between 0 and 31) with - // their escaped equivalents. This is an implementation of the - // `Quote(value)` operation defined in ES 5.1 section 15.12.3. - var unicodePrefix = "\\u00"; - var quote = function (value) { - var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10; - var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value); - for (; index < length; index++) { - var charCode = value.charCodeAt(index); - // If the character is a control character, append its Unicode or - // shorthand escape sequence; otherwise, append the character as-is. - switch (charCode) { - case 8: case 9: case 10: case 12: case 13: case 34: case 92: - result += Escapes[charCode]; - break; - default: - if (charCode < 32) { - result += unicodePrefix + toPaddedString(2, charCode.toString(16)); - break; - } - result += useCharIndex ? symbols[index] : value.charAt(index); - } - } - return result + '"'; - }; - - // Internal: Recursively serializes an object. Implements the - // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations. - var serialize = function (property, object, callback, properties, whitespace, indentation, stack) { - var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result; - try { - // Necessary for host object support. - value = object[property]; - } catch (exception) {} - if (typeof value == "object" && value) { - className = getClass.call(value); - if (className == dateClass && !isProperty.call(value, "toJSON")) { - if (value > -1 / 0 && value < 1 / 0) { - // Dates are serialized according to the `Date#toJSON` method - // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15 - // for the ISO 8601 date time string format. - if (getDay) { - // Manually compute the year, month, date, hours, minutes, - // seconds, and milliseconds if the `getUTC*` methods are - // buggy. Adapted from @Yaffle's `date-shim` project. - date = floor(value / 864e5); - for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++); - for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++); - date = 1 + date - getDay(year, month); - // The `time` value specifies the time within the day (see ES - // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used - // to compute `A modulo B`, as the `%` operator does not - // correspond to the `modulo` operation for negative numbers. - time = (value % 864e5 + 864e5) % 864e5; - // The hours, minutes, seconds, and milliseconds are obtained by - // decomposing the time within the day. See section 15.9.1.10. - hours = floor(time / 36e5) % 24; - minutes = floor(time / 6e4) % 60; - seconds = floor(time / 1e3) % 60; - milliseconds = time % 1e3; - } else { - year = value.getUTCFullYear(); - month = value.getUTCMonth(); - date = value.getUTCDate(); - hours = value.getUTCHours(); - minutes = value.getUTCMinutes(); - seconds = value.getUTCSeconds(); - milliseconds = value.getUTCMilliseconds(); - } - // Serialize extended years correctly. - value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) + - "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) + - // Months, dates, hours, minutes, and seconds should have two - // digits; milliseconds should have three. - "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) + - // Milliseconds are optional in ES 5.0, but required in 5.1. - "." + toPaddedString(3, milliseconds) + "Z"; - } else { - value = null; - } - } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) { - // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the - // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3 - // ignores all `toJSON` methods on these objects unless they are - // defined directly on an instance. - value = value.toJSON(property); - } - } - if (callback) { - // If a replacement function was provided, call it to obtain the value - // for serialization. - value = callback.call(object, property, value); - } - if (value === null) { - return "null"; - } - className = getClass.call(value); - if (className == booleanClass) { - // Booleans are represented literally. - return "" + value; - } else if (className == numberClass) { - // JSON numbers must be finite. `Infinity` and `NaN` are serialized as - // `"null"`. - return value > -1 / 0 && value < 1 / 0 ? "" + value : "null"; - } else if (className == stringClass) { - // Strings are double-quoted and escaped. - return quote("" + value); - } - // Recursively serialize objects and arrays. - if (typeof value == "object") { - // Check for cyclic structures. This is a linear search; performance - // is inversely proportional to the number of unique nested objects. - for (length = stack.length; length--;) { - if (stack[length] === value) { - // Cyclic structures cannot be serialized by `JSON.stringify`. - throw TypeError(); - } - } - // Add the object to the stack of traversed objects. - stack.push(value); - results = []; - // Save the current indentation level and indent one additional level. - prefix = indentation; - indentation += whitespace; - if (className == arrayClass) { - // Recursively serialize array elements. - for (index = 0, length = value.length; index < length; index++) { - element = serialize(index, value, callback, properties, whitespace, indentation, stack); - results.push(element === undef ? "null" : element); - } - result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]"; - } else { - // Recursively serialize object members. Members are selected from - // either a user-specified list of property names, or the object - // itself. - forEach(properties || value, function (property) { - var element = serialize(property, value, callback, properties, whitespace, indentation, stack); - if (element !== undef) { - // According to ES 5.1 section 15.12.3: "If `gap` {whitespace} - // is not the empty string, let `member` {quote(property) + ":"} - // be the concatenation of `member` and the `space` character." - // The "`space` character" refers to the literal space - // character, not the `space` {width} argument provided to - // `JSON.stringify`. - results.push(quote(property) + ":" + (whitespace ? " " : "") + element); - } - }); - result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}"; - } - // Remove the object from the traversed object stack. - stack.pop(); - return result; - } - }; - - // Public: `JSON.stringify`. See ES 5.1 section 15.12.3. - exports.stringify = function (source, filter, width) { - var whitespace, callback, properties, className; - if (objectTypes[typeof filter] && filter) { - if ((className = getClass.call(filter)) == functionClass) { - callback = filter; - } else if (className == arrayClass) { - // Convert the property names array into a makeshift set. - properties = {}; - for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1)); - } - } - if (width) { - if ((className = getClass.call(width)) == numberClass) { - // Convert the `width` to an integer and create a string containing - // `width` number of space characters. - if ((width -= width % 1) > 0) { - for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " "); - } - } else if (className == stringClass) { - whitespace = width.length <= 10 ? width : width.slice(0, 10); - } - } - // Opera <= 7.54u2 discards the values associated with empty string keys - // (`""`) only if they are used directly within an object member list - // (e.g., `!("" in { "": 1})`). - return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []); - }; - } - - // Public: Parses a JSON source string. - if (!has("json-parse")) { - var fromCharCode = String.fromCharCode; - - // Internal: A map of escaped control characters and their unescaped - // equivalents. - var Unescapes = { - 92: "\\", - 34: '"', - 47: "/", - 98: "\b", - 116: "\t", - 110: "\n", - 102: "\f", - 114: "\r" - }; - - // Internal: Stores the parser state. - var Index, Source; - - // Internal: Resets the parser state and throws a `SyntaxError`. - var abort = function () { - Index = Source = null; - throw SyntaxError(); - }; - - // Internal: Returns the next token, or `"$"` if the parser has reached - // the end of the source string. A token may be a string, number, `null` - // literal, or Boolean literal. - var lex = function () { - var source = Source, length = source.length, value, begin, position, isSigned, charCode; - while (Index < length) { - charCode = source.charCodeAt(Index); - switch (charCode) { - case 9: case 10: case 13: case 32: - // Skip whitespace tokens, including tabs, carriage returns, line - // feeds, and space characters. - Index++; - break; - case 123: case 125: case 91: case 93: case 58: case 44: - // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at - // the current position. - value = charIndexBuggy ? source.charAt(Index) : source[Index]; - Index++; - return value; - case 34: - // `"` delimits a JSON string; advance to the next character and - // begin parsing the string. String tokens are prefixed with the - // sentinel `@` character to distinguish them from punctuators and - // end-of-string tokens. - for (value = "@", Index++; Index < length;) { - charCode = source.charCodeAt(Index); - if (charCode < 32) { - // Unescaped ASCII control characters (those with a code unit - // less than the space character) are not permitted. - abort(); - } else if (charCode == 92) { - // A reverse solidus (`\`) marks the beginning of an escaped - // control character (including `"`, `\`, and `/`) or Unicode - // escape sequence. - charCode = source.charCodeAt(++Index); - switch (charCode) { - case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114: - // Revive escaped control characters. - value += Unescapes[charCode]; - Index++; - break; - case 117: - // `\u` marks the beginning of a Unicode escape sequence. - // Advance to the first character and validate the - // four-digit code point. - begin = ++Index; - for (position = Index + 4; Index < position; Index++) { - charCode = source.charCodeAt(Index); - // A valid sequence comprises four hexdigits (case- - // insensitive) that form a single hexadecimal value. - if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) { - // Invalid Unicode escape sequence. - abort(); - } - } - // Revive the escaped character. - value += fromCharCode("0x" + source.slice(begin, Index)); - break; - default: - // Invalid escape sequence. - abort(); - } - } else { - if (charCode == 34) { - // An unescaped double-quote character marks the end of the - // string. - break; - } - charCode = source.charCodeAt(Index); - begin = Index; - // Optimize for the common case where a string is valid. - while (charCode >= 32 && charCode != 92 && charCode != 34) { - charCode = source.charCodeAt(++Index); - } - // Append the string as-is. - value += source.slice(begin, Index); - } - } - if (source.charCodeAt(Index) == 34) { - // Advance to the next character and return the revived string. - Index++; - return value; - } - // Unterminated string. - abort(); - default: - // Parse numbers and literals. - begin = Index; - // Advance past the negative sign, if one is specified. - if (charCode == 45) { - isSigned = true; - charCode = source.charCodeAt(++Index); - } - // Parse an integer or floating-point value. - if (charCode >= 48 && charCode <= 57) { - // Leading zeroes are interpreted as octal literals. - if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) { - // Illegal octal literal. - abort(); - } - isSigned = false; - // Parse the integer component. - for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++); - // Floats cannot contain a leading decimal point; however, this - // case is already accounted for by the parser. - if (source.charCodeAt(Index) == 46) { - position = ++Index; - // Parse the decimal component. - for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++); - if (position == Index) { - // Illegal trailing decimal. - abort(); - } - Index = position; - } - // Parse exponents. The `e` denoting the exponent is - // case-insensitive. - charCode = source.charCodeAt(Index); - if (charCode == 101 || charCode == 69) { - charCode = source.charCodeAt(++Index); - // Skip past the sign following the exponent, if one is - // specified. - if (charCode == 43 || charCode == 45) { - Index++; - } - // Parse the exponential component. - for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++); - if (position == Index) { - // Illegal empty exponent. - abort(); - } - Index = position; - } - // Coerce the parsed value to a JavaScript number. - return +source.slice(begin, Index); - } - // A negative sign may only precede numbers. - if (isSigned) { - abort(); - } - // `true`, `false`, and `null` literals. - if (source.slice(Index, Index + 4) == "true") { - Index += 4; - return true; - } else if (source.slice(Index, Index + 5) == "false") { - Index += 5; - return false; - } else if (source.slice(Index, Index + 4) == "null") { - Index += 4; - return null; - } - // Unrecognized token. - abort(); - } - } - // Return the sentinel `$` character if the parser has reached the end - // of the source string. - return "$"; - }; - - // Internal: Parses a JSON `value` token. - var get = function (value) { - var results, hasMembers; - if (value == "$") { - // Unexpected end of input. - abort(); - } - if (typeof value == "string") { - if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") { - // Remove the sentinel `@` character. - return value.slice(1); - } - // Parse object and array literals. - if (value == "[") { - // Parses a JSON array, returning a new JavaScript array. - results = []; - for (;; hasMembers || (hasMembers = true)) { - value = lex(); - // A closing square bracket marks the end of the array literal. - if (value == "]") { - break; - } - // If the array literal contains elements, the current token - // should be a comma separating the previous element from the - // next. - if (hasMembers) { - if (value == ",") { - value = lex(); - if (value == "]") { - // Unexpected trailing `,` in array literal. - abort(); - } - } else { - // A `,` must separate each array element. - abort(); - } - } - // Elisions and leading commas are not permitted. - if (value == ",") { - abort(); - } - results.push(get(value)); - } - return results; - } else if (value == "{") { - // Parses a JSON object, returning a new JavaScript object. - results = {}; - for (;; hasMembers || (hasMembers = true)) { - value = lex(); - // A closing curly brace marks the end of the object literal. - if (value == "}") { - break; - } - // If the object literal contains members, the current token - // should be a comma separator. - if (hasMembers) { - if (value == ",") { - value = lex(); - if (value == "}") { - // Unexpected trailing `,` in object literal. - abort(); - } - } else { - // A `,` must separate each object member. - abort(); - } - } - // Leading commas are not permitted, object property names must be - // double-quoted strings, and a `:` must separate each property - // name and value. - if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") { - abort(); - } - results[value.slice(1)] = get(lex()); - } - return results; - } - // Unexpected token encountered. - abort(); - } - return value; - }; - - // Internal: Updates a traversed object member. - var update = function (source, property, callback) { - var element = walk(source, property, callback); - if (element === undef) { - delete source[property]; - } else { - source[property] = element; - } - }; - - // Internal: Recursively traverses a parsed JSON object, invoking the - // `callback` function for each value. This is an implementation of the - // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2. - var walk = function (source, property, callback) { - var value = source[property], length; - if (typeof value == "object" && value) { - // `forEach` can't be used to traverse an array in Opera <= 8.54 - // because its `Object#hasOwnProperty` implementation returns `false` - // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`). - if (getClass.call(value) == arrayClass) { - for (length = value.length; length--;) { - update(value, length, callback); - } - } else { - forEach(value, function (property) { - update(value, property, callback); - }); - } - } - return callback.call(source, property, value); - }; - - // Public: `JSON.parse`. See ES 5.1 section 15.12.2. - exports.parse = function (source, callback) { - var result, value; - Index = 0; - Source = "" + source; - result = get(lex()); - // If a JSON string contains multiple tokens, it is invalid. - if (lex() != "$") { - abort(); - } - // Reset the parser state. - Index = Source = null; - return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result; - }; - } - } - - exports["runInContext"] = runInContext; - return exports; - } - - if (freeExports && !isLoader) { - // Export for CommonJS environments. - runInContext(root, freeExports); - } else { - // Export for web browsers and JavaScript engines. - var nativeJSON = root.JSON, - previousJSON = root["JSON3"], - isRestored = false; - - var JSON3 = runInContext(root, (root["JSON3"] = { - // Public: Restores the original value of the global `JSON` object and - // returns a reference to the `JSON3` object. - "noConflict": function () { - if (!isRestored) { - isRestored = true; - root.JSON = nativeJSON; - root["JSON3"] = previousJSON; - nativeJSON = previousJSON = null; - } - return JSON3; - } - })); - - root.JSON = { - "parse": JSON3.parse, - "stringify": JSON3.stringify - }; - } - - // Export for asynchronous module loaders. - if (isLoader) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { - return JSON3; - }.call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } -}).call(this); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/module.js")(module), __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/js/lightgallery.js": -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! lightgallery - v1.6.0 - 2017-08-08 -* http://sachinchoolur.github.io/lightGallery/ -* Copyright (c) 2017 Sachin N; Licensed GPLv3 */ -(function (root, factory) { - if (true) { - // AMD. Register as an anonymous module unless amdModuleId is set - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("../../../../../node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (a0) { - return (factory(a0)); - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(require('jquery')); - } else { - factory(root["jQuery"]); - } -}(this, function ($) { - -(function() { - 'use strict'; - - var defaults = { - - mode: 'lg-slide', - - // Ex : 'ease' - cssEasing: 'ease', - - //'for jquery animation' - easing: 'linear', - speed: 600, - height: '100%', - width: '100%', - addClass: '', - startClass: 'lg-start-zoom', - backdropDuration: 150, - hideBarsDelay: 6000, - - useLeft: false, - - closable: true, - loop: true, - escKey: true, - keyPress: true, - controls: true, - slideEndAnimatoin: true, - hideControlOnEnd: false, - mousewheel: true, - - getCaptionFromTitleOrAlt: true, - - // .lg-item || '.lg-sub-html' - appendSubHtmlTo: '.lg-sub-html', - - subHtmlSelectorRelative: false, - - /** - * @desc number of preload slides - * will exicute only after the current slide is fully loaded. - * - * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th - * slide will be loaded in the background after the 4th slide is fully loaded.. - * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ... - * - */ - preload: 1, - showAfterLoad: true, - selector: '', - selectWithin: '', - nextHtml: '', - prevHtml: '', - - // 0, 1 - index: false, - - iframeMaxWidth: '100%', - - download: true, - counter: true, - appendCounterTo: '.lg-toolbar', - - swipeThreshold: 50, - enableSwipe: true, - enableDrag: true, - - dynamic: false, - dynamicEl: [], - galleryId: 1 - }; - - function Plugin(element, options) { - - // Current lightGallery element - this.el = element; - - // Current jquery element - this.$el = $(element); - - // lightGallery settings - this.s = $.extend({}, defaults, options); - - // When using dynamic mode, ensure dynamicEl is an array - if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) { - throw ('When using dynamic mode, you must also define dynamicEl as an Array.'); - } - - // lightGallery modules - this.modules = {}; - - // false when lightgallery complete first slide; - this.lGalleryOn = false; - - this.lgBusy = false; - - // Timeout function for hiding controls; - this.hideBartimeout = false; - - // To determine browser supports for touch events; - this.isTouch = ('ontouchstart' in document.documentElement); - - // Disable hideControlOnEnd if sildeEndAnimation is true - if (this.s.slideEndAnimatoin) { - this.s.hideControlOnEnd = false; - } - - // Gallery items - if (this.s.dynamic) { - this.$items = this.s.dynamicEl; - } else { - if (this.s.selector === 'this') { - this.$items = this.$el; - } else if (this.s.selector !== '') { - if (this.s.selectWithin) { - this.$items = $(this.s.selectWithin).find(this.s.selector); - } else { - this.$items = this.$el.find($(this.s.selector)); - } - } else { - this.$items = this.$el.children(); - } - } - - // .lg-item - this.$slide = ''; - - // .lg-outer - this.$outer = ''; - - this.init(); - - return this; - } - - Plugin.prototype.init = function() { - - var _this = this; - - // s.preload should not be more than $item.length - if (_this.s.preload > _this.$items.length) { - _this.s.preload = _this.$items.length; - } - - // if dynamic option is enabled execute immediately - var _hash = window.location.hash; - if (_hash.indexOf('lg=' + this.s.galleryId) > 0) { - - _this.index = parseInt(_hash.split('&slide=')[1], 10); - - $('body').addClass('lg-from-hash'); - if (!$('body').hasClass('lg-on')) { - setTimeout(function() { - _this.build(_this.index); - }); - - $('body').addClass('lg-on'); - } - } - - if (_this.s.dynamic) { - - _this.$el.trigger('onBeforeOpen.lg'); - - _this.index = _this.s.index || 0; - - // prevent accidental double execution - if (!$('body').hasClass('lg-on')) { - setTimeout(function() { - _this.build(_this.index); - $('body').addClass('lg-on'); - }); - } - } else { - - // Using different namespace for click because click event should not unbind if selector is same object('this') - _this.$items.on('click.lgcustom', function(event) { - - // For IE8 - try { - event.preventDefault(); - event.preventDefault(); - } catch (er) { - event.returnValue = false; - } - - _this.$el.trigger('onBeforeOpen.lg'); - - _this.index = _this.s.index || _this.$items.index(this); - - // prevent accidental double execution - if (!$('body').hasClass('lg-on')) { - _this.build(_this.index); - $('body').addClass('lg-on'); - } - }); - } - - }; - - Plugin.prototype.build = function(index) { - - var _this = this; - - _this.structure(); - - // module constructor - $.each($.fn.lightGallery.modules, function(key) { - _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el); - }); - - // initiate slide function - _this.slide(index, false, false, false); - - if (_this.s.keyPress) { - _this.keyPress(); - } - - if (_this.$items.length > 1) { - - _this.arrow(); - - setTimeout(function() { - _this.enableDrag(); - _this.enableSwipe(); - }, 50); - - if (_this.s.mousewheel) { - _this.mousewheel(); - } - } else { - _this.$slide.on('click.lg', function() { - _this.$el.trigger('onSlideClick.lg'); - }); - } - - _this.counter(); - - _this.closeGallery(); - - _this.$el.trigger('onAfterOpen.lg'); - - // Hide controllers if mouse doesn't move for some period - _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() { - - _this.$outer.removeClass('lg-hide-items'); - - clearTimeout(_this.hideBartimeout); - - // Timeout will be cleared on each slide movement also - _this.hideBartimeout = setTimeout(function() { - _this.$outer.addClass('lg-hide-items'); - }, _this.s.hideBarsDelay); - - }); - - _this.$outer.trigger('mousemove.lg'); - - }; - - Plugin.prototype.structure = function() { - var list = ''; - var controls = ''; - var i = 0; - var subHtmlCont = ''; - var template; - var _this = this; - - $('body').append('<div class="lg-backdrop"></div>'); - $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms'); - - // Create gallery items - for (i = 0; i < this.$items.length; i++) { - list += '<div class="lg-item"></div>'; - } - - // Create controlls - if (this.s.controls && this.$items.length > 1) { - controls = '<div class="lg-actions">' + - '<button class="lg-prev lg-icon">' + this.s.prevHtml + '</button>' + - '<button class="lg-next lg-icon">' + this.s.nextHtml + '</button>' + - '</div>'; - } - - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - subHtmlCont = '<div class="lg-sub-html"></div>'; - } - - template = '<div class="lg-outer ' + this.s.addClass + ' ' + this.s.startClass + '">' + - '<div class="lg" style="width:' + this.s.width + '; height:' + this.s.height + '">' + - '<div class="lg-inner">' + list + '</div>' + - '<div class="lg-toolbar lg-group">' + - '<span class="lg-close lg-icon"></span>' + - '</div>' + - controls + - subHtmlCont + - '</div>' + - '</div>'; - - $('body').append(template); - this.$outer = $('.lg-outer'); - this.$slide = this.$outer.find('.lg-item'); - - if (this.s.useLeft) { - this.$outer.addClass('lg-use-left'); - - // Set mode lg-slide if use left is true; - this.s.mode = 'lg-slide'; - } else { - this.$outer.addClass('lg-use-css3'); - } - - // For fixed height gallery - _this.setTop(); - $(window).on('resize.lg orientationchange.lg', function() { - setTimeout(function() { - _this.setTop(); - }, 100); - }); - - // add class lg-current to remove initial transition - this.$slide.eq(this.index).addClass('lg-current'); - - // add Class for css support and transition mode - if (this.doCss()) { - this.$outer.addClass('lg-css3'); - } else { - this.$outer.addClass('lg-css'); - - // Set speed 0 because no animation will happen if browser doesn't support css3 - this.s.speed = 0; - } - - this.$outer.addClass(this.s.mode); - - if (this.s.enableDrag && this.$items.length > 1) { - this.$outer.addClass('lg-grab'); - } - - if (this.s.showAfterLoad) { - this.$outer.addClass('lg-show-after-load'); - } - - if (this.doCss()) { - var $inner = this.$outer.find('.lg-inner'); - $inner.css('transition-timing-function', this.s.cssEasing); - $inner.css('transition-duration', this.s.speed + 'ms'); - } - - setTimeout(function() { - $('.lg-backdrop').addClass('in'); - }); - - setTimeout(function() { - _this.$outer.addClass('lg-visible'); - }, this.s.backdropDuration); - - if (this.s.download) { - this.$outer.find('.lg-toolbar').append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'); - } - - // Store the current scroll top value to scroll back after closing the gallery.. - this.prevScrollTop = $(window).scrollTop(); - - }; - - // For fixed height gallery - Plugin.prototype.setTop = function() { - if (this.s.height !== '100%') { - var wH = $(window).height(); - var top = (wH - parseInt(this.s.height, 10)) / 2; - var $lGallery = this.$outer.find('.lg'); - if (wH >= parseInt(this.s.height, 10)) { - $lGallery.css('top', top + 'px'); - } else { - $lGallery.css('top', '0px'); - } - } - }; - - // Find css3 support - Plugin.prototype.doCss = function() { - // check for css animation support - var support = function() { - var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition']; - var root = document.documentElement; - var i = 0; - for (i = 0; i < transition.length; i++) { - if (transition[i] in root.style) { - return true; - } - } - }; - - if (support()) { - return true; - } - - return false; - }; - - /** - * @desc Check the given src is video - * @param {String} src - * @return {Object} video type - * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] } - */ - Plugin.prototype.isVideo = function(src, index) { - - var html; - if (this.s.dynamic) { - html = this.s.dynamicEl[index].html; - } else { - html = this.$items.eq(index).attr('data-html'); - } - - if (!src) { - if(html) { - return { - html5: true - }; - } else { - console.error('lightGallery :- data-src is not pvovided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html'); - return false; - } - } - - var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i); - var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i); - var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i); - var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i); - - if (youtube) { - return { - youtube: youtube - }; - } else if (vimeo) { - return { - vimeo: vimeo - }; - } else if (dailymotion) { - return { - dailymotion: dailymotion - }; - } else if (vk) { - return { - vk: vk - }; - } - }; - - /** - * @desc Create image counter - * Ex: 1/10 - */ - Plugin.prototype.counter = function() { - if (this.s.counter) { - $(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">' + (parseInt(this.index, 10) + 1) + '</span> / <span id="lg-counter-all">' + this.$items.length + '</span></div>'); - } - }; - - /** - * @desc add sub-html into the slide - * @param {Number} index - index of the slide - */ - Plugin.prototype.addHtml = function(index) { - var subHtml = null; - var subHtmlUrl; - var $currentEle; - if (this.s.dynamic) { - if (this.s.dynamicEl[index].subHtmlUrl) { - subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl; - } else { - subHtml = this.s.dynamicEl[index].subHtml; - } - } else { - $currentEle = this.$items.eq(index); - if ($currentEle.attr('data-sub-html-url')) { - subHtmlUrl = $currentEle.attr('data-sub-html-url'); - } else { - subHtml = $currentEle.attr('data-sub-html'); - if (this.s.getCaptionFromTitleOrAlt && !subHtml) { - subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt'); - } - } - } - - if (!subHtmlUrl) { - if (typeof subHtml !== 'undefined' && subHtml !== null) { - - // get first letter of subhtml - // if first letter starts with . or # get the html form the jQuery object - var fL = subHtml.substring(0, 1); - if (fL === '.' || fL === '#') { - if (this.s.subHtmlSelectorRelative && !this.s.dynamic) { - subHtml = $currentEle.find(subHtml).html(); - } else { - subHtml = $(subHtml).html(); - } - } - } else { - subHtml = ''; - } - } - - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - - if (subHtmlUrl) { - this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl); - } else { - this.$outer.find(this.s.appendSubHtmlTo).html(subHtml); - } - - } else { - - if (subHtmlUrl) { - this.$slide.eq(index).load(subHtmlUrl); - } else { - this.$slide.eq(index).append(subHtml); - } - } - - // Add lg-empty-html class if title doesn't exist - if (typeof subHtml !== 'undefined' && subHtml !== null) { - if (subHtml === '') { - this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html'); - } else { - this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html'); - } - } - - this.$el.trigger('onAfterAppendSubHtml.lg', [index]); - }; - - /** - * @desc Preload slides - * @param {Number} index - index of the slide - */ - Plugin.prototype.preload = function(index) { - var i = 1; - var j = 1; - for (i = 1; i <= this.s.preload; i++) { - if (i >= this.$items.length - index) { - break; - } - - this.loadContent(index + i, false, 0); - } - - for (j = 1; j <= this.s.preload; j++) { - if (index - j < 0) { - break; - } - - this.loadContent(index - j, false, 0); - } - }; - - /** - * @desc Load slide content into slide. - * @param {Number} index - index of the slide. - * @param {Boolean} rec - if true call loadcontent() function again. - * @param {Boolean} delay - delay for adding complete class. it is 0 except first time. - */ - Plugin.prototype.loadContent = function(index, rec, delay) { - - var _this = this; - var _hasPoster = false; - var _$img; - var _src; - var _poster; - var _srcset; - var _sizes; - var _html; - var getResponsiveSrc = function(srcItms) { - var rsWidth = []; - var rsSrc = []; - for (var i = 0; i < srcItms.length; i++) { - var __src = srcItms[i].split(' '); - - // Manage empty space - if (__src[0] === '') { - __src.splice(0, 1); - } - - rsSrc.push(__src[0]); - rsWidth.push(__src[1]); - } - - var wWidth = $(window).width(); - for (var j = 0; j < rsWidth.length; j++) { - if (parseInt(rsWidth[j], 10) > wWidth) { - _src = rsSrc[j]; - break; - } - } - }; - - if (_this.s.dynamic) { - - if (_this.s.dynamicEl[index].poster) { - _hasPoster = true; - _poster = _this.s.dynamicEl[index].poster; - } - - _html = _this.s.dynamicEl[index].html; - _src = _this.s.dynamicEl[index].src; - - if (_this.s.dynamicEl[index].responsive) { - var srcDyItms = _this.s.dynamicEl[index].responsive.split(','); - getResponsiveSrc(srcDyItms); - } - - _srcset = _this.s.dynamicEl[index].srcset; - _sizes = _this.s.dynamicEl[index].sizes; - - } else { - - if (_this.$items.eq(index).attr('data-poster')) { - _hasPoster = true; - _poster = _this.$items.eq(index).attr('data-poster'); - } - - _html = _this.$items.eq(index).attr('data-html'); - _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'); - - if (_this.$items.eq(index).attr('data-responsive')) { - var srcItms = _this.$items.eq(index).attr('data-responsive').split(','); - getResponsiveSrc(srcItms); - } - - _srcset = _this.$items.eq(index).attr('data-srcset'); - _sizes = _this.$items.eq(index).attr('data-sizes'); - - } - - //if (_src || _srcset || _sizes || _poster) { - - var iframe = false; - if (_this.s.dynamic) { - if (_this.s.dynamicEl[index].iframe) { - iframe = true; - } - } else { - if (_this.$items.eq(index).attr('data-iframe') === 'true') { - iframe = true; - } - } - - var _isVideo = _this.isVideo(_src, index); - if (!_this.$slide.eq(index).hasClass('lg-loaded')) { - if (iframe) { - _this.$slide.eq(index).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:' + _this.s.iframeMaxWidth + '"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="' + _src + '" allowfullscreen="true"></iframe></div></div>'); - } else if (_hasPoster) { - var videoClass = ''; - if (_isVideo && _isVideo.youtube) { - videoClass = 'lg-has-youtube'; - } else if (_isVideo && _isVideo.vimeo) { - videoClass = 'lg-has-vimeo'; - } else { - videoClass = 'lg-has-html5'; - } - - _this.$slide.eq(index).prepend('<div class="lg-video-cont ' + videoClass + ' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="' + _poster + '" /></div></div>'); - - } else if (_isVideo) { - _this.$slide.eq(index).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'); - _this.$el.trigger('hasVideo.lg', [index, _src, _html]); - } else { - _this.$slide.eq(index).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="' + _src + '" /></div>'); - } - - _this.$el.trigger('onAferAppendSlide.lg', [index]); - - _$img = _this.$slide.eq(index).find('.lg-object'); - if (_sizes) { - _$img.attr('sizes', _sizes); - } - - if (_srcset) { - _$img.attr('srcset', _srcset); - try { - picturefill({ - elements: [_$img[0]] - }); - } catch (e) { - console.warn('lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.'); - } - } - - if (this.s.appendSubHtmlTo !== '.lg-sub-html') { - _this.addHtml(index); - } - - _this.$slide.eq(index).addClass('lg-loaded'); - } - - _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() { - - // For first time add some delay for displaying the start animation. - var _speed = 0; - - // Do not change the delay value because it is required for zoom plugin. - // If gallery opened from direct url (hash) speed value should be 0 - if (delay && !$('body').hasClass('lg-from-hash')) { - _speed = delay; - } - - setTimeout(function() { - _this.$slide.eq(index).addClass('lg-complete'); - _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]); - }, _speed); - - }); - - // @todo check load state for html5 videos - if (_isVideo && _isVideo.html5 && !_hasPoster) { - _this.$slide.eq(index).addClass('lg-complete'); - } - - if (rec === true) { - if (!_this.$slide.eq(index).hasClass('lg-complete')) { - _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() { - _this.preload(index); - }); - } else { - _this.preload(index); - } - } - - //} - }; - - /** - * @desc slide function for lightgallery - ** Slide() gets call on start - ** ** Set lg.on true once slide() function gets called. - ** Call loadContent() on slide() function inside setTimeout - ** ** On first slide we do not want any animation like slide of fade - ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately - ** ** Else loadContent() should wait for the transition to complete. - ** ** So set timeout s.speed + 50 - <=> ** loadContent() will load slide content in to the particular slide - ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function. - ** ** preload will execute only when the previous slide is fully loaded (images iframe) - ** ** avoid simultaneous image load - <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value - ** loadContent() <====> Preload(); - - * @param {Number} index - index of the slide - * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag - * @param {Boolean} fromThumb - true if slide function called via thumbnail click - * @param {String} direction - Direction of the slide(next/prev) - */ - Plugin.prototype.slide = function(index, fromTouch, fromThumb, direction) { - - var _prevIndex = this.$outer.find('.lg-current').index(); - var _this = this; - - // Prevent if multiple call - // Required for hsh plugin - if (_this.lGalleryOn && (_prevIndex === index)) { - return; - } - - var _length = this.$slide.length; - var _time = _this.lGalleryOn ? this.s.speed : 0; - - if (!_this.lgBusy) { - - if (this.s.download) { - var _src; - if (_this.s.dynamic) { - _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src); - } else { - _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src')); - - } - - if (_src) { - $('#lg-download').attr('href', _src); - _this.$outer.removeClass('lg-hide-download'); - } else { - _this.$outer.addClass('lg-hide-download'); - } - } - - this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - - _this.lgBusy = true; - - clearTimeout(_this.hideBartimeout); - - // Add title if this.s.appendSubHtmlTo === lg-sub-html - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - - // wait for slide animation to complete - setTimeout(function() { - _this.addHtml(index); - }, _time); - } - - this.arrowDisable(index); - - if (!direction) { - if (index < _prevIndex) { - direction = 'prev'; - } else if (index > _prevIndex) { - direction = 'next'; - } - } - - if (!fromTouch) { - - // remove all transitions - _this.$outer.addClass('lg-no-trans'); - - this.$slide.removeClass('lg-prev-slide lg-next-slide'); - - if (direction === 'prev') { - - //prevslide - this.$slide.eq(index).addClass('lg-prev-slide'); - this.$slide.eq(_prevIndex).addClass('lg-next-slide'); - } else { - - // next slide - this.$slide.eq(index).addClass('lg-next-slide'); - this.$slide.eq(_prevIndex).addClass('lg-prev-slide'); - } - - // give 50 ms for browser to add/remove class - setTimeout(function() { - _this.$slide.removeClass('lg-current'); - - //_this.$slide.eq(_prevIndex).removeClass('lg-current'); - _this.$slide.eq(index).addClass('lg-current'); - - // reset all transitions - _this.$outer.removeClass('lg-no-trans'); - }, 50); - } else { - - this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide'); - var touchPrev; - var touchNext; - if (_length > 2) { - touchPrev = index - 1; - touchNext = index + 1; - - if ((index === 0) && (_prevIndex === _length - 1)) { - - // next slide - touchNext = 0; - touchPrev = _length - 1; - } else if ((index === _length - 1) && (_prevIndex === 0)) { - - // prev slide - touchNext = 0; - touchPrev = _length - 1; - } - - } else { - touchPrev = 0; - touchNext = 1; - } - - if (direction === 'prev') { - _this.$slide.eq(touchNext).addClass('lg-next-slide'); - } else { - _this.$slide.eq(touchPrev).addClass('lg-prev-slide'); - } - - _this.$slide.eq(index).addClass('lg-current'); - } - - if (_this.lGalleryOn) { - setTimeout(function() { - _this.loadContent(index, true, 0); - }, this.s.speed + 50); - - setTimeout(function() { - _this.lgBusy = false; - _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - }, this.s.speed); - - } else { - _this.loadContent(index, true, _this.s.backdropDuration); - - _this.lgBusy = false; - _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - } - - _this.lGalleryOn = true; - - if (this.s.counter) { - $('#lg-counter-current').text(index + 1); - } - - } - - }; - - /** - * @desc Go to next slide - * @param {Boolean} fromTouch - true if slide function called via touch event - */ - Plugin.prototype.goToNextSlide = function(fromTouch) { - var _this = this; - var _loop = _this.s.loop; - if (fromTouch && _this.$slide.length < 3) { - _loop = false; - } - - if (!_this.lgBusy) { - if ((_this.index + 1) < _this.$slide.length) { - _this.index++; - _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); - _this.slide(_this.index, fromTouch, false, 'next'); - } else { - if (_loop) { - _this.index = 0; - _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); - _this.slide(_this.index, fromTouch, false, 'next'); - } else if (_this.s.slideEndAnimatoin && !fromTouch) { - _this.$outer.addClass('lg-right-end'); - setTimeout(function() { - _this.$outer.removeClass('lg-right-end'); - }, 400); - } - } - } - }; - - /** - * @desc Go to previous slide - * @param {Boolean} fromTouch - true if slide function called via touch event - */ - Plugin.prototype.goToPrevSlide = function(fromTouch) { - var _this = this; - var _loop = _this.s.loop; - if (fromTouch && _this.$slide.length < 3) { - _loop = false; - } - - if (!_this.lgBusy) { - if (_this.index > 0) { - _this.index--; - _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); - _this.slide(_this.index, fromTouch, false, 'prev'); - } else { - if (_loop) { - _this.index = _this.$items.length - 1; - _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); - _this.slide(_this.index, fromTouch, false, 'prev'); - } else if (_this.s.slideEndAnimatoin && !fromTouch) { - _this.$outer.addClass('lg-left-end'); - setTimeout(function() { - _this.$outer.removeClass('lg-left-end'); - }, 400); - } - } - } - }; - - Plugin.prototype.keyPress = function() { - var _this = this; - if (this.$items.length > 1) { - $(window).on('keyup.lg', function(e) { - if (_this.$items.length > 1) { - if (e.keyCode === 37) { - e.preventDefault(); - _this.goToPrevSlide(); - } - - if (e.keyCode === 39) { - e.preventDefault(); - _this.goToNextSlide(); - } - } - }); - } - - $(window).on('keydown.lg', function(e) { - if (_this.s.escKey === true && e.keyCode === 27) { - e.preventDefault(); - if (!_this.$outer.hasClass('lg-thumb-open')) { - _this.destroy(); - } else { - _this.$outer.removeClass('lg-thumb-open'); - } - } - }); - }; - - Plugin.prototype.arrow = function() { - var _this = this; - this.$outer.find('.lg-prev').on('click.lg', function() { - _this.goToPrevSlide(); - }); - - this.$outer.find('.lg-next').on('click.lg', function() { - _this.goToNextSlide(); - }); - }; - - Plugin.prototype.arrowDisable = function(index) { - - // Disable arrows if s.hideControlOnEnd is true - if (!this.s.loop && this.s.hideControlOnEnd) { - if ((index + 1) < this.$slide.length) { - this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled'); - } else { - this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled'); - } - - if (index > 0) { - this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled'); - } else { - this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled'); - } - } - }; - - Plugin.prototype.setTranslate = function($el, xValue, yValue) { - // jQuery supports Automatic CSS prefixing since jQuery 1.8.0 - if (this.s.useLeft) { - $el.css('left', xValue); - } else { - $el.css({ - transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)' - }); - } - }; - - Plugin.prototype.touchMove = function(startCoords, endCoords) { - - var distance = endCoords - startCoords; - - if (Math.abs(distance) > 15) { - // reset opacity and transition duration - this.$outer.addClass('lg-dragging'); - - // move current slide - this.setTranslate(this.$slide.eq(this.index), distance, 0); - - // move next and prev slide with current slide - this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0); - this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0); - } - }; - - Plugin.prototype.touchEnd = function(distance) { - var _this = this; - - // keep slide animation for any mode while dragg/swipe - if (_this.s.mode !== 'lg-slide') { - _this.$outer.addClass('lg-slide'); - } - - this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0'); - - // set transition duration - setTimeout(function() { - _this.$outer.removeClass('lg-dragging'); - if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) { - _this.goToNextSlide(true); - } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) { - _this.goToPrevSlide(true); - } else if (Math.abs(distance) < 5) { - - // Trigger click if distance is less than 5 pix - _this.$el.trigger('onSlideClick.lg'); - } - - _this.$slide.removeAttr('style'); - }); - - // remove slide class once drag/swipe is completed if mode is not slide - setTimeout(function() { - if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') { - _this.$outer.removeClass('lg-slide'); - } - }, _this.s.speed + 100); - - }; - - Plugin.prototype.enableSwipe = function() { - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isMoved = false; - - if (_this.s.enableSwipe && _this.doCss()) { - - _this.$slide.on('touchstart.lg', function(e) { - if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) { - e.preventDefault(); - _this.manageSwipeClass(); - startCoords = e.originalEvent.targetTouches[0].pageX; - } - }); - - _this.$slide.on('touchmove.lg', function(e) { - if (!_this.$outer.hasClass('lg-zoomed')) { - e.preventDefault(); - endCoords = e.originalEvent.targetTouches[0].pageX; - _this.touchMove(startCoords, endCoords); - isMoved = true; - } - }); - - _this.$slide.on('touchend.lg', function() { - if (!_this.$outer.hasClass('lg-zoomed')) { - if (isMoved) { - isMoved = false; - _this.touchEnd(endCoords - startCoords); - } else { - _this.$el.trigger('onSlideClick.lg'); - } - } - }); - } - - }; - - Plugin.prototype.enableDrag = function() { - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isDraging = false; - var isMoved = false; - if (_this.s.enableDrag && _this.doCss()) { - _this.$slide.on('mousedown.lg', function(e) { - // execute only on .lg-object - if (!_this.$outer.hasClass('lg-zoomed')) { - if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) { - e.preventDefault(); - - if (!_this.lgBusy) { - _this.manageSwipeClass(); - startCoords = e.pageX; - isDraging = true; - - // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723 - _this.$outer.scrollLeft += 1; - _this.$outer.scrollLeft -= 1; - - // * - - _this.$outer.removeClass('lg-grab').addClass('lg-grabbing'); - - _this.$el.trigger('onDragstart.lg'); - } - - } - } - }); - - $(window).on('mousemove.lg', function(e) { - if (isDraging) { - isMoved = true; - endCoords = e.pageX; - _this.touchMove(startCoords, endCoords); - _this.$el.trigger('onDragmove.lg'); - } - }); - - $(window).on('mouseup.lg', function(e) { - if (isMoved) { - isMoved = false; - _this.touchEnd(endCoords - startCoords); - _this.$el.trigger('onDragend.lg'); - } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) { - _this.$el.trigger('onSlideClick.lg'); - } - - // Prevent execution on click - if (isDraging) { - isDraging = false; - _this.$outer.removeClass('lg-grabbing').addClass('lg-grab'); - } - }); - - } - }; - - Plugin.prototype.manageSwipeClass = function() { - var _touchNext = this.index + 1; - var _touchPrev = this.index - 1; - if (this.s.loop && this.$slide.length > 2) { - if (this.index === 0) { - _touchPrev = this.$slide.length - 1; - } else if (this.index === this.$slide.length - 1) { - _touchNext = 0; - } - } - - this.$slide.removeClass('lg-next-slide lg-prev-slide'); - if (_touchPrev > -1) { - this.$slide.eq(_touchPrev).addClass('lg-prev-slide'); - } - - this.$slide.eq(_touchNext).addClass('lg-next-slide'); - }; - - Plugin.prototype.mousewheel = function() { - var _this = this; - _this.$outer.on('mousewheel.lg', function(e) { - - if (!e.deltaY) { - return; - } - - if (e.deltaY > 0) { - _this.goToPrevSlide(); - } else { - _this.goToNextSlide(); - } - - e.preventDefault(); - }); - - }; - - Plugin.prototype.closeGallery = function() { - - var _this = this; - var mousedown = false; - this.$outer.find('.lg-close').on('click.lg', function() { - _this.destroy(); - }); - - if (_this.s.closable) { - - // If you drag the slide and release outside gallery gets close on chrome - // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer - _this.$outer.on('mousedown.lg', function(e) { - - if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) { - mousedown = true; - } else { - mousedown = false; - } - - }); - - _this.$outer.on('mouseup.lg', function(e) { - - if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) { - if (!_this.$outer.hasClass('lg-dragging')) { - _this.destroy(); - } - } - - }); - - } - - }; - - Plugin.prototype.destroy = function(d) { - - var _this = this; - - if (!d) { - _this.$el.trigger('onBeforeClose.lg'); - $(window).scrollTop(_this.prevScrollTop); - } - - - /** - * if d is false or undefined destroy will only close the gallery - * plugins instance remains with the element - * - * if d is true destroy will completely remove the plugin - */ - - if (d) { - if (!_this.s.dynamic) { - // only when not using dynamic mode is $items a jquery collection - this.$items.off('click.lg click.lgcustom'); - } - - $.removeData(_this.el, 'lightGallery'); - } - - // Unbind all events added by lightGallery - this.$el.off('.lg.tm'); - - // Distroy all lightGallery modules - $.each($.fn.lightGallery.modules, function(key) { - if (_this.modules[key]) { - _this.modules[key].destroy(); - } - }); - - this.lGalleryOn = false; - - clearTimeout(_this.hideBartimeout); - this.hideBartimeout = false; - $(window).off('.lg'); - $('body').removeClass('lg-on lg-from-hash'); - - if (_this.$outer) { - _this.$outer.removeClass('lg-visible'); - } - - $('.lg-backdrop').removeClass('in'); - - setTimeout(function() { - if (_this.$outer) { - _this.$outer.remove(); - } - - $('.lg-backdrop').remove(); - - if (!d) { - _this.$el.trigger('onCloseAfter.lg'); - } - - }, _this.s.backdropDuration + 50); - }; - - $.fn.lightGallery = function(options) { - return this.each(function() { - if (!$.data(this, 'lightGallery')) { - $.data(this, 'lightGallery', new Plugin(this, options)); - } else { - try { - $(this).data('lightGallery').init(); - } catch (err) { - console.error('lightGallery has not initiated properly'); - } - } - }); - }; - - $.fn.lightGallery.modules = {}; - -})(); - - -})); - - -/***/ }), - -/***/ "../../../../../node_modules/loglevel/lib/loglevel.js": -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* -* loglevel - https://github.com/pimterry/loglevel -* -* Copyright (c) 2013 Tim Perry -* Licensed under the MIT license. -*/ -(function (root, definition) { - "use strict"; - if (true) { - !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : - __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof module === 'object' && module.exports) { - module.exports = definition(); - } else { - root.log = definition(); - } -}(this, function () { - "use strict"; - var noop = function() {}; - var undefinedType = "undefined"; - - function realMethod(methodName) { - if (typeof console === undefinedType) { - return false; // We can't build a real method without a console to log to - } else if (console[methodName] !== undefined) { - return bindMethod(console, methodName); - } else if (console.log !== undefined) { - return bindMethod(console, 'log'); - } else { - return noop; - } - } - - function bindMethod(obj, methodName) { - var method = obj[methodName]; - if (typeof method.bind === 'function') { - return method.bind(obj); - } else { - try { - return Function.prototype.bind.call(method, obj); - } catch (e) { - // Missing bind shim or IE8 + Modernizr, fallback to wrapping - return function() { - return Function.prototype.apply.apply(method, [obj, arguments]); - }; - } - } - } - - // these private functions always need `this` to be set properly - - function enableLoggingWhenConsoleArrives(methodName, level, loggerName) { - return function () { - if (typeof console !== undefinedType) { - replaceLoggingMethods.call(this, level, loggerName); - this[methodName].apply(this, arguments); - } - }; - } - - function replaceLoggingMethods(level, loggerName) { - /*jshint validthis:true */ - for (var i = 0; i < logMethods.length; i++) { - var methodName = logMethods[i]; - this[methodName] = (i < level) ? - noop : - this.methodFactory(methodName, level, loggerName); - } - } - - function defaultMethodFactory(methodName, level, loggerName) { - /*jshint validthis:true */ - return realMethod(methodName) || - enableLoggingWhenConsoleArrives.apply(this, arguments); - } - - var logMethods = [ - "trace", - "debug", - "info", - "warn", - "error" - ]; - - function Logger(name, defaultLevel, factory) { - var self = this; - var currentLevel; - var storageKey = "loglevel"; - if (name) { - storageKey += ":" + name; - } - - function persistLevelIfPossible(levelNum) { - var levelName = (logMethods[levelNum] || 'silent').toUpperCase(); - - // Use localStorage if available - try { - window.localStorage[storageKey] = levelName; - return; - } catch (ignore) {} - - // Use session cookie as fallback - try { - window.document.cookie = - encodeURIComponent(storageKey) + "=" + levelName + ";"; - } catch (ignore) {} - } - - function getPersistedLevel() { - var storedLevel; - - try { - storedLevel = window.localStorage[storageKey]; - } catch (ignore) {} - - if (typeof storedLevel === undefinedType) { - try { - var cookie = window.document.cookie; - var location = cookie.indexOf( - encodeURIComponent(storageKey) + "="); - if (location) { - storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1]; - } - } catch (ignore) {} - } - - // If the stored level is not valid, treat it as if nothing was stored. - if (self.levels[storedLevel] === undefined) { - storedLevel = undefined; - } - - return storedLevel; - } - - /* - * - * Public API - * - */ - - self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3, - "ERROR": 4, "SILENT": 5}; - - self.methodFactory = factory || defaultMethodFactory; - - self.getLevel = function () { - return currentLevel; - }; - - self.setLevel = function (level, persist) { - if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) { - level = self.levels[level.toUpperCase()]; - } - if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) { - currentLevel = level; - if (persist !== false) { // defaults to true - persistLevelIfPossible(level); - } - replaceLoggingMethods.call(self, level, name); - if (typeof console === undefinedType && level < self.levels.SILENT) { - return "No console available for logging"; - } - } else { - throw "log.setLevel() called with invalid level: " + level; - } - }; - - self.setDefaultLevel = function (level) { - if (!getPersistedLevel()) { - self.setLevel(level, false); - } - }; - - self.enableAll = function(persist) { - self.setLevel(self.levels.TRACE, persist); - }; - - self.disableAll = function(persist) { - self.setLevel(self.levels.SILENT, persist); - }; - - // Initialize with the right level - var initialLevel = getPersistedLevel(); - if (initialLevel == null) { - initialLevel = defaultLevel == null ? "WARN" : defaultLevel; - } - self.setLevel(initialLevel, false); - } - - /* - * - * Package-level API - * - */ - - var defaultLogger = new Logger(); - - var _loggersByName = {}; - defaultLogger.getLogger = function getLogger(name) { - if (typeof name !== "string" || name === "") { - throw new TypeError("You must supply a name when creating a logger."); - } - - var logger = _loggersByName[name]; - if (!logger) { - logger = _loggersByName[name] = new Logger( - name, defaultLogger.getLevel(), defaultLogger.methodFactory); - } - return logger; - }; - - // Grab the current global log variable in case of overwrite - var _log = (typeof window !== undefinedType) ? window.log : undefined; - defaultLogger.noConflict = function() { - if (typeof window !== undefinedType && - window.log === defaultLogger) { - window.log = _log; - } - - return defaultLogger; - }; - - return defaultLogger; -})); - - -/***/ }), - -/***/ "../../../../../node_modules/ms/index.js": -/***/ (function(module, exports) { - -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} - - -/***/ }), - -/***/ "../../../../../node_modules/process/browser.js": -/***/ (function(module, exports) { - -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - - -/***/ }), - -/***/ "../../../../../node_modules/punycode/punycode.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see <https://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see <https://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - true - ) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return punycode; - }.call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/module.js")(module), __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/querystring-es3/decode.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/querystring-es3/encode.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; -} - -var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/querystring-es3/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.decode = exports.parse = __webpack_require__("../../../../../node_modules/querystring-es3/decode.js"); -exports.encode = exports.stringify = __webpack_require__("../../../../../node_modules/querystring-es3/encode.js"); - - -/***/ }), - -/***/ "../../../../../node_modules/requires-port/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Check if we're required to add a port number. - * - * @see https://url.spec.whatwg.org/#default-port - * @param {Number|String} port Port number we need to check - * @param {String} protocol Protocol we need to check against. - * @returns {Boolean} Is it a default port for the given protocol - * @api private - */ -module.exports = function required(port, protocol) { - protocol = protocol.split(':')[0]; - port = +port; - - if (!port) return false; - - switch (protocol) { - case 'http': - case 'ws': - return port !== 80; - - case 'https': - case 'wss': - return port !== 443; - - case 'ftp': - return port !== 21; - - case 'gopher': - return port !== 70; - - case 'file': - return false; - } - - return port !== 0; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/entry.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var transportList = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport-list.js"); - -module.exports = __webpack_require__("../../../../../node_modules/sockjs-client/lib/main.js")(transportList); - -// TODO can't get rid of this until all servers do -if ('_sockjs_onload' in global) { - setTimeout(global._sockjs_onload, 1); -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/event/close.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , Event = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/event.js") - ; - -function CloseEvent() { - Event.call(this); - this.initEvent('close', false, false); - this.wasClean = false; - this.code = 0; - this.reason = ''; -} - -inherits(CloseEvent, Event); - -module.exports = CloseEvent; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/event/emitter.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventTarget = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/eventtarget.js") - ; - -function EventEmitter() { - EventTarget.call(this); -} - -inherits(EventEmitter, EventTarget); - -EventEmitter.prototype.removeAllListeners = function(type) { - if (type) { - delete this._listeners[type]; - } else { - this._listeners = {}; - } -}; - -EventEmitter.prototype.once = function(type, listener) { - var self = this - , fired = false; - - function g() { - self.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - this.on(type, g); -}; - -EventEmitter.prototype.emit = function() { - var type = arguments[0]; - var listeners = this._listeners[type]; - if (!listeners) { - return; - } - // equivalent of Array.prototype.slice.call(arguments, 1); - var l = arguments.length; - var args = new Array(l - 1); - for (var ai = 1; ai < l; ai++) { - args[ai - 1] = arguments[ai]; - } - for (var i = 0; i < listeners.length; i++) { - listeners[i].apply(this, args); - } -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener; -EventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener; - -module.exports.EventEmitter = EventEmitter; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/event/event.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function Event(eventType) { - this.type = eventType; -} - -Event.prototype.initEvent = function(eventType, canBubble, cancelable) { - this.type = eventType; - this.bubbles = canBubble; - this.cancelable = cancelable; - this.timeStamp = +new Date(); - return this; -}; - -Event.prototype.stopPropagation = function() {}; -Event.prototype.preventDefault = function() {}; - -Event.CAPTURING_PHASE = 1; -Event.AT_TARGET = 2; -Event.BUBBLING_PHASE = 3; - -module.exports = Event; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/event/eventtarget.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/* Simplified implementation of DOM2 EventTarget. - * http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget - */ - -function EventTarget() { - this._listeners = {}; -} - -EventTarget.prototype.addEventListener = function(eventType, listener) { - if (!(eventType in this._listeners)) { - this._listeners[eventType] = []; - } - var arr = this._listeners[eventType]; - // #4 - if (arr.indexOf(listener) === -1) { - // Make a copy so as not to interfere with a current dispatchEvent. - arr = arr.concat([listener]); - } - this._listeners[eventType] = arr; -}; - -EventTarget.prototype.removeEventListener = function(eventType, listener) { - var arr = this._listeners[eventType]; - if (!arr) { - return; - } - var idx = arr.indexOf(listener); - if (idx !== -1) { - if (arr.length > 1) { - // Make a copy so as not to interfere with a current dispatchEvent. - this._listeners[eventType] = arr.slice(0, idx).concat(arr.slice(idx + 1)); - } else { - delete this._listeners[eventType]; - } - return; - } -}; - -EventTarget.prototype.dispatchEvent = function() { - var event = arguments[0]; - var t = event.type; - // equivalent of Array.prototype.slice.call(arguments, 0); - var args = arguments.length === 1 ? [event] : Array.apply(null, arguments); - // TODO: This doesn't match the real behavior; per spec, onfoo get - // their place in line from the /first/ time they're set from - // non-null. Although WebKit bumps it to the end every time it's - // set. - if (this['on' + t]) { - this['on' + t].apply(this, args); - } - if (t in this._listeners) { - // Grab a reference to the listeners list. removeEventListener may alter the list. - var listeners = this._listeners[t]; - for (var i = 0; i < listeners.length; i++) { - listeners[i].apply(this, args); - } - } -}; - -module.exports = EventTarget; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/event/trans-message.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , Event = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/event.js") - ; - -function TransportMessageEvent(data) { - Event.call(this); - this.initEvent('message', false, false); - this.data = data; -} - -inherits(TransportMessageEvent, Event); - -module.exports = TransportMessageEvent; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/facade.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , iframeUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/iframe.js") - ; - -function FacadeJS(transport) { - this._transport = transport; - transport.on('message', this._transportMessage.bind(this)); - transport.on('close', this._transportClose.bind(this)); -} - -FacadeJS.prototype._transportClose = function(code, reason) { - iframeUtils.postMessage('c', JSON3.stringify([code, reason])); -}; -FacadeJS.prototype._transportMessage = function(frame) { - iframeUtils.postMessage('t', frame); -}; -FacadeJS.prototype._send = function(data) { - this._transport.send(data); -}; -FacadeJS.prototype._close = function() { - this._transport.close(); - this._transport.removeAllListeners(); -}; - -module.exports = FacadeJS; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/iframe-bootstrap.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , eventUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , FacadeJS = __webpack_require__("../../../../../node_modules/sockjs-client/lib/facade.js") - , InfoIframeReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-iframe-receiver.js") - , iframeUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/iframe.js") - , loc = __webpack_require__("../../../../../node_modules/sockjs-client/lib/location.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:iframe-bootstrap'); -} - -module.exports = function(SockJS, availableTransports) { - var transportMap = {}; - availableTransports.forEach(function(at) { - if (at.facadeTransport) { - transportMap[at.facadeTransport.transportName] = at.facadeTransport; - } - }); - - // hard-coded for the info iframe - // TODO see if we can make this more dynamic - transportMap[InfoIframeReceiver.transportName] = InfoIframeReceiver; - var parentOrigin; - - /* eslint-disable camelcase */ - SockJS.bootstrap_iframe = function() { - /* eslint-enable camelcase */ - var facade; - iframeUtils.currentWindowId = loc.hash.slice(1); - var onMessage = function(e) { - if (e.source !== parent) { - return; - } - if (typeof parentOrigin === 'undefined') { - parentOrigin = e.origin; - } - if (e.origin !== parentOrigin) { - return; - } - - var iframeMessage; - try { - iframeMessage = JSON3.parse(e.data); - } catch (ignored) { - debug('bad json', e.data); - return; - } - - if (iframeMessage.windowId !== iframeUtils.currentWindowId) { - return; - } - switch (iframeMessage.type) { - case 's': - var p; - try { - p = JSON3.parse(iframeMessage.data); - } catch (ignored) { - debug('bad json', iframeMessage.data); - break; - } - var version = p[0]; - var transport = p[1]; - var transUrl = p[2]; - var baseUrl = p[3]; - debug(version, transport, transUrl, baseUrl); - // change this to semver logic - if (version !== SockJS.version) { - throw new Error('Incompatible SockJS! Main site uses:' + - ' "' + version + '", the iframe:' + - ' "' + SockJS.version + '".'); - } - - if (!urlUtils.isOriginEqual(transUrl, loc.href) || - !urlUtils.isOriginEqual(baseUrl, loc.href)) { - throw new Error('Can\'t connect to different domain from within an ' + - 'iframe. (' + loc.href + ', ' + transUrl + ', ' + baseUrl + ')'); - } - facade = new FacadeJS(new transportMap[transport](transUrl, baseUrl)); - break; - case 'm': - facade._send(iframeMessage.data); - break; - case 'c': - if (facade) { - facade._close(); - } - facade = null; - break; - } - }; - - eventUtils.attachEvent('message', onMessage); - - // Start - iframeUtils.postMessage('s'); - }; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/info-ajax.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , objectUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/object.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:info-ajax'); -} - -function InfoAjax(url, AjaxObject) { - EventEmitter.call(this); - - var self = this; - var t0 = +new Date(); - this.xo = new AjaxObject('GET', url); - - this.xo.once('finish', function(status, text) { - var info, rtt; - if (status === 200) { - rtt = (+new Date()) - t0; - if (text) { - try { - info = JSON3.parse(text); - } catch (e) { - debug('bad json', text); - } - } - - if (!objectUtils.isObject(info)) { - info = {}; - } - } - self.emit('finish', info, rtt); - self.removeAllListeners(); - }); -} - -inherits(InfoAjax, EventEmitter); - -InfoAjax.prototype.close = function() { - this.removeAllListeners(); - this.xo.close(); -}; - -module.exports = InfoAjax; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/info-iframe-receiver.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , XHRLocalObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js") - , InfoAjax = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-ajax.js") - ; - -function InfoReceiverIframe(transUrl) { - var self = this; - EventEmitter.call(this); - - this.ir = new InfoAjax(transUrl, XHRLocalObject); - this.ir.once('finish', function(info, rtt) { - self.ir = null; - self.emit('message', JSON3.stringify([info, rtt])); - }); -} - -inherits(InfoReceiverIframe, EventEmitter); - -InfoReceiverIframe.transportName = 'iframe-info-receiver'; - -InfoReceiverIframe.prototype.close = function() { - if (this.ir) { - this.ir.close(); - this.ir = null; - } - this.removeAllListeners(); -}; - -module.exports = InfoReceiverIframe; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/info-iframe.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , utils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , IframeTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/iframe.js") - , InfoReceiverIframe = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-iframe-receiver.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:info-iframe'); -} - -function InfoIframe(baseUrl, url) { - var self = this; - EventEmitter.call(this); - - var go = function() { - var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl); - - ifr.once('message', function(msg) { - if (msg) { - var d; - try { - d = JSON3.parse(msg); - } catch (e) { - debug('bad json', msg); - self.emit('finish'); - self.close(); - return; - } - - var info = d[0], rtt = d[1]; - self.emit('finish', info, rtt); - } - self.close(); - }); - - ifr.once('close', function() { - self.emit('finish'); - self.close(); - }); - }; - - // TODO this seems the same as the 'needBody' from transports - if (!global.document.body) { - utils.attachEvent('load', go); - } else { - go(); - } -} - -inherits(InfoIframe, EventEmitter); - -InfoIframe.enabled = function() { - return IframeTransport.enabled(); -}; - -InfoIframe.prototype.close = function() { - if (this.ifr) { - this.ifr.close(); - } - this.removeAllListeners(); - this.ifr = null; -}; - -module.exports = InfoIframe; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/info-receiver.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , XDR = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xdr.js") - , XHRCors = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-cors.js") - , XHRLocal = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js") - , XHRFake = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-fake.js") - , InfoIframe = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-iframe.js") - , InfoAjax = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-ajax.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:info-receiver'); -} - -function InfoReceiver(baseUrl, urlInfo) { - debug(baseUrl); - var self = this; - EventEmitter.call(this); - - setTimeout(function() { - self.doXhr(baseUrl, urlInfo); - }, 0); -} - -inherits(InfoReceiver, EventEmitter); - -// TODO this is currently ignoring the list of available transports and the whitelist - -InfoReceiver._getReceiver = function(baseUrl, url, urlInfo) { - // determine method of CORS support (if needed) - if (urlInfo.sameOrigin) { - return new InfoAjax(url, XHRLocal); - } - if (XHRCors.enabled) { - return new InfoAjax(url, XHRCors); - } - if (XDR.enabled && urlInfo.sameScheme) { - return new InfoAjax(url, XDR); - } - if (InfoIframe.enabled()) { - return new InfoIframe(baseUrl, url); - } - return new InfoAjax(url, XHRFake); -}; - -InfoReceiver.prototype.doXhr = function(baseUrl, urlInfo) { - var self = this - , url = urlUtils.addPath(baseUrl, '/info') - ; - debug('doXhr', url); - - this.xo = InfoReceiver._getReceiver(baseUrl, url, urlInfo); - - this.timeoutRef = setTimeout(function() { - debug('timeout'); - self._cleanup(false); - self.emit('finish'); - }, InfoReceiver.timeout); - - this.xo.once('finish', function(info, rtt) { - debug('finish', info, rtt); - self._cleanup(true); - self.emit('finish', info, rtt); - }); -}; - -InfoReceiver.prototype._cleanup = function(wasClean) { - debug('_cleanup'); - clearTimeout(this.timeoutRef); - this.timeoutRef = null; - if (!wasClean && this.xo) { - this.xo.close(); - } - this.xo = null; -}; - -InfoReceiver.prototype.close = function() { - debug('close'); - this.removeAllListeners(); - this._cleanup(false); -}; - -InfoReceiver.timeout = 8000; - -module.exports = InfoReceiver; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/location.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -module.exports = global.location || { - origin: 'http://localhost:80' -, protocol: 'http' -, host: 'localhost' -, port: 80 -, href: 'http://localhost/' -, hash: '' -}; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/main.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -__webpack_require__("../../../../../node_modules/sockjs-client/lib/shims.js"); - -var URL = __webpack_require__("../../../../../node_modules/url-parse/index.js") - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js") - , escape = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/escape.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , eventUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , transport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/transport.js") - , objectUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/object.js") - , browser = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser.js") - , log = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/log.js") - , Event = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/event.js") - , EventTarget = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/eventtarget.js") - , loc = __webpack_require__("../../../../../node_modules/sockjs-client/lib/location.js") - , CloseEvent = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/close.js") - , TransportMessageEvent = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/trans-message.js") - , InfoReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/info-receiver.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:main'); -} - -var transports; - -// follow constructor steps defined at http://dev.w3.org/html5/websockets/#the-websocket-interface -function SockJS(url, protocols, options) { - if (!(this instanceof SockJS)) { - return new SockJS(url, protocols, options); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'SockJS: 1 argument required, but only 0 present"); - } - EventTarget.call(this); - - this.readyState = SockJS.CONNECTING; - this.extensions = ''; - this.protocol = ''; - - // non-standard extension - options = options || {}; - if (options.protocols_whitelist) { - log.warn("'protocols_whitelist' is DEPRECATED. Use 'transports' instead."); - } - this._transportsWhitelist = options.transports; - this._transportOptions = options.transportOptions || {}; - - var sessionId = options.sessionId || 8; - if (typeof sessionId === 'function') { - this._generateSessionId = sessionId; - } else if (typeof sessionId === 'number') { - this._generateSessionId = function() { - return random.string(sessionId); - }; - } else { - throw new TypeError('If sessionId is used in the options, it needs to be a number or a function.'); - } - - this._server = options.server || random.numberString(1000); - - // Step 1 of WS spec - parse and validate the url. Issue #8 - var parsedUrl = new URL(url); - if (!parsedUrl.host || !parsedUrl.protocol) { - throw new SyntaxError("The URL '" + url + "' is invalid"); - } else if (parsedUrl.hash) { - throw new SyntaxError('The URL must not contain a fragment'); - } else if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { - throw new SyntaxError("The URL's scheme must be either 'http:' or 'https:'. '" + parsedUrl.protocol + "' is not allowed."); - } - - var secure = parsedUrl.protocol === 'https:'; - // Step 2 - don't allow secure origin with an insecure protocol - if (loc.protocol === 'https' && !secure) { - throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS'); - } - - // Step 3 - check port access - no need here - // Step 4 - parse protocols argument - if (!protocols) { - protocols = []; - } else if (!Array.isArray(protocols)) { - protocols = [protocols]; - } - - // Step 5 - check protocols argument - var sortedProtocols = protocols.sort(); - sortedProtocols.forEach(function(proto, i) { - if (!proto) { - throw new SyntaxError("The protocols entry '" + proto + "' is invalid."); - } - if (i < (sortedProtocols.length - 1) && proto === sortedProtocols[i + 1]) { - throw new SyntaxError("The protocols entry '" + proto + "' is duplicated."); - } - }); - - // Step 6 - convert origin - var o = urlUtils.getOrigin(loc.href); - this._origin = o ? o.toLowerCase() : null; - - // remove the trailing slash - parsedUrl.set('pathname', parsedUrl.pathname.replace(/\/+$/, '')); - - // store the sanitized url - this.url = parsedUrl.href; - debug('using url', this.url); - - // Step 7 - start connection in background - // obtain server info - // http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-26 - this._urlInfo = { - nullOrigin: !browser.hasDomain() - , sameOrigin: urlUtils.isOriginEqual(this.url, loc.href) - , sameScheme: urlUtils.isSchemeEqual(this.url, loc.href) - }; - - this._ir = new InfoReceiver(this.url, this._urlInfo); - this._ir.once('finish', this._receiveInfo.bind(this)); -} - -inherits(SockJS, EventTarget); - -function userSetCode(code) { - return code === 1000 || (code >= 3000 && code <= 4999); -} - -SockJS.prototype.close = function(code, reason) { - // Step 1 - if (code && !userSetCode(code)) { - throw new Error('InvalidAccessError: Invalid code'); - } - // Step 2.4 states the max is 123 bytes, but we are just checking length - if (reason && reason.length > 123) { - throw new SyntaxError('reason argument has an invalid length'); - } - - // Step 3.1 - if (this.readyState === SockJS.CLOSING || this.readyState === SockJS.CLOSED) { - return; - } - - // TODO look at docs to determine how to set this - var wasClean = true; - this._close(code || 1000, reason || 'Normal closure', wasClean); -}; - -SockJS.prototype.send = function(data) { - // #13 - convert anything non-string to string - // TODO this currently turns objects into [object Object] - if (typeof data !== 'string') { - data = '' + data; - } - if (this.readyState === SockJS.CONNECTING) { - throw new Error('InvalidStateError: The connection has not been established yet'); - } - if (this.readyState !== SockJS.OPEN) { - return; - } - this._transport.send(escape.quote(data)); -}; - -SockJS.version = __webpack_require__("../../../../../node_modules/sockjs-client/lib/version.js"); - -SockJS.CONNECTING = 0; -SockJS.OPEN = 1; -SockJS.CLOSING = 2; -SockJS.CLOSED = 3; - -SockJS.prototype._receiveInfo = function(info, rtt) { - debug('_receiveInfo', rtt); - this._ir = null; - if (!info) { - this._close(1002, 'Cannot connect to server'); - return; - } - - // establish a round-trip timeout (RTO) based on the - // round-trip time (RTT) - this._rto = this.countRTO(rtt); - // allow server to override url used for the actual transport - this._transUrl = info.base_url ? info.base_url : this.url; - info = objectUtils.extend(info, this._urlInfo); - debug('info', info); - // determine list of desired and supported transports - var enabledTransports = transports.filterToEnabled(this._transportsWhitelist, info); - this._transports = enabledTransports.main; - debug(this._transports.length + ' enabled transports'); - - this._connect(); -}; - -SockJS.prototype._connect = function() { - for (var Transport = this._transports.shift(); Transport; Transport = this._transports.shift()) { - debug('attempt', Transport.transportName); - if (Transport.needBody) { - if (!global.document.body || - (typeof global.document.readyState !== 'undefined' && - global.document.readyState !== 'complete' && - global.document.readyState !== 'interactive')) { - debug('waiting for body'); - this._transports.unshift(Transport); - eventUtils.attachEvent('load', this._connect.bind(this)); - return; - } - } - - // calculate timeout based on RTO and round trips. Default to 5s - var timeoutMs = (this._rto * Transport.roundTrips) || 5000; - this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs); - debug('using timeout', timeoutMs); - - var transportUrl = urlUtils.addPath(this._transUrl, '/' + this._server + '/' + this._generateSessionId()); - var options = this._transportOptions[Transport.transportName]; - debug('transport url', transportUrl); - var transportObj = new Transport(transportUrl, this._transUrl, options); - transportObj.on('message', this._transportMessage.bind(this)); - transportObj.once('close', this._transportClose.bind(this)); - transportObj.transportName = Transport.transportName; - this._transport = transportObj; - - return; - } - this._close(2000, 'All transports failed', false); -}; - -SockJS.prototype._transportTimeout = function() { - debug('_transportTimeout'); - if (this.readyState === SockJS.CONNECTING) { - this._transportClose(2007, 'Transport timed out'); - } -}; - -SockJS.prototype._transportMessage = function(msg) { - debug('_transportMessage', msg); - var self = this - , type = msg.slice(0, 1) - , content = msg.slice(1) - , payload - ; - - // first check for messages that don't need a payload - switch (type) { - case 'o': - this._open(); - return; - case 'h': - this.dispatchEvent(new Event('heartbeat')); - debug('heartbeat', this.transport); - return; - } - - if (content) { - try { - payload = JSON3.parse(content); - } catch (e) { - debug('bad json', content); - } - } - - if (typeof payload === 'undefined') { - debug('empty payload', content); - return; - } - - switch (type) { - case 'a': - if (Array.isArray(payload)) { - payload.forEach(function(p) { - debug('message', self.transport, p); - self.dispatchEvent(new TransportMessageEvent(p)); - }); - } - break; - case 'm': - debug('message', this.transport, payload); - this.dispatchEvent(new TransportMessageEvent(payload)); - break; - case 'c': - if (Array.isArray(payload) && payload.length === 2) { - this._close(payload[0], payload[1], true); - } - break; - } -}; - -SockJS.prototype._transportClose = function(code, reason) { - debug('_transportClose', this.transport, code, reason); - if (this._transport) { - this._transport.removeAllListeners(); - this._transport = null; - this.transport = null; - } - - if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) { - this._connect(); - return; - } - - this._close(code, reason); -}; - -SockJS.prototype._open = function() { - debug('_open', this._transport.transportName, this.readyState); - if (this.readyState === SockJS.CONNECTING) { - if (this._transportTimeoutId) { - clearTimeout(this._transportTimeoutId); - this._transportTimeoutId = null; - } - this.readyState = SockJS.OPEN; - this.transport = this._transport.transportName; - this.dispatchEvent(new Event('open')); - debug('connected', this.transport); - } else { - // The server might have been restarted, and lost track of our - // connection. - this._close(1006, 'Server lost session'); - } -}; - -SockJS.prototype._close = function(code, reason, wasClean) { - debug('_close', this.transport, code, reason, wasClean, this.readyState); - var forceFail = false; - - if (this._ir) { - forceFail = true; - this._ir.close(); - this._ir = null; - } - if (this._transport) { - this._transport.close(); - this._transport = null; - this.transport = null; - } - - if (this.readyState === SockJS.CLOSED) { - throw new Error('InvalidStateError: SockJS has already been closed'); - } - - this.readyState = SockJS.CLOSING; - setTimeout(function() { - this.readyState = SockJS.CLOSED; - - if (forceFail) { - this.dispatchEvent(new Event('error')); - } - - var e = new CloseEvent('close'); - e.wasClean = wasClean || false; - e.code = code || 1000; - e.reason = reason; - - this.dispatchEvent(e); - this.onmessage = this.onclose = this.onerror = null; - debug('disconnected'); - }.bind(this), 0); -}; - -// See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/ -// and RFC 2988. -SockJS.prototype.countRTO = function(rtt) { - // In a local environment, when using IE8/9 and the `jsonp-polling` - // transport the time needed to establish a connection (the time that pass - // from the opening of the transport to the call of `_dispatchOpen`) is - // around 200msec (the lower bound used in the article above) and this - // causes spurious timeouts. For this reason we calculate a value slightly - // larger than that used in the article. - if (rtt > 100) { - return 4 * rtt; // rto > 400msec - } - return 300 + rtt; // 300msec < rto <= 400msec -}; - -module.exports = function(availableTransports) { - transports = transport(availableTransports); - __webpack_require__("../../../../../node_modules/sockjs-client/lib/iframe-bootstrap.js")(SockJS, availableTransports); - return SockJS; -}; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/shims.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint-disable */ -/* jscs: disable */ - - -// pulled specific shims from https://github.com/es-shims/es5-shim - -var ArrayPrototype = Array.prototype; -var ObjectPrototype = Object.prototype; -var FunctionPrototype = Function.prototype; -var StringPrototype = String.prototype; -var array_slice = ArrayPrototype.slice; - -var _toString = ObjectPrototype.toString; -var isFunction = function (val) { - return ObjectPrototype.toString.call(val) === '[object Function]'; -}; -var isArray = function isArray(obj) { - return _toString.call(obj) === '[object Array]'; -}; -var isString = function isString(obj) { - return _toString.call(obj) === '[object String]'; -}; - -var supportsDescriptors = Object.defineProperty && (function () { - try { - Object.defineProperty({}, 'x', {}); - return true; - } catch (e) { /* this is ES3 */ - return false; - } -}()); - -// Define configurable, writable and non-enumerable props -// if they don't exist. -var defineProperty; -if (supportsDescriptors) { - defineProperty = function (object, name, method, forceAssign) { - if (!forceAssign && (name in object)) { return; } - Object.defineProperty(object, name, { - configurable: true, - enumerable: false, - writable: true, - value: method - }); - }; -} else { - defineProperty = function (object, name, method, forceAssign) { - if (!forceAssign && (name in object)) { return; } - object[name] = method; - }; -} -var defineProperties = function (object, map, forceAssign) { - for (var name in map) { - if (ObjectPrototype.hasOwnProperty.call(map, name)) { - defineProperty(object, name, map[name], forceAssign); - } - } -}; - -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert " + o + ' to object'); - } - return Object(o); -}; - -// -// Util -// ====== -// - -// ES5 9.4 -// http://es5.github.com/#x9.4 -// http://jsperf.com/to-integer - -function toInteger(num) { - var n = +num; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function ToUint32(x) { - return x >>> 0; -} - -// -// Function -// ======== -// - -// ES-5 15.3.4.5 -// http://es5.github.com/#x15.3.4.5 - -function Empty() {} - -defineProperties(FunctionPrototype, { - bind: function bind(that) { // .length is 1 - // 1. Let Target be the this value. - var target = this; - // 2. If IsCallable(Target) is false, throw a TypeError exception. - if (!isFunction(target)) { - throw new TypeError('Function.prototype.bind called on incompatible ' + target); - } - // 3. Let A be a new (possibly empty) internal list of all of the - // argument values provided after thisArg (arg1, arg2 etc), in order. - // XXX slicedArgs will stand in for "A" if used - var args = array_slice.call(arguments, 1); // for normal call - // 4. Let F be a new native ECMAScript object. - // 11. Set the [[Prototype]] internal property of F to the standard - // built-in Function prototype object as specified in 15.3.3.1. - // 12. Set the [[Call]] internal property of F as described in - // 15.3.4.5.1. - // 13. Set the [[Construct]] internal property of F as described in - // 15.3.4.5.2. - // 14. Set the [[HasInstance]] internal property of F as described in - // 15.3.4.5.3. - var binder = function () { - - if (this instanceof bound) { - // 15.3.4.5.2 [[Construct]] - // When the [[Construct]] internal method of a function object, - // F that was created using the bind function is called with a - // list of arguments ExtraArgs, the following steps are taken: - // 1. Let target be the value of F's [[TargetFunction]] - // internal property. - // 2. If target has no [[Construct]] internal method, a - // TypeError exception is thrown. - // 3. Let boundArgs be the value of F's [[BoundArgs]] internal - // property. - // 4. Let args be a new list containing the same values as the - // list boundArgs in the same order followed by the same - // values as the list ExtraArgs in the same order. - // 5. Return the result of calling the [[Construct]] internal - // method of target providing args as the arguments. - - var result = target.apply( - this, - args.concat(array_slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - - } else { - // 15.3.4.5.1 [[Call]] - // When the [[Call]] internal method of a function object, F, - // which was created using the bind function is called with a - // this value and a list of arguments ExtraArgs, the following - // steps are taken: - // 1. Let boundArgs be the value of F's [[BoundArgs]] internal - // property. - // 2. Let boundThis be the value of F's [[BoundThis]] internal - // property. - // 3. Let target be the value of F's [[TargetFunction]] internal - // property. - // 4. Let args be a new list containing the same values as the - // list boundArgs in the same order followed by the same - // values as the list ExtraArgs in the same order. - // 5. Return the result of calling the [[Call]] internal method - // of target providing boundThis as the this value and - // providing args as the arguments. - - // equiv: target.call(this, ...boundArgs, ...args) - return target.apply( - that, - args.concat(array_slice.call(arguments)) - ); - - } - - }; - - // 15. If the [[Class]] internal property of Target is "Function", then - // a. Let L be the length property of Target minus the length of A. - // b. Set the length own property of F to either 0 or L, whichever is - // larger. - // 16. Else set the length own property of F to 0. - - var boundLength = Math.max(0, target.length - args.length); - - // 17. Set the attributes of the length own property of F to the values - // specified in 15.3.5.1. - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - // XXX Build a dynamic function with desired amount of arguments is the only - // way to set the length property of a function. - // In environments where Content Security Policies enabled (Chrome extensions, - // for ex.) all use of eval or Function costructor throws an exception. - // However in all of these environments Function.prototype.bind exists - // and so this code will never be executed. - var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder); - - if (target.prototype) { - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - // Clean up dangling references. - Empty.prototype = null; - } - - // TODO - // 18. Set the [[Extensible]] internal property of F to true. - - // TODO - // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3). - // 20. Call the [[DefineOwnProperty]] internal method of F with - // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]: - // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and - // false. - // 21. Call the [[DefineOwnProperty]] internal method of F with - // arguments "arguments", PropertyDescriptor {[[Get]]: thrower, - // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false}, - // and false. - - // TODO - // NOTE Function objects created using Function.prototype.bind do not - // have a prototype property or the [[Code]], [[FormalParameters]], and - // [[Scope]] internal properties. - // XXX can't delete prototype in pure-js. - - // 22. Return F. - return bound; - } -}); - -// -// Array -// ===== -// - -// ES5 15.4.3.2 -// http://es5.github.com/#x15.4.3.2 -// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray -defineProperties(Array, { isArray: isArray }); - - -var boxedString = Object('a'); -var splitString = boxedString[0] !== 'a' || !(0 in boxedString); - -var properlyBoxesContext = function properlyBoxed(method) { - // Check node 0.6.21 bug where third parameter is not boxed - var properlyBoxesNonStrict = true; - var properlyBoxesStrict = true; - if (method) { - method.call('foo', function (_, __, context) { - if (typeof context !== 'object') { properlyBoxesNonStrict = false; } - }); - - method.call([1], function () { - 'use strict'; - properlyBoxesStrict = typeof this === 'string'; - }, 'x'); - } - return !!method && properlyBoxesNonStrict && properlyBoxesStrict; -}; - -defineProperties(ArrayPrototype, { - forEach: function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && isString(this) ? this.split('') : object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - - // If no callback function or if callback is not a callable function - if (!isFunction(fun)) { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - // Invoke the callback function with call, passing arguments: - // context, property value, property key, thisArg object - // context - fun.call(thisp, self[i], i, object); - } - } - } -}, !properlyBoxesContext(ArrayPrototype.forEach)); - -// ES5 15.4.4.14 -// http://es5.github.com/#x15.4.4.14 -// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf -var hasFirefox2IndexOfBug = Array.prototype.indexOf && [0, 1].indexOf(1, 2) !== -1; -defineProperties(ArrayPrototype, { - indexOf: function indexOf(sought /*, fromIndex */ ) { - var self = splitString && isString(this) ? this.split('') : toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - - // handle negative indices - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - } -}, hasFirefox2IndexOfBug); - -// -// String -// ====== -// - -// ES5 15.5.4.14 -// http://es5.github.com/#x15.5.4.14 - -// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers] -// Many browsers do not split properly with regular expressions or they -// do not perform the split correctly under obscure conditions. -// See http://blog.stevenlevithan.com/archives/cross-browser-split -// I've tested in many browsers and this seems to cover the deviant ones: -// 'ab'.split(/(?:ab)*/) should be ["", ""], not [""] -// '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""] -// 'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not -// [undefined, "t", undefined, "e", ...] -// ''.split(/.?/) should be [], not [""] -// '.'.split(/()()/) should be ["."], not ["", "", "."] - -var string_split = StringPrototype.split; -if ( - 'ab'.split(/(?:ab)*/).length !== 2 || - '.'.split(/(.?)(.?)/).length !== 4 || - 'tesst'.split(/(s)*/)[1] === 't' || - 'test'.split(/(?:)/, -1).length !== 4 || - ''.split(/.?/).length || - '.'.split(/()()/).length > 1 -) { - (function () { - var compliantExecNpcg = /()??/.exec('')[1] === void 0; // NPCG: nonparticipating capturing group - - StringPrototype.split = function (separator, limit) { - var string = this; - if (separator === void 0 && limit === 0) { - return []; - } - - // If `separator` is not a regex, use native split - if (_toString.call(separator) !== '[object RegExp]') { - return string_split.call(this, separator, limit); - } - - var output = [], - flags = (separator.ignoreCase ? 'i' : '') + - (separator.multiline ? 'm' : '') + - (separator.extended ? 'x' : '') + // Proposed for ES6 - (separator.sticky ? 'y' : ''), // Firefox 3+ - lastLastIndex = 0, - // Make `global` and avoid `lastIndex` issues by working with a copy - separator2, match, lastIndex, lastLength; - separator = new RegExp(separator.source, flags + 'g'); - string += ''; // Type-convert - if (!compliantExecNpcg) { - // Doesn't need flags gy, but they don't hurt - separator2 = new RegExp('^' + separator.source + '$(?!\\s)', flags); - } - /* Values for `limit`, per the spec: - * If undefined: 4294967295 // Math.pow(2, 32) - 1 - * If 0, Infinity, or NaN: 0 - * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296; - * If negative number: 4294967296 - Math.floor(Math.abs(limit)) - * If other: Type-convert, then use the above rules - */ - limit = limit === void 0 ? - -1 >>> 0 : // Math.pow(2, 32) - 1 - ToUint32(limit); - while (match = separator.exec(string)) { - // `separator.lastIndex` is not reliable cross-browser - lastIndex = match.index + match[0].length; - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - // Fix browsers whose `exec` methods don't consistently return `undefined` for - // nonparticipating capturing groups - if (!compliantExecNpcg && match.length > 1) { - match[0].replace(separator2, function () { - for (var i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === void 0) { - match[i] = void 0; - } - } - }); - } - if (match.length > 1 && match.index < string.length) { - ArrayPrototype.push.apply(output, match.slice(1)); - } - lastLength = match[0].length; - lastLastIndex = lastIndex; - if (output.length >= limit) { - break; - } - } - if (separator.lastIndex === match.index) { - separator.lastIndex++; // Avoid an infinite loop - } - } - if (lastLastIndex === string.length) { - if (lastLength || !separator.test('')) { - output.push(''); - } - } else { - output.push(string.slice(lastLastIndex)); - } - return output.length > limit ? output.slice(0, limit) : output; - }; - }()); - -// [bugfix, chrome] -// If separator is undefined, then the result array contains just one String, -// which is the this value (converted to a String). If limit is not undefined, -// then the output array is truncated so that it contains no more than limit -// elements. -// "0".split(undefined, 0) -> [] -} else if ('0'.split(void 0, 0).length) { - StringPrototype.split = function split(separator, limit) { - if (separator === void 0 && limit === 0) { return []; } - return string_split.call(this, separator, limit); - }; -} - -// ECMA-262, 3rd B.2.3 -// Not an ECMAScript standard, although ECMAScript 3rd Edition has a -// non-normative section suggesting uniform semantics and it should be -// normalized across all browsers -// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE -var string_substr = StringPrototype.substr; -var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b'; -defineProperties(StringPrototype, { - substr: function substr(start, length) { - return string_substr.call( - this, - start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start, - length - ); - } -}, hasNegativeSubstrBug); - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport-list.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = [ - // streaming transports - __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/websocket.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xhr-streaming.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xdr-streaming.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/eventsource.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/iframe-wrap.js")(__webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/eventsource.js")) - - // polling transports -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/htmlfile.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/iframe-wrap.js")(__webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/htmlfile.js")) -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xhr-polling.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xdr-polling.js") -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/iframe-wrap.js")(__webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xhr-polling.js")) -, __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/jsonp-polling.js") -]; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/browser/abstract-xhr.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , utils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , XHR = global.XMLHttpRequest - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:browser:xhr'); -} - -function AbstractXHRObject(method, url, payload, opts) { - debug(method, url); - var self = this; - EventEmitter.call(this); - - setTimeout(function () { - self._start(method, url, payload, opts); - }, 0); -} - -inherits(AbstractXHRObject, EventEmitter); - -AbstractXHRObject.prototype._start = function(method, url, payload, opts) { - var self = this; - - try { - this.xhr = new XHR(); - } catch (x) { - // intentionally empty - } - - if (!this.xhr) { - debug('no xhr'); - this.emit('finish', 0, 'no xhr support'); - this._cleanup(); - return; - } - - // several browsers cache POSTs - url = urlUtils.addQuery(url, 't=' + (+new Date())); - - // Explorer tends to keep connection open, even after the - // tab gets closed: http://bugs.jquery.com/ticket/5280 - this.unloadRef = utils.unloadAdd(function() { - debug('unload cleanup'); - self._cleanup(true); - }); - try { - this.xhr.open(method, url, true); - if (this.timeout && 'timeout' in this.xhr) { - this.xhr.timeout = this.timeout; - this.xhr.ontimeout = function() { - debug('xhr timeout'); - self.emit('finish', 0, ''); - self._cleanup(false); - }; - } - } catch (e) { - debug('exception', e); - // IE raises an exception on wrong port. - this.emit('finish', 0, ''); - this._cleanup(false); - return; - } - - if ((!opts || !opts.noCredentials) && AbstractXHRObject.supportsCORS) { - debug('withCredentials'); - // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest : - // "This never affects same-site requests." - - this.xhr.withCredentials = 'true'; - } - if (opts && opts.headers) { - for (var key in opts.headers) { - this.xhr.setRequestHeader(key, opts.headers[key]); - } - } - - this.xhr.onreadystatechange = function() { - if (self.xhr) { - var x = self.xhr; - var text, status; - debug('readyState', x.readyState); - switch (x.readyState) { - case 3: - // IE doesn't like peeking into responseText or status - // on Microsoft.XMLHTTP and readystate=3 - try { - status = x.status; - text = x.responseText; - } catch (e) { - // intentionally empty - } - debug('status', status); - // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450 - if (status === 1223) { - status = 204; - } - - // IE does return readystate == 3 for 404 answers. - if (status === 200 && text && text.length > 0) { - debug('chunk'); - self.emit('chunk', status, text); - } - break; - case 4: - status = x.status; - debug('status', status); - // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450 - if (status === 1223) { - status = 204; - } - // IE returns this for a bad port - // http://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx - if (status === 12005 || status === 12029) { - status = 0; - } - - debug('finish', status, x.responseText); - self.emit('finish', status, x.responseText); - self._cleanup(false); - break; - } - } - }; - - try { - self.xhr.send(payload); - } catch (e) { - self.emit('finish', 0, ''); - self._cleanup(false); - } -}; - -AbstractXHRObject.prototype._cleanup = function(abort) { - debug('cleanup'); - if (!this.xhr) { - return; - } - this.removeAllListeners(); - utils.unloadDel(this.unloadRef); - - // IE needs this field to be a function - this.xhr.onreadystatechange = function() {}; - if (this.xhr.ontimeout) { - this.xhr.ontimeout = null; - } - - if (abort) { - try { - this.xhr.abort(); - } catch (x) { - // intentionally empty - } - } - this.unloadRef = this.xhr = null; -}; - -AbstractXHRObject.prototype.close = function() { - debug('close'); - this._cleanup(true); -}; - -AbstractXHRObject.enabled = !!XHR; -// override XMLHttpRequest for IE6/7 -// obfuscate to avoid firewalls -var axo = ['Active'].concat('Object').join('X'); -if (!AbstractXHRObject.enabled && (axo in global)) { - debug('overriding xmlhttprequest'); - XHR = function() { - try { - return new global[axo]('Microsoft.XMLHTTP'); - } catch (e) { - return null; - } - }; - AbstractXHRObject.enabled = !!new XHR(); -} - -var cors = false; -try { - cors = 'withCredentials' in new XHR(); -} catch (ignored) { - // intentionally empty -} - -AbstractXHRObject.supportsCORS = cors; - -module.exports = AbstractXHRObject; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/browser/eventsource.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {module.exports = global.EventSource; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/browser/websocket.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var Driver = global.WebSocket || global.MozWebSocket; -if (Driver) { - module.exports = function WebSocketBrowserDriver(url) { - return new Driver(url); - }; -} else { - module.exports = undefined; -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/eventsource.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - , EventSourceReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/eventsource.js") - , XHRCorsObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-cors.js") - , EventSourceDriver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/browser/eventsource.js") - ; - -function EventSourceTransport(transUrl) { - if (!EventSourceTransport.enabled()) { - throw new Error('Transport created when disabled'); - } - - AjaxBasedTransport.call(this, transUrl, '/eventsource', EventSourceReceiver, XHRCorsObject); -} - -inherits(EventSourceTransport, AjaxBasedTransport); - -EventSourceTransport.enabled = function() { - return !!EventSourceDriver; -}; - -EventSourceTransport.transportName = 'eventsource'; -EventSourceTransport.roundTrips = 2; - -module.exports = EventSourceTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/htmlfile.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , HtmlfileReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/htmlfile.js") - , XHRLocalObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - ; - -function HtmlFileTransport(transUrl) { - if (!HtmlfileReceiver.enabled) { - throw new Error('Transport created when disabled'); - } - AjaxBasedTransport.call(this, transUrl, '/htmlfile', HtmlfileReceiver, XHRLocalObject); -} - -inherits(HtmlFileTransport, AjaxBasedTransport); - -HtmlFileTransport.enabled = function(info) { - return HtmlfileReceiver.enabled && info.sameOrigin; -}; - -HtmlFileTransport.transportName = 'htmlfile'; -HtmlFileTransport.roundTrips = 2; - -module.exports = HtmlFileTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/iframe.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// Few cool transports do work only for same-origin. In order to make -// them work cross-domain we shall use iframe, served from the -// remote domain. New browsers have capabilities to communicate with -// cross domain iframe using postMessage(). In IE it was implemented -// from IE 8+, but of course, IE got some details wrong: -// http://msdn.microsoft.com/en-us/library/cc197015(v=VS.85).aspx -// http://stevesouders.com/misc/test-postmessage.php - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , version = __webpack_require__("../../../../../node_modules/sockjs-client/lib/version.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , iframeUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/iframe.js") - , eventUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:transport:iframe'); -} - -function IframeTransport(transport, transUrl, baseUrl) { - if (!IframeTransport.enabled()) { - throw new Error('Transport created when disabled'); - } - EventEmitter.call(this); - - var self = this; - this.origin = urlUtils.getOrigin(baseUrl); - this.baseUrl = baseUrl; - this.transUrl = transUrl; - this.transport = transport; - this.windowId = random.string(8); - - var iframeUrl = urlUtils.addPath(baseUrl, '/iframe.html') + '#' + this.windowId; - debug(transport, transUrl, iframeUrl); - - this.iframeObj = iframeUtils.createIframe(iframeUrl, function(r) { - debug('err callback'); - self.emit('close', 1006, 'Unable to load an iframe (' + r + ')'); - self.close(); - }); - - this.onmessageCallback = this._message.bind(this); - eventUtils.attachEvent('message', this.onmessageCallback); -} - -inherits(IframeTransport, EventEmitter); - -IframeTransport.prototype.close = function() { - debug('close'); - this.removeAllListeners(); - if (this.iframeObj) { - eventUtils.detachEvent('message', this.onmessageCallback); - try { - // When the iframe is not loaded, IE raises an exception - // on 'contentWindow'. - this.postMessage('c'); - } catch (x) { - // intentionally empty - } - this.iframeObj.cleanup(); - this.iframeObj = null; - this.onmessageCallback = this.iframeObj = null; - } -}; - -IframeTransport.prototype._message = function(e) { - debug('message', e.data); - if (!urlUtils.isOriginEqual(e.origin, this.origin)) { - debug('not same origin', e.origin, this.origin); - return; - } - - var iframeMessage; - try { - iframeMessage = JSON3.parse(e.data); - } catch (ignored) { - debug('bad json', e.data); - return; - } - - if (iframeMessage.windowId !== this.windowId) { - debug('mismatched window id', iframeMessage.windowId, this.windowId); - return; - } - - switch (iframeMessage.type) { - case 's': - this.iframeObj.loaded(); - // window global dependency - this.postMessage('s', JSON3.stringify([ - version - , this.transport - , this.transUrl - , this.baseUrl - ])); - break; - case 't': - this.emit('message', iframeMessage.data); - break; - case 'c': - var cdata; - try { - cdata = JSON3.parse(iframeMessage.data); - } catch (ignored) { - debug('bad json', iframeMessage.data); - return; - } - this.emit('close', cdata[0], cdata[1]); - this.close(); - break; - } -}; - -IframeTransport.prototype.postMessage = function(type, data) { - debug('postMessage', type, data); - this.iframeObj.post(JSON3.stringify({ - windowId: this.windowId - , type: type - , data: data || '' - }), this.origin); -}; - -IframeTransport.prototype.send = function(message) { - debug('send', message); - this.postMessage('m', message); -}; - -IframeTransport.enabled = function() { - return iframeUtils.iframeEnabled; -}; - -IframeTransport.transportName = 'iframe'; -IframeTransport.roundTrips = 2; - -module.exports = IframeTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/jsonp-polling.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -// The simplest and most robust transport, using the well-know cross -// domain hack - JSONP. This transport is quite inefficient - one -// message could use up to one http request. But at least it works almost -// everywhere. -// Known limitations: -// o you will get a spinning cursor -// o for Konqueror a dumb timer is needed to detect errors - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , SenderReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/sender-receiver.js") - , JsonpReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/jsonp.js") - , jsonpSender = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/jsonp.js") - ; - -function JsonPTransport(transUrl) { - if (!JsonPTransport.enabled()) { - throw new Error('Transport created when disabled'); - } - SenderReceiver.call(this, transUrl, '/jsonp', jsonpSender, JsonpReceiver); -} - -inherits(JsonPTransport, SenderReceiver); - -JsonPTransport.enabled = function() { - return !!global.document; -}; - -JsonPTransport.transportName = 'jsonp-polling'; -JsonPTransport.roundTrips = 1; -JsonPTransport.needBody = true; - -module.exports = JsonPTransport; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , SenderReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/sender-receiver.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:ajax-based'); -} - -function createAjaxSender(AjaxObject) { - return function(url, payload, callback) { - debug('create ajax sender', url, payload); - var opt = {}; - if (typeof payload === 'string') { - opt.headers = {'Content-type': 'text/plain'}; - } - var ajaxUrl = urlUtils.addPath(url, '/xhr_send'); - var xo = new AjaxObject('POST', ajaxUrl, payload, opt); - xo.once('finish', function(status) { - debug('finish', status); - xo = null; - - if (status !== 200 && status !== 204) { - return callback(new Error('http status ' + status)); - } - callback(); - }); - return function() { - debug('abort'); - xo.close(); - xo = null; - - var err = new Error('Aborted'); - err.code = 1000; - callback(err); - }; - }; -} - -function AjaxBasedTransport(transUrl, urlSuffix, Receiver, AjaxObject) { - SenderReceiver.call(this, transUrl, urlSuffix, createAjaxSender(AjaxObject), Receiver, AjaxObject); -} - -inherits(AjaxBasedTransport, SenderReceiver); - -module.exports = AjaxBasedTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/lib/buffered-sender.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:buffered-sender'); -} - -function BufferedSender(url, sender) { - debug(url); - EventEmitter.call(this); - this.sendBuffer = []; - this.sender = sender; - this.url = url; -} - -inherits(BufferedSender, EventEmitter); - -BufferedSender.prototype.send = function(message) { - debug('send', message); - this.sendBuffer.push(message); - if (!this.sendStop) { - this.sendSchedule(); - } -}; - -// For polling transports in a situation when in the message callback, -// new message is being send. If the sending connection was started -// before receiving one, it is possible to saturate the network and -// timeout due to the lack of receiving socket. To avoid that we delay -// sending messages by some small time, in order to let receiving -// connection be started beforehand. This is only a halfmeasure and -// does not fix the big problem, but it does make the tests go more -// stable on slow networks. -BufferedSender.prototype.sendScheduleWait = function() { - debug('sendScheduleWait'); - var self = this; - var tref; - this.sendStop = function() { - debug('sendStop'); - self.sendStop = null; - clearTimeout(tref); - }; - tref = setTimeout(function() { - debug('timeout'); - self.sendStop = null; - self.sendSchedule(); - }, 25); -}; - -BufferedSender.prototype.sendSchedule = function() { - debug('sendSchedule', this.sendBuffer.length); - var self = this; - if (this.sendBuffer.length > 0) { - var payload = '[' + this.sendBuffer.join(',') + ']'; - this.sendStop = this.sender(this.url, payload, function(err) { - self.sendStop = null; - if (err) { - debug('error', err); - self.emit('close', err.code || 1006, 'Sending error: ' + err); - self.close(); - } else { - self.sendScheduleWait(); - } - }); - this.sendBuffer = []; - } -}; - -BufferedSender.prototype._cleanup = function() { - debug('_cleanup'); - this.removeAllListeners(); -}; - -BufferedSender.prototype.close = function() { - debug('close'); - this._cleanup(); - if (this.sendStop) { - this.sendStop(); - this.sendStop = null; - } -}; - -module.exports = BufferedSender; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/lib/iframe-wrap.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , IframeTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/iframe.js") - , objectUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/object.js") - ; - -module.exports = function(transport) { - - function IframeWrapTransport(transUrl, baseUrl) { - IframeTransport.call(this, transport.transportName, transUrl, baseUrl); - } - - inherits(IframeWrapTransport, IframeTransport); - - IframeWrapTransport.enabled = function(url, info) { - if (!global.document) { - return false; - } - - var iframeInfo = objectUtils.extend({}, info); - iframeInfo.sameOrigin = true; - return transport.enabled(iframeInfo) && IframeTransport.enabled(); - }; - - IframeWrapTransport.transportName = 'iframe-' + transport.transportName; - IframeWrapTransport.needBody = true; - IframeWrapTransport.roundTrips = IframeTransport.roundTrips + transport.roundTrips - 1; // html, javascript (2) + transport - no CORS (1) - - IframeWrapTransport.facadeTransport = transport; - - return IframeWrapTransport; -}; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/lib/polling.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:polling'); -} - -function Polling(Receiver, receiveUrl, AjaxObject) { - debug(receiveUrl); - EventEmitter.call(this); - this.Receiver = Receiver; - this.receiveUrl = receiveUrl; - this.AjaxObject = AjaxObject; - this._scheduleReceiver(); -} - -inherits(Polling, EventEmitter); - -Polling.prototype._scheduleReceiver = function() { - debug('_scheduleReceiver'); - var self = this; - var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject); - - poll.on('message', function(msg) { - debug('message', msg); - self.emit('message', msg); - }); - - poll.once('close', function(code, reason) { - debug('close', code, reason, self.pollIsClosing); - self.poll = poll = null; - - if (!self.pollIsClosing) { - if (reason === 'network') { - self._scheduleReceiver(); - } else { - self.emit('close', code || 1006, reason); - self.removeAllListeners(); - } - } - }); -}; - -Polling.prototype.abort = function() { - debug('abort'); - this.removeAllListeners(); - this.pollIsClosing = true; - if (this.poll) { - this.poll.abort(); - } -}; - -module.exports = Polling; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/lib/sender-receiver.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , BufferedSender = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/buffered-sender.js") - , Polling = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/polling.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:sender-receiver'); -} - -function SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) { - var pollUrl = urlUtils.addPath(transUrl, urlSuffix); - debug(pollUrl); - var self = this; - BufferedSender.call(this, transUrl, senderFunc); - - this.poll = new Polling(Receiver, pollUrl, AjaxObject); - this.poll.on('message', function(msg) { - debug('poll message', msg); - self.emit('message', msg); - }); - this.poll.once('close', function(code, reason) { - debug('poll close', code, reason); - self.poll = null; - self.emit('close', code, reason); - self.close(); - }); -} - -inherits(SenderReceiver, BufferedSender); - -SenderReceiver.prototype.close = function() { - BufferedSender.prototype.close.call(this); - debug('close'); - this.removeAllListeners(); - if (this.poll) { - this.poll.abort(); - this.poll = null; - } -}; - -module.exports = SenderReceiver; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/receiver/eventsource.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , EventSourceDriver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/browser/eventsource.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:receiver:eventsource'); -} - -function EventSourceReceiver(url) { - debug(url); - EventEmitter.call(this); - - var self = this; - var es = this.es = new EventSourceDriver(url); - es.onmessage = function(e) { - debug('message', e.data); - self.emit('message', decodeURI(e.data)); - }; - es.onerror = function(e) { - debug('error', es.readyState, e); - // ES on reconnection has readyState = 0 or 1. - // on network error it's CLOSED = 2 - var reason = (es.readyState !== 2 ? 'network' : 'permanent'); - self._cleanup(); - self._close(reason); - }; -} - -inherits(EventSourceReceiver, EventEmitter); - -EventSourceReceiver.prototype.abort = function() { - debug('abort'); - this._cleanup(); - this._close('user'); -}; - -EventSourceReceiver.prototype._cleanup = function() { - debug('cleanup'); - var es = this.es; - if (es) { - es.onmessage = es.onerror = null; - es.close(); - this.es = null; - } -}; - -EventSourceReceiver.prototype._close = function(reason) { - debug('close', reason); - var self = this; - // Safari and chrome < 15 crash if we close window before - // waiting for ES cleanup. See: - // https://code.google.com/p/chromium/issues/detail?id=89155 - setTimeout(function() { - self.emit('close', null, reason); - self.removeAllListeners(); - }, 200); -}; - -module.exports = EventSourceReceiver; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/receiver/htmlfile.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , iframeUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/iframe.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:receiver:htmlfile'); -} - -function HtmlfileReceiver(url) { - debug(url); - EventEmitter.call(this); - var self = this; - iframeUtils.polluteGlobalNamespace(); - - this.id = 'a' + random.string(6); - url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id)); - - debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled); - var constructFunc = HtmlfileReceiver.htmlfileEnabled ? - iframeUtils.createHtmlfile : iframeUtils.createIframe; - - global[iframeUtils.WPrefix][this.id] = { - start: function() { - debug('start'); - self.iframeObj.loaded(); - } - , message: function(data) { - debug('message', data); - self.emit('message', data); - } - , stop: function() { - debug('stop'); - self._cleanup(); - self._close('network'); - } - }; - this.iframeObj = constructFunc(url, function() { - debug('callback'); - self._cleanup(); - self._close('permanent'); - }); -} - -inherits(HtmlfileReceiver, EventEmitter); - -HtmlfileReceiver.prototype.abort = function() { - debug('abort'); - this._cleanup(); - this._close('user'); -}; - -HtmlfileReceiver.prototype._cleanup = function() { - debug('_cleanup'); - if (this.iframeObj) { - this.iframeObj.cleanup(); - this.iframeObj = null; - } - delete global[iframeUtils.WPrefix][this.id]; -}; - -HtmlfileReceiver.prototype._close = function(reason) { - debug('_close', reason); - this.emit('close', null, reason); - this.removeAllListeners(); -}; - -HtmlfileReceiver.htmlfileEnabled = false; - -// obfuscate to avoid firewalls -var axo = ['Active'].concat('Object').join('X'); -if (axo in global) { - try { - HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile'); - } catch (x) { - // intentionally empty - } -} - -HtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled; - -module.exports = HtmlfileReceiver; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/receiver/jsonp.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var utils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/iframe.js") - , random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js") - , browser = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:receiver:jsonp'); -} - -function JsonpReceiver(url) { - debug(url); - var self = this; - EventEmitter.call(this); - - utils.polluteGlobalNamespace(); - - this.id = 'a' + random.string(6); - var urlWithId = urlUtils.addQuery(url, 'c=' + encodeURIComponent(utils.WPrefix + '.' + this.id)); - - global[utils.WPrefix][this.id] = this._callback.bind(this); - this._createScript(urlWithId); - - // Fallback mostly for Konqueror - stupid timer, 35 seconds shall be plenty. - this.timeoutId = setTimeout(function() { - debug('timeout'); - self._abort(new Error('JSONP script loaded abnormally (timeout)')); - }, JsonpReceiver.timeout); -} - -inherits(JsonpReceiver, EventEmitter); - -JsonpReceiver.prototype.abort = function() { - debug('abort'); - if (global[utils.WPrefix][this.id]) { - var err = new Error('JSONP user aborted read'); - err.code = 1000; - this._abort(err); - } -}; - -JsonpReceiver.timeout = 35000; -JsonpReceiver.scriptErrorTimeout = 1000; - -JsonpReceiver.prototype._callback = function(data) { - debug('_callback', data); - this._cleanup(); - - if (this.aborting) { - return; - } - - if (data) { - debug('message', data); - this.emit('message', data); - } - this.emit('close', null, 'network'); - this.removeAllListeners(); -}; - -JsonpReceiver.prototype._abort = function(err) { - debug('_abort', err); - this._cleanup(); - this.aborting = true; - this.emit('close', err.code, err.message); - this.removeAllListeners(); -}; - -JsonpReceiver.prototype._cleanup = function() { - debug('_cleanup'); - clearTimeout(this.timeoutId); - if (this.script2) { - this.script2.parentNode.removeChild(this.script2); - this.script2 = null; - } - if (this.script) { - var script = this.script; - // Unfortunately, you can't really abort script loading of - // the script. - script.parentNode.removeChild(script); - script.onreadystatechange = script.onerror = - script.onload = script.onclick = null; - this.script = null; - } - delete global[utils.WPrefix][this.id]; -}; - -JsonpReceiver.prototype._scriptError = function() { - debug('_scriptError'); - var self = this; - if (this.errorTimer) { - return; - } - - this.errorTimer = setTimeout(function() { - if (!self.loadedOkay) { - self._abort(new Error('JSONP script loaded abnormally (onerror)')); - } - }, JsonpReceiver.scriptErrorTimeout); -}; - -JsonpReceiver.prototype._createScript = function(url) { - debug('_createScript', url); - var self = this; - var script = this.script = global.document.createElement('script'); - var script2; // Opera synchronous load trick. - - script.id = 'a' + random.string(8); - script.src = url; - script.type = 'text/javascript'; - script.charset = 'UTF-8'; - script.onerror = this._scriptError.bind(this); - script.onload = function() { - debug('onload'); - self._abort(new Error('JSONP script loaded abnormally (onload)')); - }; - - // IE9 fires 'error' event after onreadystatechange or before, in random order. - // Use loadedOkay to determine if actually errored - script.onreadystatechange = function() { - debug('onreadystatechange', script.readyState); - if (/loaded|closed/.test(script.readyState)) { - if (script && script.htmlFor && script.onclick) { - self.loadedOkay = true; - try { - // In IE, actually execute the script. - script.onclick(); - } catch (x) { - // intentionally empty - } - } - if (script) { - self._abort(new Error('JSONP script loaded abnormally (onreadystatechange)')); - } - } - }; - // IE: event/htmlFor/onclick trick. - // One can't rely on proper order for onreadystatechange. In order to - // make sure, set a 'htmlFor' and 'event' properties, so that - // script code will be installed as 'onclick' handler for the - // script object. Later, onreadystatechange, manually execute this - // code. FF and Chrome doesn't work with 'event' and 'htmlFor' - // set. For reference see: - // http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html - // Also, read on that about script ordering: - // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order - if (typeof script.async === 'undefined' && global.document.attachEvent) { - // According to mozilla docs, in recent browsers script.async defaults - // to 'true', so we may use it to detect a good browser: - // https://developer.mozilla.org/en/HTML/Element/script - if (!browser.isOpera()) { - // Naively assume we're in IE - try { - script.htmlFor = script.id; - script.event = 'onclick'; - } catch (x) { - // intentionally empty - } - script.async = true; - } else { - // Opera, second sync script hack - script2 = this.script2 = global.document.createElement('script'); - script2.text = "try{var a = document.getElementById('" + script.id + "'); if(a)a.onerror();}catch(x){};"; - script.async = script2.async = false; - } - } - if (typeof script.async !== 'undefined') { - script.async = true; - } - - var head = global.document.getElementsByTagName('head')[0]; - head.insertBefore(script, head.firstChild); - if (script2) { - head.insertBefore(script2, head.firstChild); - } -}; - -module.exports = JsonpReceiver; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/receiver/xhr.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:receiver:xhr'); -} - -function XhrReceiver(url, AjaxObject) { - debug(url); - EventEmitter.call(this); - var self = this; - - this.bufferPosition = 0; - - this.xo = new AjaxObject('POST', url, null); - this.xo.on('chunk', this._chunkHandler.bind(this)); - this.xo.once('finish', function(status, text) { - debug('finish', status, text); - self._chunkHandler(status, text); - self.xo = null; - var reason = status === 200 ? 'network' : 'permanent'; - debug('close', reason); - self.emit('close', null, reason); - self._cleanup(); - }); -} - -inherits(XhrReceiver, EventEmitter); - -XhrReceiver.prototype._chunkHandler = function(status, text) { - debug('_chunkHandler', status); - if (status !== 200 || !text) { - return; - } - - for (var idx = -1; ; this.bufferPosition += idx + 1) { - var buf = text.slice(this.bufferPosition); - idx = buf.indexOf('\n'); - if (idx === -1) { - break; - } - var msg = buf.slice(0, idx); - if (msg) { - debug('message', msg); - this.emit('message', msg); - } - } -}; - -XhrReceiver.prototype._cleanup = function() { - debug('_cleanup'); - this.removeAllListeners(); -}; - -XhrReceiver.prototype.abort = function() { - debug('abort'); - if (this.xo) { - this.xo.close(); - debug('close'); - this.emit('close', null, 'user'); - this.xo = null; - } - this._cleanup(); -}; - -module.exports = XhrReceiver; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/sender/jsonp.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:sender:jsonp'); -} - -var form, area; - -function createIframe(id) { - debug('createIframe', id); - try { - // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) - return global.document.createElement('<iframe name="' + id + '">'); - } catch (x) { - var iframe = global.document.createElement('iframe'); - iframe.name = id; - return iframe; - } -} - -function createForm() { - debug('createForm'); - form = global.document.createElement('form'); - form.style.display = 'none'; - form.style.position = 'absolute'; - form.method = 'POST'; - form.enctype = 'application/x-www-form-urlencoded'; - form.acceptCharset = 'UTF-8'; - - area = global.document.createElement('textarea'); - area.name = 'd'; - form.appendChild(area); - - global.document.body.appendChild(form); -} - -module.exports = function(url, payload, callback) { - debug(url, payload); - if (!form) { - createForm(); - } - var id = 'a' + random.string(8); - form.target = id; - form.action = urlUtils.addQuery(urlUtils.addPath(url, '/jsonp_send'), 'i=' + id); - - var iframe = createIframe(id); - iframe.id = id; - iframe.style.display = 'none'; - form.appendChild(iframe); - - try { - area.value = payload; - } catch (e) { - // seriously broken browsers get here - } - form.submit(); - - var completed = function(err) { - debug('completed', id, err); - if (!iframe.onerror) { - return; - } - iframe.onreadystatechange = iframe.onerror = iframe.onload = null; - // Opera mini doesn't like if we GC iframe - // immediately, thus this timeout. - setTimeout(function() { - debug('cleaning up', id); - iframe.parentNode.removeChild(iframe); - iframe = null; - }, 500); - area.value = ''; - // It is not possible to detect if the iframe succeeded or - // failed to submit our form. - callback(err); - }; - iframe.onerror = function() { - debug('onerror', id); - completed(); - }; - iframe.onload = function() { - debug('onload', id); - completed(); - }; - iframe.onreadystatechange = function(e) { - debug('onreadystatechange', id, iframe.readyState, e); - if (iframe.readyState === 'complete') { - completed(); - } - }; - return function() { - debug('aborted', id); - completed(new Error('Aborted')); - }; -}; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/sender/xdr.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , eventUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , browser = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:sender:xdr'); -} - -// References: -// http://ajaxian.com/archives/100-line-ajax-wrapper -// http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx - -function XDRObject(method, url, payload) { - debug(method, url); - var self = this; - EventEmitter.call(this); - - setTimeout(function() { - self._start(method, url, payload); - }, 0); -} - -inherits(XDRObject, EventEmitter); - -XDRObject.prototype._start = function(method, url, payload) { - debug('_start'); - var self = this; - var xdr = new global.XDomainRequest(); - // IE caches even POSTs - url = urlUtils.addQuery(url, 't=' + (+new Date())); - - xdr.onerror = function() { - debug('onerror'); - self._error(); - }; - xdr.ontimeout = function() { - debug('ontimeout'); - self._error(); - }; - xdr.onprogress = function() { - debug('progress', xdr.responseText); - self.emit('chunk', 200, xdr.responseText); - }; - xdr.onload = function() { - debug('load'); - self.emit('finish', 200, xdr.responseText); - self._cleanup(false); - }; - this.xdr = xdr; - this.unloadRef = eventUtils.unloadAdd(function() { - self._cleanup(true); - }); - try { - // Fails with AccessDenied if port number is bogus - this.xdr.open(method, url); - if (this.timeout) { - this.xdr.timeout = this.timeout; - } - this.xdr.send(payload); - } catch (x) { - this._error(); - } -}; - -XDRObject.prototype._error = function() { - this.emit('finish', 0, ''); - this._cleanup(false); -}; - -XDRObject.prototype._cleanup = function(abort) { - debug('cleanup', abort); - if (!this.xdr) { - return; - } - this.removeAllListeners(); - eventUtils.unloadDel(this.unloadRef); - - this.xdr.ontimeout = this.xdr.onerror = this.xdr.onprogress = this.xdr.onload = null; - if (abort) { - try { - this.xdr.abort(); - } catch (x) { - // intentionally empty - } - } - this.unloadRef = this.xdr = null; -}; - -XDRObject.prototype.close = function() { - debug('close'); - this._cleanup(true); -}; - -// IE 8/9 if the request target uses the same scheme - #79 -XDRObject.enabled = !!(global.XDomainRequest && browser.hasDomain()); - -module.exports = XDRObject; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-cors.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , XhrDriver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/browser/abstract-xhr.js") - ; - -function XHRCorsObject(method, url, payload, opts) { - XhrDriver.call(this, method, url, payload, opts); -} - -inherits(XHRCorsObject, XhrDriver); - -XHRCorsObject.enabled = XhrDriver.enabled && XhrDriver.supportsCORS; - -module.exports = XHRCorsObject; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-fake.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - ; - -function XHRFake(/* method, url, payload, opts */) { - var self = this; - EventEmitter.call(this); - - this.to = setTimeout(function() { - self.emit('finish', 200, '{}'); - }, XHRFake.timeout); -} - -inherits(XHRFake, EventEmitter); - -XHRFake.prototype.close = function() { - clearTimeout(this.to); -}; - -XHRFake.timeout = 2000; - -module.exports = XHRFake; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , XhrDriver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/browser/abstract-xhr.js") - ; - -function XHRLocalObject(method, url, payload /*, opts */) { - XhrDriver.call(this, method, url, payload, { - noCredentials: true - }); -} - -inherits(XHRLocalObject, XhrDriver); - -XHRLocalObject.enabled = XhrDriver.enabled; - -module.exports = XHRLocalObject; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/websocket.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , urlUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/url.js") - , inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , EventEmitter = __webpack_require__("../../../../../node_modules/sockjs-client/lib/event/emitter.js").EventEmitter - , WebsocketDriver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/browser/websocket.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:websocket'); -} - -function WebSocketTransport(transUrl, ignore, options) { - if (!WebSocketTransport.enabled()) { - throw new Error('Transport created when disabled'); - } - - EventEmitter.call(this); - debug('constructor', transUrl); - - var self = this; - var url = urlUtils.addPath(transUrl, '/websocket'); - if (url.slice(0, 5) === 'https') { - url = 'wss' + url.slice(5); - } else { - url = 'ws' + url.slice(4); - } - this.url = url; - - this.ws = new WebsocketDriver(this.url, [], options); - this.ws.onmessage = function(e) { - debug('message event', e.data); - self.emit('message', e.data); - }; - // Firefox has an interesting bug. If a websocket connection is - // created after onunload, it stays alive even when user - // navigates away from the page. In such situation let's lie - - // let's not open the ws connection at all. See: - // https://github.com/sockjs/sockjs-client/issues/28 - // https://bugzilla.mozilla.org/show_bug.cgi?id=696085 - this.unloadRef = utils.unloadAdd(function() { - debug('unload'); - self.ws.close(); - }); - this.ws.onclose = function(e) { - debug('close event', e.code, e.reason); - self.emit('close', e.code, e.reason); - self._cleanup(); - }; - this.ws.onerror = function(e) { - debug('error event', e); - self.emit('close', 1006, 'WebSocket connection broken'); - self._cleanup(); - }; -} - -inherits(WebSocketTransport, EventEmitter); - -WebSocketTransport.prototype.send = function(data) { - var msg = '[' + data + ']'; - debug('send', msg); - this.ws.send(msg); -}; - -WebSocketTransport.prototype.close = function() { - debug('close'); - var ws = this.ws; - this._cleanup(); - if (ws) { - ws.close(); - } -}; - -WebSocketTransport.prototype._cleanup = function() { - debug('_cleanup'); - var ws = this.ws; - if (ws) { - ws.onmessage = ws.onclose = ws.onerror = null; - } - utils.unloadDel(this.unloadRef); - this.unloadRef = this.ws = null; - this.removeAllListeners(); -}; - -WebSocketTransport.enabled = function() { - debug('enabled'); - return !!WebsocketDriver; -}; -WebSocketTransport.transportName = 'websocket'; - -// In theory, ws should require 1 round trip. But in chrome, this is -// not very stable over SSL. Most likely a ws connection requires a -// separate SSL connection, in which case 2 round trips are an -// absolute minumum. -WebSocketTransport.roundTrips = 2; - -module.exports = WebSocketTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/xdr-polling.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - , XdrStreamingTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/xdr-streaming.js") - , XhrReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/xhr.js") - , XDRObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xdr.js") - ; - -function XdrPollingTransport(transUrl) { - if (!XDRObject.enabled) { - throw new Error('Transport created when disabled'); - } - AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XDRObject); -} - -inherits(XdrPollingTransport, AjaxBasedTransport); - -XdrPollingTransport.enabled = XdrStreamingTransport.enabled; -XdrPollingTransport.transportName = 'xdr-polling'; -XdrPollingTransport.roundTrips = 2; // preflight, ajax - -module.exports = XdrPollingTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/xdr-streaming.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - , XhrReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/xhr.js") - , XDRObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xdr.js") - ; - -// According to: -// http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests -// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ - -function XdrStreamingTransport(transUrl) { - if (!XDRObject.enabled) { - throw new Error('Transport created when disabled'); - } - AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XDRObject); -} - -inherits(XdrStreamingTransport, AjaxBasedTransport); - -XdrStreamingTransport.enabled = function(info) { - if (info.cookie_needed || info.nullOrigin) { - return false; - } - return XDRObject.enabled && info.sameScheme; -}; - -XdrStreamingTransport.transportName = 'xdr-streaming'; -XdrStreamingTransport.roundTrips = 2; // preflight, ajax - -module.exports = XdrStreamingTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/xhr-polling.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - , XhrReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/xhr.js") - , XHRCorsObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-cors.js") - , XHRLocalObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js") - ; - -function XhrPollingTransport(transUrl) { - if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) { - throw new Error('Transport created when disabled'); - } - AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XHRCorsObject); -} - -inherits(XhrPollingTransport, AjaxBasedTransport); - -XhrPollingTransport.enabled = function(info) { - if (info.nullOrigin) { - return false; - } - - if (XHRLocalObject.enabled && info.sameOrigin) { - return true; - } - return XHRCorsObject.enabled; -}; - -XhrPollingTransport.transportName = 'xhr-polling'; -XhrPollingTransport.roundTrips = 2; // preflight, ajax - -module.exports = XhrPollingTransport; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/transport/xhr-streaming.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var inherits = __webpack_require__("../../../../../node_modules/inherits/inherits_browser.js") - , AjaxBasedTransport = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/lib/ajax-based.js") - , XhrReceiver = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/receiver/xhr.js") - , XHRCorsObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-cors.js") - , XHRLocalObject = __webpack_require__("../../../../../node_modules/sockjs-client/lib/transport/sender/xhr-local.js") - , browser = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser.js") - ; - -function XhrStreamingTransport(transUrl) { - if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) { - throw new Error('Transport created when disabled'); - } - AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject); -} - -inherits(XhrStreamingTransport, AjaxBasedTransport); - -XhrStreamingTransport.enabled = function(info) { - if (info.nullOrigin) { - return false; - } - // Opera doesn't support xhr-streaming #60 - // But it might be able to #92 - if (browser.isOpera()) { - return false; - } - - return XHRCorsObject.enabled; -}; - -XhrStreamingTransport.transportName = 'xhr-streaming'; -XhrStreamingTransport.roundTrips = 2; // preflight, ajax - -// Safari gets confused when a streaming ajax request is started -// before onload. This causes the load indicator to spin indefinetely. -// Only require body when used in a browser -XhrStreamingTransport.needBody = !!global.document; - -module.exports = XhrStreamingTransport; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/browser-crypto.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -if (global.crypto && global.crypto.getRandomValues) { - module.exports.randomBytes = function(length) { - var bytes = new Uint8Array(length); - global.crypto.getRandomValues(bytes); - return bytes; - }; -} else { - module.exports.randomBytes = function(length) { - var bytes = new Array(length); - for (var i = 0; i < length; i++) { - bytes[i] = Math.floor(Math.random() * 256); - } - return bytes; - }; -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/browser.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -module.exports = { - isOpera: function() { - return global.navigator && - /opera/i.test(global.navigator.userAgent); - } - -, isKonqueror: function() { - return global.navigator && - /konqueror/i.test(global.navigator.userAgent); - } - - // #187 wrap document.domain in try/catch because of WP8 from file:/// -, hasDomain: function () { - // non-browser client always has a domain - if (!global.document) { - return true; - } - - try { - return !!global.document.domain; - } catch (e) { - return false; - } - } -}; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/escape.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js"); - -// Some extra characters that Chrome gets wrong, and substitutes with -// something else on the wire. -// eslint-disable-next-line no-control-regex -var extraEscapable = /[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g - , extraLookup; - -// This may be quite slow, so let's delay until user actually uses bad -// characters. -var unrollLookup = function(escapable) { - var i; - var unrolled = {}; - var c = []; - for (i = 0; i < 65536; i++) { - c.push( String.fromCharCode(i) ); - } - escapable.lastIndex = 0; - c.join('').replace(escapable, function(a) { - unrolled[ a ] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - return ''; - }); - escapable.lastIndex = 0; - return unrolled; -}; - -// Quote string, also taking care of unicode characters that browsers -// often break. Especially, take care of unicode surrogates: -// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates -module.exports = { - quote: function(string) { - var quoted = JSON3.stringify(string); - - // In most cases this should be very fast and good enough. - extraEscapable.lastIndex = 0; - if (!extraEscapable.test(quoted)) { - return quoted; - } - - if (!extraLookup) { - extraLookup = unrollLookup(extraEscapable); - } - - return quoted.replace(extraEscapable, function(a) { - return extraLookup[a]; - }); - } -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/event.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var random = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/random.js"); - -var onUnload = {} - , afterUnload = false - // detect google chrome packaged apps because they don't allow the 'unload' event - , isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime - ; - -module.exports = { - attachEvent: function(event, listener) { - if (typeof global.addEventListener !== 'undefined') { - global.addEventListener(event, listener, false); - } else if (global.document && global.attachEvent) { - // IE quirks. - // According to: http://stevesouders.com/misc/test-postmessage.php - // the message gets delivered only to 'document', not 'window'. - global.document.attachEvent('on' + event, listener); - // I get 'window' for ie8. - global.attachEvent('on' + event, listener); - } - } - -, detachEvent: function(event, listener) { - if (typeof global.addEventListener !== 'undefined') { - global.removeEventListener(event, listener, false); - } else if (global.document && global.detachEvent) { - global.document.detachEvent('on' + event, listener); - global.detachEvent('on' + event, listener); - } - } - -, unloadAdd: function(listener) { - if (isChromePackagedApp) { - return null; - } - - var ref = random.string(8); - onUnload[ref] = listener; - if (afterUnload) { - setTimeout(this.triggerUnloadCallbacks, 0); - } - return ref; - } - -, unloadDel: function(ref) { - if (ref in onUnload) { - delete onUnload[ref]; - } - } - -, triggerUnloadCallbacks: function() { - for (var ref in onUnload) { - onUnload[ref](); - delete onUnload[ref]; - } - } -}; - -var unloadTriggered = function() { - if (afterUnload) { - return; - } - afterUnload = true; - module.exports.triggerUnloadCallbacks(); -}; - -// 'unload' alone is not reliable in opera within an iframe, but we -// can't use `beforeunload` as IE fires it on javascript: links. -if (!isChromePackagedApp) { - module.exports.attachEvent('unload', unloadTriggered); -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/iframe.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var eventUtils = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/event.js") - , JSON3 = __webpack_require__("../../../../../node_modules/json3/lib/json3.js") - , browser = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser.js") - ; - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:utils:iframe'); -} - -module.exports = { - WPrefix: '_jp' -, currentWindowId: null - -, polluteGlobalNamespace: function() { - if (!(module.exports.WPrefix in global)) { - global[module.exports.WPrefix] = {}; - } - } - -, postMessage: function(type, data) { - if (global.parent !== global) { - global.parent.postMessage(JSON3.stringify({ - windowId: module.exports.currentWindowId - , type: type - , data: data || '' - }), '*'); - } else { - debug('Cannot postMessage, no parent window.', type, data); - } - } - -, createIframe: function(iframeUrl, errorCallback) { - var iframe = global.document.createElement('iframe'); - var tref, unloadRef; - var unattach = function() { - debug('unattach'); - clearTimeout(tref); - // Explorer had problems with that. - try { - iframe.onload = null; - } catch (x) { - // intentionally empty - } - iframe.onerror = null; - }; - var cleanup = function() { - debug('cleanup'); - if (iframe) { - unattach(); - // This timeout makes chrome fire onbeforeunload event - // within iframe. Without the timeout it goes straight to - // onunload. - setTimeout(function() { - if (iframe) { - iframe.parentNode.removeChild(iframe); - } - iframe = null; - }, 0); - eventUtils.unloadDel(unloadRef); - } - }; - var onerror = function(err) { - debug('onerror', err); - if (iframe) { - cleanup(); - errorCallback(err); - } - }; - var post = function(msg, origin) { - debug('post', msg, origin); - try { - // When the iframe is not loaded, IE raises an exception - // on 'contentWindow'. - setTimeout(function() { - if (iframe && iframe.contentWindow) { - iframe.contentWindow.postMessage(msg, origin); - } - }, 0); - } catch (x) { - // intentionally empty - } - }; - - iframe.src = iframeUrl; - iframe.style.display = 'none'; - iframe.style.position = 'absolute'; - iframe.onerror = function() { - onerror('onerror'); - }; - iframe.onload = function() { - debug('onload'); - // `onload` is triggered before scripts on the iframe are - // executed. Give it few seconds to actually load stuff. - clearTimeout(tref); - tref = setTimeout(function() { - onerror('onload timeout'); - }, 2000); - }; - global.document.body.appendChild(iframe); - tref = setTimeout(function() { - onerror('timeout'); - }, 15000); - unloadRef = eventUtils.unloadAdd(cleanup); - return { - post: post - , cleanup: cleanup - , loaded: unattach - }; - } - -/* eslint no-undef: "off", new-cap: "off" */ -, createHtmlfile: function(iframeUrl, errorCallback) { - var axo = ['Active'].concat('Object').join('X'); - var doc = new global[axo]('htmlfile'); - var tref, unloadRef; - var iframe; - var unattach = function() { - clearTimeout(tref); - iframe.onerror = null; - }; - var cleanup = function() { - if (doc) { - unattach(); - eventUtils.unloadDel(unloadRef); - iframe.parentNode.removeChild(iframe); - iframe = doc = null; - CollectGarbage(); - } - }; - var onerror = function(r) { - debug('onerror', r); - if (doc) { - cleanup(); - errorCallback(r); - } - }; - var post = function(msg, origin) { - try { - // When the iframe is not loaded, IE raises an exception - // on 'contentWindow'. - setTimeout(function() { - if (iframe && iframe.contentWindow) { - iframe.contentWindow.postMessage(msg, origin); - } - }, 0); - } catch (x) { - // intentionally empty - } - }; - - doc.open(); - doc.write('<html><s' + 'cript>' + - 'document.domain="' + global.document.domain + '";' + - '</s' + 'cript></html>'); - doc.close(); - doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix]; - var c = doc.createElement('div'); - doc.body.appendChild(c); - iframe = doc.createElement('iframe'); - c.appendChild(iframe); - iframe.src = iframeUrl; - iframe.onerror = function() { - onerror('onerror'); - }; - tref = setTimeout(function() { - onerror('timeout'); - }, 15000); - unloadRef = eventUtils.unloadAdd(cleanup); - return { - post: post - , cleanup: cleanup - , loaded: unattach - }; - } -}; - -module.exports.iframeEnabled = false; -if (global.document) { - // postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with - // huge delay, or not at all. - module.exports.iframeEnabled = (typeof global.postMessage === 'function' || - typeof global.postMessage === 'object') && (!browser.isKonqueror()); -} - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/log.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var logObject = {}; -['log', 'debug', 'warn'].forEach(function (level) { - var levelExists; - - try { - levelExists = global.console && global.console[level] && global.console[level].apply; - } catch(e) { - // do nothing - } - - logObject[level] = levelExists ? function () { - return global.console[level].apply(global.console, arguments); - } : (level === 'log' ? function () {} : logObject.log); -}); - -module.exports = logObject; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/object.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = { - isObject: function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - } - -, extend: function(obj) { - if (!this.isObject(obj)) { - return obj; - } - var source, prop; - for (var i = 1, length = arguments.length; i < length; i++) { - source = arguments[i]; - for (prop in source) { - if (Object.prototype.hasOwnProperty.call(source, prop)) { - obj[prop] = source[prop]; - } - } - } - return obj; - } -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/random.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/* global crypto:true */ -var crypto = __webpack_require__("../../../../../node_modules/sockjs-client/lib/utils/browser-crypto.js"); - -// This string has length 32, a power of 2, so the modulus doesn't introduce a -// bias. -var _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345'; -module.exports = { - string: function(length) { - var max = _randomStringChars.length; - var bytes = crypto.randomBytes(length); - var ret = []; - for (var i = 0; i < length; i++) { - ret.push(_randomStringChars.substr(bytes[i] % max, 1)); - } - return ret.join(''); - } - -, number: function(max) { - return Math.floor(Math.random() * max); - } - -, numberString: function(max) { - var t = ('' + (max - 1)).length; - var p = new Array(t + 1).join('0'); - return (p + this.number(max)).slice(-t); - } -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/transport.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:utils:transport'); -} - -module.exports = function(availableTransports) { - return { - filterToEnabled: function(transportsWhitelist, info) { - var transports = { - main: [] - , facade: [] - }; - if (!transportsWhitelist) { - transportsWhitelist = []; - } else if (typeof transportsWhitelist === 'string') { - transportsWhitelist = [transportsWhitelist]; - } - - availableTransports.forEach(function(trans) { - if (!trans) { - return; - } - - if (trans.transportName === 'websocket' && info.websocket === false) { - debug('disabled from server', 'websocket'); - return; - } - - if (transportsWhitelist.length && - transportsWhitelist.indexOf(trans.transportName) === -1) { - debug('not in whitelist', trans.transportName); - return; - } - - if (trans.enabled(info)) { - debug('enabled', trans.transportName); - transports.main.push(trans); - if (trans.facadeTransport) { - transports.facade.push(trans.facadeTransport); - } - } else { - debug('disabled', trans.transportName); - } - }); - return transports; - } - }; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/utils/url.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var URL = __webpack_require__("../../../../../node_modules/url-parse/index.js"); - -var debug = function() {}; -if (true) { - debug = __webpack_require__("../../../../../node_modules/debug/src/browser.js")('sockjs-client:utils:url'); -} - -module.exports = { - getOrigin: function(url) { - if (!url) { - return null; - } - - var p = new URL(url); - if (p.protocol === 'file:') { - return null; - } - - var port = p.port; - if (!port) { - port = (p.protocol === 'https:') ? '443' : '80'; - } - - return p.protocol + '//' + p.hostname + ':' + port; - } - -, isOriginEqual: function(a, b) { - var res = this.getOrigin(a) === this.getOrigin(b); - debug('same', a, b, res); - return res; - } - -, isSchemeEqual: function(a, b) { - return (a.split(':')[0] === b.split(':')[0]); - } - -, addPath: function (url, path) { - var qs = url.split('?'); - return qs[0] + path + (qs[1] ? '?' + qs[1] : ''); - } - -, addQuery: function (url, q) { - return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q)); - } -}; - - -/***/ }), - -/***/ "../../../../../node_modules/sockjs-client/lib/version.js": -/***/ (function(module, exports) { - -module.exports = '1.1.4'; - - -/***/ }), - -/***/ "../../../../../node_modules/strip-ansi/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var ansiRegex = __webpack_require__("../../../../../node_modules/ansi-regex/index.js")(); - -module.exports = function (str) { - return typeof str === 'string' ? str.replace(ansiRegex, '') : str; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/url-parse/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var required = __webpack_require__("../../../../../node_modules/requires-port/index.js") - , qs = __webpack_require__("../../../../../node_modules/url-parse/node_modules/querystringify/index.js") - , protocolre = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\S\s]*)/i - , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//; - -/** - * These are the parse rules for the URL parser, it informs the parser - * about: - * - * 0. The char it Needs to parse, if it's a string it should be done using - * indexOf, RegExp using exec and NaN means set as current value. - * 1. The property we should set when parsing this value. - * 2. Indication if it's backwards or forward parsing, when set as number it's - * the value of extra chars that should be split off. - * 3. Inherit from location if non existing in the parser. - * 4. `toLowerCase` the resulting value. - */ -var rules = [ - ['#', 'hash'], // Extract from the back. - ['?', 'query'], // Extract from the back. - ['/', 'pathname'], // Extract from the back. - ['@', 'auth', 1], // Extract from the front. - [NaN, 'host', undefined, 1, 1], // Set left over value. - [/:(\d+)$/, 'port', undefined, 1], // RegExp the back. - [NaN, 'hostname', undefined, 1, 1] // Set left over. -]; - -/** - * These properties should not be copied or inherited from. This is only needed - * for all non blob URL's as a blob URL does not include a hash, only the - * origin. - * - * @type {Object} - * @private - */ -var ignore = { hash: 1, query: 1 }; - -/** - * The location object differs when your code is loaded through a normal page, - * Worker or through a worker using a blob. And with the blobble begins the - * trouble as the location object will contain the URL of the blob, not the - * location of the page where our code is loaded in. The actual origin is - * encoded in the `pathname` so we can thankfully generate a good "default" - * location from it so we can generate proper relative URL's again. - * - * @param {Object|String} loc Optional default location object. - * @returns {Object} lolcation object. - * @api public - */ -function lolcation(loc) { - loc = loc || global.location || {}; - - var finaldestination = {} - , type = typeof loc - , key; - - if ('blob:' === loc.protocol) { - finaldestination = new URL(unescape(loc.pathname), {}); - } else if ('string' === type) { - finaldestination = new URL(loc, {}); - for (key in ignore) delete finaldestination[key]; - } else if ('object' === type) { - for (key in loc) { - if (key in ignore) continue; - finaldestination[key] = loc[key]; - } - - if (finaldestination.slashes === undefined) { - finaldestination.slashes = slashes.test(loc.href); - } - } - - return finaldestination; -} - -/** - * @typedef ProtocolExtract - * @type Object - * @property {String} protocol Protocol matched in the URL, in lowercase. - * @property {Boolean} slashes `true` if protocol is followed by "//", else `false`. - * @property {String} rest Rest of the URL that is not part of the protocol. - */ - -/** - * Extract protocol information from a URL with/without double slash ("//"). - * - * @param {String} address URL we want to extract from. - * @return {ProtocolExtract} Extracted information. - * @api private - */ -function extractProtocol(address) { - var match = protocolre.exec(address); - - return { - protocol: match[1] ? match[1].toLowerCase() : '', - slashes: !!match[2], - rest: match[3] - }; -} - -/** - * Resolve a relative URL pathname against a base URL pathname. - * - * @param {String} relative Pathname of the relative URL. - * @param {String} base Pathname of the base URL. - * @return {String} Resolved pathname. - * @api private - */ -function resolve(relative, base) { - var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/')) - , i = path.length - , last = path[i - 1] - , unshift = false - , up = 0; - - while (i--) { - if (path[i] === '.') { - path.splice(i, 1); - } else if (path[i] === '..') { - path.splice(i, 1); - up++; - } else if (up) { - if (i === 0) unshift = true; - path.splice(i, 1); - up--; - } - } - - if (unshift) path.unshift(''); - if (last === '.' || last === '..') path.push(''); - - return path.join('/'); -} - -/** - * The actual URL instance. Instead of returning an object we've opted-in to - * create an actual constructor as it's much more memory efficient and - * faster and it pleases my OCD. - * - * @constructor - * @param {String} address URL we want to parse. - * @param {Object|String} location Location defaults for relative paths. - * @param {Boolean|Function} parser Parser for the query string. - * @api public - */ -function URL(address, location, parser) { - if (!(this instanceof URL)) { - return new URL(address, location, parser); - } - - var relative, extracted, parse, instruction, index, key - , instructions = rules.slice() - , type = typeof location - , url = this - , i = 0; - - // - // The following if statements allows this module two have compatibility with - // 2 different API: - // - // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments - // where the boolean indicates that the query string should also be parsed. - // - // 2. The `URL` interface of the browser which accepts a URL, object as - // arguments. The supplied object will be used as default values / fall-back - // for relative paths. - // - if ('object' !== type && 'string' !== type) { - parser = location; - location = null; - } - - if (parser && 'function' !== typeof parser) parser = qs.parse; - - location = lolcation(location); - - // - // Extract protocol information before running the instructions. - // - extracted = extractProtocol(address || ''); - relative = !extracted.protocol && !extracted.slashes; - url.slashes = extracted.slashes || relative && location.slashes; - url.protocol = extracted.protocol || location.protocol || ''; - address = extracted.rest; - - // - // When the authority component is absent the URL starts with a path - // component. - // - if (!extracted.slashes) instructions[2] = [/(.*)/, 'pathname']; - - for (; i < instructions.length; i++) { - instruction = instructions[i]; - parse = instruction[0]; - key = instruction[1]; - - if (parse !== parse) { - url[key] = address; - } else if ('string' === typeof parse) { - if (~(index = address.indexOf(parse))) { - if ('number' === typeof instruction[2]) { - url[key] = address.slice(0, index); - address = address.slice(index + instruction[2]); - } else { - url[key] = address.slice(index); - address = address.slice(0, index); - } - } - } else if ((index = parse.exec(address))) { - url[key] = index[1]; - address = address.slice(0, index.index); - } - - url[key] = url[key] || ( - relative && instruction[3] ? location[key] || '' : '' - ); - - // - // Hostname, host and protocol should be lowercased so they can be used to - // create a proper `origin`. - // - if (instruction[4]) url[key] = url[key].toLowerCase(); - } - - // - // Also parse the supplied query string in to an object. If we're supplied - // with a custom parser as function use that instead of the default build-in - // parser. - // - if (parser) url.query = parser(url.query); - - // - // If the URL is relative, resolve the pathname against the base URL. - // - if ( - relative - && location.slashes - && url.pathname.charAt(0) !== '/' - && (url.pathname !== '' || location.pathname !== '') - ) { - url.pathname = resolve(url.pathname, location.pathname); - } - - // - // We should not add port numbers if they are already the default port number - // for a given protocol. As the host also contains the port number we're going - // override it with the hostname which contains no port number. - // - if (!required(url.port, url.protocol)) { - url.host = url.hostname; - url.port = ''; - } - - // - // Parse down the `auth` for the username and password. - // - url.username = url.password = ''; - if (url.auth) { - instruction = url.auth.split(':'); - url.username = instruction[0] || ''; - url.password = instruction[1] || ''; - } - - url.origin = url.protocol && url.host && url.protocol !== 'file:' - ? url.protocol +'//'+ url.host - : 'null'; - - // - // The href is just the compiled result. - // - url.href = url.toString(); -} - -/** - * This is convenience method for changing properties in the URL instance to - * insure that they all propagate correctly. - * - * @param {String} part Property we need to adjust. - * @param {Mixed} value The newly assigned value. - * @param {Boolean|Function} fn When setting the query, it will be the function - * used to parse the query. - * When setting the protocol, double slash will be - * removed from the final url if it is true. - * @returns {URL} - * @api public - */ -function set(part, value, fn) { - var url = this; - - switch (part) { - case 'query': - if ('string' === typeof value && value.length) { - value = (fn || qs.parse)(value); - } - - url[part] = value; - break; - - case 'port': - url[part] = value; - - if (!required(value, url.protocol)) { - url.host = url.hostname; - url[part] = ''; - } else if (value) { - url.host = url.hostname +':'+ value; - } - - break; - - case 'hostname': - url[part] = value; - - if (url.port) value += ':'+ url.port; - url.host = value; - break; - - case 'host': - url[part] = value; - - if (/:\d+$/.test(value)) { - value = value.split(':'); - url.port = value.pop(); - url.hostname = value.join(':'); - } else { - url.hostname = value; - url.port = ''; - } - - break; - - case 'protocol': - url.protocol = value.toLowerCase(); - url.slashes = !fn; - break; - - case 'pathname': - url.pathname = value.length && value.charAt(0) !== '/' ? '/' + value : value; - - break; - - default: - url[part] = value; - } - - for (var i = 0; i < rules.length; i++) { - var ins = rules[i]; - - if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase(); - } - - url.origin = url.protocol && url.host && url.protocol !== 'file:' - ? url.protocol +'//'+ url.host - : 'null'; - - url.href = url.toString(); - - return url; -} - -/** - * Transform the properties back in to a valid and full URL string. - * - * @param {Function} stringify Optional query stringify function. - * @returns {String} - * @api public - */ -function toString(stringify) { - if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify; - - var query - , url = this - , protocol = url.protocol; - - if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':'; - - var result = protocol + (url.slashes ? '//' : ''); - - if (url.username) { - result += url.username; - if (url.password) result += ':'+ url.password; - result += '@'; - } - - result += url.host + url.pathname; - - query = 'object' === typeof url.query ? stringify(url.query) : url.query; - if (query) result += '?' !== query.charAt(0) ? '?'+ query : query; - - if (url.hash) result += url.hash; - - return result; -} - -URL.prototype = { set: set, toString: toString }; - -// -// Expose the URL parser and some additional properties that might be useful for -// others or testing. -// -URL.extractProtocol = extractProtocol; -URL.location = lolcation; -URL.qs = qs; - -module.exports = URL; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/url-parse/node_modules/querystringify/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var has = Object.prototype.hasOwnProperty; - -/** - * Decode a URI encoded string. - * - * @param {String} input The URI encoded string. - * @returns {String} The decoded string. - * @api private - */ -function decode(input) { - return decodeURIComponent(input.replace(/\+/g, ' ')); -} - -/** - * Simple query string parser. - * - * @param {String} query The query string that needs to be parsed. - * @returns {Object} - * @api public - */ -function querystring(query) { - var parser = /([^=?&]+)=?([^&]*)/g - , result = {} - , part; - - // - // Little nifty parsing hack, leverage the fact that RegExp.exec increments - // the lastIndex property so we can continue executing this loop until we've - // parsed all results. - // - for (; - part = parser.exec(query); - result[decode(part[1])] = decode(part[2]) - ); - - return result; -} - -/** - * Transform a query string to an object. - * - * @param {Object} obj Object that should be transformed. - * @param {String} prefix Optional prefix. - * @returns {String} - * @api public - */ -function querystringify(obj, prefix) { - prefix = prefix || ''; - - var pairs = []; - - // - // Optionally prefix with a '?' if needed - // - if ('string' !== typeof prefix) prefix = '?'; - - for (var key in obj) { - if (has.call(obj, key)) { - pairs.push(encodeURIComponent(key) +'='+ encodeURIComponent(obj[key])); - } - } - - return pairs.length ? prefix + pairs.join('&') : ''; -} - -// -// Expose the module. -// -exports.stringify = querystringify; -exports.parse = querystring; - - -/***/ }), - -/***/ "../../../../../node_modules/url/url.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - - -var punycode = __webpack_require__("../../../../../node_modules/punycode/punycode.js"); -var util = __webpack_require__("../../../../../node_modules/url/util.js"); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -exports.Url = Url; - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = __webpack_require__("../../../../../node_modules/querystring-es3/index.js"); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; -}; - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/url/util.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } -}; - - -/***/ }), - -/***/ "../../../../../node_modules/webpack-dev-server/client/index.js?http:/0.0.0.0:8000": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(__resourceQuery) {/* global __resourceQuery WorkerGlobalScope */ -var url = __webpack_require__("../../../../../node_modules/url/url.js"); -var stripAnsi = __webpack_require__("../../../../../node_modules/strip-ansi/index.js"); -var log = __webpack_require__("../../../../../node_modules/loglevel/lib/loglevel.js") -var socket = __webpack_require__("../../../../../node_modules/webpack-dev-server/client/socket.js"); -var overlay = __webpack_require__("../../../../../node_modules/webpack-dev-server/client/overlay.js"); - -function getCurrentScriptSource() { - // `document.currentScript` is the most accurate way to find the current script, - // but is not supported in all browsers. - if(document.currentScript) - return document.currentScript.getAttribute("src"); - // Fall back to getting all scripts in the document. - var scriptElements = document.scripts || []; - var currentScript = scriptElements[scriptElements.length - 1]; - if(currentScript) - return currentScript.getAttribute("src"); - // Fail as there was no script to use. - throw new Error("[WDS] Failed to get current script source"); -} - -var urlParts; -if(true) { - // If this bundle is inlined, use the resource query to get the correct url. - urlParts = url.parse(__resourceQuery.substr(1)); -} else { - // Else, get the url from the <script> this file was called with. - var scriptHost = getCurrentScriptSource(); - scriptHost = scriptHost.replace(/\/[^\/]+$/, ""); - urlParts = url.parse((scriptHost ? scriptHost : "/"), false, true); -} - -var hot = false; -var initial = true; -var currentHash = ""; -var useWarningOverlay = false; -var useErrorOverlay = false; - -var INFO = "info"; -var WARNING = "warning"; -var ERROR = "error"; -var NONE = "none"; - -// Set the default log level -log.setDefaultLevel(INFO); - -// Send messages to the outside, so plugins can consume it. -function sendMsg(type, data) { - if( - typeof self !== "undefined" && - (typeof WorkerGlobalScope === "undefined" || - !(self instanceof WorkerGlobalScope)) - ) { - self.postMessage({ - type: "webpack" + type, - data: data - }, "*"); - } -} - -var onSocketMsg = { - hot: function() { - hot = true; - log.info("[WDS] Hot Module Replacement enabled."); - }, - invalid: function() { - log.info("[WDS] App updated. Recompiling..."); - sendMsg("Invalid"); - }, - hash: function(hash) { - currentHash = hash; - }, - "still-ok": function() { - log.info("[WDS] Nothing changed.") - if(useWarningOverlay || useErrorOverlay) overlay.clear(); - sendMsg("StillOk"); - }, - "log-level": function(level) { - var hotCtx = __webpack_require__("../../../../../node_modules/webpack/hot ^\\.\\/log$"); - if(hotCtx.keys().length > 0) { - hotCtx("./log").setLogLevel(level); - } - switch(level) { - case INFO: - case ERROR: - log.setLevel(level); - break; - case WARNING: - log.setLevel("warn"); // loglevel's warning name is different from webpack's - break; - case NONE: - log.disableAll(); - break; - default: - log.error("[WDS] Unknown clientLogLevel '" + level + "'"); - } - }, - "overlay": function(overlay) { - if(typeof document !== "undefined") { - if(typeof(overlay) === "boolean") { - useWarningOverlay = false; - useErrorOverlay = overlay; - } else if(overlay) { - useWarningOverlay = overlay.warnings; - useErrorOverlay = overlay.errors; - } - } - }, - ok: function() { - sendMsg("Ok"); - if(useWarningOverlay || useErrorOverlay) overlay.clear(); - if(initial) return initial = false; - reloadApp(); - }, - "content-changed": function() { - log.info("[WDS] Content base changed. Reloading...") - self.location.reload(); - }, - warnings: function(warnings) { - log.warn("[WDS] Warnings while compiling."); - var strippedWarnings = warnings.map(function(warning) { - return stripAnsi(warning); - }); - sendMsg("Warnings", strippedWarnings); - for(var i = 0; i < strippedWarnings.length; i++) - log.warn(strippedWarnings[i]); - if(useWarningOverlay) overlay.showMessage(warnings); - - if(initial) return initial = false; - reloadApp(); - }, - errors: function(errors) { - log.error("[WDS] Errors while compiling. Reload prevented."); - var strippedErrors = errors.map(function(error) { - return stripAnsi(error); - }); - sendMsg("Errors", strippedErrors); - for(var i = 0; i < strippedErrors.length; i++) - log.error(strippedErrors[i]); - if(useErrorOverlay) overlay.showMessage(errors); - }, - error: function(error) { - log.error(error); - }, - close: function() { - log.error("[WDS] Disconnected!"); - sendMsg("Close"); - } -}; - -var hostname = urlParts.hostname; -var protocol = urlParts.protocol; - - -//check ipv4 and ipv6 `all hostname` -if(hostname === "0.0.0.0" || hostname === "::") { - // why do we need this check? - // hostname n/a for file protocol (example, when using electron, ionic) - // see: https://github.com/webpack/webpack-dev-server/pull/384 - if(self.location.hostname && !!~self.location.protocol.indexOf("http")) { - hostname = self.location.hostname; - } -} - -// `hostname` can be empty when the script path is relative. In that case, specifying -// a protocol would result in an invalid URL. -// When https is used in the app, secure websockets are always necessary -// because the browser doesn't accept non-secure websockets. -if(hostname && (self.location.protocol === "https:" || urlParts.hostname === "0.0.0.0")) { - protocol = self.location.protocol; -} - -var socketUrl = url.format({ - protocol: protocol, - auth: urlParts.auth, - hostname: hostname, - port: (urlParts.port === "0") ? self.location.port : urlParts.port, - pathname: urlParts.path == null || urlParts.path === "/" ? "/sockjs-node" : urlParts.path -}); - -socket(socketUrl, onSocketMsg); - -var isUnloading = false; -self.addEventListener("beforeunload", function() { - isUnloading = true; -}); - -function reloadApp() { - if(isUnloading) { - return; - } - if(hot) { - log.info("[WDS] App hot update..."); - var hotEmitter = __webpack_require__("../../../../../node_modules/webpack/hot/emitter.js"); - hotEmitter.emit("webpackHotUpdate", currentHash); - if(typeof self !== "undefined" && self.window) { - // broadcast update to window - self.postMessage("webpackHotUpdate" + currentHash, "*"); - } - } else { - log.info("[WDS] App updated. Reloading..."); - self.location.reload(); - } -} - -/* WEBPACK VAR INJECTION */}.call(exports, "?http://0.0.0.0:8000")) - -/***/ }), - -/***/ "../../../../../node_modules/webpack-dev-server/client/overlay.js": -/***/ (function(module, exports, __webpack_require__) { - -// The error overlay is inspired (and mostly copied) from Create React App (https://github.com/facebookincubator/create-react-app) -// They, in turn, got inspired by webpack-hot-middleware (https://github.com/glenjamin/webpack-hot-middleware). -var ansiHTML = __webpack_require__("../../../../../node_modules/ansi-html/index.js"); -var Entities = __webpack_require__("../../../../../node_modules/html-entities/index.js").AllHtmlEntities; -var entities = new Entities(); - -var colors = { - reset: ["transparent", "transparent"], - black: "181818", - red: "E36049", - green: "B3CB74", - yellow: "FFD080", - blue: "7CAFC2", - magenta: "7FACCA", - cyan: "C3C2EF", - lightgrey: "EBE7E3", - darkgrey: "6D7891" -}; -ansiHTML.setColors(colors); - -function createOverlayIframe(onIframeLoad) { - var iframe = document.createElement("iframe"); - iframe.id = "webpack-dev-server-client-overlay"; - iframe.src = "about:blank"; - iframe.style.position = "fixed"; - iframe.style.left = 0; - iframe.style.top = 0; - iframe.style.right = 0; - iframe.style.bottom = 0; - iframe.style.width = "100vw"; - iframe.style.height = "100vh"; - iframe.style.border = "none"; - iframe.style.zIndex = 9999999999; - iframe.onload = onIframeLoad; - return iframe; -} - -function addOverlayDivTo(iframe) { - var div = iframe.contentDocument.createElement("div"); - div.id = "webpack-dev-server-client-overlay-div"; - div.style.position = "fixed"; - div.style.boxSizing = "border-box"; - div.style.left = 0; - div.style.top = 0; - div.style.right = 0; - div.style.bottom = 0; - div.style.width = "100vw"; - div.style.height = "100vh"; - div.style.backgroundColor = "black"; - div.style.color = "#E8E8E8"; - div.style.fontFamily = "Menlo, Consolas, monospace"; - div.style.fontSize = "large"; - div.style.padding = "2rem"; - div.style.lineHeight = "1.2"; - div.style.whiteSpace = "pre-wrap"; - div.style.overflow = "auto"; - iframe.contentDocument.body.appendChild(div); - return div; -} - -var overlayIframe = null; -var overlayDiv = null; -var lastOnOverlayDivReady = null; - -function ensureOverlayDivExists(onOverlayDivReady) { - if(overlayDiv) { - // Everything is ready, call the callback right away. - onOverlayDivReady(overlayDiv); - return; - } - - // Creating an iframe may be asynchronous so we'll schedule the callback. - // In case of multiple calls, last callback wins. - lastOnOverlayDivReady = onOverlayDivReady; - - if(overlayIframe) { - // We're already creating it. - return; - } - - // Create iframe and, when it is ready, a div inside it. - overlayIframe = createOverlayIframe(function onIframeLoad() { - overlayDiv = addOverlayDivTo(overlayIframe); - // Now we can talk! - lastOnOverlayDivReady(overlayDiv); - }); - - // Zalgo alert: onIframeLoad() will be called either synchronously - // or asynchronously depending on the browser. - // We delay adding it so `overlayIframe` is set when `onIframeLoad` fires. - document.body.appendChild(overlayIframe); -} - -function showMessageOverlay(message) { - ensureOverlayDivExists(function onOverlayDivReady(overlayDiv) { - // Make it look similar to our terminal. - overlayDiv.innerHTML = - "<span style=\"color: #" + - colors.red + - "\">Failed to compile.</span><br><br>" + - ansiHTML(entities.encode(message)); - }); -} - -function destroyErrorOverlay() { - if(!overlayDiv) { - // It is not there in the first place. - return; - } - - // Clean up and reset internal state. - document.body.removeChild(overlayIframe); - overlayDiv = null; - overlayIframe = null; - lastOnOverlayDivReady = null; -} - -// Successful compilation. -exports.clear = function handleSuccess() { - destroyErrorOverlay(); -} - -// Compilation with errors (e.g. syntax error or missing modules). -exports.showMessage = function handleMessage(messages) { - showMessageOverlay(messages[0]); -} - - -/***/ }), - -/***/ "../../../../../node_modules/webpack-dev-server/client/socket.js": -/***/ (function(module, exports, __webpack_require__) { - -var SockJS = __webpack_require__("../../../../../node_modules/sockjs-client/lib/entry.js"); - -var retries = 0; -var sock = null; - -function socket(url, handlers) { - sock = new SockJS(url); - - sock.onopen = function() { - retries = 0; - } - - sock.onclose = function() { - if(retries === 0) - handlers.close(); - - // Try to reconnect. - sock = null; - - // After 10 retries stop trying, to prevent logspam. - if(retries <= 10) { - // Exponentially increase timeout to reconnect. - // Respectfully copied from the package `got`. - var retryInMs = 1000 * Math.pow(2, retries) + Math.random() * 100; - retries += 1; - - setTimeout(function() { - socket(url, handlers); - }, retryInMs); - } - }; - - sock.onmessage = function(e) { - // This assumes that all data sent via the websocket is JSON. - var msg = JSON.parse(e.data); - if(handlers[msg.type]) - handlers[msg.type](msg.data); - }; -} - -module.exports = socket; - - -/***/ }), - -/***/ "../../../../../node_modules/webpack/buildin/amd-options.js": -/***/ (function(module, exports) { - -/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ -module.exports = __webpack_amd_options__; - -/* WEBPACK VAR INJECTION */}.call(exports, {})) - -/***/ }), - -/***/ "../../../../../node_modules/webpack/buildin/global.js": -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "../../../../../node_modules/webpack/buildin/module.js": -/***/ (function(module, exports) { - -module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - if(!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - return module; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/webpack/hot ^\\.\\/log$": -/***/ (function(module, exports) { - -function webpackEmptyContext(req) { - throw new Error("Cannot find module '" + req + "'."); -} -webpackEmptyContext.keys = function() { return []; }; -webpackEmptyContext.resolve = webpackEmptyContext; -module.exports = webpackEmptyContext; -webpackEmptyContext.id = "../../../../../node_modules/webpack/hot ^\\.\\/log$"; - -/***/ }), - -/***/ "../../../../../node_modules/webpack/hot/dev-server.js": -/***/ (function(module, exports, __webpack_require__) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -/*globals window __webpack_hash__ */ -if(true) { - var lastHash; - var upToDate = function upToDate() { - return lastHash.indexOf(__webpack_require__.h()) >= 0; - }; - var check = function check() { - module.hot.check(true).then(function(updatedModules) { - if(!updatedModules) { - console.warn("[HMR] Cannot find update. Need to do a full reload!"); - console.warn("[HMR] (Probably because of restarting the webpack-dev-server)"); - window.location.reload(); - return; - } - - if(!upToDate()) { - check(); - } - - __webpack_require__("../../../../../node_modules/webpack/hot/log-apply-result.js")(updatedModules, updatedModules); - - if(upToDate()) { - console.log("[HMR] App is up to date."); - } - - }).catch(function(err) { - var status = module.hot.status(); - if(["abort", "fail"].indexOf(status) >= 0) { - console.warn("[HMR] Cannot apply update. Need to do a full reload!"); - console.warn("[HMR] " + err.stack || err.message); - window.location.reload(); - } else { - console.warn("[HMR] Update failed: " + err.stack || err.message); - } - }); - }; - var hotEmitter = __webpack_require__("../../../../../node_modules/webpack/hot/emitter.js"); - hotEmitter.on("webpackHotUpdate", function(currentHash) { - lastHash = currentHash; - if(!upToDate() && module.hot.status() === "idle") { - console.log("[HMR] Checking for updates on the server..."); - check(); - } - }); - console.log("[HMR] Waiting for update signal from WDS..."); -} else { - throw new Error("[HMR] Hot Module Replacement is disabled."); -} - - -/***/ }), - -/***/ "../../../../../node_modules/webpack/hot/emitter.js": -/***/ (function(module, exports, __webpack_require__) { - -var EventEmitter = __webpack_require__("../../../../../node_modules/events/events.js"); -module.exports = new EventEmitter(); - - -/***/ }), - -/***/ "../../../../../node_modules/webpack/hot/log-apply-result.js": -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -module.exports = function(updatedModules, renewedModules) { - var unacceptedModules = updatedModules.filter(function(moduleId) { - return renewedModules && renewedModules.indexOf(moduleId) < 0; - }); - - if(unacceptedModules.length > 0) { - console.warn("[HMR] The following modules couldn't be hot updated: (They would need a full reload!)"); - unacceptedModules.forEach(function(moduleId) { - console.warn("[HMR] - " + moduleId); - }); - } - - if(!renewedModules || renewedModules.length === 0) { - console.log("[HMR] Nothing hot updated."); - } else { - console.log("[HMR] Updated modules:"); - renewedModules.forEach(function(moduleId) { - console.log("[HMR] - " + moduleId); - }); - var numberIds = renewedModules.every(function(moduleId) { - return typeof moduleId === "number"; - }); - if(numberIds) - console.log("[HMR] Consider using the NamedModulesPlugin for module names."); - } -}; - - -/***/ }), - -/***/ 0: -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__("../../../../../node_modules/webpack/hot/dev-server.js"); -__webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"); -module.exports = __webpack_require__("../../../../../node_modules/lightgallery/dist/js/lightgallery.js"); - - -/***/ }) - -},[0]); diff --git a/_site/assets/js/main.js b/_site/assets/js/main.js deleted file mode 100644 index 402c9e24..00000000 --- a/_site/assets/js/main.js +++ /dev/null @@ -1,10670 +0,0 @@ -webpackJsonp([1],{ - -/***/ "../../../../../node_modules/asap/asap.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(process, setImmediate) { -// Use the fastest possible means to execute a task in a future turn -// of the event loop. - -// linked list of tasks (single, with head node) -var head = {task: void 0, next: null}; -var tail = head; -var flushing = false; -var requestFlush = void 0; -var isNodeJS = false; - -function flush() { - /* jshint loopfunc: true */ - - while (head.next) { - head = head.next; - var task = head.task; - head.task = void 0; - var domain = head.domain; - - if (domain) { - head.domain = void 0; - domain.enter(); - } - - try { - task(); - - } catch (e) { - if (isNodeJS) { - // In node, uncaught exceptions are considered fatal errors. - // Re-throw them synchronously to interrupt flushing! - - // Ensure continuation if the uncaught exception is suppressed - // listening "uncaughtException" events (as domains does). - // Continue in next event to avoid tick recursion. - if (domain) { - domain.exit(); - } - setTimeout(flush, 0); - if (domain) { - domain.enter(); - } - - throw e; - - } else { - // In browsers, uncaught exceptions are not fatal. - // Re-throw them asynchronously to avoid slow-downs. - setTimeout(function() { - throw e; - }, 0); - } - } - - if (domain) { - domain.exit(); - } - } - - flushing = false; -} - -if (typeof process !== "undefined" && process.nextTick) { - // Node.js before 0.9. Note that some fake-Node environments, like the - // Mocha test runner, introduce a `process` global without a `nextTick`. - isNodeJS = true; - - requestFlush = function () { - process.nextTick(flush); - }; - -} else if (typeof setImmediate === "function") { - // In IE10, Node.js 0.9+, or https://github.com/NobleJS/setImmediate - if (typeof window !== "undefined") { - requestFlush = setImmediate.bind(window, flush); - } else { - requestFlush = function () { - setImmediate(flush); - }; - } - -} else if (typeof MessageChannel !== "undefined") { - // modern browsers - // http://www.nonblocking.io/2011/06/windownexttick.html - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - requestFlush = function () { - channel.port2.postMessage(0); - }; - -} else { - // old browsers - requestFlush = function () { - setTimeout(flush, 0); - }; -} - -function asap(task) { - tail = tail.next = { - task: task, - domain: isNodeJS && process.domain, - next: null - }; - - if (!flushing) { - flushing = true; - requestFlush(); - } -}; - -module.exports = asap; - - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/process/browser.js"), __webpack_require__("../../../../../node_modules/timers-browserify/main.js").setImmediate)) - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!../../../../../node_modules/lightgallery/dist/css/lightgallery.css": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/blog.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/careers.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/contact.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/documentation.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/get-framac.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/home.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports -exports.i(__webpack_require__("../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!./style/lib/swiper.css"), ""); - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/main.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports -exports.push([module.i, "@import url(https://fonts.googleapis.com/css?family=Muli:300,300i,400,400i,600,600i,700,700i,800,800i,900,900i);", ""]); - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/page.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/plugin.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!./style/terms.less": -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__("../../../../../node_modules/css-loader/lib/css-base.js")(true); -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!./style/lib/swiper.css": -/***/ (function(module, exports, __webpack_require__) { - -// imports - - -// module - -// exports - - -/***/ }), - -/***/ "../../../../../node_modules/css-loader/lib/css-base.js": -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function(useSourceMap) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - if(item[2]) { - return "@media " + item[2] + "{" + content + "}"; - } else { - return content; - } - }).join(""); - }; - - // import a list of modules into the list - list.i = function(modules, mediaQuery) { - if(typeof modules === "string") - modules = [[null, modules, ""]]; - var alreadyImportedModules = {}; - for(var i = 0; i < this.length; i++) { - var id = this[i][0]; - if(typeof id === "number") - alreadyImportedModules[id] = true; - } - for(i = 0; i < modules.length; i++) { - var item = modules[i]; - // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { - if(mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if(mediaQuery) { - item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; - } - list.push(item); - } - } - }; - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' - }); - - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} - -// Adapted from convert-source-map (MIT) -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - - return '/*# ' + data + ' */'; -} - - -/***/ }), - -/***/ "../../../../../node_modules/google-maps-api/index.js": -/***/ (function(module, exports, __webpack_require__) { - -/** @module google-maps-api */ - -var script = __webpack_require__( "../../../../../node_modules/scriptjs/dist/script.js" ), - promise = __webpack_require__( "../../../../../node_modules/promise/index.js" ); - -var maps = null, - callBacks = [], - key; - -window.$$mapsCB = function() { - - maps = google.maps; - - for( var i = 0, len = callBacks.length; i < len; i++ ) { - - resolve.apply( undefined, callBacks[ i ] ); - } -}; - -function resolve( onOk, onErr, onComplete, err ) { - - if( !err ) { - - onOk( maps ); - - if( onComplete ) - onComplete( undefined, maps ); - } else { - - onErr( err ); - - if( onComplete ) - onComplete( err ); - } -} - - -/** - * Load a Google Maps API Object asynchronously. This module will return a Promise. - * Which will on resolved will return the "google.maps" object. - * - * Or if you prefer you can simply use the callback instead. - * - * @param {String} apikey Your Google Maps API Key - * @param {Function} [onComplete] A callback which will return the google.maps object - * @return {Promise} When this promise resolves it will return the google.maps object - * - * @example using via promise - * - * ```javascript - * var mapsapi = require( 'google-maps-api' )( 'your api key' ); - * - * mapsapi().then( function( maps ) { - * - * //use the google.maps object as you please - * }); - * ``` - * - * @example using via callback - * ```javascript - * require( 'google-maps-api' )( 'your api key', function( maps ) { - * - * //use the google.maps object as you please - * }) - * ``` - */ -module.exports = function( apikey, libraries, onComplete ) { - - key = apikey || key; - if (typeof libraries == 'function') { - onComplete = libraries; - libraries = []; - } - - return function() { - - return new promise( function( onOk, onErr ) { - - if( !key ) { - - resolve( onOk, onErr, onComplete, new Error( 'No API key passed to require(\'google-maps-api\')' ) ); - } else { - - if( maps ) { - - resolve( onOk, onErr, onComplete ); - } else { - - callBacks.push( [ onOk, onErr, onComplete ] ); - - if (callBacks.length == 1) { - var auth = ''; - if (typeof key == 'string') { - - auth = '&key=' + key; - } else if (typeof key == 'object') { - - auth = '&' + Object.keys(key).map(function (k) { - return k + '=' + encodeURIComponent(key[k]); - }).join('&'); - } - - var url = 'https://maps.googleapis.com/maps/api/js?v=3&callback=$$mapsCB' + auth; - if (Array.isArray(libraries) && libraries.length > 0) { - url+='&libraries='+libraries.join(','); - } - script( url ); - } - } - } - }); - }; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/css/lightgallery.css": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a <style> tag - -// load the styles -var content = __webpack_require__("../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!../../../../../node_modules/lightgallery/dist/css/lightgallery.css"); -if(typeof content === 'string') content = [[module.i, content, '']]; -// Prepare cssTransformation -var transform; - -var options = {} -options.transform = transform -// add the styles to the DOM -var update = __webpack_require__("../../../../../node_modules/style-loader/lib/addStyles.js")(content, options); -if(content.locals) module.exports = content.locals; -// Hot Module Replacement -if(true) { - // When the styles change, update the <style> tags - if(!content.locals) { - module.hot.accept("../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!../../../../../node_modules/lightgallery/dist/css/lightgallery.css", function() { - var newContent = __webpack_require__("../../../../../node_modules/css-loader/index.js?{\"sourceMap\":true,\"minimize\":false}!../../../../../node_modules/postcss-loader/lib/index.js?{\"sourceMap\":true}!../../../../../node_modules/less-loader/dist/cjs.js?{\"sourceMap\":true}!../../../../../node_modules/lightgallery/dist/css/lightgallery.css"); - if(typeof newContent === 'string') newContent = [[module.i, newContent, '']]; - update(newContent); - }); - } - // When the module is disposed, remove the <style> tags - module.hot.dispose(function() { update(); }); -} - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/fonts/lg.eot": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/lg.ecff1170.eot"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/fonts/lg.eot?n1z373": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/lg.ecff1170.eot"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/fonts/lg.svg?n1z373": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/lg.0cb1b8af.svg"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/fonts/lg.ttf?n1z373": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/lg.4fe6f9ca.ttf"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/fonts/lg.woff?n1z373": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/lg.5fd4c338.woff"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/img/loading.gif": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/loading.bbdac9cd.gif"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/img/video-play.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/video-play.dc34cc9c.png"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/img/vimeo-play.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/vimeo-play.dfe7764b.png"; - -/***/ }), - -/***/ "../../../../../node_modules/lightgallery/dist/img/youtube-play.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/youtube-play.e6f0c233.png"; - -/***/ }), - -/***/ "../../../../../node_modules/parsleyjs/dist/parsley.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {/*! -* Parsley.js -* Version 2.7.2 - built Tue, May 9th 2017, 11:21 am -* http://parsleyjs.org -* Guillaume Potier - <guillaume@wisembly.com> -* Marc-Andre Lafortune - <petroselinum@marc-andre.ca> -* MIT Licensed -*/ - -// The source code below is generated by babel as -// Parsley is written in ECMAScript 6 -// -var _slice = Array.prototype.slice; - -var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } - -(function (global, factory) { - true ? module.exports = factory(__webpack_require__("../../../../../node_modules/jquery/dist/jquery.js")) : typeof define === 'function' && define.amd ? define(['jquery'], factory) : global.parsley = factory(global.jQuery); -})(this, function ($) { - 'use strict'; - - var globalID = 1; - var pastWarnings = {}; - - var Utils = { - // Parsley DOM-API - // returns object from dom attributes and values - attr: function attr(element, namespace, obj) { - var i; - var attribute; - var attributes; - var regex = new RegExp('^' + namespace, 'i'); - - if ('undefined' === typeof obj) obj = {};else { - // Clear all own properties. This won't affect prototype's values - for (i in obj) { - if (obj.hasOwnProperty(i)) delete obj[i]; - } - } - - if (!element) return obj; - - attributes = element.attributes; - for (i = attributes.length; i--;) { - attribute = attributes[i]; - - if (attribute && attribute.specified && regex.test(attribute.name)) { - obj[this.camelize(attribute.name.slice(namespace.length))] = this.deserializeValue(attribute.value); - } - } - - return obj; - }, - - checkAttr: function checkAttr(element, namespace, _checkAttr) { - return element.hasAttribute(namespace + _checkAttr); - }, - - setAttr: function setAttr(element, namespace, attr, value) { - element.setAttribute(this.dasherize(namespace + attr), String(value)); - }, - - generateID: function generateID() { - return '' + globalID++; - }, - - /** Third party functions **/ - // Zepto deserialize function - deserializeValue: function deserializeValue(value) { - var num; - - try { - return value ? value == "true" || (value == "false" ? false : value == "null" ? null : !isNaN(num = Number(value)) ? num : /^[\[\{]/.test(value) ? $.parseJSON(value) : value) : value; - } catch (e) { - return value; - } - }, - - // Zepto camelize function - camelize: function camelize(str) { - return str.replace(/-+(.)?/g, function (match, chr) { - return chr ? chr.toUpperCase() : ''; - }); - }, - - // Zepto dasherize function - dasherize: function dasherize(str) { - return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase(); - }, - - warn: function warn() { - var _window$console; - - if (window.console && 'function' === typeof window.console.warn) (_window$console = window.console).warn.apply(_window$console, arguments); - }, - - warnOnce: function warnOnce(msg) { - if (!pastWarnings[msg]) { - pastWarnings[msg] = true; - this.warn.apply(this, arguments); - } - }, - - _resetWarnings: function _resetWarnings() { - pastWarnings = {}; - }, - - trimString: function trimString(string) { - return string.replace(/^\s+|\s+$/g, ''); - }, - - parse: { - date: function date(string) { - var parsed = string.match(/^(\d{4,})-(\d\d)-(\d\d)$/); - if (!parsed) return null; - - var _parsed$map = parsed.map(function (x) { - return parseInt(x, 10); - }); - - var _parsed$map2 = _slicedToArray(_parsed$map, 4); - - var _ = _parsed$map2[0]; - var year = _parsed$map2[1]; - var month = _parsed$map2[2]; - var day = _parsed$map2[3]; - - var date = new Date(year, month - 1, day); - if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null; - return date; - }, - string: function string(_string) { - return _string; - }, - integer: function integer(string) { - if (isNaN(string)) return null; - return parseInt(string, 10); - }, - number: function number(string) { - if (isNaN(string)) throw null; - return parseFloat(string); - }, - 'boolean': function _boolean(string) { - return !/^\s*false\s*$/i.test(string); - }, - object: function object(string) { - return Utils.deserializeValue(string); - }, - regexp: function regexp(_regexp) { - var flags = ''; - - // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern - if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) { - // Replace the regexp literal string with the first match group: ([gimy]*) - // If no flag is present, this will be a blank string - flags = _regexp.replace(/.*\/([gimy]*)$/, '$1'); - // Again, replace the regexp literal string with the first match group: - // everything excluding the opening and closing slashes and the flags - _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1'); - } else { - // Anchor regexp: - _regexp = '^' + _regexp + '$'; - } - return new RegExp(_regexp, flags); - } - }, - - parseRequirement: function parseRequirement(requirementType, string) { - var converter = this.parse[requirementType || 'string']; - if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"'; - var converted = converter(string); - if (converted === null) throw 'Requirement is not a ' + requirementType + ': "' + string + '"'; - return converted; - }, - - namespaceEvents: function namespaceEvents(events, namespace) { - events = this.trimString(events || '').split(/\s+/); - if (!events[0]) return ''; - return $.map(events, function (evt) { - return evt + '.' + namespace; - }).join(' '); - }, - - difference: function difference(array, remove) { - // This is O(N^2), should be optimized - var result = []; - $.each(array, function (_, elem) { - if (remove.indexOf(elem) == -1) result.push(elem); - }); - return result; - }, - - // Alter-ego to native Promise.all, but for jQuery - all: function all(promises) { - // jQuery treats $.when() and $.when(singlePromise) differently; let's avoid that and add spurious elements - return $.when.apply($, _toConsumableArray(promises).concat([42, 42])); - }, - - // Object.create polyfill, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Polyfill - objectCreate: Object.create || (function () { - var Object = function Object() {}; - return function (prototype) { - if (arguments.length > 1) { - throw Error('Second argument not supported'); - } - if (typeof prototype != 'object') { - throw TypeError('Argument must be an object'); - } - Object.prototype = prototype; - var result = new Object(); - Object.prototype = null; - return result; - }; - })(), - - _SubmitSelector: 'input[type="submit"], button:submit' - }; - - // All these options could be overriden and specified directly in DOM using - // `data-parsley-` default DOM-API - // eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"` - // eg: `data-parsley-stop-on-first-failing-constraint="false"` - - var Defaults = { - // ### General - - // Default data-namespace for DOM API - namespace: 'data-parsley-', - - // Supported inputs by default - inputs: 'input, textarea, select', - - // Excluded inputs by default - excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden]', - - // Stop validating field on highest priority failing constraint - priorityEnabled: true, - - // ### Field only - - // identifier used to group together inputs (e.g. radio buttons...) - multiple: null, - - // identifier (or array of identifiers) used to validate only a select group of inputs - group: null, - - // ### UI - // Enable\Disable error messages - uiEnabled: true, - - // Key events threshold before validation - validationThreshold: 3, - - // Focused field on form validation error. 'first'|'last'|'none' - focus: 'first', - - // event(s) that will trigger validation before first failure. eg: `input`... - trigger: false, - - // event(s) that will trigger validation after first failure. - triggerAfterFailure: 'input', - - // Class that would be added on every failing validation Parsley field - errorClass: 'parsley-error', - - // Same for success validation - successClass: 'parsley-success', - - // Return the `$element` that will receive these above success or error classes - // Could also be (and given directly from DOM) a valid selector like `'#div'` - classHandler: function classHandler(Field) {}, - - // Return the `$element` where errors will be appended - // Could also be (and given directly from DOM) a valid selector like `'#div'` - errorsContainer: function errorsContainer(Field) {}, - - // ul elem that would receive errors' list - errorsWrapper: '<ul class="parsley-errors-list"></ul>', - - // li elem that would receive error message - errorTemplate: '<li></li>' - }; - - var Base = function Base() { - this.__id__ = Utils.generateID(); - }; - - Base.prototype = { - asyncSupport: true, // Deprecated - - _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() { - var _this = this; - - var pipe = function pipe() { - var r = $.Deferred(); - if (true !== _this.validationResult) r.reject(); - return r.resolve().promise(); - }; - return [pipe, pipe]; - }, - - actualizeOptions: function actualizeOptions() { - Utils.attr(this.element, this.options.namespace, this.domOptions); - if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions(); - return this; - }, - - _resetOptions: function _resetOptions(initOptions) { - this.domOptions = Utils.objectCreate(this.parent.options); - this.options = Utils.objectCreate(this.domOptions); - // Shallow copy of ownProperties of initOptions: - for (var i in initOptions) { - if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i]; - } - this.actualizeOptions(); - }, - - _listeners: null, - - // Register a callback for the given event name - // Callback is called with context as the first argument and the `this` - // The context is the current parsley instance, or window.Parsley if global - // A return value of `false` will interrupt the calls - on: function on(name, fn) { - this._listeners = this._listeners || {}; - var queue = this._listeners[name] = this._listeners[name] || []; - queue.push(fn); - - return this; - }, - - // Deprecated. Use `on` instead - subscribe: function subscribe(name, fn) { - $.listenTo(this, name.toLowerCase(), fn); - }, - - // Unregister a callback (or all if none is given) for the given event name - off: function off(name, fn) { - var queue = this._listeners && this._listeners[name]; - if (queue) { - if (!fn) { - delete this._listeners[name]; - } else { - for (var i = queue.length; i--;) if (queue[i] === fn) queue.splice(i, 1); - } - } - return this; - }, - - // Deprecated. Use `off` - unsubscribe: function unsubscribe(name, fn) { - $.unsubscribeTo(this, name.toLowerCase()); - }, - - // Trigger an event of the given name - // A return value of `false` interrupts the callback chain - // Returns false if execution was interrupted - trigger: function trigger(name, target, extraArg) { - target = target || this; - var queue = this._listeners && this._listeners[name]; - var result; - var parentResult; - if (queue) { - for (var i = queue.length; i--;) { - result = queue[i].call(target, target, extraArg); - if (result === false) return result; - } - } - if (this.parent) { - return this.parent.trigger(name, target, extraArg); - } - return true; - }, - - asyncIsValid: function asyncIsValid(group, force) { - Utils.warnOnce("asyncIsValid is deprecated; please use whenValid instead"); - return this.whenValid({ group: group, force: force }); - }, - - _findRelated: function _findRelated() { - return this.options.multiple ? $(this.parent.element.querySelectorAll('[' + this.options.namespace + 'multiple="' + this.options.multiple + '"]')) : this.$element; - } - }; - - var convertArrayRequirement = function convertArrayRequirement(string, length) { - var m = string.match(/^\s*\[(.*)\]\s*$/); - if (!m) throw 'Requirement is not an array: "' + string + '"'; - var values = m[1].split(',').map(Utils.trimString); - if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed'; - return values; - }; - - var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) { - var main = null; - var extra = {}; - for (var key in requirementSpec) { - if (key) { - var value = extraOptionReader(key); - if ('string' === typeof value) value = Utils.parseRequirement(requirementSpec[key], value); - extra[key] = value; - } else { - main = Utils.parseRequirement(requirementSpec[key], string); - } - } - return [main, extra]; - }; - - // A Validator needs to implement the methods `validate` and `parseRequirements` - - var Validator = function Validator(spec) { - $.extend(true, this, spec); - }; - - Validator.prototype = { - // Returns `true` iff the given `value` is valid according the given requirements. - validate: function validate(value, requirementFirstArg) { - if (this.fn) { - // Legacy style validator - - if (arguments.length > 3) // If more args then value, requirement, instance... - requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest - return this.fn(value, requirementFirstArg); - } - - if (Array.isArray(value)) { - if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values'; - return this.validateMultiple.apply(this, arguments); - } else { - var instance = arguments[arguments.length - 1]; - if (this.validateDate && instance._isDateInput()) { - arguments[0] = Utils.parse.date(arguments[0]); - if (arguments[0] === null) return false; - return this.validateDate.apply(this, arguments); - } - if (this.validateNumber) { - if (isNaN(value)) return false; - arguments[0] = parseFloat(arguments[0]); - return this.validateNumber.apply(this, arguments); - } - if (this.validateString) { - return this.validateString.apply(this, arguments); - } - throw 'Validator `' + this.name + '` only handles multiple values'; - } - }, - - // Parses `requirements` into an array of arguments, - // according to `this.requirementType` - parseRequirements: function parseRequirements(requirements, extraOptionReader) { - if ('string' !== typeof requirements) { - // Assume requirement already parsed - // but make sure we return an array - return Array.isArray(requirements) ? requirements : [requirements]; - } - var type = this.requirementType; - if (Array.isArray(type)) { - var values = convertArrayRequirement(requirements, type.length); - for (var i = 0; i < values.length; i++) values[i] = Utils.parseRequirement(type[i], values[i]); - return values; - } else if ($.isPlainObject(type)) { - return convertExtraOptionRequirement(type, requirements, extraOptionReader); - } else { - return [Utils.parseRequirement(type, requirements)]; - } - }, - // Defaults: - requirementType: 'string', - - priority: 2 - - }; - - var ValidatorRegistry = function ValidatorRegistry(validators, catalog) { - this.__class__ = 'ValidatorRegistry'; - - // Default Parsley locale is en - this.locale = 'en'; - - this.init(validators || {}, catalog || {}); - }; - - var typeTesters = { - email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i, - - // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers - number: /^-?(\d*\.)?\d+(e[-+]?\d+)?$/i, - - integer: /^-?\d+$/, - - digits: /^\d+$/, - - alphanum: /^\w+$/i, - - date: { - test: function test(value) { - return Utils.parse.date(value) !== null; - } - }, - - url: new RegExp("^" + - // protocol identifier - "(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional - // user:pass authentication - "(?:\\S+(?::\\S*)?@)?" + "(?:" + - // IP address exclusion - // private & local networks - // "(?!(?:10|127)(?:\\.\\d{1,3}){3})" + // ** mod: allow local networks - // "(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})" + // ** mod: allow local networks - // "(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" + // ** mod: allow local networks - // IP address dotted notation octets - // excludes loopback network 0.0.0.0 - // excludes reserved space >= 224.0.0.0 - // excludes network & broacast addresses - // (first & last IP address of each class) - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + "|" + - // host name - '(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)' + - // domain name - '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*' + - // TLD identifier - '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))' + ")" + - // port number - "(?::\\d{2,5})?" + - // resource path - "(?:/\\S*)?" + "$", 'i') - }; - typeTesters.range = typeTesters.number; - - // See http://stackoverflow.com/a/10454560/8279 - var decimalPlaces = function decimalPlaces(num) { - var match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); - if (!match) { - return 0; - } - return Math.max(0, - // Number of digits right of decimal point. - (match[1] ? match[1].length : 0) - ( - // Adjust for scientific notation. - match[2] ? +match[2] : 0)); - }; - - // parseArguments('number', ['1', '2']) => [1, 2] - var ValidatorRegistry__parseArguments = function ValidatorRegistry__parseArguments(type, args) { - return args.map(Utils.parse[type]); - }; - // operatorToValidator returns a validating function for an operator function, applied to the given type - var ValidatorRegistry__operatorToValidator = function ValidatorRegistry__operatorToValidator(type, operator) { - return function (value) { - for (var _len = arguments.length, requirementsAndInput = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - requirementsAndInput[_key - 1] = arguments[_key]; - } - - requirementsAndInput.pop(); // Get rid of `input` argument - return operator.apply(undefined, [value].concat(_toConsumableArray(ValidatorRegistry__parseArguments(type, requirementsAndInput)))); - }; - }; - - var ValidatorRegistry__comparisonOperator = function ValidatorRegistry__comparisonOperator(operator) { - return { - validateDate: ValidatorRegistry__operatorToValidator('date', operator), - validateNumber: ValidatorRegistry__operatorToValidator('number', operator), - requirementType: operator.length <= 2 ? 'string' : ['string', 'string'], // Support operators with a 1 or 2 requirement(s) - priority: 30 - }; - }; - - ValidatorRegistry.prototype = { - init: function init(validators, catalog) { - this.catalog = catalog; - // Copy prototype's validators: - this.validators = _extends({}, this.validators); - - for (var name in validators) this.addValidator(name, validators[name].fn, validators[name].priority); - - window.Parsley.trigger('parsley:validator:init'); - }, - - // Set new messages locale if we have dictionary loaded in ParsleyConfig.i18n - setLocale: function setLocale(locale) { - if ('undefined' === typeof this.catalog[locale]) throw new Error(locale + ' is not available in the catalog'); - - this.locale = locale; - - return this; - }, - - // Add a new messages catalog for a given locale. Set locale for this catalog if set === `true` - addCatalog: function addCatalog(locale, messages, set) { - if ('object' === typeof messages) this.catalog[locale] = messages; - - if (true === set) return this.setLocale(locale); - - return this; - }, - - // Add a specific message for a given constraint in a given locale - addMessage: function addMessage(locale, name, message) { - if ('undefined' === typeof this.catalog[locale]) this.catalog[locale] = {}; - - this.catalog[locale][name] = message; - - return this; - }, - - // Add messages for a given locale - addMessages: function addMessages(locale, nameMessageObject) { - for (var name in nameMessageObject) this.addMessage(locale, name, nameMessageObject[name]); - - return this; - }, - - // Add a new validator - // - // addValidator('custom', { - // requirementType: ['integer', 'integer'], - // validateString: function(value, from, to) {}, - // priority: 22, - // messages: { - // en: "Hey, that's no good", - // fr: "Aye aye, pas bon du tout", - // } - // }) - // - // Old API was addValidator(name, function, priority) - // - addValidator: function addValidator(name, arg1, arg2) { - if (this.validators[name]) Utils.warn('Validator "' + name + '" is already defined.');else if (Defaults.hasOwnProperty(name)) { - Utils.warn('"' + name + '" is a restricted keyword and is not a valid validator name.'); - return; - } - return this._setValidator.apply(this, arguments); - }, - - updateValidator: function updateValidator(name, arg1, arg2) { - if (!this.validators[name]) { - Utils.warn('Validator "' + name + '" is not already defined.'); - return this.addValidator.apply(this, arguments); - } - return this._setValidator.apply(this, arguments); - }, - - removeValidator: function removeValidator(name) { - if (!this.validators[name]) Utils.warn('Validator "' + name + '" is not defined.'); - - delete this.validators[name]; - - return this; - }, - - _setValidator: function _setValidator(name, validator, priority) { - if ('object' !== typeof validator) { - // Old style validator, with `fn` and `priority` - validator = { - fn: validator, - priority: priority - }; - } - if (!validator.validate) { - validator = new Validator(validator); - } - this.validators[name] = validator; - - for (var locale in validator.messages || {}) this.addMessage(locale, name, validator.messages[locale]); - - return this; - }, - - getErrorMessage: function getErrorMessage(constraint) { - var message; - - // Type constraints are a bit different, we have to match their requirements too to find right error message - if ('type' === constraint.name) { - var typeMessages = this.catalog[this.locale][constraint.name] || {}; - message = typeMessages[constraint.requirements]; - } else message = this.formatMessage(this.catalog[this.locale][constraint.name], constraint.requirements); - - return message || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage; - }, - - // Kind of light `sprintf()` implementation - formatMessage: function formatMessage(string, parameters) { - if ('object' === typeof parameters) { - for (var i in parameters) string = this.formatMessage(string, parameters[i]); - - return string; - } - - return 'string' === typeof string ? string.replace(/%s/i, parameters) : ''; - }, - - // Here is the Parsley default validators list. - // A validator is an object with the following key values: - // - priority: an integer - // - requirement: 'string' (default), 'integer', 'number', 'regexp' or an Array of these - // - validateString, validateMultiple, validateNumber: functions returning `true`, `false` or a promise - // Alternatively, a validator can be a function that returns such an object - // - validators: { - notblank: { - validateString: function validateString(value) { - return (/\S/.test(value) - ); - }, - priority: 2 - }, - required: { - validateMultiple: function validateMultiple(values) { - return values.length > 0; - }, - validateString: function validateString(value) { - return (/\S/.test(value) - ); - }, - priority: 512 - }, - type: { - validateString: function validateString(value, type) { - var _ref = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - - var _ref$step = _ref.step; - var step = _ref$step === undefined ? 'any' : _ref$step; - var _ref$base = _ref.base; - var base = _ref$base === undefined ? 0 : _ref$base; - - var tester = typeTesters[type]; - if (!tester) { - throw new Error('validator type `' + type + '` is not supported'); - } - if (!tester.test(value)) return false; - if ('number' === type) { - if (!/^any$/i.test(step || '')) { - var nb = Number(value); - var decimals = Math.max(decimalPlaces(step), decimalPlaces(base)); - if (decimalPlaces(nb) > decimals) // Value can't have too many decimals - return false; - // Be careful of rounding errors by using integers. - var toInt = function toInt(f) { - return Math.round(f * Math.pow(10, decimals)); - }; - if ((toInt(nb) - toInt(base)) % toInt(step) != 0) return false; - } - } - return true; - }, - requirementType: { - '': 'string', - step: 'string', - base: 'number' - }, - priority: 256 - }, - pattern: { - validateString: function validateString(value, regexp) { - return regexp.test(value); - }, - requirementType: 'regexp', - priority: 64 - }, - minlength: { - validateString: function validateString(value, requirement) { - return value.length >= requirement; - }, - requirementType: 'integer', - priority: 30 - }, - maxlength: { - validateString: function validateString(value, requirement) { - return value.length <= requirement; - }, - requirementType: 'integer', - priority: 30 - }, - length: { - validateString: function validateString(value, min, max) { - return value.length >= min && value.length <= max; - }, - requirementType: ['integer', 'integer'], - priority: 30 - }, - mincheck: { - validateMultiple: function validateMultiple(values, requirement) { - return values.length >= requirement; - }, - requirementType: 'integer', - priority: 30 - }, - maxcheck: { - validateMultiple: function validateMultiple(values, requirement) { - return values.length <= requirement; - }, - requirementType: 'integer', - priority: 30 - }, - check: { - validateMultiple: function validateMultiple(values, min, max) { - return values.length >= min && values.length <= max; - }, - requirementType: ['integer', 'integer'], - priority: 30 - }, - min: ValidatorRegistry__comparisonOperator(function (value, requirement) { - return value >= requirement; - }), - max: ValidatorRegistry__comparisonOperator(function (value, requirement) { - return value <= requirement; - }), - range: ValidatorRegistry__comparisonOperator(function (value, min, max) { - return value >= min && value <= max; - }), - equalto: { - validateString: function validateString(value, refOrValue) { - var $reference = $(refOrValue); - if ($reference.length) return value === $reference.val();else return value === refOrValue; - }, - priority: 256 - } - } - }; - - var UI = {}; - - var diffResults = function diffResults(newResult, oldResult, deep) { - var added = []; - var kept = []; - - for (var i = 0; i < newResult.length; i++) { - var found = false; - - for (var j = 0; j < oldResult.length; j++) if (newResult[i].assert.name === oldResult[j].assert.name) { - found = true; - break; - } - - if (found) kept.push(newResult[i]);else added.push(newResult[i]); - } - - return { - kept: kept, - added: added, - removed: !deep ? diffResults(oldResult, newResult, true).added : [] - }; - }; - - UI.Form = { - - _actualizeTriggers: function _actualizeTriggers() { - var _this2 = this; - - this.$element.on('submit.Parsley', function (evt) { - _this2.onSubmitValidate(evt); - }); - this.$element.on('click.Parsley', Utils._SubmitSelector, function (evt) { - _this2.onSubmitButton(evt); - }); - - // UI could be disabled - if (false === this.options.uiEnabled) return; - - this.element.setAttribute('novalidate', ''); - }, - - focus: function focus() { - this._focusedField = null; - - if (true === this.validationResult || 'none' === this.options.focus) return null; - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i]; - if (true !== field.validationResult && field.validationResult.length > 0 && 'undefined' === typeof field.options.noFocus) { - this._focusedField = field.$element; - if ('first' === this.options.focus) break; - } - } - - if (null === this._focusedField) return null; - - return this._focusedField.focus(); - }, - - _destroyUI: function _destroyUI() { - // Reset all event listeners - this.$element.off('.Parsley'); - } - - }; - - UI.Field = { - - _reflowUI: function _reflowUI() { - this._buildUI(); - - // If this field doesn't have an active UI don't bother doing something - if (!this._ui) return; - - // Diff between two validation results - var diff = diffResults(this.validationResult, this._ui.lastValidationResult); - - // Then store current validation result for next reflow - this._ui.lastValidationResult = this.validationResult; - - // Handle valid / invalid / none field class - this._manageStatusClass(); - - // Add, remove, updated errors messages - this._manageErrorsMessages(diff); - - // Triggers impl - this._actualizeTriggers(); - - // If field is not valid for the first time, bind keyup trigger to ease UX and quickly inform user - if ((diff.kept.length || diff.added.length) && !this._failedOnce) { - this._failedOnce = true; - this._actualizeTriggers(); - } - }, - - // Returns an array of field's error message(s) - getErrorsMessages: function getErrorsMessages() { - // No error message, field is valid - if (true === this.validationResult) return []; - - var messages = []; - - for (var i = 0; i < this.validationResult.length; i++) messages.push(this.validationResult[i].errorMessage || this._getErrorMessage(this.validationResult[i].assert)); - - return messages; - }, - - // It's a goal of Parsley that this method is no longer required [#1073] - addError: function addError(name) { - var _ref2 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - var message = _ref2.message; - var assert = _ref2.assert; - var _ref2$updateClass = _ref2.updateClass; - var updateClass = _ref2$updateClass === undefined ? true : _ref2$updateClass; - - this._buildUI(); - this._addError(name, { message: message, assert: assert }); - - if (updateClass) this._errorClass(); - }, - - // It's a goal of Parsley that this method is no longer required [#1073] - updateError: function updateError(name) { - var _ref3 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - var message = _ref3.message; - var assert = _ref3.assert; - var _ref3$updateClass = _ref3.updateClass; - var updateClass = _ref3$updateClass === undefined ? true : _ref3$updateClass; - - this._buildUI(); - this._updateError(name, { message: message, assert: assert }); - - if (updateClass) this._errorClass(); - }, - - // It's a goal of Parsley that this method is no longer required [#1073] - removeError: function removeError(name) { - var _ref4 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - var _ref4$updateClass = _ref4.updateClass; - var updateClass = _ref4$updateClass === undefined ? true : _ref4$updateClass; - - this._buildUI(); - this._removeError(name); - - // edge case possible here: remove a standard Parsley error that is still failing in this.validationResult - // but highly improbable cuz' manually removing a well Parsley handled error makes no sense. - if (updateClass) this._manageStatusClass(); - }, - - _manageStatusClass: function _manageStatusClass() { - if (this.hasConstraints() && this.needsValidation() && true === this.validationResult) this._successClass();else if (this.validationResult.length > 0) this._errorClass();else this._resetClass(); - }, - - _manageErrorsMessages: function _manageErrorsMessages(diff) { - if ('undefined' !== typeof this.options.errorsMessagesDisabled) return; - - // Case where we have errorMessage option that configure an unique field error message, regardless failing validators - if ('undefined' !== typeof this.options.errorMessage) { - if (diff.added.length || diff.kept.length) { - this._insertErrorWrapper(); - - if (0 === this._ui.$errorsWrapper.find('.parsley-custom-error-message').length) this._ui.$errorsWrapper.append($(this.options.errorTemplate).addClass('parsley-custom-error-message')); - - return this._ui.$errorsWrapper.addClass('filled').find('.parsley-custom-error-message').html(this.options.errorMessage); - } - - return this._ui.$errorsWrapper.removeClass('filled').find('.parsley-custom-error-message').remove(); - } - - // Show, hide, update failing constraints messages - for (var i = 0; i < diff.removed.length; i++) this._removeError(diff.removed[i].assert.name); - - for (i = 0; i < diff.added.length; i++) this._addError(diff.added[i].assert.name, { message: diff.added[i].errorMessage, assert: diff.added[i].assert }); - - for (i = 0; i < diff.kept.length; i++) this._updateError(diff.kept[i].assert.name, { message: diff.kept[i].errorMessage, assert: diff.kept[i].assert }); - }, - - _addError: function _addError(name, _ref5) { - var message = _ref5.message; - var assert = _ref5.assert; - - this._insertErrorWrapper(); - this._ui.$errorsWrapper.addClass('filled').append($(this.options.errorTemplate).addClass('parsley-' + name).html(message || this._getErrorMessage(assert))); - }, - - _updateError: function _updateError(name, _ref6) { - var message = _ref6.message; - var assert = _ref6.assert; - - this._ui.$errorsWrapper.addClass('filled').find('.parsley-' + name).html(message || this._getErrorMessage(assert)); - }, - - _removeError: function _removeError(name) { - this._ui.$errorsWrapper.removeClass('filled').find('.parsley-' + name).remove(); - }, - - _getErrorMessage: function _getErrorMessage(constraint) { - var customConstraintErrorMessage = constraint.name + 'Message'; - - if ('undefined' !== typeof this.options[customConstraintErrorMessage]) return window.Parsley.formatMessage(this.options[customConstraintErrorMessage], constraint.requirements); - - return window.Parsley.getErrorMessage(constraint); - }, - - _buildUI: function _buildUI() { - // UI could be already built or disabled - if (this._ui || false === this.options.uiEnabled) return; - - var _ui = {}; - - // Give field its Parsley id in DOM - this.element.setAttribute(this.options.namespace + 'id', this.__id__); - - /** Generate important UI elements and store them in this **/ - // $errorClassHandler is the $element that woul have parsley-error and parsley-success classes - _ui.$errorClassHandler = this._manageClassHandler(); - - // $errorsWrapper is a div that would contain the various field errors, it will be appended into $errorsContainer - _ui.errorsWrapperId = 'parsley-id-' + (this.options.multiple ? 'multiple-' + this.options.multiple : this.__id__); - _ui.$errorsWrapper = $(this.options.errorsWrapper).attr('id', _ui.errorsWrapperId); - - // ValidationResult UI storage to detect what have changed bwt two validations, and update DOM accordingly - _ui.lastValidationResult = []; - _ui.validationInformationVisible = false; - - // Store it in this for later - this._ui = _ui; - }, - - // Determine which element will have `parsley-error` and `parsley-success` classes - _manageClassHandler: function _manageClassHandler() { - // An element selector could be passed through DOM with `data-parsley-class-handler=#foo` - if ('string' === typeof this.options.classHandler) { - if ($(this.options.classHandler).length === 0) ParsleyUtils.warn('No elements found that match the selector `' + this.options.classHandler + '` set in options.classHandler or data-parsley-class-handler'); - - //return element or empty set - return $(this.options.classHandler); - } - - // Class handled could also be determined by function given in Parsley options - if ('function' === typeof this.options.classHandler) var $handler = this.options.classHandler.call(this, this); - - // If this function returned a valid existing DOM element, go for it - if ('undefined' !== typeof $handler && $handler.length) return $handler; - - return this._inputHolder(); - }, - - _inputHolder: function _inputHolder() { - // if simple element (input, texatrea, select...) it will perfectly host the classes and precede the error container - if (!this.options.multiple || this.element.nodeName === 'SELECT') return this.$element; - - // But if multiple element (radio, checkbox), that would be their parent - return this.$element.parent(); - }, - - _insertErrorWrapper: function _insertErrorWrapper() { - var $errorsContainer; - - // Nothing to do if already inserted - if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent(); - - if ('string' === typeof this.options.errorsContainer) { - if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else Utils.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM'); - } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this); - - if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper); - - return this._inputHolder().after(this._ui.$errorsWrapper); - }, - - _actualizeTriggers: function _actualizeTriggers() { - var _this3 = this; - - var $toBind = this._findRelated(); - var trigger; - - // Remove Parsley events already bound on this field - $toBind.off('.Parsley'); - if (this._failedOnce) $toBind.on(Utils.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () { - _this3._validateIfNeeded(); - });else if (trigger = Utils.namespaceEvents(this.options.trigger, 'Parsley')) { - $toBind.on(trigger, function (event) { - _this3._validateIfNeeded(event); - }); - } - }, - - _validateIfNeeded: function _validateIfNeeded(event) { - var _this4 = this; - - // For keyup, keypress, keydown, input... events that could be a little bit obstrusive - // do not validate if val length < min threshold on first validation. Once field have been validated once and info - // about success or failure have been displayed, always validate with this trigger to reflect every yalidation change. - if (event && /key|input/.test(event.type)) if (!(this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold) return; - - if (this.options.debounce) { - window.clearTimeout(this._debounced); - this._debounced = window.setTimeout(function () { - return _this4.validate(); - }, this.options.debounce); - } else this.validate(); - }, - - _resetUI: function _resetUI() { - // Reset all event listeners - this._failedOnce = false; - this._actualizeTriggers(); - - // Nothing to do if UI never initialized for this field - if ('undefined' === typeof this._ui) return; - - // Reset all errors' li - this._ui.$errorsWrapper.removeClass('filled').children().remove(); - - // Reset validation class - this._resetClass(); - - // Reset validation flags and last validation result - this._ui.lastValidationResult = []; - this._ui.validationInformationVisible = false; - }, - - _destroyUI: function _destroyUI() { - this._resetUI(); - - if ('undefined' !== typeof this._ui) this._ui.$errorsWrapper.remove(); - - delete this._ui; - }, - - _successClass: function _successClass() { - this._ui.validationInformationVisible = true; - this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass); - }, - _errorClass: function _errorClass() { - this._ui.validationInformationVisible = true; - this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass); - }, - _resetClass: function _resetClass() { - this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass); - } - }; - - var Form = function Form(element, domOptions, options) { - this.__class__ = 'Form'; - - this.element = element; - this.$element = $(element); - this.domOptions = domOptions; - this.options = options; - this.parent = window.Parsley; - - this.fields = []; - this.validationResult = null; - }; - - var Form__statusMapping = { pending: null, resolved: true, rejected: false }; - - Form.prototype = { - onSubmitValidate: function onSubmitValidate(event) { - var _this5 = this; - - // This is a Parsley generated submit event, do not validate, do not prevent, simply exit and keep normal behavior - if (true === event.parsley) return; - - // If we didn't come here through a submit button, use the first one in the form - var submitSource = this._submitSource || this.$element.find(Utils._SubmitSelector)[0]; - this._submitSource = null; - this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true); - if (submitSource && null !== submitSource.getAttribute('formnovalidate')) return; - - window.Parsley._remoteCache = {}; - - var promise = this.whenValidate({ event: event }); - - if ('resolved' === promise.state() && false !== this._trigger('submit')) { - // All good, let event go through. We make this distinction because browsers - // differ in their handling of `submit` being called from inside a submit event [#1047] - } else { - // Rejected or pending: cancel this submit - event.stopImmediatePropagation(); - event.preventDefault(); - if ('pending' === promise.state()) promise.done(function () { - _this5._submit(submitSource); - }); - } - }, - - onSubmitButton: function onSubmitButton(event) { - this._submitSource = event.currentTarget; - }, - // internal - // _submit submits the form, this time without going through the validations. - // Care must be taken to "fake" the actual submit button being clicked. - _submit: function _submit(submitSource) { - if (false === this._trigger('submit')) return; - // Add submit button's data - if (submitSource) { - var $synthetic = this.$element.find('.parsley-synthetic-submit-button').prop('disabled', false); - if (0 === $synthetic.length) $synthetic = $('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element); - $synthetic.attr({ - name: submitSource.getAttribute('name'), - value: submitSource.getAttribute('value') - }); - } - - this.$element.trigger(_extends($.Event('submit'), { parsley: true })); - }, - - // Performs validation on fields while triggering events. - // @returns `true` if all validations succeeds, `false` - // if a failure is immediately detected, or `null` - // if dependant on a promise. - // Consider using `whenValidate` instead. - validate: function validate(options) { - if (arguments.length >= 1 && !$.isPlainObject(options)) { - Utils.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.'); - - var _arguments = _slice.call(arguments); - - var group = _arguments[0]; - var force = _arguments[1]; - var event = _arguments[2]; - - options = { group: group, force: force, event: event }; - } - return Form__statusMapping[this.whenValidate(options).state()]; - }, - - whenValidate: function whenValidate() { - var _Utils$all$done$fail$always, - _this6 = this; - - var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - var group = _ref7.group; - var force = _ref7.force; - var event = _ref7.event; - - this.submitEvent = event; - if (event) { - this.submitEvent = _extends({}, event, { preventDefault: function preventDefault() { - Utils.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"); - _this6.validationResult = false; - } }); - } - this.validationResult = true; - - // fire validate event to eventually modify things before every validation - this._trigger('validate'); - - // Refresh form DOM options and form's fields that could have changed - this._refreshFields(); - - var promises = this._withoutReactualizingFormOptions(function () { - return $.map(_this6.fields, function (field) { - return field.whenValidate({ force: force, group: group }); - }); - }); - - return (_Utils$all$done$fail$always = Utils.all(promises).done(function () { - _this6._trigger('success'); - }).fail(function () { - _this6.validationResult = false; - _this6.focus(); - _this6._trigger('error'); - }).always(function () { - _this6._trigger('validated'); - })).pipe.apply(_Utils$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult())); - }, - - // Iterate over refreshed fields, and stop on first failure. - // Returns `true` if all fields are valid, `false` if a failure is detected - // or `null` if the result depends on an unresolved promise. - // Prefer using `whenValid` instead. - isValid: function isValid(options) { - if (arguments.length >= 1 && !$.isPlainObject(options)) { - Utils.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.'); - - var _arguments2 = _slice.call(arguments); - - var group = _arguments2[0]; - var force = _arguments2[1]; - - options = { group: group, force: force }; - } - return Form__statusMapping[this.whenValid(options).state()]; - }, - - // Iterate over refreshed fields and validate them. - // Returns a promise. - // A validation that immediately fails will interrupt the validations. - whenValid: function whenValid() { - var _this7 = this; - - var _ref8 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - var group = _ref8.group; - var force = _ref8.force; - - this._refreshFields(); - - var promises = this._withoutReactualizingFormOptions(function () { - return $.map(_this7.fields, function (field) { - return field.whenValid({ group: group, force: force }); - }); - }); - return Utils.all(promises); - }, - - // Reset UI - reset: function reset() { - // Form case: emit a reset event for each field - for (var i = 0; i < this.fields.length; i++) this.fields[i].reset(); - - this._trigger('reset'); - }, - - // Destroy Parsley instance (+ UI) - destroy: function destroy() { - // Field case: emit destroy event to clean UI and then destroy stored instance - this._destroyUI(); - - // Form case: destroy all its fields and then destroy stored instance - for (var i = 0; i < this.fields.length; i++) this.fields[i].destroy(); - - this.$element.removeData('Parsley'); - this._trigger('destroy'); - }, - - _refreshFields: function _refreshFields() { - return this.actualizeOptions()._bindFields(); - }, - - _bindFields: function _bindFields() { - var _this8 = this; - - var oldFields = this.fields; - - this.fields = []; - this.fieldsMappedById = {}; - - this._withoutReactualizingFormOptions(function () { - _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) { - var fieldInstance = new window.Parsley.Factory(element, {}, _this8); - - // Only add valid and not excluded `Field` and `FieldMultiple` children - if (('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) { - var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__; - if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) { - _this8.fieldsMappedById[uniqueId] = fieldInstance; - _this8.fields.push(fieldInstance); - } - } - }); - - $.each(Utils.difference(oldFields, _this8.fields), function (_, field) { - field.reset(); - }); - }); - return this; - }, - - // Internal only. - // Looping on a form's fields to do validation or similar - // will trigger reactualizing options on all of them, which - // in turn will reactualize the form's options. - // To avoid calling actualizeOptions so many times on the form - // for nothing, _withoutReactualizingFormOptions temporarily disables - // the method actualizeOptions on this form while `fn` is called. - _withoutReactualizingFormOptions: function _withoutReactualizingFormOptions(fn) { - var oldActualizeOptions = this.actualizeOptions; - this.actualizeOptions = function () { - return this; - }; - var result = fn(); - this.actualizeOptions = oldActualizeOptions; - return result; - }, - - // Internal only. - // Shortcut to trigger an event - // Returns true iff event is not interrupted and default not prevented. - _trigger: function _trigger(eventName) { - return this.trigger('form:' + eventName); - } - - }; - - var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) { - var validatorSpec = window.Parsley._validatorRegistry.validators[name]; - var validator = new Validator(validatorSpec); - priority = priority || parsleyField.options[name + 'Priority'] || validator.priority; - isDomConstraint = true === isDomConstraint; - - _extends(this, { - validator: validator, - name: name, - requirements: requirements, - priority: priority, - isDomConstraint: isDomConstraint - }); - this._parseRequirements(parsleyField.options); - }; - - var capitalize = function capitalize(str) { - var cap = str[0].toUpperCase(); - return cap + str.slice(1); - }; - - Constraint.prototype = { - validate: function validate(value, instance) { - var _validator; - - return (_validator = this.validator).validate.apply(_validator, [value].concat(_toConsumableArray(this.requirementList), [instance])); - }, - - _parseRequirements: function _parseRequirements(options) { - var _this9 = this; - - this.requirementList = this.validator.parseRequirements(this.requirements, function (key) { - return options[_this9.name + capitalize(key)]; - }); - } - }; - - var Field = function Field(field, domOptions, options, parsleyFormInstance) { - this.__class__ = 'Field'; - - this.element = field; - this.$element = $(field); - - // Set parent if we have one - if ('undefined' !== typeof parsleyFormInstance) { - this.parent = parsleyFormInstance; - } - - this.options = options; - this.domOptions = domOptions; - - // Initialize some properties - this.constraints = []; - this.constraintsByName = {}; - this.validationResult = true; - - // Bind constraints - this._bindConstraints(); - }; - - var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false }; - - Field.prototype = { - // # Public API - // Validate field and trigger some events for mainly `UI` - // @returns `true`, an array of the validators that failed, or - // `null` if validation is not finished. Prefer using whenValidate - validate: function validate(options) { - if (arguments.length >= 1 && !$.isPlainObject(options)) { - Utils.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.'); - options = { options: options }; - } - var promise = this.whenValidate(options); - if (!promise) // If excluded with `group` option - return true; - switch (promise.state()) { - case 'pending': - return null; - case 'resolved': - return true; - case 'rejected': - return this.validationResult; - } - }, - - // Validate field and trigger some events for mainly `UI` - // @returns a promise that succeeds only when all validations do - // or `undefined` if field is not in the given `group`. - whenValidate: function whenValidate() { - var _whenValid$always$done$fail$always, - _this10 = this; - - var _ref9 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - var force = _ref9.force; - var group = _ref9.group; - - // do not validate a field if not the same as given validation group - this.refreshConstraints(); - if (group && !this._isInGroup(group)) return; - - this.value = this.getValue(); - - // Field Validate event. `this.value` could be altered for custom needs - this._trigger('validate'); - - return (_whenValid$always$done$fail$always = this.whenValid({ force: force, value: this.value, _refreshed: true }).always(function () { - _this10._reflowUI(); - }).done(function () { - _this10._trigger('success'); - }).fail(function () { - _this10._trigger('error'); - }).always(function () { - _this10._trigger('validated'); - })).pipe.apply(_whenValid$always$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult())); - }, - - hasConstraints: function hasConstraints() { - return 0 !== this.constraints.length; - }, - - // An empty optional field does not need validation - needsValidation: function needsValidation(value) { - if ('undefined' === typeof value) value = this.getValue(); - - // If a field is empty and not required, it is valid - // Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators - if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty) return false; - - return true; - }, - - _isInGroup: function _isInGroup(group) { - if (Array.isArray(this.options.group)) return -1 !== $.inArray(group, this.options.group); - return this.options.group === group; - }, - - // Just validate field. Do not trigger any event. - // Returns `true` iff all constraints pass, `false` if there are failures, - // or `null` if the result can not be determined yet (depends on a promise) - // See also `whenValid`. - isValid: function isValid(options) { - if (arguments.length >= 1 && !$.isPlainObject(options)) { - Utils.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.'); - - var _arguments3 = _slice.call(arguments); - - var force = _arguments3[0]; - var value = _arguments3[1]; - - options = { force: force, value: value }; - } - var promise = this.whenValid(options); - if (!promise) // Excluded via `group` - return true; - return parsley_field__statusMapping[promise.state()]; - }, - - // Just validate field. Do not trigger any event. - // @returns a promise that succeeds only when all validations do - // or `undefined` if the field is not in the given `group`. - // The argument `force` will force validation of empty fields. - // If a `value` is given, it will be validated instead of the value of the input. - whenValid: function whenValid() { - var _this11 = this; - - var _ref10 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - var _ref10$force = _ref10.force; - var force = _ref10$force === undefined ? false : _ref10$force; - var value = _ref10.value; - var group = _ref10.group; - var _refreshed = _ref10._refreshed; - - // Recompute options and rebind constraints to have latest changes - if (!_refreshed) this.refreshConstraints(); - // do not validate a field if not the same as given validation group - if (group && !this._isInGroup(group)) return; - - this.validationResult = true; - - // A field without constraint is valid - if (!this.hasConstraints()) return $.when(); - - // Value could be passed as argument, needed to add more power to 'field:validate' - if ('undefined' === typeof value || null === value) value = this.getValue(); - - if (!this.needsValidation(value) && true !== force) return $.when(); - - var groupedConstraints = this._getGroupedConstraints(); - var promises = []; - $.each(groupedConstraints, function (_, constraints) { - // Process one group of constraints at a time, we validate the constraints - // and combine the promises together. - var promise = Utils.all($.map(constraints, function (constraint) { - return _this11._validateConstraint(value, constraint); - })); - promises.push(promise); - if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed - }); - return Utils.all(promises); - }, - - // @returns a promise - _validateConstraint: function _validateConstraint(value, constraint) { - var _this12 = this; - - var result = constraint.validate(value, this); - // Map false to a failed promise - if (false === result) result = $.Deferred().reject(); - // Make sure we return a promise and that we record failures - return Utils.all([result]).fail(function (errorMessage) { - if (!(_this12.validationResult instanceof Array)) _this12.validationResult = []; - _this12.validationResult.push({ - assert: constraint, - errorMessage: 'string' === typeof errorMessage && errorMessage - }); - }); - }, - - // @returns Parsley field computed value that could be overrided or configured in DOM - getValue: function getValue() { - var value; - - // Value could be overriden in DOM or with explicit options - if ('function' === typeof this.options.value) value = this.options.value(this);else if ('undefined' !== typeof this.options.value) value = this.options.value;else value = this.$element.val(); - - // Handle wrong DOM or configurations - if ('undefined' === typeof value || null === value) return ''; - - return this._handleWhitespace(value); - }, - - // Reset UI - reset: function reset() { - this._resetUI(); - return this._trigger('reset'); - }, - - // Destroy Parsley instance (+ UI) - destroy: function destroy() { - // Field case: emit destroy event to clean UI and then destroy stored instance - this._destroyUI(); - this.$element.removeData('Parsley'); - this.$element.removeData('FieldMultiple'); - this._trigger('destroy'); - }, - - // Actualize options that could have change since previous validation - // Re-bind accordingly constraints (could be some new, removed or updated) - refreshConstraints: function refreshConstraints() { - return this.actualizeOptions()._bindConstraints(); - }, - - /** - * Add a new constraint to a field - * - * @param {String} name - * @param {Mixed} requirements optional - * @param {Number} priority optional - * @param {Boolean} isDomConstraint optional - */ - addConstraint: function addConstraint(name, requirements, priority, isDomConstraint) { - - if (window.Parsley._validatorRegistry.validators[name]) { - var constraint = new Constraint(this, name, requirements, priority, isDomConstraint); - - // if constraint already exist, delete it and push new version - if ('undefined' !== this.constraintsByName[constraint.name]) this.removeConstraint(constraint.name); - - this.constraints.push(constraint); - this.constraintsByName[constraint.name] = constraint; - } - - return this; - }, - - // Remove a constraint - removeConstraint: function removeConstraint(name) { - for (var i = 0; i < this.constraints.length; i++) if (name === this.constraints[i].name) { - this.constraints.splice(i, 1); - break; - } - delete this.constraintsByName[name]; - return this; - }, - - // Update a constraint (Remove + re-add) - updateConstraint: function updateConstraint(name, parameters, priority) { - return this.removeConstraint(name).addConstraint(name, parameters, priority); - }, - - // # Internals - - // Internal only. - // Bind constraints from config + options + DOM - _bindConstraints: function _bindConstraints() { - var constraints = []; - var constraintsByName = {}; - - // clean all existing DOM constraints to only keep javascript user constraints - for (var i = 0; i < this.constraints.length; i++) if (false === this.constraints[i].isDomConstraint) { - constraints.push(this.constraints[i]); - constraintsByName[this.constraints[i].name] = this.constraints[i]; - } - - this.constraints = constraints; - this.constraintsByName = constraintsByName; - - // then re-add Parsley DOM-API constraints - for (var name in this.options) this.addConstraint(name, this.options[name], undefined, true); - - // finally, bind special HTML5 constraints - return this._bindHtml5Constraints(); - }, - - // Internal only. - // Bind specific HTML5 constraints to be HTML5 compliant - _bindHtml5Constraints: function _bindHtml5Constraints() { - // html5 required - if (null !== this.element.getAttribute('required')) this.addConstraint('required', true, undefined, true); - - // html5 pattern - if (null !== this.element.getAttribute('pattern')) this.addConstraint('pattern', this.element.getAttribute('pattern'), undefined, true); - - // range - var min = this.element.getAttribute('min'); - var max = this.element.getAttribute('max'); - if (null !== min && null !== max) this.addConstraint('range', [min, max], undefined, true); - - // HTML5 min - else if (null !== min) this.addConstraint('min', min, undefined, true); - - // HTML5 max - else if (null !== max) this.addConstraint('max', max, undefined, true); - - // length - if (null !== this.element.getAttribute('minlength') && null !== this.element.getAttribute('maxlength')) this.addConstraint('length', [this.element.getAttribute('minlength'), this.element.getAttribute('maxlength')], undefined, true); - - // HTML5 minlength - else if (null !== this.element.getAttribute('minlength')) this.addConstraint('minlength', this.element.getAttribute('minlength'), undefined, true); - - // HTML5 maxlength - else if (null !== this.element.getAttribute('maxlength')) this.addConstraint('maxlength', this.element.getAttribute('maxlength'), undefined, true); - - // html5 types - var type = this.element.type; - - // Small special case here for HTML5 number: integer validator if step attribute is undefined or an integer value, number otherwise - if ('number' === type) { - return this.addConstraint('type', ['number', { - step: this.element.getAttribute('step') || '1', - base: min || this.element.getAttribute('value') - }], undefined, true); - // Regular other HTML5 supported types - } else if (/^(email|url|range|date)$/i.test(type)) { - return this.addConstraint('type', type, undefined, true); - } - return this; - }, - - // Internal only. - // Field is required if have required constraint without `false` value - _isRequired: function _isRequired() { - if ('undefined' === typeof this.constraintsByName.required) return false; - - return false !== this.constraintsByName.required.requirements; - }, - - // Internal only. - // Shortcut to trigger an event - _trigger: function _trigger(eventName) { - return this.trigger('field:' + eventName); - }, - - // Internal only - // Handles whitespace in a value - // Use `data-parsley-whitespace="squish"` to auto squish input value - // Use `data-parsley-whitespace="trim"` to auto trim input value - _handleWhitespace: function _handleWhitespace(value) { - if (true === this.options.trimValue) Utils.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'); - - if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' '); - - if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils.trimString(value); - - return value; - }, - - _isDateInput: function _isDateInput() { - var c = this.constraintsByName.type; - return c && c.requirements === 'date'; - }, - - // Internal only. - // Returns the constraints, grouped by descending priority. - // The result is thus an array of arrays of constraints. - _getGroupedConstraints: function _getGroupedConstraints() { - if (false === this.options.priorityEnabled) return [this.constraints]; - - var groupedConstraints = []; - var index = {}; - - // Create array unique of priorities - for (var i = 0; i < this.constraints.length; i++) { - var p = this.constraints[i].priority; - if (!index[p]) groupedConstraints.push(index[p] = []); - index[p].push(this.constraints[i]); - } - // Sort them by priority DESC - groupedConstraints.sort(function (a, b) { - return b[0].priority - a[0].priority; - }); - - return groupedConstraints; - } - - }; - - var parsley_field = Field; - - var Multiple = function Multiple() { - this.__class__ = 'FieldMultiple'; - }; - - Multiple.prototype = { - // Add new `$element` sibling for multiple field - addElement: function addElement($element) { - this.$elements.push($element); - - return this; - }, - - // See `Field.refreshConstraints()` - refreshConstraints: function refreshConstraints() { - var fieldConstraints; - - this.constraints = []; - - // Select multiple special treatment - if (this.element.nodeName === 'SELECT') { - this.actualizeOptions()._bindConstraints(); - - return this; - } - - // Gather all constraints for each input in the multiple group - for (var i = 0; i < this.$elements.length; i++) { - - // Check if element have not been dynamically removed since last binding - if (!$('html').has(this.$elements[i]).length) { - this.$elements.splice(i, 1); - continue; - } - - fieldConstraints = this.$elements[i].data('FieldMultiple').refreshConstraints().constraints; - - for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint); - } - - return this; - }, - - // See `Field.getValue()` - getValue: function getValue() { - // Value could be overriden in DOM - if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value; - - // Radio input case - if (this.element.nodeName === 'INPUT') { - if (this.element.type === 'radio') return this._findRelated().filter(':checked').val() || ''; - - // checkbox input case - if (this.element.type === 'checkbox') { - var values = []; - - this._findRelated().filter(':checked').each(function () { - values.push($(this).val()); - }); - - return values; - } - } - - // Select multiple case - if (this.element.nodeName === 'SELECT' && null === this.$element.val()) return []; - - // Default case that should never happen - return this.$element.val(); - }, - - _init: function _init() { - this.$elements = [this.$element]; - - return this; - } - }; - - var Factory = function Factory(element, options, parsleyFormInstance) { - this.element = element; - this.$element = $(element); - - // If the element has already been bound, returns its saved Parsley instance - var savedparsleyFormInstance = this.$element.data('Parsley'); - if (savedparsleyFormInstance) { - - // If the saved instance has been bound without a Form parent and there is one given in this call, add it - if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) { - savedparsleyFormInstance.parent = parsleyFormInstance; - savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options); - } - - if ('object' === typeof options) { - _extends(savedparsleyFormInstance.options, options); - } - - return savedparsleyFormInstance; - } - - // Parsley must be instantiated with a DOM element or jQuery $element - if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.'); - - if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance'); - - this.parent = parsleyFormInstance || window.Parsley; - return this.init(options); - }; - - Factory.prototype = { - init: function init(options) { - this.__class__ = 'Parsley'; - this.__version__ = '2.7.2'; - this.__id__ = Utils.generateID(); - - // Pre-compute options - this._resetOptions(options); - - // A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute - if (this.element.nodeName === 'FORM' || Utils.checkAttr(this.element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm'); - - // Every other element is bound as a `Field` or `FieldMultiple` - return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField'); - }, - - isMultiple: function isMultiple() { - return this.element.type === 'radio' || this.element.type === 'checkbox' || this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple'); - }, - - // Multiples fields are a real nightmare :( - // Maybe some refactoring would be appreciated here... - handleMultiple: function handleMultiple() { - var _this13 = this; - - var name; - var multiple; - var parsleyMultipleInstance; - - // Handle multiple name - this.options.multiple = this.options.multiple || (name = this.element.getAttribute('name')) || this.element.getAttribute('id'); - - // Special select multiple input - if (this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple')) { - this.options.multiple = this.options.multiple || this.__id__; - return this.bind('parsleyFieldMultiple'); - - // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it - } else if (!this.options.multiple) { - Utils.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element); - return this; - } - - // Remove special chars - this.options.multiple = this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g, ''); - - // Add proper `data-parsley-multiple` to siblings if we have a valid multiple name - if (name) { - $('input[name="' + name + '"]').each(function (i, input) { - if (input.type === 'radio' || input.type === 'checkbox') input.setAttribute(_this13.options.namespace + 'multiple', _this13.options.multiple); - }); - } - - // Check here if we don't already have a related multiple instance saved - var $previouslyRelated = this._findRelated(); - for (var i = 0; i < $previouslyRelated.length; i++) { - parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley'); - if ('undefined' !== typeof parsleyMultipleInstance) { - - if (!this.$element.data('FieldMultiple')) { - parsleyMultipleInstance.addElement(this.$element); - } - - break; - } - } - - // Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')` - // And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance - this.bind('parsleyField', true); - - return parsleyMultipleInstance || this.bind('parsleyFieldMultiple'); - }, - - // Return proper `Form`, `Field` or `FieldMultiple` - bind: function bind(type, doNotStore) { - var parsleyInstance; - - switch (type) { - case 'parsleyForm': - parsleyInstance = $.extend(new Form(this.element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields(); - break; - case 'parsleyField': - parsleyInstance = $.extend(new parsley_field(this.element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend); - break; - case 'parsleyFieldMultiple': - parsleyInstance = $.extend(new parsley_field(this.element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init(); - break; - default: - throw new Error(type + 'is not a supported Parsley type'); - } - - if (this.options.multiple) Utils.setAttr(this.element, this.options.namespace, 'multiple', this.options.multiple); - - if ('undefined' !== typeof doNotStore) { - this.$element.data('FieldMultiple', parsleyInstance); - - return parsleyInstance; - } - - // Store the freshly bound instance in a DOM element for later access using jQuery `data()` - this.$element.data('Parsley', parsleyInstance); - - // Tell the world we have a new Form or Field instance! - parsleyInstance._actualizeTriggers(); - parsleyInstance._trigger('init'); - - return parsleyInstance; - } - }; - - var vernums = $.fn.jquery.split('.'); - if (parseInt(vernums[0]) <= 1 && parseInt(vernums[1]) < 8) { - throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better."; - } - if (!vernums.forEach) { - Utils.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim'); - } - // Inherit `on`, `off` & `trigger` to Parsley: - var Parsley = _extends(new Base(), { - element: document, - $element: $(document), - actualizeOptions: null, - _resetOptions: null, - Factory: Factory, - version: '2.7.2' - }); - - // Supplement Field and Form with Base - // This way, the constructors will have access to those methods - _extends(parsley_field.prototype, UI.Field, Base.prototype); - _extends(Form.prototype, UI.Form, Base.prototype); - // Inherit actualizeOptions and _resetOptions: - _extends(Factory.prototype, Base.prototype); - - // ### jQuery API - // `$('.elem').parsley(options)` or `$('.elem').psly(options)` - $.fn.parsley = $.fn.psly = function (options) { - if (this.length > 1) { - var instances = []; - - this.each(function () { - instances.push($(this).parsley(options)); - }); - - return instances; - } - - // Return undefined if applied to non existing DOM element - if (!$(this).length) { - Utils.warn('You must bind Parsley on an existing element.'); - - return; - } - - return new Factory(this[0], options); - }; - - // ### Field and Form extension - // Ensure the extension is now defined if it wasn't previously - if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {}; - - // ### Parsley config - // Inherit from ParsleyDefault, and copy over any existing values - Parsley.options = _extends(Utils.objectCreate(Defaults), window.ParsleyConfig); - window.ParsleyConfig = Parsley.options; // Old way of accessing global options - - // ### Globals - window.Parsley = window.psly = Parsley; - Parsley.Utils = Utils; - window.ParsleyUtils = {}; - $.each(Utils, function (key, value) { - if ('function' === typeof value) { - window.ParsleyUtils[key] = function () { - Utils.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.'); - return Utils[key].apply(Utils, arguments); - }; - } - }); - - // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley - var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n); - window.ParsleyValidator = {}; - $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) { - window.Parsley[method] = function () { - return registry[method].apply(registry, arguments); - }; - window.ParsleyValidator[method] = function () { - var _window$Parsley; - - Utils.warnOnce('Accessing the method \'' + method + '\' through Validator is deprecated. Simply call \'window.Parsley.' + method + '(...)\''); - return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments); - }; - }); - - // ### UI - // Deprecated global object - window.Parsley.UI = UI; - window.ParsleyUI = { - removeError: function removeError(instance, name, doNotUpdateClass) { - var updateClass = true !== doNotUpdateClass; - Utils.warnOnce('Accessing UI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.'); - return instance.removeError(name, { updateClass: updateClass }); - }, - getErrorsMessages: function getErrorsMessages(instance) { - Utils.warnOnce('Accessing UI is deprecated. Call \'getErrorsMessages\' on the instance directly.'); - return instance.getErrorsMessages(); - } - }; - $.each('addError updateError'.split(' '), function (i, method) { - window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) { - var updateClass = true !== doNotUpdateClass; - Utils.warnOnce('Accessing UI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.'); - return instance[method](name, { message: message, assert: assert, updateClass: updateClass }); - }; - }); - - // ### PARSLEY auto-binding - // Prevent it by setting `ParsleyConfig.autoBind` to `false` - if (false !== window.ParsleyConfig.autoBind) { - $(function () { - // Works only on `data-parsley-validate`. - if ($('[data-parsley-validate]').length) $('[data-parsley-validate]').parsley(); - }); - } - - var o = $({}); - var deprecated = function deprecated() { - Utils.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley"); - }; - - // Returns an event handler that calls `fn` with the arguments it expects - function adapt(fn, context) { - // Store to allow unbinding - if (!fn.parsleyAdaptedCallback) { - fn.parsleyAdaptedCallback = function () { - var args = Array.prototype.slice.call(arguments, 0); - args.unshift(this); - fn.apply(context || o, args); - }; - } - return fn.parsleyAdaptedCallback; - } - - var eventPrefix = 'parsley:'; - // Converts 'parsley:form:validate' into 'form:validate' - function eventName(name) { - if (name.lastIndexOf(eventPrefix, 0) === 0) return name.substr(eventPrefix.length); - return name; - } - - // $.listen is deprecated. Use Parsley.on instead. - $.listen = function (name, callback) { - var context; - deprecated(); - if ('object' === typeof arguments[1] && 'function' === typeof arguments[2]) { - context = arguments[1]; - callback = arguments[2]; - } - - if ('function' !== typeof callback) throw new Error('Wrong parameters'); - - window.Parsley.on(eventName(name), adapt(callback, context)); - }; - - $.listenTo = function (instance, name, fn) { - deprecated(); - if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance'); - - if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters'); - - instance.on(eventName(name), adapt(fn)); - }; - - $.unsubscribe = function (name, fn) { - deprecated(); - if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong arguments'); - window.Parsley.off(eventName(name), fn.parsleyAdaptedCallback); - }; - - $.unsubscribeTo = function (instance, name) { - deprecated(); - if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance'); - instance.off(eventName(name)); - }; - - $.unsubscribeAll = function (name) { - deprecated(); - window.Parsley.off(eventName(name)); - $('form,input,textarea,select').each(function () { - var instance = $(this).data('Parsley'); - if (instance) { - instance.off(eventName(name)); - } - }); - }; - - // $.emit is deprecated. Use jQuery events instead. - $.emit = function (name, instance) { - var _instance; - - deprecated(); - var instanceGiven = instance instanceof parsley_field || instance instanceof Form; - var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1); - args.unshift(eventName(name)); - if (!instanceGiven) { - instance = window.Parsley; - } - (_instance = instance).trigger.apply(_instance, _toConsumableArray(args)); - }; - - var pubsub = {}; - - $.extend(true, Parsley, { - asyncValidators: { - 'default': { - fn: function fn(xhr) { - // By default, only status 2xx are deemed successful. - // Note: we use status instead of state() because responses with status 200 - // but invalid messages (e.g. an empty body for content type set to JSON) will - // result in state() === 'rejected'. - return xhr.status >= 200 && xhr.status < 300; - }, - url: false - }, - reverse: { - fn: function fn(xhr) { - // If reverse option is set, a failing ajax request is considered successful - return xhr.status < 200 || xhr.status >= 300; - }, - url: false - } - }, - - addAsyncValidator: function addAsyncValidator(name, fn, url, options) { - Parsley.asyncValidators[name] = { - fn: fn, - url: url || false, - options: options || {} - }; - - return this; - } - - }); - - Parsley.addValidator('remote', { - requirementType: { - '': 'string', - 'validator': 'string', - 'reverse': 'boolean', - 'options': 'object' - }, - - validateString: function validateString(value, url, options, instance) { - var data = {}; - var ajaxOptions; - var csr; - var validator = options.validator || (true === options.reverse ? 'reverse' : 'default'); - - if ('undefined' === typeof Parsley.asyncValidators[validator]) throw new Error('Calling an undefined async validator: `' + validator + '`'); - - url = Parsley.asyncValidators[validator].url || url; - - // Fill current value - if (url.indexOf('{value}') > -1) { - url = url.replace('{value}', encodeURIComponent(value)); - } else { - data[instance.element.getAttribute('name') || instance.element.getAttribute('id')] = value; - } - - // Merge options passed in from the function with the ones in the attribute - var remoteOptions = $.extend(true, options.options || {}, Parsley.asyncValidators[validator].options); - - // All `$.ajax(options)` could be overridden or extended directly from DOM in `data-parsley-remote-options` - ajaxOptions = $.extend(true, {}, { - url: url, - data: data, - type: 'GET' - }, remoteOptions); - - // Generate store key based on ajax options - instance.trigger('field:ajaxoptions', instance, ajaxOptions); - - csr = $.param(ajaxOptions); - - // Initialise querry cache - if ('undefined' === typeof Parsley._remoteCache) Parsley._remoteCache = {}; - - // Try to retrieve stored xhr - var xhr = Parsley._remoteCache[csr] = Parsley._remoteCache[csr] || $.ajax(ajaxOptions); - - var handleXhr = function handleXhr() { - var result = Parsley.asyncValidators[validator].fn.call(instance, xhr, url, options); - if (!result) // Map falsy results to rejected promise - result = $.Deferred().reject(); - return $.when(result); - }; - - return xhr.then(handleXhr, handleXhr); - }, - - priority: -1 - }); - - Parsley.on('form:submit', function () { - Parsley._remoteCache = {}; - }); - - Base.prototype.addAsyncValidator = function () { - Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`'); - return Parsley.addAsyncValidator.apply(Parsley, arguments); - }; - - // This is included with the Parsley library itself, - // thus there is no use in adding it to your project. - Parsley.addMessages('en', { - defaultMessage: "This value seems to be invalid.", - type: { - email: "This value should be a valid email.", - url: "This value should be a valid url.", - number: "This value should be a valid number.", - integer: "This value should be a valid integer.", - digits: "This value should be digits.", - alphanum: "This value should be alphanumeric." - }, - notblank: "This value should not be blank.", - required: "This value is required.", - pattern: "This value seems to be invalid.", - min: "This value should be greater than or equal to %s.", - max: "This value should be lower than or equal to %s.", - range: "This value should be between %s and %s.", - minlength: "This value is too short. It should have %s characters or more.", - maxlength: "This value is too long. It should have %s characters or fewer.", - length: "This value length is invalid. It should be between %s and %s characters long.", - mincheck: "You must select at least %s choices.", - maxcheck: "You must select %s choices or fewer.", - check: "You must select between %s and %s choices.", - equalto: "This value should be the same." - }); - - Parsley.setLocale('en'); - - /** - * inputevent - Alleviate browser bugs for input events - * https://github.com/marcandre/inputevent - * @version v0.0.3 - (built Thu, Apr 14th 2016, 5:58 pm) - * @author Marc-Andre Lafortune <github@marc-andre.ca> - * @license MIT - */ - - function InputEvent() { - var _this14 = this; - - var globals = window || global; - - // Slightly odd way construct our object. This way methods are force bound. - // Used to test for duplicate library. - _extends(this, { - - // For browsers that do not support isTrusted, assumes event is native. - isNativeEvent: function isNativeEvent(evt) { - return evt.originalEvent && evt.originalEvent.isTrusted !== false; - }, - - fakeInputEvent: function fakeInputEvent(evt) { - if (_this14.isNativeEvent(evt)) { - $(evt.target).trigger('input'); - } - }, - - misbehaves: function misbehaves(evt) { - if (_this14.isNativeEvent(evt)) { - _this14.behavesOk(evt); - $(document).on('change.inputevent', evt.data.selector, _this14.fakeInputEvent); - _this14.fakeInputEvent(evt); - } - }, - - behavesOk: function behavesOk(evt) { - if (_this14.isNativeEvent(evt)) { - $(document) // Simply unbinds the testing handler - .off('input.inputevent', evt.data.selector, _this14.behavesOk).off('change.inputevent', evt.data.selector, _this14.misbehaves); - } - }, - - // Bind the testing handlers - install: function install() { - if (globals.inputEventPatched) { - return; - } - globals.inputEventPatched = '0.0.3'; - var _arr = ['select', 'input[type="checkbox"]', 'input[type="radio"]', 'input[type="file"]']; - for (var _i = 0; _i < _arr.length; _i++) { - var selector = _arr[_i]; - $(document).on('input.inputevent', selector, { selector: selector }, _this14.behavesOk).on('change.inputevent', selector, { selector: selector }, _this14.misbehaves); - } - }, - - uninstall: function uninstall() { - delete globals.inputEventPatched; - $(document).off('.inputevent'); - } - - }); - }; - - var inputevent = new InputEvent(); - - inputevent.install(); - - var parsley = Parsley; - - return parsley; -}); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/promise/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = __webpack_require__("../../../../../node_modules/promise/lib/core.js") -__webpack_require__("../../../../../node_modules/promise/lib/done.js") -__webpack_require__("../../../../../node_modules/promise/lib/es6-extensions.js") -__webpack_require__("../../../../../node_modules/promise/lib/node-extensions.js") - -/***/ }), - -/***/ "../../../../../node_modules/promise/lib/core.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var asap = __webpack_require__("../../../../../node_modules/asap/asap.js") - -module.exports = Promise; -function Promise(fn) { - if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new') - if (typeof fn !== 'function') throw new TypeError('not a function') - var state = null - var value = null - var deferreds = [] - var self = this - - this.then = function(onFulfilled, onRejected) { - return new self.constructor(function(resolve, reject) { - handle(new Handler(onFulfilled, onRejected, resolve, reject)) - }) - } - - function handle(deferred) { - if (state === null) { - deferreds.push(deferred) - return - } - asap(function() { - var cb = state ? deferred.onFulfilled : deferred.onRejected - if (cb === null) { - (state ? deferred.resolve : deferred.reject)(value) - return - } - var ret - try { - ret = cb(value) - } - catch (e) { - deferred.reject(e) - return - } - deferred.resolve(ret) - }) - } - - function resolve(newValue) { - try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure - if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.') - if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { - var then = newValue.then - if (typeof then === 'function') { - doResolve(then.bind(newValue), resolve, reject) - return - } - } - state = true - value = newValue - finale() - } catch (e) { reject(e) } - } - - function reject(newValue) { - state = false - value = newValue - finale() - } - - function finale() { - for (var i = 0, len = deferreds.length; i < len; i++) - handle(deferreds[i]) - deferreds = null - } - - doResolve(fn, resolve, reject) -} - - -function Handler(onFulfilled, onRejected, resolve, reject){ - this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null - this.onRejected = typeof onRejected === 'function' ? onRejected : null - this.resolve = resolve - this.reject = reject -} - -/** - * Take a potentially misbehaving resolver function and make sure - * onFulfilled and onRejected are only called once. - * - * Makes no guarantees about asynchrony. - */ -function doResolve(fn, onFulfilled, onRejected) { - var done = false; - try { - fn(function (value) { - if (done) return - done = true - onFulfilled(value) - }, function (reason) { - if (done) return - done = true - onRejected(reason) - }) - } catch (ex) { - if (done) return - done = true - onRejected(ex) - } -} - - -/***/ }), - -/***/ "../../../../../node_modules/promise/lib/done.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var Promise = __webpack_require__("../../../../../node_modules/promise/lib/core.js") -var asap = __webpack_require__("../../../../../node_modules/asap/asap.js") - -module.exports = Promise -Promise.prototype.done = function (onFulfilled, onRejected) { - var self = arguments.length ? this.then.apply(this, arguments) : this - self.then(null, function (err) { - asap(function () { - throw err - }) - }) -} - -/***/ }), - -/***/ "../../../../../node_modules/promise/lib/es6-extensions.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -//This file contains the ES6 extensions to the core Promises/A+ API - -var Promise = __webpack_require__("../../../../../node_modules/promise/lib/core.js") -var asap = __webpack_require__("../../../../../node_modules/asap/asap.js") - -module.exports = Promise - -/* Static Functions */ - -function ValuePromise(value) { - this.then = function (onFulfilled) { - if (typeof onFulfilled !== 'function') return this - return new Promise(function (resolve, reject) { - asap(function () { - try { - resolve(onFulfilled(value)) - } catch (ex) { - reject(ex); - } - }) - }) - } -} -ValuePromise.prototype = Promise.prototype - -var TRUE = new ValuePromise(true) -var FALSE = new ValuePromise(false) -var NULL = new ValuePromise(null) -var UNDEFINED = new ValuePromise(undefined) -var ZERO = new ValuePromise(0) -var EMPTYSTRING = new ValuePromise('') - -Promise.resolve = function (value) { - if (value instanceof Promise) return value - - if (value === null) return NULL - if (value === undefined) return UNDEFINED - if (value === true) return TRUE - if (value === false) return FALSE - if (value === 0) return ZERO - if (value === '') return EMPTYSTRING - - if (typeof value === 'object' || typeof value === 'function') { - try { - var then = value.then - if (typeof then === 'function') { - return new Promise(then.bind(value)) - } - } catch (ex) { - return new Promise(function (resolve, reject) { - reject(ex) - }) - } - } - - return new ValuePromise(value) -} - -Promise.all = function (arr) { - var args = Array.prototype.slice.call(arr) - - return new Promise(function (resolve, reject) { - if (args.length === 0) return resolve([]) - var remaining = args.length - function res(i, val) { - try { - if (val && (typeof val === 'object' || typeof val === 'function')) { - var then = val.then - if (typeof then === 'function') { - then.call(val, function (val) { res(i, val) }, reject) - return - } - } - args[i] = val - if (--remaining === 0) { - resolve(args); - } - } catch (ex) { - reject(ex) - } - } - for (var i = 0; i < args.length; i++) { - res(i, args[i]) - } - }) -} - -Promise.reject = function (value) { - return new Promise(function (resolve, reject) { - reject(value); - }); -} - -Promise.race = function (values) { - return new Promise(function (resolve, reject) { - values.forEach(function(value){ - Promise.resolve(value).then(resolve, reject); - }) - }); -} - -/* Prototype Methods */ - -Promise.prototype['catch'] = function (onRejected) { - return this.then(null, onRejected); -} - - -/***/ }), - -/***/ "../../../../../node_modules/promise/lib/node-extensions.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -//This file contains then/promise specific extensions that are only useful for node.js interop - -var Promise = __webpack_require__("../../../../../node_modules/promise/lib/core.js") -var asap = __webpack_require__("../../../../../node_modules/asap/asap.js") - -module.exports = Promise - -/* Static Functions */ - -Promise.denodeify = function (fn, argumentCount) { - argumentCount = argumentCount || Infinity - return function () { - var self = this - var args = Array.prototype.slice.call(arguments) - return new Promise(function (resolve, reject) { - while (args.length && args.length > argumentCount) { - args.pop() - } - args.push(function (err, res) { - if (err) reject(err) - else resolve(res) - }) - var res = fn.apply(self, args) - if (res && (typeof res === 'object' || typeof res === 'function') && typeof res.then === 'function') { - resolve(res) - } - }) - } -} -Promise.nodeify = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments) - var callback = typeof args[args.length - 1] === 'function' ? args.pop() : null - var ctx = this - try { - return fn.apply(this, arguments).nodeify(callback, ctx) - } catch (ex) { - if (callback === null || typeof callback == 'undefined') { - return new Promise(function (resolve, reject) { reject(ex) }) - } else { - asap(function () { - callback.call(ctx, ex) - }) - } - } - } -} - -Promise.prototype.nodeify = function (callback, ctx) { - if (typeof callback != 'function') return this - - this.then(function (value) { - asap(function () { - callback.call(ctx, null, value) - }) - }, function (err) { - asap(function () { - callback.call(ctx, err) - }) - }) -} - - -/***/ }), - -/***/ "../../../../../node_modules/scriptjs/dist/script.js": -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * $script.js JS loader & dependency manager - * https://github.com/ded/script.js - * (c) Dustin Diaz 2014 | License MIT - */ - -(function (name, definition) { - if (typeof module != 'undefined' && module.exports) module.exports = definition() - else if (true) !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : - __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) - else this[name] = definition() -})('$script', function () { - var doc = document - , head = doc.getElementsByTagName('head')[0] - , s = 'string' - , f = false - , push = 'push' - , readyState = 'readyState' - , onreadystatechange = 'onreadystatechange' - , list = {} - , ids = {} - , delay = {} - , scripts = {} - , scriptpath - , urlArgs - - function every(ar, fn) { - for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f - return 1 - } - function each(ar, fn) { - every(ar, function (el) { - return !fn(el) - }) - } - - function $script(paths, idOrDone, optDone) { - paths = paths[push] ? paths : [paths] - var idOrDoneIsDone = idOrDone && idOrDone.call - , done = idOrDoneIsDone ? idOrDone : optDone - , id = idOrDoneIsDone ? paths.join('') : idOrDone - , queue = paths.length - function loopFn(item) { - return item.call ? item() : list[item] - } - function callback() { - if (!--queue) { - list[id] = 1 - done && done() - for (var dset in delay) { - every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = []) - } - } - } - setTimeout(function () { - each(paths, function loading(path, force) { - if (path === null) return callback() - - if (!force && !/^https?:\/\//.test(path) && scriptpath) { - path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path; - } - - if (scripts[path]) { - if (id) ids[id] = 1 - return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0) - } - - scripts[path] = 1 - if (id) ids[id] = 1 - create(path, callback) - }) - }, 0) - return $script - } - - function create(path, fn) { - var el = doc.createElement('script'), loaded - el.onload = el.onerror = el[onreadystatechange] = function () { - if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return; - el.onload = el[onreadystatechange] = null - loaded = 1 - scripts[path] = 2 - fn() - } - el.async = 1 - el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path; - head.insertBefore(el, head.lastChild) - } - - $script.get = create - - $script.order = function (scripts, id, done) { - (function callback(s) { - s = scripts.shift() - !scripts.length ? $script(s, id, done) : $script(s, callback) - }()) - } - - $script.path = function (p) { - scriptpath = p - } - $script.urlArgs = function (str) { - urlArgs = str; - } - $script.ready = function (deps, ready, req) { - deps = deps[push] ? deps : [deps] - var missing = []; - !each(deps, function (dep) { - list[dep] || missing[push](dep); - }) && every(deps, function (dep) {return list[dep]}) ? - ready() : !function (key) { - delay[key] = delay[key] || [] - delay[key][push](ready) - req && req(missing) - }(deps.join('|')) - return $script - } - - $script.done = function (idOrDone) { - $script([null], idOrDone) - } - - return $script -}); - - -/***/ }), - -/***/ "../../../../../node_modules/setimmediate/setImmediate.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { - "use strict"; - - if (global.setImmediate) { - return; - } - - var nextHandle = 1; // Spec says greater than zero - var tasksByHandle = {}; - var currentlyRunningATask = false; - var doc = global.document; - var registerImmediate; - - function setImmediate(callback) { - // Callback can either be a function or a string - if (typeof callback !== "function") { - callback = new Function("" + callback); - } - // Copy function arguments - var args = new Array(arguments.length - 1); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i + 1]; - } - // Store and register the task - var task = { callback: callback, args: args }; - tasksByHandle[nextHandle] = task; - registerImmediate(nextHandle); - return nextHandle++; - } - - function clearImmediate(handle) { - delete tasksByHandle[handle]; - } - - function run(task) { - var callback = task.callback; - var args = task.args; - switch (args.length) { - case 0: - callback(); - break; - case 1: - callback(args[0]); - break; - case 2: - callback(args[0], args[1]); - break; - case 3: - callback(args[0], args[1], args[2]); - break; - default: - callback.apply(undefined, args); - break; - } - } - - function runIfPresent(handle) { - // From the spec: "Wait until any invocations of this algorithm started before this one have completed." - // So if we're currently running a task, we'll need to delay this invocation. - if (currentlyRunningATask) { - // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a - // "too much recursion" error. - setTimeout(runIfPresent, 0, handle); - } else { - var task = tasksByHandle[handle]; - if (task) { - currentlyRunningATask = true; - try { - run(task); - } finally { - clearImmediate(handle); - currentlyRunningATask = false; - } - } - } - } - - function installNextTickImplementation() { - registerImmediate = function(handle) { - process.nextTick(function () { runIfPresent(handle); }); - }; - } - - function canUsePostMessage() { - // The test against `importScripts` prevents this implementation from being installed inside a web worker, - // where `global.postMessage` means something completely different and can't be used for this purpose. - if (global.postMessage && !global.importScripts) { - var postMessageIsAsynchronous = true; - var oldOnMessage = global.onmessage; - global.onmessage = function() { - postMessageIsAsynchronous = false; - }; - global.postMessage("", "*"); - global.onmessage = oldOnMessage; - return postMessageIsAsynchronous; - } - } - - function installPostMessageImplementation() { - // Installs an event handler on `global` for the `message` event: see - // * https://developer.mozilla.org/en/DOM/window.postMessage - // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages - - var messagePrefix = "setImmediate$" + Math.random() + "$"; - var onGlobalMessage = function(event) { - if (event.source === global && - typeof event.data === "string" && - event.data.indexOf(messagePrefix) === 0) { - runIfPresent(+event.data.slice(messagePrefix.length)); - } - }; - - if (global.addEventListener) { - global.addEventListener("message", onGlobalMessage, false); - } else { - global.attachEvent("onmessage", onGlobalMessage); - } - - registerImmediate = function(handle) { - global.postMessage(messagePrefix + handle, "*"); - }; - } - - function installMessageChannelImplementation() { - var channel = new MessageChannel(); - channel.port1.onmessage = function(event) { - var handle = event.data; - runIfPresent(handle); - }; - - registerImmediate = function(handle) { - channel.port2.postMessage(handle); - }; - } - - function installReadyStateChangeImplementation() { - var html = doc.documentElement; - registerImmediate = function(handle) { - // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted - // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. - var script = doc.createElement("script"); - script.onreadystatechange = function () { - runIfPresent(handle); - script.onreadystatechange = null; - html.removeChild(script); - script = null; - }; - html.appendChild(script); - }; - } - - function installSetTimeoutImplementation() { - registerImmediate = function(handle) { - setTimeout(runIfPresent, 0, handle); - }; - } - - // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. - var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); - attachTo = attachTo && attachTo.setTimeout ? attachTo : global; - - // Don't get fooled by e.g. browserify environments. - if ({}.toString.call(global.process) === "[object process]") { - // For Node.js before 0.9 - installNextTickImplementation(); - - } else if (canUsePostMessage()) { - // For non-IE10 modern browsers - installPostMessageImplementation(); - - } else if (global.MessageChannel) { - // For web workers, where supported - installMessageChannelImplementation(); - - } else if (doc && "onreadystatechange" in doc.createElement("script")) { - // For IE 6–8 - installReadyStateChangeImplementation(); - - } else { - // For older browsers - installSetTimeoutImplementation(); - } - - attachTo.setImmediate = setImmediate; - attachTo.clearImmediate = clearImmediate; -}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/webpack/buildin/global.js"), __webpack_require__("../../../../../node_modules/process/browser.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/style-loader/lib/addStyles.js": -/***/ (function(module, exports, __webpack_require__) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ - -var stylesInDom = {}; - -var memoize = function (fn) { - var memo; - - return function () { - if (typeof memo === "undefined") memo = fn.apply(this, arguments); - return memo; - }; -}; - -var isOldIE = memoize(function () { - // Test for IE <= 9 as proposed by Browserhacks - // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 - // Tests for existence of standard globals is to allow style-loader - // to operate correctly into non-standard environments - // @see https://github.com/webpack-contrib/style-loader/issues/177 - return window && document && document.all && !window.atob; -}); - -var getElement = (function (fn) { - var memo = {}; - - return function(selector) { - if (typeof memo[selector] === "undefined") { - memo[selector] = fn.call(this, selector); - } - - return memo[selector] - }; -})(function (target) { - return document.querySelector(target) -}); - -var singleton = null; -var singletonCounter = 0; -var stylesInsertedAtTop = []; - -var fixUrls = __webpack_require__("../../../../../node_modules/style-loader/lib/urls.js"); - -module.exports = function(list, options) { - if (typeof DEBUG !== "undefined" && DEBUG) { - if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); - } - - options = options || {}; - - options.attrs = typeof options.attrs === "object" ? options.attrs : {}; - - // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> - // tags it will allow on a page - if (!options.singleton) options.singleton = isOldIE(); - - // By default, add <style> tags to the <head> element - if (!options.insertInto) options.insertInto = "head"; - - // By default, add <style> tags to the bottom of the target - if (!options.insertAt) options.insertAt = "bottom"; - - var styles = listToStyles(list, options); - - addStylesToDom(styles, options); - - return function update (newList) { - var mayRemove = []; - - for (var i = 0; i < styles.length; i++) { - var item = styles[i]; - var domStyle = stylesInDom[item.id]; - - domStyle.refs--; - mayRemove.push(domStyle); - } - - if(newList) { - var newStyles = listToStyles(newList, options); - addStylesToDom(newStyles, options); - } - - for (var i = 0; i < mayRemove.length; i++) { - var domStyle = mayRemove[i]; - - if(domStyle.refs === 0) { - for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](); - - delete stylesInDom[domStyle.id]; - } - } - }; -}; - -function addStylesToDom (styles, options) { - for (var i = 0; i < styles.length; i++) { - var item = styles[i]; - var domStyle = stylesInDom[item.id]; - - if(domStyle) { - domStyle.refs++; - - for(var j = 0; j < domStyle.parts.length; j++) { - domStyle.parts[j](item.parts[j]); - } - - for(; j < item.parts.length; j++) { - domStyle.parts.push(addStyle(item.parts[j], options)); - } - } else { - var parts = []; - - for(var j = 0; j < item.parts.length; j++) { - parts.push(addStyle(item.parts[j], options)); - } - - stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts}; - } - } -} - -function listToStyles (list, options) { - var styles = []; - var newStyles = {}; - - for (var i = 0; i < list.length; i++) { - var item = list[i]; - var id = options.base ? item[0] + options.base : item[0]; - var css = item[1]; - var media = item[2]; - var sourceMap = item[3]; - var part = {css: css, media: media, sourceMap: sourceMap}; - - if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]}); - else newStyles[id].parts.push(part); - } - - return styles; -} - -function insertStyleElement (options, style) { - var target = getElement(options.insertInto) - - if (!target) { - throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); - } - - var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1]; - - if (options.insertAt === "top") { - if (!lastStyleElementInsertedAtTop) { - target.insertBefore(style, target.firstChild); - } else if (lastStyleElementInsertedAtTop.nextSibling) { - target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling); - } else { - target.appendChild(style); - } - stylesInsertedAtTop.push(style); - } else if (options.insertAt === "bottom") { - target.appendChild(style); - } else { - throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'."); - } -} - -function removeStyleElement (style) { - if (style.parentNode === null) return false; - style.parentNode.removeChild(style); - - var idx = stylesInsertedAtTop.indexOf(style); - if(idx >= 0) { - stylesInsertedAtTop.splice(idx, 1); - } -} - -function createStyleElement (options) { - var style = document.createElement("style"); - - options.attrs.type = "text/css"; - - addAttrs(style, options.attrs); - insertStyleElement(options, style); - - return style; -} - -function createLinkElement (options) { - var link = document.createElement("link"); - - options.attrs.type = "text/css"; - options.attrs.rel = "stylesheet"; - - addAttrs(link, options.attrs); - insertStyleElement(options, link); - - return link; -} - -function addAttrs (el, attrs) { - Object.keys(attrs).forEach(function (key) { - el.setAttribute(key, attrs[key]); - }); -} - -function addStyle (obj, options) { - var style, update, remove, result; - - // If a transform function was defined, run it on the css - if (options.transform && obj.css) { - result = options.transform(obj.css); - - if (result) { - // If transform returns a value, use that instead of the original css. - // This allows running runtime transformations on the css. - obj.css = result; - } else { - // If the transform function returns a falsy value, don't add this css. - // This allows conditional loading of css - return function() { - // noop - }; - } - } - - if (options.singleton) { - var styleIndex = singletonCounter++; - - style = singleton || (singleton = createStyleElement(options)); - - update = applyToSingletonTag.bind(null, style, styleIndex, false); - remove = applyToSingletonTag.bind(null, style, styleIndex, true); - - } else if ( - obj.sourceMap && - typeof URL === "function" && - typeof URL.createObjectURL === "function" && - typeof URL.revokeObjectURL === "function" && - typeof Blob === "function" && - typeof btoa === "function" - ) { - style = createLinkElement(options); - update = updateLink.bind(null, style, options); - remove = function () { - removeStyleElement(style); - - if(style.href) URL.revokeObjectURL(style.href); - }; - } else { - style = createStyleElement(options); - update = applyToTag.bind(null, style); - remove = function () { - removeStyleElement(style); - }; - } - - update(obj); - - return function updateStyle (newObj) { - if (newObj) { - if ( - newObj.css === obj.css && - newObj.media === obj.media && - newObj.sourceMap === obj.sourceMap - ) { - return; - } - - update(obj = newObj); - } else { - remove(); - } - }; -} - -var replaceText = (function () { - var textStore = []; - - return function (index, replacement) { - textStore[index] = replacement; - - return textStore.filter(Boolean).join('\n'); - }; -})(); - -function applyToSingletonTag (style, index, remove, obj) { - var css = remove ? "" : obj.css; - - if (style.styleSheet) { - style.styleSheet.cssText = replaceText(index, css); - } else { - var cssNode = document.createTextNode(css); - var childNodes = style.childNodes; - - if (childNodes[index]) style.removeChild(childNodes[index]); - - if (childNodes.length) { - style.insertBefore(cssNode, childNodes[index]); - } else { - style.appendChild(cssNode); - } - } -} - -function applyToTag (style, obj) { - var css = obj.css; - var media = obj.media; - - if(media) { - style.setAttribute("media", media) - } - - if(style.styleSheet) { - style.styleSheet.cssText = css; - } else { - while(style.firstChild) { - style.removeChild(style.firstChild); - } - - style.appendChild(document.createTextNode(css)); - } -} - -function updateLink (link, options, obj) { - var css = obj.css; - var sourceMap = obj.sourceMap; - - /* - If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled - and there is no publicPath defined then lets turn convertToAbsoluteUrls - on by default. Otherwise default to the convertToAbsoluteUrls option - directly - */ - var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap; - - if (options.convertToAbsoluteUrls || autoFixUrls) { - css = fixUrls(css); - } - - if (sourceMap) { - // http://stackoverflow.com/a/26603875 - css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"; - } - - var blob = new Blob([css], { type: "text/css" }); - - var oldSrc = link.href; - - link.href = URL.createObjectURL(blob); - - if(oldSrc) URL.revokeObjectURL(oldSrc); -} - - -/***/ }), - -/***/ "../../../../../node_modules/style-loader/lib/urls.js": -/***/ (function(module, exports) { - - -/** - * When source maps are enabled, `style-loader` uses a link element with a data-uri to - * embed the css on the page. This breaks all relative urls because now they are relative to a - * bundle instead of the current page. - * - * One solution is to only use full urls, but that may be impossible. - * - * Instead, this function "fixes" the relative urls to be absolute according to the current page location. - * - * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command. - * - */ - -module.exports = function (css) { - // get current location - var location = typeof window !== "undefined" && window.location; - - if (!location) { - throw new Error("fixUrls requires window.location"); - } - - // blank or null? - if (!css || typeof css !== "string") { - return css; - } - - var baseUrl = location.protocol + "//" + location.host; - var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/"); - - // convert each url(...) - /* - This regular expression is just a way to recursively match brackets within - a string. - - /url\s*\( = Match on the word "url" with any whitespace after it and then a parens - ( = Start a capturing group - (?: = Start a non-capturing group - [^)(] = Match anything that isn't a parentheses - | = OR - \( = Match a start parentheses - (?: = Start another non-capturing groups - [^)(]+ = Match anything that isn't a parentheses - | = OR - \( = Match a start parentheses - [^)(]* = Match anything that isn't a parentheses - \) = Match a end parentheses - ) = End Group - *\) = Match anything and then a close parens - ) = Close non-capturing group - * = Match anything - ) = Close capturing group - \) = Match a close parens - - /gi = Get all matches, not the first. Be case insensitive. - */ - var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) { - // strip quotes (if they exist) - var unquotedOrigUrl = origUrl - .trim() - .replace(/^"(.*)"$/, function(o, $1){ return $1; }) - .replace(/^'(.*)'$/, function(o, $1){ return $1; }); - - // already a full url? no change - if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) { - return fullMatch; - } - - // convert the url to a full url - var newUrl; - - if (unquotedOrigUrl.indexOf("//") === 0) { - //TODO: should we add protocol? - newUrl = unquotedOrigUrl; - } else if (unquotedOrigUrl.indexOf("/") === 0) { - // path should be relative to the base url - newUrl = baseUrl + unquotedOrigUrl; // already starts with '/' - } else { - // path should be relative to current directory - newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './' - } - - // send back the fixed url(...) - return "url(" + JSON.stringify(newUrl) + ")"; - }); - - // send back the fixed css - return fixedCss; -}; - - -/***/ }), - -/***/ "../../../../../node_modules/swiper/dist/js/swiper.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(jQuery) {/** - * Swiper 3.4.2 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2017, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: March 10, 2017 - */ -(function () { - 'use strict'; - var $; - - /*=========================== - Swiper - ===========================*/ - var Swiper = function (container, params) { - if (!(this instanceof Swiper)) return new Swiper(container, params); - - - var defaults = { - direction: 'horizontal', - touchEventsTarget: 'container', - initialSlide: 0, - speed: 300, - // autoplay - autoplay: false, - autoplayDisableOnInteraction: true, - autoplayStopOnLast: false, - // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). - iOSEdgeSwipeDetection: false, - iOSEdgeSwipeThreshold: 20, - // Free mode - freeMode: false, - freeModeMomentum: true, - freeModeMomentumRatio: 1, - freeModeMomentumBounce: true, - freeModeMomentumBounceRatio: 1, - freeModeMomentumVelocityRatio: 1, - freeModeSticky: false, - freeModeMinimumVelocity: 0.02, - // Autoheight - autoHeight: false, - // Set wrapper width - setWrapperSize: false, - // Virtual Translate - virtualTranslate: false, - // Effects - effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' - coverflow: { - rotate: 50, - stretch: 0, - depth: 100, - modifier: 1, - slideShadows : true - }, - flip: { - slideShadows : true, - limitRotation: true - }, - cube: { - slideShadows: true, - shadow: true, - shadowOffset: 20, - shadowScale: 0.94 - }, - fade: { - crossFade: false - }, - // Parallax - parallax: false, - // Zoom - zoom: false, - zoomMax: 3, - zoomMin: 1, - zoomToggle: true, - // Scrollbar - scrollbar: null, - scrollbarHide: true, - scrollbarDraggable: false, - scrollbarSnapOnRelease: false, - // Keyboard Mousewheel - keyboardControl: false, - mousewheelControl: false, - mousewheelReleaseOnEdges: false, - mousewheelInvert: false, - mousewheelForceToAxis: false, - mousewheelSensitivity: 1, - mousewheelEventsTarged: 'container', - // Hash Navigation - hashnav: false, - hashnavWatchState: false, - // History - history: false, - // Commong Nav State - replaceState: false, - // Breakpoints - breakpoints: undefined, - // Slides grid - spaceBetween: 0, - slidesPerView: 1, - slidesPerColumn: 1, - slidesPerColumnFill: 'column', - slidesPerGroup: 1, - centeredSlides: false, - slidesOffsetBefore: 0, // in px - slidesOffsetAfter: 0, // in px - // Round length - roundLengths: false, - // Touches - touchRatio: 1, - touchAngle: 45, - simulateTouch: true, - shortSwipes: true, - longSwipes: true, - longSwipesRatio: 0.5, - longSwipesMs: 300, - followFinger: true, - onlyExternal: false, - threshold: 0, - touchMoveStopPropagation: true, - touchReleaseOnEdges: false, - // Unique Navigation Elements - uniqueNavElements: true, - // Pagination - pagination: null, - paginationElement: 'span', - paginationClickable: false, - paginationHide: false, - paginationBulletRender: null, - paginationProgressRender: null, - paginationFractionRender: null, - paginationCustomRender: null, - paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom' - // Resistance - resistance: true, - resistanceRatio: 0.85, - // Next/prev buttons - nextButton: null, - prevButton: null, - // Progress - watchSlidesProgress: false, - watchSlidesVisibility: false, - // Cursor - grabCursor: false, - // Clicks - preventClicks: true, - preventClicksPropagation: true, - slideToClickedSlide: false, - // Lazy Loading - lazyLoading: false, - lazyLoadingInPrevNext: false, - lazyLoadingInPrevNextAmount: 1, - lazyLoadingOnTransitionStart: false, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - // Control - control: undefined, - controlInverse: false, - controlBy: 'slide', //or 'container' - normalizeSlideIndex: true, - // Swiping/no swiping - allowSwipeToPrev: true, - allowSwipeToNext: true, - swipeHandler: null, //'.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-container-', // NEW - slideClass: 'swiper-slide', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - bulletClass: 'swiper-pagination-bullet', - bulletActiveClass: 'swiper-pagination-bullet-active', - buttonDisabledClass: 'swiper-button-disabled', - paginationCurrentClass: 'swiper-pagination-current', - paginationTotalClass: 'swiper-pagination-total', - paginationHiddenClass: 'swiper-pagination-hidden', - paginationProgressbarClass: 'swiper-pagination-progressbar', - paginationClickableClass: 'swiper-pagination-clickable', // NEW - paginationModifierClass: 'swiper-pagination-', // NEW - lazyLoadingClass: 'swiper-lazy', - lazyStatusLoadingClass: 'swiper-lazy-loading', - lazyStatusLoadedClass: 'swiper-lazy-loaded', - lazyPreloaderClass: 'swiper-lazy-preloader', - notificationClass: 'swiper-notification', - preloaderClass: 'preloader', - zoomContainerClass: 'swiper-zoom-container', - - // Observer - observer: false, - observeParents: false, - // Accessibility - a11y: false, - prevSlideMessage: 'Previous slide', - nextSlideMessage: 'Next slide', - firstSlideMessage: 'This is the first slide', - lastSlideMessage: 'This is the last slide', - paginationBulletMessage: 'Go to slide {{index}}', - // Callbacks - runCallbacksOnInit: true - /* - Callbacks: - onInit: function (swiper) - onDestroy: function (swiper) - onBeforeResize: function (swiper) - onAfterResize: function (swiper) - onClick: function (swiper, e) - onTap: function (swiper, e) - onDoubleTap: function (swiper, e) - onSliderMove: function (swiper, e) - onSlideChangeStart: function (swiper) - onSlideChangeEnd: function (swiper) - onTransitionStart: function (swiper) - onTransitionEnd: function (swiper) - onImagesReady: function (swiper) - onProgress: function (swiper, progress) - onTouchStart: function (swiper, e) - onTouchMove: function (swiper, e) - onTouchMoveOpposite: function (swiper, e) - onTouchEnd: function (swiper, e) - onReachBeginning: function (swiper) - onReachEnd: function (swiper) - onSetTransition: function (swiper, duration) - onSetTranslate: function (swiper, translate) - onAutoplayStart: function (swiper) - onAutoplayStop: function (swiper), - onLazyImageLoad: function (swiper, slide, image) - onLazyImageReady: function (swiper, slide, image) - onKeyPress: function (swiper, keyCode) - */ - - }; - var initialVirtualTranslate = params && params.virtualTranslate; - - params = params || {}; - var originalParams = {}; - for (var param in params) { - if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) { - originalParams[param] = {}; - for (var deepParam in params[param]) { - originalParams[param][deepParam] = params[param][deepParam]; - } - } - else { - originalParams[param] = params[param]; - } - } - for (var def in defaults) { - if (typeof params[def] === 'undefined') { - params[def] = defaults[def]; - } - else if (typeof params[def] === 'object') { - for (var deepDef in defaults[def]) { - if (typeof params[def][deepDef] === 'undefined') { - params[def][deepDef] = defaults[def][deepDef]; - } - } - } - } - - // Swiper - var s = this; - - // Params - s.params = params; - s.originalParams = originalParams; - - // Classname - s.classNames = []; - /*========================= - Dom Library and plugins - ===========================*/ - if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){ - $ = Dom7; - } - if (typeof $ === 'undefined') { - if (typeof Dom7 === 'undefined') { - $ = window.Dom7 || window.Zepto || window.jQuery; - } - else { - $ = Dom7; - } - if (!$) return; - } - // Export it to Swiper instance - s.$ = $; - - /*========================= - Breakpoints - ===========================*/ - s.currentBreakpoint = undefined; - s.getActiveBreakpoint = function () { - //Get breakpoint for window width - if (!s.params.breakpoints) return false; - var breakpoint = false; - var points = [], point; - for ( point in s.params.breakpoints ) { - if (s.params.breakpoints.hasOwnProperty(point)) { - points.push(point); - } - } - points.sort(function (a, b) { - return parseInt(a, 10) > parseInt(b, 10); - }); - for (var i = 0; i < points.length; i++) { - point = points[i]; - if (point >= window.innerWidth && !breakpoint) { - breakpoint = point; - } - } - return breakpoint || 'max'; - }; - s.setBreakpoint = function () { - //Set breakpoint for window width and update parameters - var breakpoint = s.getActiveBreakpoint(); - if (breakpoint && s.currentBreakpoint !== breakpoint) { - var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams; - var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView); - for ( var param in breakPointsParams ) { - s.params[param] = breakPointsParams[param]; - } - s.currentBreakpoint = breakpoint; - if(needsReLoop && s.destroyLoop) { - s.reLoop(true); - } - } - }; - // Set breakpoint on load - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - /*========================= - Preparation - Define Container, Wrapper and Pagination - ===========================*/ - s.container = $(container); - if (s.container.length === 0) return; - if (s.container.length > 1) { - var swipers = []; - s.container.each(function () { - var container = this; - swipers.push(new Swiper(this, params)); - }); - return swipers; - } - - // Save instance in container HTML Element and in data - s.container[0].swiper = s; - s.container.data('swiper', s); - - s.classNames.push(s.params.containerModifierClass + s.params.direction); - - if (s.params.freeMode) { - s.classNames.push(s.params.containerModifierClass + 'free-mode'); - } - if (!s.support.flexbox) { - s.classNames.push(s.params.containerModifierClass + 'no-flexbox'); - s.params.slidesPerColumn = 1; - } - if (s.params.autoHeight) { - s.classNames.push(s.params.containerModifierClass + 'autoheight'); - } - // Enable slides progress when required - if (s.params.parallax || s.params.watchSlidesVisibility) { - s.params.watchSlidesProgress = true; - } - // Max resistance when touchReleaseOnEdges - if (s.params.touchReleaseOnEdges) { - s.params.resistanceRatio = 0; - } - // Coverflow / 3D - if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) { - if (s.support.transforms3d) { - s.params.watchSlidesProgress = true; - s.classNames.push(s.params.containerModifierClass + '3d'); - } - else { - s.params.effect = 'slide'; - } - } - if (s.params.effect !== 'slide') { - s.classNames.push(s.params.containerModifierClass + s.params.effect); - } - if (s.params.effect === 'cube') { - s.params.resistanceRatio = 0; - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.centeredSlides = false; - s.params.spaceBetween = 0; - s.params.virtualTranslate = true; - } - if (s.params.effect === 'fade' || s.params.effect === 'flip') { - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.watchSlidesProgress = true; - s.params.spaceBetween = 0; - if (typeof initialVirtualTranslate === 'undefined') { - s.params.virtualTranslate = true; - } - } - - // Grab Cursor - if (s.params.grabCursor && s.support.touch) { - s.params.grabCursor = false; - } - - // Wrapper - s.wrapper = s.container.children('.' + s.params.wrapperClass); - - // Pagination - if (s.params.pagination) { - s.paginationContainer = $(s.params.pagination); - if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) { - s.paginationContainer = s.container.find(s.params.pagination); - } - - if (s.params.paginationType === 'bullets' && s.params.paginationClickable) { - s.paginationContainer.addClass(s.params.paginationModifierClass + 'clickable'); - } - else { - s.params.paginationClickable = false; - } - s.paginationContainer.addClass(s.params.paginationModifierClass + s.params.paginationType); - } - // Next/Prev Buttons - if (s.params.nextButton || s.params.prevButton) { - if (s.params.nextButton) { - s.nextButton = $(s.params.nextButton); - if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) { - s.nextButton = s.container.find(s.params.nextButton); - } - } - if (s.params.prevButton) { - s.prevButton = $(s.params.prevButton); - if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) { - s.prevButton = s.container.find(s.params.prevButton); - } - } - } - - // Is Horizontal - s.isHorizontal = function () { - return s.params.direction === 'horizontal'; - }; - // s.isH = isH; - - // RTL - s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl'); - if (s.rtl) { - s.classNames.push(s.params.containerModifierClass + 'rtl'); - } - - // Wrong RTL support - if (s.rtl) { - s.wrongRTL = s.wrapper.css('display') === '-webkit-box'; - } - - // Columns - if (s.params.slidesPerColumn > 1) { - s.classNames.push(s.params.containerModifierClass + 'multirow'); - } - - // Check for Android - if (s.device.android) { - s.classNames.push(s.params.containerModifierClass + 'android'); - } - - // Add classes - s.container.addClass(s.classNames.join(' ')); - - // Translate - s.translate = 0; - - // Progress - s.progress = 0; - - // Velocity - s.velocity = 0; - - /*========================= - Locks, unlocks - ===========================*/ - s.lockSwipeToNext = function () { - s.params.allowSwipeToNext = false; - if (s.params.allowSwipeToPrev === false && s.params.grabCursor) { - s.unsetGrabCursor(); - } - }; - s.lockSwipeToPrev = function () { - s.params.allowSwipeToPrev = false; - if (s.params.allowSwipeToNext === false && s.params.grabCursor) { - s.unsetGrabCursor(); - } - }; - s.lockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false; - if (s.params.grabCursor) s.unsetGrabCursor(); - }; - s.unlockSwipeToNext = function () { - s.params.allowSwipeToNext = true; - if (s.params.allowSwipeToPrev === true && s.params.grabCursor) { - s.setGrabCursor(); - } - }; - s.unlockSwipeToPrev = function () { - s.params.allowSwipeToPrev = true; - if (s.params.allowSwipeToNext === true && s.params.grabCursor) { - s.setGrabCursor(); - } - }; - s.unlockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true; - if (s.params.grabCursor) s.setGrabCursor(); - }; - - /*========================= - Round helper - ===========================*/ - function round(a) { - return Math.floor(a); - } - /*========================= - Set grab cursor - ===========================*/ - s.setGrabCursor = function(moving) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - s.container[0].style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - s.container[0].style.cursor = moving ? 'grabbing': 'grab'; - }; - s.unsetGrabCursor = function () { - s.container[0].style.cursor = ''; - }; - if (s.params.grabCursor) { - s.setGrabCursor(); - } - /*========================= - Update on Images Ready - ===========================*/ - s.imagesToLoad = []; - s.imagesLoaded = 0; - - s.loadImage = function (imgElement, src, srcset, sizes, checkForComplete, callback) { - var image; - function onReady () { - if (callback) callback(); - } - if (!imgElement.complete || !checkForComplete) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - if (sizes) { - image.sizes = sizes; - } - if (srcset) { - image.srcset = srcset; - } - if (src) { - image.src = src; - } - } else { - onReady(); - } - - } else {//image already loaded... - onReady(); - } - }; - s.preloadImages = function () { - s.imagesToLoad = s.container.find('img'); - function _onReady() { - if (typeof s === 'undefined' || s === null || !s) return; - if (s.imagesLoaded !== undefined) s.imagesLoaded++; - if (s.imagesLoaded === s.imagesToLoad.length) { - if (s.params.updateOnImagesReady) s.update(); - s.emit('onImagesReady', s); - } - } - for (var i = 0; i < s.imagesToLoad.length; i++) { - s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), s.imagesToLoad[i].sizes || s.imagesToLoad[i].getAttribute('sizes'), true, _onReady); - } - }; - - /*========================= - Autoplay - ===========================*/ - s.autoplayTimeoutId = undefined; - s.autoplaying = false; - s.autoplayPaused = false; - function autoplay() { - var autoplayDelay = s.params.autoplay; - var activeSlide = s.slides.eq(s.activeIndex); - if (activeSlide.attr('data-swiper-autoplay')) { - autoplayDelay = activeSlide.attr('data-swiper-autoplay') || s.params.autoplay; - } - s.autoplayTimeoutId = setTimeout(function () { - if (s.params.loop) { - s.fixLoop(); - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!s.isEnd) { - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!params.autoplayStopOnLast) { - s._slideTo(0); - s.emit('onAutoplay', s); - } - else { - s.stopAutoplay(); - } - } - } - }, autoplayDelay); - } - s.startAutoplay = function () { - if (typeof s.autoplayTimeoutId !== 'undefined') return false; - if (!s.params.autoplay) return false; - if (s.autoplaying) return false; - s.autoplaying = true; - s.emit('onAutoplayStart', s); - autoplay(); - }; - s.stopAutoplay = function (internal) { - if (!s.autoplayTimeoutId) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplaying = false; - s.autoplayTimeoutId = undefined; - s.emit('onAutoplayStop', s); - }; - s.pauseAutoplay = function (speed) { - if (s.autoplayPaused) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplayPaused = true; - if (speed === 0) { - s.autoplayPaused = false; - autoplay(); - } - else { - s.wrapper.transitionEnd(function () { - if (!s) return; - s.autoplayPaused = false; - if (!s.autoplaying) { - s.stopAutoplay(); - } - else { - autoplay(); - } - }); - } - }; - /*========================= - Min/Max Translate - ===========================*/ - s.minTranslate = function () { - return (-s.snapGrid[0]); - }; - s.maxTranslate = function () { - return (-s.snapGrid[s.snapGrid.length - 1]); - }; - /*========================= - Slider/slides sizes - ===========================*/ - s.updateAutoHeight = function () { - var activeSlides = []; - var newHeight = 0; - var i; - - // Find slides currently in view - if(s.params.slidesPerView !== 'auto' && s.params.slidesPerView > 1) { - for (i = 0; i < Math.ceil(s.params.slidesPerView); i++) { - var index = s.activeIndex + i; - if(index > s.slides.length) break; - activeSlides.push(s.slides.eq(index)[0]); - } - } else { - activeSlides.push(s.slides.eq(s.activeIndex)[0]); - } - - // Find new height from heighest slide in view - for (i = 0; i < activeSlides.length; i++) { - if (typeof activeSlides[i] !== 'undefined') { - var height = activeSlides[i].offsetHeight; - newHeight = height > newHeight ? height : newHeight; - } - } - - // Update Height - if (newHeight) s.wrapper.css('height', newHeight + 'px'); - }; - s.updateContainerSize = function () { - var width, height; - if (typeof s.params.width !== 'undefined') { - width = s.params.width; - } - else { - width = s.container[0].clientWidth; - } - if (typeof s.params.height !== 'undefined') { - height = s.params.height; - } - else { - height = s.container[0].clientHeight; - } - if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) { - return; - } - - //Subtract paddings - width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10); - height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10); - - // Store values - s.width = width; - s.height = height; - s.size = s.isHorizontal() ? s.width : s.height; - }; - - s.updateSlidesSize = function () { - s.slides = s.wrapper.children('.' + s.params.slideClass); - s.snapGrid = []; - s.slidesGrid = []; - s.slidesSizesGrid = []; - - var spaceBetween = s.params.spaceBetween, - slidePosition = -s.params.slidesOffsetBefore, - i, - prevSlideSize = 0, - index = 0; - if (typeof s.size === 'undefined') return; - if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { - spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size; - } - - s.virtualSize = -spaceBetween; - // reset margins - if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''}); - else s.slides.css({marginRight: '', marginBottom: ''}); - - var slidesNumberEvenToRows; - if (s.params.slidesPerColumn > 1) { - if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) { - slidesNumberEvenToRows = s.slides.length; - } - else { - slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn; - } - if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') { - slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn); - } - } - - // Calc slides - var slideSize; - var slidesPerColumn = s.params.slidesPerColumn; - var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; - var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length); - for (i = 0; i < s.slides.length; i++) { - slideSize = 0; - var slide = s.slides.eq(i); - if (s.params.slidesPerColumn > 1) { - // Set slides order - var newSlideOrderIndex; - var column, row; - if (s.params.slidesPerColumnFill === 'column') { - column = Math.floor(i / slidesPerColumn); - row = i - column * slidesPerColumn; - if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) { - if (++row >= slidesPerColumn) { - row = 0; - column++; - } - } - newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; - slide - .css({ - '-webkit-box-ordinal-group': newSlideOrderIndex, - '-moz-box-ordinal-group': newSlideOrderIndex, - '-ms-flex-order': newSlideOrderIndex, - '-webkit-order': newSlideOrderIndex, - 'order': newSlideOrderIndex - }); - } - else { - row = Math.floor(i / slidesPerRow); - column = i - row * slidesPerRow; - } - slide - .css( - 'margin-' + (s.isHorizontal() ? 'top' : 'left'), - (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px') - ) - .attr('data-swiper-column', column) - .attr('data-swiper-row', row); - - } - if (slide.css('display') === 'none') continue; - if (s.params.slidesPerView === 'auto') { - slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); - if (s.params.roundLengths) slideSize = round(slideSize); - } - else { - slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView; - if (s.params.roundLengths) slideSize = round(slideSize); - - if (s.isHorizontal()) { - s.slides[i].style.width = slideSize + 'px'; - } - else { - s.slides[i].style.height = slideSize + 'px'; - } - } - s.slides[i].swiperSlideSize = slideSize; - s.slidesSizesGrid.push(slideSize); - - - if (s.params.centeredSlides) { - slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; - if(prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - } - else { - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - slidePosition = slidePosition + slideSize + spaceBetween; - } - - s.virtualSize += slideSize + spaceBetween; - - prevSlideSize = slideSize; - - index ++; - } - s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter; - var newSlidesGrid; - - if ( - s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) { - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - } - if (!s.support.flexbox || s.params.setWrapperSize) { - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - } - - if (s.params.slidesPerColumn > 1) { - s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows; - s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween; - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - if (s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]); - } - s.snapGrid = newSlidesGrid; - } - } - - // Remove last grid elements depending on width - if (!s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] <= s.virtualSize - s.size) { - newSlidesGrid.push(s.snapGrid[i]); - } - } - s.snapGrid = newSlidesGrid; - if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) { - s.snapGrid.push(s.virtualSize - s.size); - } - } - if (s.snapGrid.length === 0) s.snapGrid = [0]; - - if (s.params.spaceBetween !== 0) { - if (s.isHorizontal()) { - if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'}); - else s.slides.css({marginRight: spaceBetween + 'px'}); - } - else s.slides.css({marginBottom: spaceBetween + 'px'}); - } - if (s.params.watchSlidesProgress) { - s.updateSlidesOffset(); - } - }; - s.updateSlidesOffset = function () { - for (var i = 0; i < s.slides.length; i++) { - s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop; - } - }; - - /*========================= - Dynamic Slides Per View - ===========================*/ - s.currentSlidesPerView = function () { - var spv = 1, i, j; - if (s.params.centeredSlides) { - var size = s.slides[s.activeIndex].swiperSlideSize; - var breakLoop; - for (i = s.activeIndex + 1; i < s.slides.length; i++) { - if (s.slides[i] && !breakLoop) { - size += s.slides[i].swiperSlideSize; - spv ++; - if (size > s.size) breakLoop = true; - } - } - for (j = s.activeIndex - 1; j >= 0; j--) { - if (s.slides[j] && !breakLoop) { - size += s.slides[j].swiperSlideSize; - spv ++; - if (size > s.size) breakLoop = true; - } - } - } - else { - for (i = s.activeIndex + 1; i < s.slides.length; i++) { - if (s.slidesGrid[i] - s.slidesGrid[s.activeIndex] < s.size) { - spv++; - } - } - } - return spv; - }; - /*========================= - Slider/slides progress - ===========================*/ - s.updateSlidesProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - if (s.slides.length === 0) return; - if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset(); - - var offsetCenter = -translate; - if (s.rtl) offsetCenter = translate; - - // Visible Slides - s.slides.removeClass(s.params.slideVisibleClass); - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides[i]; - var slideProgress = (offsetCenter + (s.params.centeredSlides ? s.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween); - if (s.params.watchSlidesVisibility) { - var slideBefore = -(offsetCenter - slide.swiperSlideOffset); - var slideAfter = slideBefore + s.slidesSizesGrid[i]; - var isVisible = - (slideBefore >= 0 && slideBefore < s.size) || - (slideAfter > 0 && slideAfter <= s.size) || - (slideBefore <= 0 && slideAfter >= s.size); - if (isVisible) { - s.slides.eq(i).addClass(s.params.slideVisibleClass); - } - } - slide.progress = s.rtl ? -slideProgress : slideProgress; - } - }; - s.updateProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - var translatesDiff = s.maxTranslate() - s.minTranslate(); - var wasBeginning = s.isBeginning; - var wasEnd = s.isEnd; - if (translatesDiff === 0) { - s.progress = 0; - s.isBeginning = s.isEnd = true; - } - else { - s.progress = (translate - s.minTranslate()) / (translatesDiff); - s.isBeginning = s.progress <= 0; - s.isEnd = s.progress >= 1; - } - if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s); - if (s.isEnd && !wasEnd) s.emit('onReachEnd', s); - - if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate); - s.emit('onProgress', s, s.progress); - }; - s.updateActiveIndex = function () { - var translate = s.rtl ? s.translate : -s.translate; - var newActiveIndex, i, snapIndex; - for (i = 0; i < s.slidesGrid.length; i ++) { - if (typeof s.slidesGrid[i + 1] !== 'undefined') { - if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) { - newActiveIndex = i; - } - else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) { - newActiveIndex = i + 1; - } - } - else { - if (translate >= s.slidesGrid[i]) { - newActiveIndex = i; - } - } - } - // Normalize slideIndex - if(s.params.normalizeSlideIndex){ - if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0; - } - // for (i = 0; i < s.slidesGrid.length; i++) { - // if (- translate >= s.slidesGrid[i]) { - // newActiveIndex = i; - // } - // } - snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup); - if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1; - - if (newActiveIndex === s.activeIndex) { - return; - } - s.snapIndex = snapIndex; - s.previousIndex = s.activeIndex; - s.activeIndex = newActiveIndex; - s.updateClasses(); - s.updateRealIndex(); - }; - s.updateRealIndex = function(){ - s.realIndex = parseInt(s.slides.eq(s.activeIndex).attr('data-swiper-slide-index') || s.activeIndex, 10); - }; - - /*========================= - Classes - ===========================*/ - s.updateClasses = function () { - s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass + ' ' + s.params.slideDuplicateActiveClass + ' ' + s.params.slideDuplicateNextClass + ' ' + s.params.slideDuplicatePrevClass); - var activeSlide = s.slides.eq(s.activeIndex); - // Active classes - activeSlide.addClass(s.params.slideActiveClass); - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(s.params.slideDuplicateClass)) { - s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index="' + s.realIndex + '"]').addClass(s.params.slideDuplicateActiveClass); - } - else { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + s.realIndex + '"]').addClass(s.params.slideDuplicateActiveClass); - } - } - // Next Slide - var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass); - if (s.params.loop && nextSlide.length === 0) { - nextSlide = s.slides.eq(0); - nextSlide.addClass(s.params.slideNextClass); - } - // Prev Slide - var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass); - if (s.params.loop && prevSlide.length === 0) { - prevSlide = s.slides.eq(-1); - prevSlide.addClass(s.params.slidePrevClass); - } - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(s.params.slideDuplicateClass)) { - s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index="' + nextSlide.attr('data-swiper-slide-index') + '"]').addClass(s.params.slideDuplicateNextClass); - } - else { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + nextSlide.attr('data-swiper-slide-index') + '"]').addClass(s.params.slideDuplicateNextClass); - } - if (prevSlide.hasClass(s.params.slideDuplicateClass)) { - s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index="' + prevSlide.attr('data-swiper-slide-index') + '"]').addClass(s.params.slideDuplicatePrevClass); - } - else { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + prevSlide.attr('data-swiper-slide-index') + '"]').addClass(s.params.slideDuplicatePrevClass); - } - } - - // Pagination - if (s.paginationContainer && s.paginationContainer.length > 0) { - // Current/Total - var current, - total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - if (s.params.loop) { - current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup); - if (current > s.slides.length - 1 - s.loopedSlides * 2) { - current = current - (s.slides.length - s.loopedSlides * 2); - } - if (current > total - 1) current = current - total; - if (current < 0 && s.params.paginationType !== 'bullets') current = total + current; - } - else { - if (typeof s.snapIndex !== 'undefined') { - current = s.snapIndex; - } - else { - current = s.activeIndex || 0; - } - } - // Types - if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) { - s.bullets.removeClass(s.params.bulletActiveClass); - if (s.paginationContainer.length > 1) { - s.bullets.each(function () { - if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass); - }); - } - else { - s.bullets.eq(current).addClass(s.params.bulletActiveClass); - } - } - if (s.params.paginationType === 'fraction') { - s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1); - s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total); - } - if (s.params.paginationType === 'progress') { - var scale = (current + 1) / total, - scaleX = scale, - scaleY = 1; - if (!s.isHorizontal()) { - scaleY = scale; - scaleX = 1; - } - s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed); - } - if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) { - s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total)); - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - - // Next/active buttons - if (!s.params.loop) { - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - if (s.isBeginning) { - s.prevButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton); - } - else { - s.prevButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton); - } - } - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - if (s.isEnd) { - s.nextButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton); - } - else { - s.nextButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton); - } - } - } - }; - - /*========================= - Pagination - ===========================*/ - s.updatePagination = function () { - if (!s.params.pagination) return; - if (s.paginationContainer && s.paginationContainer.length > 0) { - var paginationHTML = ''; - if (s.params.paginationType === 'bullets') { - var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - for (var i = 0; i < numberOfBullets; i++) { - if (s.params.paginationBulletRender) { - paginationHTML += s.params.paginationBulletRender(s, i, s.params.bulletClass); - } - else { - paginationHTML += '<' + s.params.paginationElement+' class="' + s.params.bulletClass + '"></' + s.params.paginationElement + '>'; - } - } - s.paginationContainer.html(paginationHTML); - s.bullets = s.paginationContainer.find('.' + s.params.bulletClass); - if (s.params.paginationClickable && s.params.a11y && s.a11y) { - s.a11y.initPagination(); - } - } - if (s.params.paginationType === 'fraction') { - if (s.params.paginationFractionRender) { - paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass); - } - else { - paginationHTML = - '<span class="' + s.params.paginationCurrentClass + '"></span>' + - ' / ' + - '<span class="' + s.params.paginationTotalClass+'"></span>'; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType === 'progress') { - if (s.params.paginationProgressRender) { - paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass); - } - else { - paginationHTML = '<span class="' + s.params.paginationProgressbarClass + '"></span>'; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType !== 'custom') { - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - }; - /*========================= - Common update method - ===========================*/ - s.update = function (updateTranslate) { - if (!s) return; - s.updateContainerSize(); - s.updateSlidesSize(); - s.updateProgress(); - s.updatePagination(); - s.updateClasses(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - var newTranslate; - function forceSetTranslate() { - var translate = s.rtl ? -s.translate : s.translate; - newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - } - if (updateTranslate) { - var translated; - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - if (s.params.freeMode) { - forceSetTranslate(); - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - translated = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - translated = s.slideTo(s.activeIndex, 0, false, true); - } - if (!translated) { - forceSetTranslate(); - } - } - } - else if (s.params.autoHeight) { - s.updateAutoHeight(); - } - }; - - /*========================= - Resize Handler - ===========================*/ - s.onResize = function (forceUpdatePagination) { - if (s.params.onBeforeResize) s.params.onBeforeResize(s); - //Breakpoints - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - // Disable locks on resize - var allowSwipeToPrev = s.params.allowSwipeToPrev; - var allowSwipeToNext = s.params.allowSwipeToNext; - s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true; - - s.updateContainerSize(); - s.updateSlidesSize(); - if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - var slideChangedBySlideTo = false; - if (s.params.freeMode) { - var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - s.updateClasses(); - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true); - } - } - if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) { - s.lazy.load(); - } - // Return locks after resize - s.params.allowSwipeToPrev = allowSwipeToPrev; - s.params.allowSwipeToNext = allowSwipeToNext; - if (s.params.onAfterResize) s.params.onAfterResize(s); - }; - - /*========================= - Events - ===========================*/ - - //Define Touch Events - s.touchEventsDesktop = {start: 'mousedown', move: 'mousemove', end: 'mouseup'}; - if (window.navigator.pointerEnabled) s.touchEventsDesktop = {start: 'pointerdown', move: 'pointermove', end: 'pointerup'}; - else if (window.navigator.msPointerEnabled) s.touchEventsDesktop = {start: 'MSPointerDown', move: 'MSPointerMove', end: 'MSPointerUp'}; - s.touchEvents = { - start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : s.touchEventsDesktop.start, - move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : s.touchEventsDesktop.move, - end : s.support.touch || !s.params.simulateTouch ? 'touchend' : s.touchEventsDesktop.end - }; - - - // WP8 Touch Events Fix - if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) { - (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction); - } - - // Attach/detach events - s.initEvents = function (detach) { - var actionDom = detach ? 'off' : 'on'; - var action = detach ? 'removeEventListener' : 'addEventListener'; - var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0]; - var target = s.support.touch ? touchEventsTarget : document; - - var moveCapture = s.params.nested ? true : false; - - //Touch Events - if (s.browser.ie) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - target[action](s.touchEvents.move, s.onTouchMove, moveCapture); - target[action](s.touchEvents.end, s.onTouchEnd, false); - } - else { - if (s.support.touch) { - var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false; - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, passiveListener); - touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture); - touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, passiveListener); - } - if ((params.simulateTouch && !s.device.ios && !s.device.android) || (params.simulateTouch && !s.support.touch && s.device.ios)) { - touchEventsTarget[action]('mousedown', s.onTouchStart, false); - document[action]('mousemove', s.onTouchMove, moveCapture); - document[action]('mouseup', s.onTouchEnd, false); - } - } - window[action]('resize', s.onResize); - - // Next, Prev, Index - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.nextButton[actionDom]('click', s.onClickNext); - if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.prevButton[actionDom]('click', s.onClickPrev); - if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.pagination && s.params.paginationClickable) { - s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex); - if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey); - } - - // Prevent Links Clicks - if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true); - }; - s.attachEvents = function () { - s.initEvents(); - }; - s.detachEvents = function () { - s.initEvents(true); - }; - - /*========================= - Handle Clicks - ===========================*/ - // Prevent Clicks - s.allowClick = true; - s.preventClicks = function (e) { - if (!s.allowClick) { - if (s.params.preventClicks) e.preventDefault(); - if (s.params.preventClicksPropagation && s.animating) { - e.stopPropagation(); - e.stopImmediatePropagation(); - } - } - }; - // Clicks - s.onClickNext = function (e) { - e.preventDefault(); - if (s.isEnd && !s.params.loop) return; - s.slideNext(); - }; - s.onClickPrev = function (e) { - e.preventDefault(); - if (s.isBeginning && !s.params.loop) return; - s.slidePrev(); - }; - s.onClickIndex = function (e) { - e.preventDefault(); - var index = $(this).index() * s.params.slidesPerGroup; - if (s.params.loop) index = index + s.loopedSlides; - s.slideTo(index); - }; - - /*========================= - Handle Touches - ===========================*/ - function findElementInEvent(e, selector) { - var el = $(e.target); - if (!el.is(selector)) { - if (typeof selector === 'string') { - el = el.parents(selector); - } - else if (selector.nodeType) { - var found; - el.parents().each(function (index, _el) { - if (_el === selector) found = selector; - }); - if (!found) return undefined; - else return selector; - } - } - if (el.length === 0) { - return undefined; - } - return el[0]; - } - s.updateClickedSlide = function (e) { - var slide = findElementInEvent(e, '.' + s.params.slideClass); - var slideFound = false; - if (slide) { - for (var i = 0; i < s.slides.length; i++) { - if (s.slides[i] === slide) slideFound = true; - } - } - - if (slide && slideFound) { - s.clickedSlide = slide; - s.clickedIndex = $(slide).index(); - } - else { - s.clickedSlide = undefined; - s.clickedIndex = undefined; - return; - } - if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) { - var slideToIndex = s.clickedIndex, - realIndex, - duplicatedSlides, - slidesPerView = s.params.slidesPerView === 'auto' ? s.currentSlidesPerView() : s.params.slidesPerView; - if (s.params.loop) { - if (s.animating) return; - realIndex = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10); - if (s.params.centeredSlides) { - if ((slideToIndex < s.loopedSlides - slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + slidesPerView/2)) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - else { - if (slideToIndex > s.slides.length - slidesPerView) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - } - else { - s.slideTo(slideToIndex); - } - } - }; - - var isTouched, - isMoved, - allowTouchCallbacks, - touchStartTime, - isScrolling, - currentTranslate, - startTranslate, - allowThresholdMove, - // Form elements to match - formElements = 'input, select, textarea, button, video', - // Last click time - lastClickTime = Date.now(), clickTimeout, - //Velocities - velocities = [], - allowMomentumBounce; - - // Animating Flag - s.animating = false; - - // Touches information - s.touches = { - startX: 0, - startY: 0, - currentX: 0, - currentY: 0, - diff: 0 - }; - - // Touch handlers - var isTouchEvent, startMoving; - s.onTouchStart = function (e) { - if (e.originalEvent) e = e.originalEvent; - isTouchEvent = e.type === 'touchstart'; - if (!isTouchEvent && 'which' in e && e.which === 3) return; - if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) { - s.allowClick = true; - return; - } - if (s.params.swipeHandler) { - if (!findElementInEvent(e, s.params.swipeHandler)) return; - } - - var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - - // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore - if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) { - return; - } - - isTouched = true; - isMoved = false; - allowTouchCallbacks = true; - isScrolling = undefined; - startMoving = undefined; - s.touches.startX = startX; - s.touches.startY = startY; - touchStartTime = Date.now(); - s.allowClick = true; - s.updateContainerSize(); - s.swipeDirection = undefined; - if (s.params.threshold > 0) allowThresholdMove = false; - if (e.type !== 'touchstart') { - var preventDefault = true; - if ($(e.target).is(formElements)) preventDefault = false; - if (document.activeElement && $(document.activeElement).is(formElements)) { - document.activeElement.blur(); - } - if (preventDefault) { - e.preventDefault(); - } - } - s.emit('onTouchStart', s, e); - }; - - s.onTouchMove = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (isTouchEvent && e.type === 'mousemove') return; - if (e.preventedByNestedSwiper) { - s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - return; - } - if (s.params.onlyExternal) { - // isMoved = true; - s.allowClick = false; - if (isTouched) { - s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - touchStartTime = Date.now(); - } - return; - } - if (isTouchEvent && s.params.touchReleaseOnEdges && !s.params.loop) { - if (!s.isHorizontal()) { - // Vertical - if ( - (s.touches.currentY < s.touches.startY && s.translate <= s.maxTranslate()) || - (s.touches.currentY > s.touches.startY && s.translate >= s.minTranslate()) - ) { - return; - } - } - else { - if ( - (s.touches.currentX < s.touches.startX && s.translate <= s.maxTranslate()) || - (s.touches.currentX > s.touches.startX && s.translate >= s.minTranslate()) - ) { - return; - } - } - } - if (isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(formElements)) { - isMoved = true; - s.allowClick = false; - return; - } - } - if (allowTouchCallbacks) { - s.emit('onTouchMove', s, e); - } - if (e.targetTouches && e.targetTouches.length > 1) return; - - s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (typeof isScrolling === 'undefined') { - var touchAngle; - if (s.isHorizontal() && s.touches.currentY === s.touches.startY || !s.isHorizontal() && s.touches.currentX === s.touches.startX) { - isScrolling = false; - } - else { - touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI; - isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle); - } - } - if (isScrolling) { - s.emit('onTouchMoveOpposite', s, e); - } - if (typeof startMoving === 'undefined') { - if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) { - startMoving = true; - } - } - if (!isTouched) return; - if (isScrolling) { - isTouched = false; - return; - } - if (!startMoving) { - return; - } - s.allowClick = false; - s.emit('onSliderMove', s, e); - e.preventDefault(); - if (s.params.touchMoveStopPropagation && !s.params.nested) { - e.stopPropagation(); - } - - if (!isMoved) { - if (params.loop) { - s.fixLoop(); - } - startTranslate = s.getWrapperTranslate(); - s.setWrapperTransition(0); - if (s.animating) { - s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd'); - } - if (s.params.autoplay && s.autoplaying) { - if (s.params.autoplayDisableOnInteraction) { - s.stopAutoplay(); - } - else { - s.pauseAutoplay(); - } - } - allowMomentumBounce = false; - //Grab Cursor - if (s.params.grabCursor && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) { - s.setGrabCursor(true); - } - } - isMoved = true; - - var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - - diff = diff * s.params.touchRatio; - if (s.rtl) diff = -diff; - - s.swipeDirection = diff > 0 ? 'prev' : 'next'; - currentTranslate = diff + startTranslate; - - var disableParentSwiper = true; - if ((diff > 0 && currentTranslate > s.minTranslate())) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio); - } - else if (diff < 0 && currentTranslate < s.maxTranslate()) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio); - } - - if (disableParentSwiper) { - e.preventedByNestedSwiper = true; - } - - // Directions locks - if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) { - currentTranslate = startTranslate; - } - if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) { - currentTranslate = startTranslate; - } - - - // Threshold - if (s.params.threshold > 0) { - if (Math.abs(diff) > s.params.threshold || allowThresholdMove) { - if (!allowThresholdMove) { - allowThresholdMove = true; - s.touches.startX = s.touches.currentX; - s.touches.startY = s.touches.currentY; - currentTranslate = startTranslate; - s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - return; - } - } - else { - currentTranslate = startTranslate; - return; - } - } - - if (!s.params.followFinger) return; - - // Update active index in free mode - if (s.params.freeMode || s.params.watchSlidesProgress) { - s.updateActiveIndex(); - } - if (s.params.freeMode) { - //Velocity - if (velocities.length === 0) { - velocities.push({ - position: s.touches[s.isHorizontal() ? 'startX' : 'startY'], - time: touchStartTime - }); - } - velocities.push({ - position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'], - time: (new window.Date()).getTime() - }); - } - // Update progress - s.updateProgress(currentTranslate); - // Update translate - s.setWrapperTranslate(currentTranslate); - }; - s.onTouchEnd = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (allowTouchCallbacks) { - s.emit('onTouchEnd', s, e); - } - allowTouchCallbacks = false; - if (!isTouched) return; - //Return Grab Cursor - if (s.params.grabCursor && isMoved && isTouched && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) { - s.setGrabCursor(false); - } - - // Time diff - var touchEndTime = Date.now(); - var timeDiff = touchEndTime - touchStartTime; - - // Tap, doubleTap, Click - if (s.allowClick) { - s.updateClickedSlide(e); - s.emit('onTap', s, e); - if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) { - if (clickTimeout) clearTimeout(clickTimeout); - clickTimeout = setTimeout(function () { - if (!s) return; - if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) { - s.paginationContainer.toggleClass(s.params.paginationHiddenClass); - } - s.emit('onClick', s, e); - }, 300); - - } - if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) { - if (clickTimeout) clearTimeout(clickTimeout); - s.emit('onDoubleTap', s, e); - } - } - - lastClickTime = Date.now(); - setTimeout(function () { - if (s) s.allowClick = true; - }, 0); - - if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) { - isTouched = isMoved = false; - return; - } - isTouched = isMoved = false; - - var currentPos; - if (s.params.followFinger) { - currentPos = s.rtl ? s.translate : -s.translate; - } - else { - currentPos = -currentTranslate; - } - if (s.params.freeMode) { - if (currentPos < -s.minTranslate()) { - s.slideTo(s.activeIndex); - return; - } - else if (currentPos > -s.maxTranslate()) { - if (s.slides.length < s.snapGrid.length) { - s.slideTo(s.snapGrid.length - 1); - } - else { - s.slideTo(s.slides.length - 1); - } - return; - } - - if (s.params.freeModeMomentum) { - if (velocities.length > 1) { - var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop(); - - var distance = lastMoveEvent.position - velocityEvent.position; - var time = lastMoveEvent.time - velocityEvent.time; - s.velocity = distance / time; - s.velocity = s.velocity / 2; - if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) { - s.velocity = 0; - } - // this implies that the user stopped moving a finger then released. - // There would be no events with distance zero, so the last event is stale. - if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) { - s.velocity = 0; - } - } else { - s.velocity = 0; - } - s.velocity = s.velocity * s.params.freeModeMomentumVelocityRatio; - - velocities.length = 0; - var momentumDuration = 1000 * s.params.freeModeMomentumRatio; - var momentumDistance = s.velocity * momentumDuration; - - var newPosition = s.translate + momentumDistance; - if (s.rtl) newPosition = - newPosition; - var doBounce = false; - var afterBouncePosition; - var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio; - if (newPosition < s.maxTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition + s.maxTranslate() < -bounceAmount) { - newPosition = s.maxTranslate() - bounceAmount; - } - afterBouncePosition = s.maxTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.maxTranslate(); - } - } - else if (newPosition > s.minTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition - s.minTranslate() > bounceAmount) { - newPosition = s.minTranslate() + bounceAmount; - } - afterBouncePosition = s.minTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.minTranslate(); - } - } - else if (s.params.freeModeSticky) { - var j = 0, - nextSlide; - for (j = 0; j < s.snapGrid.length; j += 1) { - if (s.snapGrid[j] > -newPosition) { - nextSlide = j; - break; - } - - } - if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') { - newPosition = s.snapGrid[nextSlide]; - } else { - newPosition = s.snapGrid[nextSlide - 1]; - } - if (!s.rtl) newPosition = - newPosition; - } - //Fix duration - if (s.velocity !== 0) { - if (s.rtl) { - momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity); - } - else { - momentumDuration = Math.abs((newPosition - s.translate) / s.velocity); - } - } - else if (s.params.freeModeSticky) { - s.slideReset(); - return; - } - - if (s.params.freeModeMomentumBounce && doBounce) { - s.updateProgress(afterBouncePosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s || !allowMomentumBounce) return; - s.emit('onMomentumBounce', s); - - s.setWrapperTransition(s.params.speed); - s.setWrapperTranslate(afterBouncePosition); - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - }); - } else if (s.velocity) { - s.updateProgress(newPosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - } - - } else { - s.updateProgress(newPosition); - } - - s.updateActiveIndex(); - } - if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) { - s.updateProgress(); - s.updateActiveIndex(); - } - return; - } - - // Find current slide - var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0]; - for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) { - if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') { - if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) { - stopIndex = i; - groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i]; - } - } - else { - if (currentPos >= s.slidesGrid[i]) { - stopIndex = i; - groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2]; - } - } - } - - // Find current slide size - var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize; - - if (timeDiff > s.params.longSwipesMs) { - // Long touches - if (!s.params.longSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - - } - if (s.swipeDirection === 'prev') { - if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - } - } - else { - // Short swipes - if (!s.params.shortSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - s.slideTo(stopIndex + s.params.slidesPerGroup); - - } - if (s.swipeDirection === 'prev') { - s.slideTo(stopIndex); - } - } - }; - /*========================= - Transitions - ===========================*/ - s._slideTo = function (slideIndex, speed) { - return s.slideTo(slideIndex, speed, true, true); - }; - s.slideTo = function (slideIndex, speed, runCallbacks, internal) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (typeof slideIndex === 'undefined') slideIndex = 0; - if (slideIndex < 0) slideIndex = 0; - s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup); - if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1; - - var translate = - s.snapGrid[s.snapIndex]; - // Stop autoplay - if (s.params.autoplay && s.autoplaying) { - if (internal || !s.params.autoplayDisableOnInteraction) { - s.pauseAutoplay(speed); - } - else { - s.stopAutoplay(); - } - } - // Update progress - s.updateProgress(translate); - - // Normalize slideIndex - if(s.params.normalizeSlideIndex){ - for (var i = 0; i < s.slidesGrid.length; i++) { - if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) { - slideIndex = i; - } - } - } - - // Directions locks - if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) { - return false; - } - if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) { - if ((s.activeIndex || 0) !== slideIndex ) return false; - } - - // Update Index - if (typeof speed === 'undefined') speed = s.params.speed; - s.previousIndex = s.activeIndex || 0; - s.activeIndex = slideIndex; - s.updateRealIndex(); - if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) { - // Update Height - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - s.updateClasses(); - if (s.params.effect !== 'slide') { - s.setWrapperTranslate(translate); - } - return false; - } - s.updateClasses(); - s.onTransitionStart(runCallbacks); - - if (speed === 0 || s.browser.lteIE9) { - s.setWrapperTranslate(translate); - s.setWrapperTransition(0); - s.onTransitionEnd(runCallbacks); - } - else { - s.setWrapperTranslate(translate); - s.setWrapperTransition(speed); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(runCallbacks); - }); - } - - } - - return true; - }; - - s.onTransitionStart = function (runCallbacks) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - if (s.lazy) s.lazy.onTransitionStart(); - if (runCallbacks) { - s.emit('onTransitionStart', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeStart', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextStart', s); - } - else { - s.emit('onSlidePrevStart', s); - } - } - - } - }; - s.onTransitionEnd = function (runCallbacks) { - s.animating = false; - s.setWrapperTransition(0); - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.lazy) s.lazy.onTransitionEnd(); - if (runCallbacks) { - s.emit('onTransitionEnd', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeEnd', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextEnd', s); - } - else { - s.emit('onSlidePrevEnd', s); - } - } - } - if (s.params.history && s.history) { - s.history.setHistory(s.params.history, s.activeIndex); - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.setHash(); - } - - }; - s.slideNext = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - }; - s._slideNext = function (speed) { - return s.slideNext(true, speed, true); - }; - s.slidePrev = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - }; - s._slidePrev = function (speed) { - return s.slidePrev(true, speed, true); - }; - s.slideReset = function (runCallbacks, speed, internal) { - return s.slideTo(s.activeIndex, speed, runCallbacks); - }; - - s.disableTouchControl = function () { - s.params.onlyExternal = true; - return true; - }; - s.enableTouchControl = function () { - s.params.onlyExternal = false; - return true; - }; - - /*========================= - Translate/transition helpers - ===========================*/ - s.setWrapperTransition = function (duration, byController) { - s.wrapper.transition(duration); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTransition(duration); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTransition(duration); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTransition(duration); - } - if (s.params.control && s.controller) { - s.controller.setTransition(duration, byController); - } - s.emit('onSetTransition', s, duration); - }; - s.setWrapperTranslate = function (translate, updateActiveIndex, byController) { - var x = 0, y = 0, z = 0; - if (s.isHorizontal()) { - x = s.rtl ? -translate : translate; - } - else { - y = translate; - } - - if (s.params.roundLengths) { - x = round(x); - y = round(y); - } - - if (!s.params.virtualTranslate) { - if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'); - else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)'); - } - - s.translate = s.isHorizontal() ? x : y; - - // Check if we need to update progress - var progress; - var translatesDiff = s.maxTranslate() - s.minTranslate(); - if (translatesDiff === 0) { - progress = 0; - } - else { - progress = (translate - s.minTranslate()) / (translatesDiff); - } - if (progress !== s.progress) { - s.updateProgress(translate); - } - - if (updateActiveIndex) s.updateActiveIndex(); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTranslate(s.translate); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTranslate(s.translate); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTranslate(s.translate); - } - if (s.params.control && s.controller) { - s.controller.setTranslate(s.translate, byController); - } - s.emit('onSetTranslate', s, s.translate); - }; - - s.getTranslate = function (el, axis) { - var matrix, curTransform, curStyle, transformMatrix; - - // automatic axis detection - if (typeof axis === 'undefined') { - axis = 'x'; - } - - if (s.params.virtualTranslate) { - return s.rtl ? -s.translate : s.translate; - } - - curStyle = window.getComputedStyle(el, null); - if (window.WebKitCSSMatrix) { - curTransform = curStyle.transform || curStyle.webkitTransform; - if (curTransform.split(',').length > 6) { - curTransform = curTransform.split(', ').map(function(a){ - return a.replace(',','.'); - }).join(', '); - } - // Some old versions of Webkit choke when 'none' is passed; pass - // empty string instead in this case - transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); - } - else { - transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); - matrix = transformMatrix.toString().split(','); - } - - if (axis === 'x') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m41; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[12]); - //Normal Browsers - else - curTransform = parseFloat(matrix[4]); - } - if (axis === 'y') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m42; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[13]); - //Normal Browsers - else - curTransform = parseFloat(matrix[5]); - } - if (s.rtl && curTransform) curTransform = -curTransform; - return curTransform || 0; - }; - s.getWrapperTranslate = function (axis) { - if (typeof axis === 'undefined') { - axis = s.isHorizontal() ? 'x' : 'y'; - } - return s.getTranslate(s.wrapper[0], axis); - }; - - /*========================= - Observer - ===========================*/ - s.observers = []; - function initObserver(target, options) { - options = options || {}; - // create an observer instance - var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; - var observer = new ObserverFunc(function (mutations) { - mutations.forEach(function (mutation) { - s.onResize(true); - s.emit('onObserverUpdate', s, mutation); - }); - }); - - observer.observe(target, { - attributes: typeof options.attributes === 'undefined' ? true : options.attributes, - childList: typeof options.childList === 'undefined' ? true : options.childList, - characterData: typeof options.characterData === 'undefined' ? true : options.characterData - }); - - s.observers.push(observer); - } - s.initObservers = function () { - if (s.params.observeParents) { - var containerParents = s.container.parents(); - for (var i = 0; i < containerParents.length; i++) { - initObserver(containerParents[i]); - } - } - - // Observe container - initObserver(s.container[0], {childList: false}); - - // Observe wrapper - initObserver(s.wrapper[0], {attributes: false}); - }; - s.disconnectObservers = function () { - for (var i = 0; i < s.observers.length; i++) { - s.observers[i].disconnect(); - } - s.observers = []; - }; - /*========================= - Loop - ===========================*/ - // Create looped slides - s.createLoop = function () { - // Remove duplicated slides - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - - var slides = s.wrapper.children('.' + s.params.slideClass); - - if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length; - - s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10); - s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides; - if (s.loopedSlides > slides.length) { - s.loopedSlides = slides.length; - } - - var prependSlides = [], appendSlides = [], i; - slides.each(function (index, el) { - var slide = $(this); - if (index < s.loopedSlides) appendSlides.push(el); - if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el); - slide.attr('data-swiper-slide-index', index); - }); - for (i = 0; i < appendSlides.length; i++) { - s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - for (i = prependSlides.length - 1; i >= 0; i--) { - s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - }; - s.destroyLoop = function () { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - s.slides.removeAttr('data-swiper-slide-index'); - }; - s.reLoop = function (updatePosition) { - var oldIndex = s.activeIndex - s.loopedSlides; - s.destroyLoop(); - s.createLoop(); - s.updateSlidesSize(); - if (updatePosition) { - s.slideTo(oldIndex + s.loopedSlides, 0, false); - } - - }; - s.fixLoop = function () { - var newIndex; - //Fix For Negative Oversliding - if (s.activeIndex < s.loopedSlides) { - newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - //Fix For Positive Oversliding - else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) { - newIndex = -s.slides.length + s.activeIndex + s.loopedSlides; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - }; - /*========================= - Append/Prepend/Remove Slides - ===========================*/ - s.appendSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.append(slides[i]); - } - } - else { - s.wrapper.append(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - }; - s.prependSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - var newActiveIndex = s.activeIndex + 1; - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.prepend(slides[i]); - } - newActiveIndex = s.activeIndex + slides.length; - } - else { - s.wrapper.prepend(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - s.slideTo(newActiveIndex, 0, false); - }; - s.removeSlide = function (slidesIndexes) { - if (s.params.loop) { - s.destroyLoop(); - s.slides = s.wrapper.children('.' + s.params.slideClass); - } - var newActiveIndex = s.activeIndex, - indexToRemove; - if (typeof slidesIndexes === 'object' && slidesIndexes.length) { - for (var i = 0; i < slidesIndexes.length; i++) { - indexToRemove = slidesIndexes[i]; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - } - newActiveIndex = Math.max(newActiveIndex, 0); - } - else { - indexToRemove = slidesIndexes; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (s.params.loop) { - s.createLoop(); - } - - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - if (s.params.loop) { - s.slideTo(newActiveIndex + s.loopedSlides, 0, false); - } - else { - s.slideTo(newActiveIndex, 0, false); - } - - }; - s.removeAllSlides = function () { - var slidesIndexes = []; - for (var i = 0; i < s.slides.length; i++) { - slidesIndexes.push(i); - } - s.removeSlide(slidesIndexes); - }; - - - /*========================= - Effects - ===========================*/ - s.effects = { - fade: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var offset = slide[0].swiperSlideOffset; - var tx = -offset; - if (!s.params.virtualTranslate) tx = tx - s.translate; - var ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - var slideOpacity = s.params.fade.crossFade ? - Math.max(1 - Math.abs(slide[0].progress), 0) : - 1 + Math.min(Math.max(slide[0].progress, -1), 0); - slide - .css({ - opacity: slideOpacity - }) - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)'); - - } - - }, - setTransition: function (duration) { - s.slides.transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - flip: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var progress = slide[0].progress; - if (s.params.flip.limitRotation) { - progress = Math.max(Math.min(slide[0].progress, 1), -1); - } - var offset = slide[0].swiperSlideOffset; - var rotate = -180 * progress, - rotateY = rotate, - rotateX = 0, - tx = -offset, - ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - rotateX = -rotateY; - rotateY = 0; - } - else if (s.rtl) { - rotateY = -rotateY; - } - - slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length; - - if (s.params.flip.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'left' : 'top') + '"></div>'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'right' : 'bottom') + '"></div>'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - slide - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'); - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.eq(s.activeIndex).transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - if (!$(this).hasClass(s.params.slideActiveClass)) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - cube: { - setTranslate: function () { - var wrapperRotate = 0, cubeShadow; - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow = s.wrapper.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('<div class="swiper-cube-shadow"></div>'); - s.wrapper.append(cubeShadow); - } - cubeShadow.css({height: s.width + 'px'}); - } - else { - cubeShadow = s.container.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('<div class="swiper-cube-shadow"></div>'); - s.container.append(cubeShadow); - } - } - } - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var slideAngle = i * 90; - var round = Math.floor(slideAngle / 360); - if (s.rtl) { - slideAngle = -slideAngle; - round = Math.floor(-slideAngle / 360); - } - var progress = Math.max(Math.min(slide[0].progress, 1), -1); - var tx = 0, ty = 0, tz = 0; - if (i % 4 === 0) { - tx = - round * 4 * s.size; - tz = 0; - } - else if ((i - 1) % 4 === 0) { - tx = 0; - tz = - round * 4 * s.size; - } - else if ((i - 2) % 4 === 0) { - tx = s.size + round * 4 * s.size; - tz = s.size; - } - else if ((i - 3) % 4 === 0) { - tx = - s.size; - tz = 3 * s.size + s.size * 4 * round; - } - if (s.rtl) { - tx = -tx; - } - - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - - var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)'; - if (progress <= 1 && progress > -1) { - wrapperRotate = i * 90 + progress * 90; - if (s.rtl) wrapperRotate = -i * 90 - progress * 90; - } - slide.transform(transform); - if (s.params.cube.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'left' : 'top') + '"></div>'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'right' : 'bottom') + '"></div>'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - s.wrapper.css({ - '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - 'transform-origin': '50% 50% -' + (s.size / 2) + 'px' - }); - - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')'); - } - else { - var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; - var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); - var scale1 = s.params.cube.shadowScale, - scale2 = s.params.cube.shadowScale / multiplier, - offset = s.params.cube.shadowOffset; - cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)'); - } - } - var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0; - s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)'); - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.cube.shadow && !s.isHorizontal()) { - s.container.find('.swiper-cube-shadow').transition(duration); - } - } - }, - coverflow: { - setTranslate: function () { - var transform = s.translate; - var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2; - var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate; - var translate = s.params.coverflow.depth; - //Each slide offset from center - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideSize = s.slidesSizesGrid[i]; - var slideOffset = slide[0].swiperSlideOffset; - var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier; - - var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0; - var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier; - // var rotateZ = 0 - var translateZ = -translate * Math.abs(offsetMultiplier); - - var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier); - var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0; - - //Fix for ultra small values - if (Math.abs(translateX) < 0.001) translateX = 0; - if (Math.abs(translateY) < 0.001) translateY = 0; - if (Math.abs(translateZ) < 0.001) translateZ = 0; - if (Math.abs(rotateY) < 0.001) rotateY = 0; - if (Math.abs(rotateX) < 0.001) rotateX = 0; - - var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'; - - slide.transform(slideTransform); - slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - if (s.params.coverflow.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'left' : 'top') + '"></div>'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('<div class="swiper-slide-shadow-' + (s.isHorizontal() ? 'right' : 'bottom') + '"></div>'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; - } - } - - //Set correct perspective for IE10 - if (s.browser.ie) { - var ws = s.wrapper[0].style; - ws.perspectiveOrigin = center + 'px 50%'; - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - } - } - }; - - - /*========================= - Images Lazy Loading - ===========================*/ - s.lazy = { - initialImageLoaded: false, - loadImageInSlide: function (index, loadInDuplicate) { - if (typeof index === 'undefined') return; - if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true; - if (s.slides.length === 0) return; - - var slide = s.slides.eq(index); - var img = slide.find('.' + s.params.lazyLoadingClass + ':not(.' + s.params.lazyStatusLoadedClass + '):not(.' + s.params.lazyStatusLoadingClass + ')'); - if (slide.hasClass(s.params.lazyLoadingClass) && !slide.hasClass(s.params.lazyStatusLoadedClass) && !slide.hasClass(s.params.lazyStatusLoadingClass)) { - img = img.add(slide[0]); - } - if (img.length === 0) return; - - img.each(function () { - var _img = $(this); - _img.addClass(s.params.lazyStatusLoadingClass); - var background = _img.attr('data-background'); - var src = _img.attr('data-src'), - srcset = _img.attr('data-srcset'), - sizes = _img.attr('data-sizes'); - s.loadImage(_img[0], (src || background), srcset, sizes, false, function () { - if (typeof s === 'undefined' || s === null || !s) return; - if (background) { - _img.css('background-image', 'url("' + background + '")'); - _img.removeAttr('data-background'); - } - else { - if (srcset) { - _img.attr('srcset', srcset); - _img.removeAttr('data-srcset'); - } - if (sizes) { - _img.attr('sizes', sizes); - _img.removeAttr('data-sizes'); - } - if (src) { - _img.attr('src', src); - _img.removeAttr('data-src'); - } - - } - - _img.addClass(s.params.lazyStatusLoadedClass).removeClass(s.params.lazyStatusLoadingClass); - slide.find('.' + s.params.lazyPreloaderClass + ', .' + s.params.preloaderClass).remove(); - if (s.params.loop && loadInDuplicate) { - var slideOriginalIndex = slide.attr('data-swiper-slide-index'); - if (slide.hasClass(s.params.slideDuplicateClass)) { - var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')'); - s.lazy.loadImageInSlide(originalSlide.index(), false); - } - else { - var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]'); - s.lazy.loadImageInSlide(duplicatedSlide.index(), false); - } - } - s.emit('onLazyImageReady', s, slide[0], _img[0]); - }); - - s.emit('onLazyImageLoad', s, slide[0], _img[0]); - }); - - }, - load: function () { - var i; - var slidesPerView = s.params.slidesPerView; - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - if (!s.lazy.initialImageLoaded) s.lazy.initialImageLoaded = true; - if (s.params.watchSlidesVisibility) { - s.wrapper.children('.' + s.params.slideVisibleClass).each(function () { - s.lazy.loadImageInSlide($(this).index()); - }); - } - else { - if (slidesPerView > 1) { - for (i = s.activeIndex; i < s.activeIndex + slidesPerView ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - s.lazy.loadImageInSlide(s.activeIndex); - } - } - if (s.params.lazyLoadingInPrevNext) { - if (slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) { - var amount = s.params.lazyLoadingInPrevNextAmount; - var spv = slidesPerView; - var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length); - var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0); - // Next Slides - for (i = s.activeIndex + slidesPerView; i < maxIndex; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - // Prev Slides - for (i = minIndex; i < s.activeIndex ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - var nextSlide = s.wrapper.children('.' + s.params.slideNextClass); - if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index()); - - var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass); - if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index()); - } - } - }, - onTransitionStart: function () { - if (s.params.lazyLoading) { - if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) { - s.lazy.load(); - } - } - }, - onTransitionEnd: function () { - if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) { - s.lazy.load(); - } - } - }; - - - /*========================= - Scrollbar - ===========================*/ - s.scrollbar = { - isTouched: false, - setDragPosition: function (e) { - var sb = s.scrollbar; - var x = 0, y = 0; - var translate; - var pointerPosition = s.isHorizontal() ? - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) : - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ; - var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2; - var positionMin = -s.minTranslate() * sb.moveDivider; - var positionMax = -s.maxTranslate() * sb.moveDivider; - if (position < positionMin) { - position = positionMin; - } - else if (position > positionMax) { - position = positionMax; - } - position = -position / sb.moveDivider; - s.updateProgress(position); - s.setWrapperTranslate(position, true); - }, - dragStart: function (e) { - var sb = s.scrollbar; - sb.isTouched = true; - e.preventDefault(); - e.stopPropagation(); - - sb.setDragPosition(e); - clearTimeout(sb.dragTimeout); - - sb.track.transition(0); - if (s.params.scrollbarHide) { - sb.track.css('opacity', 1); - } - s.wrapper.transition(100); - sb.drag.transition(100); - s.emit('onScrollbarDragStart', s); - }, - dragMove: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - sb.setDragPosition(e); - s.wrapper.transition(0); - sb.track.transition(0); - sb.drag.transition(0); - s.emit('onScrollbarDragMove', s); - }, - dragEnd: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - sb.isTouched = false; - if (s.params.scrollbarHide) { - clearTimeout(sb.dragTimeout); - sb.dragTimeout = setTimeout(function () { - sb.track.css('opacity', 0); - sb.track.transition(400); - }, 1000); - - } - s.emit('onScrollbarDragEnd', s); - if (s.params.scrollbarSnapOnRelease) { - s.slideReset(); - } - }, - draggableEvents: (function () { - if ((s.params.simulateTouch === false && !s.support.touch)) return s.touchEventsDesktop; - else return s.touchEvents; - })(), - enableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).on(sb.draggableEvents.start, sb.dragStart); - $(target).on(sb.draggableEvents.move, sb.dragMove); - $(target).on(sb.draggableEvents.end, sb.dragEnd); - }, - disableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).off(sb.draggableEvents.start, sb.dragStart); - $(target).off(sb.draggableEvents.move, sb.dragMove); - $(target).off(sb.draggableEvents.end, sb.dragEnd); - }, - set: function () { - if (!s.params.scrollbar) return; - var sb = s.scrollbar; - sb.track = $(s.params.scrollbar); - if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) { - sb.track = s.container.find(s.params.scrollbar); - } - sb.drag = sb.track.find('.swiper-scrollbar-drag'); - if (sb.drag.length === 0) { - sb.drag = $('<div class="swiper-scrollbar-drag"></div>'); - sb.track.append(sb.drag); - } - sb.drag[0].style.width = ''; - sb.drag[0].style.height = ''; - sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight; - - sb.divider = s.size / s.virtualSize; - sb.moveDivider = sb.divider * (sb.trackSize / s.size); - sb.dragSize = sb.trackSize * sb.divider; - - if (s.isHorizontal()) { - sb.drag[0].style.width = sb.dragSize + 'px'; - } - else { - sb.drag[0].style.height = sb.dragSize + 'px'; - } - - if (sb.divider >= 1) { - sb.track[0].style.display = 'none'; - } - else { - sb.track[0].style.display = ''; - } - if (s.params.scrollbarHide) { - sb.track[0].style.opacity = 0; - } - }, - setTranslate: function () { - if (!s.params.scrollbar) return; - var diff; - var sb = s.scrollbar; - var translate = s.translate || 0; - var newPos; - - var newSize = sb.dragSize; - newPos = (sb.trackSize - sb.dragSize) * s.progress; - if (s.rtl && s.isHorizontal()) { - newPos = -newPos; - if (newPos > 0) { - newSize = sb.dragSize - newPos; - newPos = 0; - } - else if (-newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize + newPos; - } - } - else { - if (newPos < 0) { - newSize = sb.dragSize + newPos; - newPos = 0; - } - else if (newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize - newPos; - } - } - if (s.isHorizontal()) { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)'); - } - else { - sb.drag.transform('translateX(' + (newPos) + 'px)'); - } - sb.drag[0].style.width = newSize + 'px'; - } - else { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)'); - } - else { - sb.drag.transform('translateY(' + (newPos) + 'px)'); - } - sb.drag[0].style.height = newSize + 'px'; - } - if (s.params.scrollbarHide) { - clearTimeout(sb.timeout); - sb.track[0].style.opacity = 1; - sb.timeout = setTimeout(function () { - sb.track[0].style.opacity = 0; - sb.track.transition(400); - }, 1000); - } - }, - setTransition: function (duration) { - if (!s.params.scrollbar) return; - s.scrollbar.drag.transition(duration); - } - }; - - - /*========================= - Controller - ===========================*/ - s.controller = { - LinearSpline: function (x, y) { - var binarySearch = (function() { - var maxIndex, minIndex, guess; - return function(array, val) { - minIndex = -1; - maxIndex = array.length; - while (maxIndex - minIndex > 1) - if (array[guess = maxIndex + minIndex >> 1] <= val) { - minIndex = guess; - } else { - maxIndex = guess; - } - return maxIndex; - }; - })(); - this.x = x; - this.y = y; - this.lastIndex = x.length - 1; - // Given an x value (x2), return the expected y2 value: - // (x1,y1) is the known point before given value, - // (x3,y3) is the known point after given value. - var i1, i3; - var l = this.x.length; - - this.interpolate = function (x2) { - if (!x2) return 0; - - // Get the indexes of x1 and x3 (the array indexes before and after given x2): - i3 = binarySearch(this.x, x2); - i1 = i3 - 1; - - // We have our indexes i1 & i3, so we can calculate already: - // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 - return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]; - }; - }, - //xxx: for now i will just save one spline function to to - getInterpolateFunction: function(c){ - if(!s.controller.spline) s.controller.spline = s.params.loop ? - new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) : - new s.controller.LinearSpline(s.snapGrid, c.snapGrid); - }, - setTranslate: function (translate, byController) { - var controlled = s.params.control; - var multiplier, controlledTranslate; - function setControlledTranslate(c) { - // this will create an Interpolate function based on the snapGrids - // x is the Grid of the scrolled scroller and y will be the controlled scroller - // it makes sense to create this only once and recall it for the interpolation - // the function does a lot of value caching for performance - translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate; - if (s.params.controlBy === 'slide') { - s.controller.getInterpolateFunction(c); - // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid - // but it did not work out - controlledTranslate = -s.controller.spline.interpolate(-translate); - } - - if(!controlledTranslate || s.params.controlBy === 'container'){ - multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate()); - controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate(); - } - - if (s.params.controlInverse) { - controlledTranslate = c.maxTranslate() - controlledTranslate; - } - c.updateProgress(controlledTranslate); - c.setWrapperTranslate(controlledTranslate, false, s); - c.updateActiveIndex(); - } - if (Array.isArray(controlled)) { - for (var i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTranslate(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - - setControlledTranslate(controlled); - } - }, - setTransition: function (duration, byController) { - var controlled = s.params.control; - var i; - function setControlledTransition(c) { - c.setWrapperTransition(duration, s); - if (duration !== 0) { - c.onTransitionStart(); - c.wrapper.transitionEnd(function(){ - if (!controlled) return; - if (c.params.loop && s.params.controlBy === 'slide') { - c.fixLoop(); - } - c.onTransitionEnd(); - - }); - } - } - if (Array.isArray(controlled)) { - for (i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTransition(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - setControlledTransition(controlled); - } - } - }; - - - /*========================= - Hash Navigation - ===========================*/ - s.hashnav = { - onHashCange: function (e, a) { - var newHash = document.location.hash.replace('#', ''); - var activeSlideHash = s.slides.eq(s.activeIndex).attr('data-hash'); - if (newHash !== activeSlideHash) { - s.slideTo(s.wrapper.children('.' + s.params.slideClass + '[data-hash="' + (newHash) + '"]').index()); - } - }, - attachEvents: function (detach) { - var action = detach ? 'off' : 'on'; - $(window)[action]('hashchange', s.hashnav.onHashCange); - }, - setHash: function () { - if (!s.hashnav.initialized || !s.params.hashnav) return; - if (s.params.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, ('#' + s.slides.eq(s.activeIndex).attr('data-hash') || '')); - } else { - var slide = s.slides.eq(s.activeIndex); - var hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - } - }, - init: function () { - if (!s.params.hashnav || s.params.history) return; - s.hashnav.initialized = true; - var hash = document.location.hash.replace('#', ''); - if (hash) { - var speed = 0; - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHash = slide.attr('data-hash') || slide.attr('data-history'); - if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, s.params.runCallbacksOnInit, true); - } - } - } - if (s.params.hashnavWatchState) s.hashnav.attachEvents(); - }, - destroy: function () { - if (s.params.hashnavWatchState) s.hashnav.attachEvents(true); - } - }; - - - /*========================= - History Api with fallback to Hashnav - ===========================*/ - s.history = { - init: function () { - if (!s.params.history) return; - if (!window.history || !window.history.pushState) { - s.params.history = false; - s.params.hashnav = true; - return; - } - s.history.initialized = true; - this.paths = this.getPathValues(); - if (!this.paths.key && !this.paths.value) return; - this.scrollToSlide(0, this.paths.value, s.params.runCallbacksOnInit); - if (!s.params.replaceState) { - window.addEventListener('popstate', this.setHistoryPopState); - } - }, - setHistoryPopState: function() { - s.history.paths = s.history.getPathValues(); - s.history.scrollToSlide(s.params.speed, s.history.paths.value, false); - }, - getPathValues: function() { - var pathArray = window.location.pathname.slice(1).split('/'); - var total = pathArray.length; - var key = pathArray[total - 2]; - var value = pathArray[total - 1]; - return { key: key, value: value }; - }, - setHistory: function (key, index) { - if (!s.history.initialized || !s.params.history) return; - var slide = s.slides.eq(index); - var value = this.slugify(slide.attr('data-history')); - if (!window.location.pathname.includes(key)) { - value = key + '/' + value; - } - if (s.params.replaceState) { - window.history.replaceState(null, null, value); - } else { - window.history.pushState(null, null, value); - } - }, - slugify: function(text) { - return text.toString().toLowerCase() - .replace(/\s+/g, '-') - .replace(/[^\w\-]+/g, '') - .replace(/\-\-+/g, '-') - .replace(/^-+/, '') - .replace(/-+$/, ''); - }, - scrollToSlide: function(speed, value, runCallbacks) { - if (value) { - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHistory = this.slugify(slide.attr('data-history')); - if (slideHistory === value && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, runCallbacks); - } - } - } else { - s.slideTo(0, speed, runCallbacks); - } - } - }; - - - /*========================= - Keyboard Control - ===========================*/ - function handleKeyboard(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var kc = e.keyCode || e.charCode; - // Directions locks - if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) { - return false; - } - if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) { - return false; - } - if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { - return; - } - if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { - return; - } - if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { - var inView = false; - //Check that swiper should be inside of visible area of window - if (s.container.parents('.' + s.params.slideClass).length > 0 && s.container.parents('.' + s.params.slideActiveClass).length === 0) { - return; - } - var windowScroll = { - left: window.pageXOffset, - top: window.pageYOffset - }; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var swiperOffset = s.container.offset(); - if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft; - var swiperCoord = [ - [swiperOffset.left, swiperOffset.top], - [swiperOffset.left + s.width, swiperOffset.top], - [swiperOffset.left, swiperOffset.top + s.height], - [swiperOffset.left + s.width, swiperOffset.top + s.height] - ]; - for (var i = 0; i < swiperCoord.length; i++) { - var point = swiperCoord[i]; - if ( - point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && - point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight - ) { - inView = true; - } - - } - if (!inView) return; - } - if (s.isHorizontal()) { - if (kc === 37 || kc === 39) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext(); - if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev(); - } - else { - if (kc === 38 || kc === 40) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if (kc === 40) s.slideNext(); - if (kc === 38) s.slidePrev(); - } - s.emit('onKeyPress', s, kc); - } - s.disableKeyboardControl = function () { - s.params.keyboardControl = false; - $(document).off('keydown', handleKeyboard); - }; - s.enableKeyboardControl = function () { - s.params.keyboardControl = true; - $(document).on('keydown', handleKeyboard); - }; - - - /*========================= - Mousewheel Control - ===========================*/ - s.mousewheel = { - event: false, - lastScrollTime: (new window.Date()).getTime() - }; - function isEventSupported() { - var eventName = 'onwheel'; - var isSupported = eventName in document; - - if (!isSupported) { - var element = document.createElement('div'); - element.setAttribute(eventName, 'return;'); - isSupported = typeof element[eventName] === 'function'; - } - - if (!isSupported && - document.implementation && - document.implementation.hasFeature && - // always returns true in newer browsers as per the standard. - // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature - document.implementation.hasFeature('', '') !== true ) { - // This is the only way to test support for the `wheel` event in IE9+. - isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); - } - - return isSupported; - } - /** - * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is - * complicated, thus this doc is long and (hopefully) detailed enough to answer - * your questions. - * - * If you need to react to the mouse wheel in a predictable way, this code is - * like your bestest friend. * hugs * - * - * As of today, there are 4 DOM event types you can listen to: - * - * 'wheel' -- Chrome(31+), FF(17+), IE(9+) - * 'mousewheel' -- Chrome, IE(6+), Opera, Safari - * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother! - * 'DOMMouseScroll' -- FF(0.9.7+) since 2003 - * - * So what to do? The is the best: - * - * normalizeWheel.getEventType(); - * - * In your event callback, use this code to get sane interpretation of the - * deltas. This code will return an object with properties: - * - * spinX -- normalized spin speed (use for zoom) - x plane - * spinY -- " - y plane - * pixelX -- normalized distance (to pixels) - x plane - * pixelY -- " - y plane - * - * Wheel values are provided by the browser assuming you are using the wheel to - * scroll a web page by a number of lines or pixels (or pages). Values can vary - * significantly on different platforms and browsers, forgetting that you can - * scroll at different speeds. Some devices (like trackpads) emit more events - * at smaller increments with fine granularity, and some emit massive jumps with - * linear speed or acceleration. - * - * This code does its best to normalize the deltas for you: - * - * - spin is trying to normalize how far the wheel was spun (or trackpad - * dragged). This is super useful for zoom support where you want to - * throw away the chunky scroll steps on the PC and make those equal to - * the slow and smooth tiny steps on the Mac. Key data: This code tries to - * resolve a single slow step on a wheel to 1. - * - * - pixel is normalizing the desired scroll delta in pixel units. You'll - * get the crazy differences between browsers, but at least it'll be in - * pixels! - * - * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This - * should translate to positive value zooming IN, negative zooming OUT. - * This matches the newer 'wheel' event. - * - * Why are there spinX, spinY (or pixels)? - * - * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn - * with a mouse. It results in side-scrolling in the browser by default. - * - * - spinY is what you expect -- it's the classic axis of a mouse wheel. - * - * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and - * probably is by browsers in conjunction with fancy 3D controllers .. but - * you know. - * - * Implementation info: - * - * Examples of 'wheel' event if you scroll slowly (down) by one step with an - * average mouse: - * - * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120) - * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12) - * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A) - * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120) - * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120) - * - * On the trackpad: - * - * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6) - * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A) - * - * On other/older browsers.. it's more complicated as there can be multiple and - * also missing delta values. - * - * The 'wheel' event is more standard: - * - * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents - * - * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and - * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain - * backward compatibility with older events. Those other values help us - * better normalize spin speed. Example of what the browsers provide: - * - * | event.wheelDelta | event.detail - * ------------------+------------------+-------------- - * Safari v5/OS X | -120 | 0 - * Safari v5/Win7 | -120 | 0 - * Chrome v17/OS X | -120 | 0 - * Chrome v17/Win7 | -120 | 0 - * IE9/Win7 | -120 | undefined - * Firefox v4/OS X | undefined | 1 - * Firefox v4/Win7 | undefined | 3 - * - */ - function normalizeWheel( /*object*/ event ) /*object*/ { - // Reasonable defaults - var PIXEL_STEP = 10; - var LINE_HEIGHT = 40; - var PAGE_HEIGHT = 800; - - var sX = 0, sY = 0, // spinX, spinY - pX = 0, pY = 0; // pixelX, pixelY - - // Legacy - if( 'detail' in event ) { - sY = event.detail; - } - if( 'wheelDelta' in event ) { - sY = -event.wheelDelta / 120; - } - if( 'wheelDeltaY' in event ) { - sY = -event.wheelDeltaY / 120; - } - if( 'wheelDeltaX' in event ) { - sX = -event.wheelDeltaX / 120; - } - - // side scrolling on FF with DOMMouseScroll - if( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) { - sX = sY; - sY = 0; - } - - pX = sX * PIXEL_STEP; - pY = sY * PIXEL_STEP; - - if( 'deltaY' in event ) { - pY = event.deltaY; - } - if( 'deltaX' in event ) { - pX = event.deltaX; - } - - if( (pX || pY) && event.deltaMode ) { - if( event.deltaMode === 1 ) { // delta in LINE units - pX *= LINE_HEIGHT; - pY *= LINE_HEIGHT; - } else { // delta in PAGE units - pX *= PAGE_HEIGHT; - pY *= PAGE_HEIGHT; - } - } - - // Fall-back if spin cannot be determined - if( pX && !sX ) { - sX = (pX < 1) ? -1 : 1; - } - if( pY && !sY ) { - sY = (pY < 1) ? -1 : 1; - } - - return { - spinX: sX, - spinY: sY, - pixelX: pX, - pixelY: pY - }; - } - if (s.params.mousewheelControl) { - /** - * The best combination if you prefer spinX + spinY normalization. It favors - * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with - * 'wheel' event, making spin speed determination impossible. - */ - s.mousewheel.event = (navigator.userAgent.indexOf('firefox') > -1) ? - 'DOMMouseScroll' : - isEventSupported() ? - 'wheel' : 'mousewheel'; - } - function handleMousewheel(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var delta = 0; - var rtlFactor = s.rtl ? -1 : 1; - - var data = normalizeWheel( e ); - - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; - else return; - } - else { - if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; - else return; - } - } - else { - delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? - data.pixelX * rtlFactor : - data.pixelY; - } - - if (delta === 0) return; - - if (s.params.mousewheelInvert) delta = -delta; - - if (!s.params.freeMode) { - if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) { - if (delta < 0) { - if ((!s.isEnd || s.params.loop) && !s.animating) { - s.slideNext(); - s.emit('onScroll', s, e); - } - else if (s.params.mousewheelReleaseOnEdges) return true; - } - else { - if ((!s.isBeginning || s.params.loop) && !s.animating) { - s.slidePrev(); - s.emit('onScroll', s, e); - } - else if (s.params.mousewheelReleaseOnEdges) return true; - } - } - s.mousewheel.lastScrollTime = (new window.Date()).getTime(); - - } - else { - //Freemode or scrollContainer: - var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity; - var wasBeginning = s.isBeginning, - wasEnd = s.isEnd; - - if (position >= s.minTranslate()) position = s.minTranslate(); - if (position <= s.maxTranslate()) position = s.maxTranslate(); - - s.setWrapperTransition(0); - s.setWrapperTranslate(position); - s.updateProgress(); - s.updateActiveIndex(); - - if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) { - s.updateClasses(); - } - - if (s.params.freeModeSticky) { - clearTimeout(s.mousewheel.timeout); - s.mousewheel.timeout = setTimeout(function () { - s.slideReset(); - }, 300); - } - else { - if (s.params.lazyLoading && s.lazy) { - s.lazy.load(); - } - } - // Emit event - s.emit('onScroll', s, e); - - // Stop autoplay - if (s.params.autoplay && s.params.autoplayDisableOnInteraction) s.stopAutoplay(); - - // Return page scroll on edge positions - if (position === 0 || position === s.maxTranslate()) return; - } - - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - return false; - } - s.disableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - var target = s.container; - if (s.params.mousewheelEventsTarged !== 'container') { - target = $(s.params.mousewheelEventsTarged); - } - target.off(s.mousewheel.event, handleMousewheel); - s.params.mousewheelControl = false; - return true; - }; - - s.enableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - var target = s.container; - if (s.params.mousewheelEventsTarged !== 'container') { - target = $(s.params.mousewheelEventsTarged); - } - target.on(s.mousewheel.event, handleMousewheel); - s.params.mousewheelControl = true; - return true; - }; - - - /*========================= - Parallax - ===========================*/ - function setParallaxTransform(el, progress) { - el = $(el); - var p, pX, pY; - var rtlFactor = s.rtl ? -1 : 1; - - p = el.attr('data-swiper-parallax') || '0'; - pX = el.attr('data-swiper-parallax-x'); - pY = el.attr('data-swiper-parallax-y'); - if (pX || pY) { - pX = pX || '0'; - pY = pY || '0'; - } - else { - if (s.isHorizontal()) { - pX = p; - pY = '0'; - } - else { - pY = p; - pX = '0'; - } - } - - if ((pX).indexOf('%') >= 0) { - pX = parseInt(pX, 10) * progress * rtlFactor + '%'; - } - else { - pX = pX * progress * rtlFactor + 'px' ; - } - if ((pY).indexOf('%') >= 0) { - pY = parseInt(pY, 10) * progress + '%'; - } - else { - pY = pY * progress + 'px' ; - } - - el.transform('translate3d(' + pX + ', ' + pY + ',0px)'); - } - s.parallax = { - setTranslate: function () { - s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - setParallaxTransform(this, s.progress); - - }); - s.slides.each(function () { - var slide = $(this); - slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () { - var progress = Math.min(Math.max(slide[0].progress, -1), 1); - setParallaxTransform(this, progress); - }); - }); - }, - setTransition: function (duration) { - if (typeof duration === 'undefined') duration = s.params.speed; - s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - var el = $(this); - var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - el.transition(parallaxDuration); - }); - } - }; - - - /*========================= - Zoom - ===========================*/ - s.zoom = { - // "Global" Props - scale: 1, - currentScale: 1, - isScaling: false, - gesture: { - slide: undefined, - slideWidth: undefined, - slideHeight: undefined, - image: undefined, - imageWrap: undefined, - zoomMax: s.params.zoomMax - }, - image: { - isTouched: undefined, - isMoved: undefined, - currentX: undefined, - currentY: undefined, - minX: undefined, - minY: undefined, - maxX: undefined, - maxY: undefined, - width: undefined, - height: undefined, - startX: undefined, - startY: undefined, - touchesStart: {}, - touchesCurrent: {} - }, - velocity: { - x: undefined, - y: undefined, - prevPositionX: undefined, - prevPositionY: undefined, - prevTime: undefined - }, - // Calc Scale From Multi-touches - getDistanceBetweenTouches: function (e) { - if (e.targetTouches.length < 2) return 1; - var x1 = e.targetTouches[0].pageX, - y1 = e.targetTouches[0].pageY, - x2 = e.targetTouches[1].pageX, - y2 = e.targetTouches[1].pageY; - var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); - return distance; - }, - // Events - onGestureStart: function (e) { - var z = s.zoom; - if (!s.support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - z.gesture.scaleStart = z.getDistanceBetweenTouches(e); - } - if (!z.gesture.slide || !z.gesture.slide.length) { - z.gesture.slide = $(this); - if (z.gesture.slide.length === 0) z.gesture.slide = s.slides.eq(s.activeIndex); - z.gesture.image = z.gesture.slide.find('img, svg, canvas'); - z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass); - z.gesture.zoomMax = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax ; - if (z.gesture.imageWrap.length === 0) { - z.gesture.image = undefined; - return; - } - } - z.gesture.image.transition(0); - z.isScaling = true; - }, - onGestureChange: function (e) { - var z = s.zoom; - if (!s.support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - z.gesture.scaleMove = z.getDistanceBetweenTouches(e); - } - if (!z.gesture.image || z.gesture.image.length === 0) return; - if (s.support.gestures) { - z.scale = e.scale * z.currentScale; - } - else { - z.scale = (z.gesture.scaleMove / z.gesture.scaleStart) * z.currentScale; - } - if (z.scale > z.gesture.zoomMax) { - z.scale = z.gesture.zoomMax - 1 + Math.pow((z.scale - z.gesture.zoomMax + 1), 0.5); - } - if (z.scale < s.params.zoomMin) { - z.scale = s.params.zoomMin + 1 - Math.pow((s.params.zoomMin - z.scale + 1), 0.5); - } - z.gesture.image.transform('translate3d(0,0,0) scale(' + z.scale + ')'); - }, - onGestureEnd: function (e) { - var z = s.zoom; - if (!s.support.gestures) { - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2) { - return; - } - } - if (!z.gesture.image || z.gesture.image.length === 0) return; - z.scale = Math.max(Math.min(z.scale, z.gesture.zoomMax), s.params.zoomMin); - z.gesture.image.transition(s.params.speed).transform('translate3d(0,0,0) scale(' + z.scale + ')'); - z.currentScale = z.scale; - z.isScaling = false; - if (z.scale === 1) z.gesture.slide = undefined; - }, - onTouchStart: function (s, e) { - var z = s.zoom; - if (!z.gesture.image || z.gesture.image.length === 0) return; - if (z.image.isTouched) return; - if (s.device.os === 'android') e.preventDefault(); - z.image.isTouched = true; - z.image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - z.image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - }, - onTouchMove: function (e) { - var z = s.zoom; - if (!z.gesture.image || z.gesture.image.length === 0) return; - s.allowClick = false; - if (!z.image.isTouched || !z.gesture.slide) return; - - if (!z.image.isMoved) { - z.image.width = z.gesture.image[0].offsetWidth; - z.image.height = z.gesture.image[0].offsetHeight; - z.image.startX = s.getTranslate(z.gesture.imageWrap[0], 'x') || 0; - z.image.startY = s.getTranslate(z.gesture.imageWrap[0], 'y') || 0; - z.gesture.slideWidth = z.gesture.slide[0].offsetWidth; - z.gesture.slideHeight = z.gesture.slide[0].offsetHeight; - z.gesture.imageWrap.transition(0); - if (s.rtl) z.image.startX = -z.image.startX; - if (s.rtl) z.image.startY = -z.image.startY; - } - // Define if we need image drag - var scaledWidth = z.image.width * z.scale; - var scaledHeight = z.image.height * z.scale; - - if (scaledWidth < z.gesture.slideWidth && scaledHeight < z.gesture.slideHeight) return; - - z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0); - z.image.maxX = -z.image.minX; - z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0); - z.image.maxY = -z.image.minY; - - z.image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - z.image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (!z.image.isMoved && !z.isScaling) { - if (s.isHorizontal() && - (Math.floor(z.image.minX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x < z.image.touchesStart.x) || - (Math.floor(z.image.maxX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x > z.image.touchesStart.x) - ) { - z.image.isTouched = false; - return; - } - else if (!s.isHorizontal() && - (Math.floor(z.image.minY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y < z.image.touchesStart.y) || - (Math.floor(z.image.maxY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y > z.image.touchesStart.y) - ) { - z.image.isTouched = false; - return; - } - } - e.preventDefault(); - e.stopPropagation(); - - z.image.isMoved = true; - z.image.currentX = z.image.touchesCurrent.x - z.image.touchesStart.x + z.image.startX; - z.image.currentY = z.image.touchesCurrent.y - z.image.touchesStart.y + z.image.startY; - - if (z.image.currentX < z.image.minX) { - z.image.currentX = z.image.minX + 1 - Math.pow((z.image.minX - z.image.currentX + 1), 0.8); - } - if (z.image.currentX > z.image.maxX) { - z.image.currentX = z.image.maxX - 1 + Math.pow((z.image.currentX - z.image.maxX + 1), 0.8); - } - - if (z.image.currentY < z.image.minY) { - z.image.currentY = z.image.minY + 1 - Math.pow((z.image.minY - z.image.currentY + 1), 0.8); - } - if (z.image.currentY > z.image.maxY) { - z.image.currentY = z.image.maxY - 1 + Math.pow((z.image.currentY - z.image.maxY + 1), 0.8); - } - - //Velocity - if (!z.velocity.prevPositionX) z.velocity.prevPositionX = z.image.touchesCurrent.x; - if (!z.velocity.prevPositionY) z.velocity.prevPositionY = z.image.touchesCurrent.y; - if (!z.velocity.prevTime) z.velocity.prevTime = Date.now(); - z.velocity.x = (z.image.touchesCurrent.x - z.velocity.prevPositionX) / (Date.now() - z.velocity.prevTime) / 2; - z.velocity.y = (z.image.touchesCurrent.y - z.velocity.prevPositionY) / (Date.now() - z.velocity.prevTime) / 2; - if (Math.abs(z.image.touchesCurrent.x - z.velocity.prevPositionX) < 2) z.velocity.x = 0; - if (Math.abs(z.image.touchesCurrent.y - z.velocity.prevPositionY) < 2) z.velocity.y = 0; - z.velocity.prevPositionX = z.image.touchesCurrent.x; - z.velocity.prevPositionY = z.image.touchesCurrent.y; - z.velocity.prevTime = Date.now(); - - z.gesture.imageWrap.transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)'); - }, - onTouchEnd: function (s, e) { - var z = s.zoom; - if (!z.gesture.image || z.gesture.image.length === 0) return; - if (!z.image.isTouched || !z.image.isMoved) { - z.image.isTouched = false; - z.image.isMoved = false; - return; - } - z.image.isTouched = false; - z.image.isMoved = false; - var momentumDurationX = 300; - var momentumDurationY = 300; - var momentumDistanceX = z.velocity.x * momentumDurationX; - var newPositionX = z.image.currentX + momentumDistanceX; - var momentumDistanceY = z.velocity.y * momentumDurationY; - var newPositionY = z.image.currentY + momentumDistanceY; - - //Fix duration - if (z.velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - z.image.currentX) / z.velocity.x); - if (z.velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - z.image.currentY) / z.velocity.y); - var momentumDuration = Math.max(momentumDurationX, momentumDurationY); - - z.image.currentX = newPositionX; - z.image.currentY = newPositionY; - - // Define if we need image drag - var scaledWidth = z.image.width * z.scale; - var scaledHeight = z.image.height * z.scale; - z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0); - z.image.maxX = -z.image.minX; - z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0); - z.image.maxY = -z.image.minY; - z.image.currentX = Math.max(Math.min(z.image.currentX, z.image.maxX), z.image.minX); - z.image.currentY = Math.max(Math.min(z.image.currentY, z.image.maxY), z.image.minY); - - z.gesture.imageWrap.transition(momentumDuration).transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)'); - }, - onTransitionEnd: function (s) { - var z = s.zoom; - if (z.gesture.slide && s.previousIndex !== s.activeIndex) { - z.gesture.image.transform('translate3d(0,0,0) scale(1)'); - z.gesture.imageWrap.transform('translate3d(0,0,0)'); - z.gesture.slide = z.gesture.image = z.gesture.imageWrap = undefined; - z.scale = z.currentScale = 1; - } - }, - // Toggle Zoom - toggleZoom: function (s, e) { - var z = s.zoom; - if (!z.gesture.slide) { - z.gesture.slide = s.clickedSlide ? $(s.clickedSlide) : s.slides.eq(s.activeIndex); - z.gesture.image = z.gesture.slide.find('img, svg, canvas'); - z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass); - } - if (!z.gesture.image || z.gesture.image.length === 0) return; - - var touchX, touchY, offsetX, offsetY, diffX, diffY, translateX, translateY, imageWidth, imageHeight, scaledWidth, scaledHeight, translateMinX, translateMinY, translateMaxX, translateMaxY, slideWidth, slideHeight; - - if (typeof z.image.touchesStart.x === 'undefined' && e) { - touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } - else { - touchX = z.image.touchesStart.x; - touchY = z.image.touchesStart.y; - } - - if (z.scale && z.scale !== 1) { - // Zoom Out - z.scale = z.currentScale = 1; - z.gesture.imageWrap.transition(300).transform('translate3d(0,0,0)'); - z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(1)'); - z.gesture.slide = undefined; - } - else { - // Zoom In - z.scale = z.currentScale = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax; - if (e) { - slideWidth = z.gesture.slide[0].offsetWidth; - slideHeight = z.gesture.slide[0].offsetHeight; - offsetX = z.gesture.slide.offset().left; - offsetY = z.gesture.slide.offset().top; - diffX = offsetX + slideWidth/2 - touchX; - diffY = offsetY + slideHeight/2 - touchY; - - imageWidth = z.gesture.image[0].offsetWidth; - imageHeight = z.gesture.image[0].offsetHeight; - scaledWidth = imageWidth * z.scale; - scaledHeight = imageHeight * z.scale; - - translateMinX = Math.min((slideWidth / 2 - scaledWidth / 2), 0); - translateMinY = Math.min((slideHeight / 2 - scaledHeight / 2), 0); - translateMaxX = -translateMinX; - translateMaxY = -translateMinY; - - translateX = diffX * z.scale; - translateY = diffY * z.scale; - - if (translateX < translateMinX) { - translateX = translateMinX; - } - if (translateX > translateMaxX) { - translateX = translateMaxX; - } - - if (translateY < translateMinY) { - translateY = translateMinY; - } - if (translateY > translateMaxY) { - translateY = translateMaxY; - } - } - else { - translateX = 0; - translateY = 0; - } - z.gesture.imageWrap.transition(300).transform('translate3d(' + translateX + 'px, ' + translateY + 'px,0)'); - z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(' + z.scale + ')'); - } - }, - // Attach/Detach Events - attachEvents: function (detach) { - var action = detach ? 'off' : 'on'; - - if (s.params.zoom) { - var target = s.slides; - var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false; - // Scale image - if (s.support.gestures) { - s.slides[action]('gesturestart', s.zoom.onGestureStart, passiveListener); - s.slides[action]('gesturechange', s.zoom.onGestureChange, passiveListener); - s.slides[action]('gestureend', s.zoom.onGestureEnd, passiveListener); - } - else if (s.touchEvents.start === 'touchstart') { - s.slides[action](s.touchEvents.start, s.zoom.onGestureStart, passiveListener); - s.slides[action](s.touchEvents.move, s.zoom.onGestureChange, passiveListener); - s.slides[action](s.touchEvents.end, s.zoom.onGestureEnd, passiveListener); - } - - // Move image - s[action]('touchStart', s.zoom.onTouchStart); - s.slides.each(function (index, slide){ - if ($(slide).find('.' + s.params.zoomContainerClass).length > 0) { - $(slide)[action](s.touchEvents.move, s.zoom.onTouchMove); - } - }); - s[action]('touchEnd', s.zoom.onTouchEnd); - - // Scale Out - s[action]('transitionEnd', s.zoom.onTransitionEnd); - if (s.params.zoomToggle) { - s.on('doubleTap', s.zoom.toggleZoom); - } - } - }, - init: function () { - s.zoom.attachEvents(); - }, - destroy: function () { - s.zoom.attachEvents(true); - } - }; - - - /*========================= - Plugins API. Collect all and init all plugins - ===========================*/ - s._plugins = []; - for (var plugin in s.plugins) { - var p = s.plugins[plugin](s, s.params[plugin]); - if (p) s._plugins.push(p); - } - // Method to call all plugins event/method - s.callPlugins = function (eventName) { - for (var i = 0; i < s._plugins.length; i++) { - if (eventName in s._plugins[i]) { - s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - }; - - - /*========================= - Events/Callbacks/Plugins Emitter - ===========================*/ - function normalizeEventName (eventName) { - if (eventName.indexOf('on') !== 0) { - if (eventName[0] !== eventName[0].toUpperCase()) { - eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); - } - else { - eventName = 'on' + eventName; - } - } - return eventName; - } - s.emitterEventListeners = { - - }; - s.emit = function (eventName) { - // Trigger callbacks - if (s.params[eventName]) { - s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - var i; - // Trigger events - if (s.emitterEventListeners[eventName]) { - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - // Trigger plugins - if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - }; - s.on = function (eventName, handler) { - eventName = normalizeEventName(eventName); - if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; - s.emitterEventListeners[eventName].push(handler); - return s; - }; - s.off = function (eventName, handler) { - var i; - eventName = normalizeEventName(eventName); - if (typeof handler === 'undefined') { - // Remove all handlers for such event - s.emitterEventListeners[eventName] = []; - return s; - } - if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); - } - return s; - }; - s.once = function (eventName, handler) { - eventName = normalizeEventName(eventName); - var _handler = function () { - handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - s.off(eventName, _handler); - }; - s.on(eventName, _handler); - return s; - }; - - - // Accessibility tools - s.a11y = { - makeFocusable: function ($el) { - $el.attr('tabIndex', '0'); - return $el; - }, - addRole: function ($el, role) { - $el.attr('role', role); - return $el; - }, - - addLabel: function ($el, label) { - $el.attr('aria-label', label); - return $el; - }, - - disable: function ($el) { - $el.attr('aria-disabled', true); - return $el; - }, - - enable: function ($el) { - $el.attr('aria-disabled', false); - return $el; - }, - - onEnterKey: function (event) { - if (event.keyCode !== 13) return; - if ($(event.target).is(s.params.nextButton)) { - s.onClickNext(event); - if (s.isEnd) { - s.a11y.notify(s.params.lastSlideMessage); - } - else { - s.a11y.notify(s.params.nextSlideMessage); - } - } - else if ($(event.target).is(s.params.prevButton)) { - s.onClickPrev(event); - if (s.isBeginning) { - s.a11y.notify(s.params.firstSlideMessage); - } - else { - s.a11y.notify(s.params.prevSlideMessage); - } - } - if ($(event.target).is('.' + s.params.bulletClass)) { - $(event.target)[0].click(); - } - }, - - liveRegion: $('<span class="' + s.params.notificationClass + '" aria-live="assertive" aria-atomic="true"></span>'), - - notify: function (message) { - var notification = s.a11y.liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(message); - }, - init: function () { - // Setup accessibility - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.a11y.makeFocusable(s.nextButton); - s.a11y.addRole(s.nextButton, 'button'); - s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.a11y.makeFocusable(s.prevButton); - s.a11y.addRole(s.prevButton, 'button'); - s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage); - } - - $(s.container).append(s.a11y.liveRegion); - }, - initPagination: function () { - if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) { - s.bullets.each(function () { - var bullet = $(this); - s.a11y.makeFocusable(bullet); - s.a11y.addRole(bullet, 'button'); - s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1)); - }); - } - }, - destroy: function () { - if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove(); - } - }; - - - /*========================= - Init/Destroy - ===========================*/ - s.init = function () { - if (s.params.loop) s.createLoop(); - s.updateContainerSize(); - s.updateSlidesSize(); - s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - if (s.params.scrollbarDraggable) { - s.scrollbar.enableDraggable(); - } - } - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - if (!s.params.loop) s.updateProgress(); - s.effects[s.params.effect].setTranslate(); - } - if (s.params.loop) { - s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit); - } - else { - s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit); - if (s.params.initialSlide === 0) { - if (s.parallax && s.params.parallax) s.parallax.setTranslate(); - if (s.lazy && s.params.lazyLoading) { - s.lazy.load(); - s.lazy.initialImageLoaded = true; - } - } - } - s.attachEvents(); - if (s.params.observer && s.support.observer) { - s.initObservers(); - } - if (s.params.preloadImages && !s.params.lazyLoading) { - s.preloadImages(); - } - if (s.params.zoom && s.zoom) { - s.zoom.init(); - } - if (s.params.autoplay) { - s.startAutoplay(); - } - if (s.params.keyboardControl) { - if (s.enableKeyboardControl) s.enableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.enableMousewheelControl) s.enableMousewheelControl(); - } - // Deprecated hashnavReplaceState changed to replaceState for use in hashnav and history - if (s.params.hashnavReplaceState) { - s.params.replaceState = s.params.hashnavReplaceState; - } - if (s.params.history) { - if (s.history) s.history.init(); - } - if (s.params.hashnav) { - if (s.hashnav) s.hashnav.init(); - } - if (s.params.a11y && s.a11y) s.a11y.init(); - s.emit('onInit', s); - }; - - // Cleanup dynamic styles - s.cleanupStyles = function () { - // Container - s.container.removeClass(s.classNames.join(' ')).removeAttr('style'); - - // Wrapper - s.wrapper.removeAttr('style'); - - // Slides - if (s.slides && s.slides.length) { - s.slides - .removeClass([ - s.params.slideVisibleClass, - s.params.slideActiveClass, - s.params.slideNextClass, - s.params.slidePrevClass - ].join(' ')) - .removeAttr('style') - .removeAttr('data-swiper-column') - .removeAttr('data-swiper-row'); - } - - // Pagination/Bullets - if (s.paginationContainer && s.paginationContainer.length) { - s.paginationContainer.removeClass(s.params.paginationHiddenClass); - } - if (s.bullets && s.bullets.length) { - s.bullets.removeClass(s.params.bulletActiveClass); - } - - // Buttons - if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass); - if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass); - - // Scrollbar - if (s.params.scrollbar && s.scrollbar) { - if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style'); - if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style'); - } - }; - - // Destroy - s.destroy = function (deleteInstance, cleanupStyles) { - // Detach evebts - s.detachEvents(); - // Stop autoplay - s.stopAutoplay(); - // Disable draggable - if (s.params.scrollbar && s.scrollbar) { - if (s.params.scrollbarDraggable) { - s.scrollbar.disableDraggable(); - } - } - // Destroy loop - if (s.params.loop) { - s.destroyLoop(); - } - // Cleanup styles - if (cleanupStyles) { - s.cleanupStyles(); - } - // Disconnect observer - s.disconnectObservers(); - - // Destroy zoom - if (s.params.zoom && s.zoom) { - s.zoom.destroy(); - } - // Disable keyboard/mousewheel - if (s.params.keyboardControl) { - if (s.disableKeyboardControl) s.disableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.disableMousewheelControl) s.disableMousewheelControl(); - } - // Disable a11y - if (s.params.a11y && s.a11y) s.a11y.destroy(); - // Delete history popstate - if (s.params.history && !s.params.replaceState) { - window.removeEventListener('popstate', s.history.setHistoryPopState); - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.destroy(); - } - // Destroy callback - s.emit('onDestroy'); - // Delete instance - if (deleteInstance !== false) s = null; - }; - - s.init(); - - - - // Return swiper instance - return s; - }; - - - /*================================================== - Prototype - ====================================================*/ - Swiper.prototype = { - isSafari: (function () { - var ua = window.navigator.userAgent.toLowerCase(); - return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); - })(), - isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), - isArray: function (arr) { - return Object.prototype.toString.apply(arr) === '[object Array]'; - }, - /*================================================== - Browser - ====================================================*/ - browser: { - ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled, - ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1), - lteIE9: (function() { - // create temporary DIV - var div = document.createElement('div'); - // add content to tmp DIV which is wrapped into the IE HTML conditional statement - div.innerHTML = '<!--[if lte IE 9]><i></i><![endif]-->'; - // return true / false value based on what will browser render - return div.getElementsByTagName('i').length === 1; - })() - }, - /*================================================== - Devices - ====================================================*/ - device: (function () { - var ua = window.navigator.userAgent; - var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); - var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); - var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); - return { - ios: ipad || iphone || ipod, - android: android - }; - })(), - /*================================================== - Feature Detection - ====================================================*/ - support: { - touch : (window.Modernizr && Modernizr.touch === true) || (function () { - return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); - })(), - - transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () { - var div = document.createElement('div').style; - return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); - })(), - - flexbox: (function () { - var div = document.createElement('div').style; - var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); - for (var i = 0; i < styles.length; i++) { - if (styles[i] in div) return true; - } - })(), - - observer: (function () { - return ('MutationObserver' in window || 'WebkitMutationObserver' in window); - })(), - - passiveListener: (function () { - var supportsPassive = false; - try { - var opts = Object.defineProperty({}, 'passive', { - get: function() { - supportsPassive = true; - } - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {} - return supportsPassive; - })(), - - gestures: (function () { - return 'ongesturestart' in window; - })() - }, - /*================================================== - Plugins - ====================================================*/ - plugins: {} - }; - - - /*=========================== - Dom7 Library - ===========================*/ - var Dom7 = (function () { - var Dom7 = function (arr) { - var _this = this, i = 0; - // Create array-like object - for (i = 0; i < arr.length; i++) { - _this[i] = arr[i]; - } - _this.length = arr.length; - // Return collection with methods - return this; - }; - var $ = function (selector, context) { - var arr = [], i = 0; - if (selector && !context) { - if (selector instanceof Dom7) { - return selector; - } - } - if (selector) { - // String - if (typeof selector === 'string') { - var els, tempParent, html = selector.trim(); - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - var toCreate = 'div'; - if (html.indexOf('<li') === 0) toCreate = 'ul'; - if (html.indexOf('<tr') === 0) toCreate = 'tbody'; - if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr'; - if (html.indexOf('<tbody') === 0) toCreate = 'table'; - if (html.indexOf('<option') === 0) toCreate = 'select'; - tempParent = document.createElement(toCreate); - tempParent.innerHTML = selector; - for (i = 0; i < tempParent.childNodes.length; i++) { - arr.push(tempParent.childNodes[i]); - } - } - else { - if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) { - // Pure ID selector - els = [document.getElementById(selector.split('#')[1])]; - } - else { - // Other selectors - els = (context || document).querySelectorAll(selector); - } - for (i = 0; i < els.length; i++) { - if (els[i]) arr.push(els[i]); - } - } - } - // Node/element - else if (selector.nodeType || selector === window || selector === document) { - arr.push(selector); - } - //Array of elements or instance of Dom - else if (selector.length > 0 && selector[0].nodeType) { - for (i = 0; i < selector.length; i++) { - arr.push(selector[i]); - } - } - } - return new Dom7(arr); - }; - Dom7.prototype = { - // Classes and attriutes - addClass: function (className) { - if (typeof className === 'undefined') { - return this; - } - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.add(classes[i]); - } - } - return this; - }, - removeClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.remove(classes[i]); - } - } - return this; - }, - hasClass: function (className) { - if (!this[0]) return false; - else return this[0].classList.contains(className); - }, - toggleClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.toggle(classes[i]); - } - } - return this; - }, - attr: function (attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - else return undefined; - } - else { - // Set attrs - for (var i = 0; i < this.length; i++) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } - else { - // Object - for (var attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - return this; - } - }, - removeAttr: function (attr) { - for (var i = 0; i < this.length; i++) { - this[i].removeAttribute(attr); - } - return this; - }, - data: function (key, value) { - if (typeof value === 'undefined') { - // Get value - if (this[0]) { - var dataKey = this[0].getAttribute('data-' + key); - if (dataKey) return dataKey; - else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key]; - else return undefined; - } - else return undefined; - } - else { - // Set value - for (var i = 0; i < this.length; i++) { - var el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - return this; - } - }, - // Transforms - transform : function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }, - transition: function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }, - //Events - on: function (eventName, targetSelector, listener, capture) { - function handleLiveEvent(e) { - var target = e.target; - if ($(target).is(targetSelector)) listener.call(target, e); - else { - var parents = $(target).parents(); - for (var k = 0; k < parents.length; k++) { - if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e); - } - } - } - var events = eventName.split(' '); - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - for (j = 0; j < events.length; j++) { - this[i].addEventListener(events[j], listener, capture); - } - } - else { - //Live events - for (j = 0; j < events.length; j++) { - if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = []; - this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent}); - this[i].addEventListener(events[j], handleLiveEvent, capture); - } - } - } - - return this; - }, - off: function (eventName, targetSelector, listener, capture) { - var events = eventName.split(' '); - for (var i = 0; i < events.length; i++) { - for (var j = 0; j < this.length; j++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - this[j].removeEventListener(events[i], listener, capture); - } - else { - // Live event - if (this[j].dom7LiveListeners) { - for (var k = 0; k < this[j].dom7LiveListeners.length; k++) { - if (this[j].dom7LiveListeners[k].listener === listener) { - this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture); - } - } - } - } - } - } - return this; - }, - once: function (eventName, targetSelector, listener, capture) { - var dom = this; - if (typeof targetSelector === 'function') { - targetSelector = false; - listener = arguments[1]; - capture = arguments[2]; - } - function proxy(e) { - listener(e); - dom.off(eventName, targetSelector, proxy, capture); - } - dom.on(eventName, targetSelector, proxy, capture); - }, - trigger: function (eventName, eventData) { - for (var i = 0; i < this.length; i++) { - var evt; - try { - evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true}); - } - catch (e) { - evt = document.createEvent('Event'); - evt.initEvent(eventName, true, true); - evt.detail = eventData; - } - this[i].dispatchEvent(evt); - } - return this; - }, - transitionEnd: function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }, - // Sizing/Styles - width: function () { - if (this[0] === window) { - return window.innerWidth; - } - else { - if (this.length > 0) { - return parseFloat(this.css('width')); - } - else { - return null; - } - } - }, - outerWidth: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left')); - else - return this[0].offsetWidth; - } - else return null; - }, - height: function () { - if (this[0] === window) { - return window.innerHeight; - } - else { - if (this.length > 0) { - return parseFloat(this.css('height')); - } - else { - return null; - } - } - }, - outerHeight: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom')); - else - return this[0].offsetHeight; - } - else return null; - }, - offset: function () { - if (this.length > 0) { - var el = this[0]; - var box = el.getBoundingClientRect(); - var body = document.body; - var clientTop = el.clientTop || body.clientTop || 0; - var clientLeft = el.clientLeft || body.clientLeft || 0; - var scrollTop = window.pageYOffset || el.scrollTop; - var scrollLeft = window.pageXOffset || el.scrollLeft; - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - }; - } - else { - return null; - } - }, - css: function (props, value) { - var i; - if (arguments.length === 1) { - if (typeof props === 'string') { - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } - else { - for (i = 0; i < this.length; i++) { - for (var prop in props) { - this[i].style[prop] = props[prop]; - } - } - return this; - } - } - if (arguments.length === 2 && typeof props === 'string') { - for (i = 0; i < this.length; i++) { - this[i].style[props] = value; - } - return this; - } - return this; - }, - - //Dom manipulation - each: function (callback) { - for (var i = 0; i < this.length; i++) { - callback.call(this[i], i, this[i]); - } - return this; - }, - html: function (html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : undefined; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].innerHTML = html; - } - return this; - } - }, - text: function (text) { - if (typeof text === 'undefined') { - if (this[0]) { - return this[0].textContent.trim(); - } - else return null; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].textContent = text; - } - return this; - } - }, - is: function (selector) { - if (!this[0]) return false; - var compareWith, i; - if (typeof selector === 'string') { - var el = this[0]; - if (el === document) return selector === document; - if (el === window) return selector === window; - - if (el.matches) return el.matches(selector); - else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector); - else if (el.msMatchesSelector) return el.msMatchesSelector(selector); - else { - compareWith = $(selector); - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - } - else if (selector === document) return this[0] === document; - else if (selector === window) return this[0] === window; - else { - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - return false; - } - - }, - index: function () { - if (this[0]) { - var child = this[0]; - var i = 0; - while ((child = child.previousSibling) !== null) { - if (child.nodeType === 1) i++; - } - return i; - } - else return undefined; - }, - eq: function (index) { - if (typeof index === 'undefined') return this; - var length = this.length; - var returnIndex; - if (index > length - 1) { - return new Dom7([]); - } - if (index < 0) { - returnIndex = length + index; - if (returnIndex < 0) return new Dom7([]); - else return new Dom7([this[returnIndex]]); - } - return new Dom7([this[index]]); - }, - append: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].appendChild(newChild[j]); - } - } - else { - this[i].appendChild(newChild); - } - } - return this; - }, - prepend: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - for (j = tempDiv.childNodes.length - 1; j >= 0; j--) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - // this[i].insertAdjacentHTML('afterbegin', newChild); - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } - else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - return this; - }, - insertBefore: function (selector) { - var before = $(selector); - for (var i = 0; i < this.length; i++) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } - else if (before.length > 1) { - for (var j = 0; j < before.length; j++) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - }, - insertAfter: function (selector) { - var after = $(selector); - for (var i = 0; i < this.length; i++) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } - else if (after.length > 1) { - for (var j = 0; j < after.length; j++) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - }, - next: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - nextAll: function (selector) { - var nextEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.nextElementSibling) { - var next = el.nextElementSibling; - if (selector) { - if($(next).is(selector)) nextEls.push(next); - } - else nextEls.push(next); - el = next; - } - return new Dom7(nextEls); - }, - prev: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - prevAll: function (selector) { - var prevEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.previousElementSibling) { - var prev = el.previousElementSibling; - if (selector) { - if($(prev).is(selector)) prevEls.push(prev); - } - else prevEls.push(prev); - el = prev; - } - return new Dom7(prevEls); - }, - parent: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } - else { - parents.push(this[i].parentNode); - } - } - return $($.unique(parents)); - }, - parents: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - var parent = this[i].parentNode; - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } - else { - parents.push(parent); - } - parent = parent.parentNode; - } - } - return $($.unique(parents)); - }, - find : function (selector) { - var foundElements = []; - for (var i = 0; i < this.length; i++) { - var found = this[i].querySelectorAll(selector); - for (var j = 0; j < found.length; j++) { - foundElements.push(found[j]); - } - } - return new Dom7(foundElements); - }, - children: function (selector) { - var children = []; - for (var i = 0; i < this.length; i++) { - var childNodes = this[i].childNodes; - - for (var j = 0; j < childNodes.length; j++) { - if (!selector) { - if (childNodes[j].nodeType === 1) children.push(childNodes[j]); - } - else { - if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]); - } - } - } - return new Dom7($.unique(children)); - }, - remove: function () { - for (var i = 0; i < this.length; i++) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - return this; - }, - add: function () { - var dom = this; - var i, j; - for (i = 0; i < arguments.length; i++) { - var toAdd = $(arguments[i]); - for (j = 0; j < toAdd.length; j++) { - dom[dom.length] = toAdd[j]; - dom.length++; - } - } - return dom; - } - }; - $.fn = Dom7.prototype; - $.unique = function (arr) { - var unique = []; - for (var i = 0; i < arr.length; i++) { - if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]); - } - return unique; - }; - - return $; - })(); - - - /*=========================== - Get Dom libraries - ===========================*/ - var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7']; - for (var i = 0; i < swiperDomPlugins.length; i++) { - if (window[swiperDomPlugins[i]]) { - addLibraryPlugin(window[swiperDomPlugins[i]]); - } - } - // Required DOM Plugins - var domLib; - if (typeof Dom7 === 'undefined') { - domLib = window.Dom7 || window.Zepto || window.jQuery; - } - else { - domLib = Dom7; - } - - - /*=========================== - Add .swiper plugin from Dom libraries - ===========================*/ - function addLibraryPlugin(lib) { - lib.fn.swiper = function (params) { - var firstInstance; - lib(this).each(function () { - var s = new Swiper(this, params); - if (!firstInstance) firstInstance = s; - }); - return firstInstance; - }; - } - - if (domLib) { - if (!('transitionEnd' in domLib.fn)) { - domLib.fn.transitionEnd = function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }; - } - if (!('transform' in domLib.fn)) { - domLib.fn.transform = function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }; - } - if (!('transition' in domLib.fn)) { - domLib.fn.transition = function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }; - } - if (!('outerWidth' in domLib.fn)) { - domLib.fn.outerWidth = function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left')); - else - return this[0].offsetWidth; - } - else return null; - }; - } - } - - - window.Swiper = Swiper; -})(); - -/*=========================== -Swiper AMD Export -===========================*/ -if (true) -{ - module.exports = window.Swiper; -} -else if (typeof define === 'function' && define.amd) { - define([], function () { - 'use strict'; - return window.Swiper; - }); -} - - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "../../../../../node_modules/timers-browserify/main.js": -/***/ (function(module, exports, __webpack_require__) { - -var apply = Function.prototype.apply; - -// DOM APIs, for completeness - -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { - if (timeout) { - timeout.close(); - } -}; - -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; -} -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; - -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; - -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; - -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } -}; - -// setimmediate attaches itself to the global object -__webpack_require__("../../../../../node_modules/setimmediate/setImmediate.js"); -exports.setImmediate = setImmediate; -exports.clearImmediate = clearImmediate; - - -/***/ }), - -/***/ "../../../../../node_modules/waypoints/lib/noframework.waypoints.min.js": -/***/ (function(module, exports) { - -/*! -Waypoints - 4.0.1 -Copyright © 2011-2016 Caleb Troughton -Licensed under the MIT license. -https://github.com/imakewebthings/waypoints/blob/master/licenses.txt -*/ -!function(){"use strict";function t(n){if(!n)throw new Error("No options passed to Waypoint constructor");if(!n.element)throw new Error("No element option passed to Waypoint constructor");if(!n.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,n),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=n.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var n in i)e.push(i[n]);for(var o=0,r=e.length;r>o;o++)e[o][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=o.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,n[t.waypointContextKey]=this,i+=1,o.windowContext||(o.windowContext=!0,o.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,n={},o=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete n[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,o.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||o.isTouch)&&(e.didScroll=!0,o.requestAnimationFrame(t))})},e.prototype.handleResize=function(){o.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var n=e[i],o=n.newScroll>n.oldScroll,r=o?n.forward:n.backward;for(var s in this.waypoints[i]){var l=this.waypoints[i][s];if(null!==l.triggerPoint){var a=n.oldScroll<l.triggerPoint,h=n.newScroll>=l.triggerPoint,p=a&&h,u=!a&&!h;(p||u)&&(l.queueTrigger(r),t[l.group.id]=l.group)}}}for(var d in t)t[d].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?o.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?o.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var n=0,o=t.length;o>n;n++)t[n].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),n={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var l in this.waypoints[r]){var a,h,p,u,d,f=this.waypoints[r][l],c=f.options.offset,w=f.triggerPoint,y=0,g=null==w;f.element!==f.element.window&&(y=f.adapter.offset()[s.offsetProp]),"function"==typeof c?c=c.apply(f):"string"==typeof c&&(c=parseFloat(c),f.options.offset.indexOf("%")>-1&&(c=Math.ceil(s.contextDimension*c/100))),a=s.contextScroll-s.contextOffset,f.triggerPoint=Math.floor(y+a-c),h=w<s.oldScroll,p=f.triggerPoint>=s.oldScroll,u=h&&p,d=!h&&!p,!g&&u?(f.queueTrigger(s.backward),n[f.group.id]=f.group):!g&&d?(f.queueTrigger(s.forward),n[f.group.id]=f.group):g&&s.oldScroll>=f.triggerPoint&&(f.queueTrigger(s.forward),n[f.group.id]=f.group)}}return o.requestAnimationFrame(function(){for(var t in n)n[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in n)n[t].refresh()},e.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},o.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},o.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}var n={vertical:{},horizontal:{}},o=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var n=this.triggerQueues[i],o="up"===i||"left"===i;n.sort(o?e:t);for(var r=0,s=n.length;s>r;r+=1){var l=n[r];(l.options.continuous||r===n.length-1)&&l.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints),n=i===this.waypoints.length-1;return n?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=o.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return n[t.axis][t.name]||new i(t)},o.Group=i}(),function(){"use strict";function t(t){return t===t.window}function e(e){return t(e)?e:e.defaultView}function i(t){this.element=t,this.handlers={}}var n=window.Waypoint;i.prototype.innerHeight=function(){var e=t(this.element);return e?this.element.innerHeight:this.element.clientHeight},i.prototype.innerWidth=function(){var e=t(this.element);return e?this.element.innerWidth:this.element.clientWidth},i.prototype.off=function(t,e){function i(t,e,i){for(var n=0,o=e.length-1;o>n;n++){var r=e[n];i&&i!==r||t.removeEventListener(r)}}var n=t.split("."),o=n[0],r=n[1],s=this.element;if(r&&this.handlers[r]&&o)i(s,this.handlers[r][o],e),this.handlers[r][o]=[];else if(o)for(var l in this.handlers)i(s,this.handlers[l][o]||[],e),this.handlers[l][o]=[];else if(r&&this.handlers[r]){for(var a in this.handlers[r])i(s,this.handlers[r][a],e);this.handlers[r]={}}},i.prototype.offset=function(){if(!this.element.ownerDocument)return null;var t=this.element.ownerDocument.documentElement,i=e(this.element.ownerDocument),n={top:0,left:0};return this.element.getBoundingClientRect&&(n=this.element.getBoundingClientRect()),{top:n.top+i.pageYOffset-t.clientTop,left:n.left+i.pageXOffset-t.clientLeft}},i.prototype.on=function(t,e){var i=t.split("."),n=i[0],o=i[1]||"__default",r=this.handlers[o]=this.handlers[o]||{},s=r[n]=r[n]||[];s.push(e),this.element.addEventListener(n,e)},i.prototype.outerHeight=function(e){var i,n=this.innerHeight();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginTop,10),n+=parseInt(i.marginBottom,10)),n},i.prototype.outerWidth=function(e){var i,n=this.innerWidth();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginLeft,10),n+=parseInt(i.marginRight,10)),n},i.prototype.scrollLeft=function(){var t=e(this.element);return t?t.pageXOffset:this.element.scrollLeft},i.prototype.scrollTop=function(){var t=e(this.element);return t?t.pageYOffset:this.element.scrollTop},i.extend=function(){function t(t,e){if("object"==typeof t&&"object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}for(var e=Array.prototype.slice.call(arguments),i=1,n=e.length;n>i;i++)t(e[0],e[i]);return e[0]},i.inArray=function(t,e,i){return null==e?-1:e.indexOf(t,i)},i.isEmptyObject=function(t){for(var e in t)return!1;return!0},n.adapters.push({name:"noframework",Adapter:i}),n.Adapter=i}(); - -/***/ }), - -/***/ "../../../../../node_modules/waypoints/lib/shortcuts/inview.min.js": -/***/ (function(module, exports) { - -/*! -Waypoints Inview Shortcut - 4.0.1 -Copyright © 2011-2016 Caleb Troughton -Licensed under the MIT license. -https://github.com/imakewebthings/waypoints/blob/master/licenses.txt -*/ -!function(){"use strict";function t(){}function e(t){this.options=i.Adapter.extend({},e.defaults,t),this.axis=this.options.horizontal?"horizontal":"vertical",this.waypoints=[],this.element=this.options.element,this.createWaypoints()}var i=window.Waypoint;e.prototype.createWaypoints=function(){for(var t={vertical:[{down:"enter",up:"exited",offset:"100%"},{down:"entered",up:"exit",offset:"bottom-in-view"},{down:"exit",up:"entered",offset:0},{down:"exited",up:"enter",offset:function(){return-this.adapter.outerHeight()}}],horizontal:[{right:"enter",left:"exited",offset:"100%"},{right:"entered",left:"exit",offset:"right-in-view"},{right:"exit",left:"entered",offset:0},{right:"exited",left:"enter",offset:function(){return-this.adapter.outerWidth()}}]},e=0,i=t[this.axis].length;i>e;e++){var n=t[this.axis][e];this.createWaypoint(n)}},e.prototype.createWaypoint=function(t){var e=this;this.waypoints.push(new i({context:this.options.context,element:this.options.element,enabled:this.options.enabled,handler:function(t){return function(i){e.options[t[i]].call(e,i)}}(t),offset:t.offset,horizontal:this.options.horizontal}))},e.prototype.destroy=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].destroy();this.waypoints=[]},e.prototype.disable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].disable()},e.prototype.enable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].enable()},e.defaults={context:window,enabled:!0,enter:t,entered:t,exit:t,exited:t},i.Inview=e}(); - -/***/ }), - -/***/ "../../../../../node_modules/waypoints/lib/shortcuts/sticky.min.js": -/***/ (function(module, exports) { - -/*! -Waypoints Sticky Element Shortcut - 4.0.1 -Copyright © 2011-2016 Caleb Troughton -Licensed under the MIT license. -https://github.com/imakewebthings/waypoints/blob/master/licenses.txt -*/ -!function(){"use strict";function t(s){this.options=e.extend({},i.defaults,t.defaults,s),this.element=this.options.element,this.$element=e(this.element),this.createWrapper(),this.createWaypoint()}var e=window.jQuery,i=window.Waypoint;t.prototype.createWaypoint=function(){var t=this.options.handler;this.waypoint=new i(e.extend({},this.options,{element:this.wrapper,handler:e.proxy(function(e){var i=this.options.direction.indexOf(e)>-1,s=i?this.$element.outerHeight(!0):"";this.$wrapper.height(s),this.$element.toggleClass(this.options.stuckClass,i),t&&t.call(this,e)},this)}))},t.prototype.createWrapper=function(){this.options.wrapper&&this.$element.wrap(this.options.wrapper),this.$wrapper=this.$element.parent(),this.wrapper=this.$wrapper[0]},t.prototype.destroy=function(){this.$element.parent()[0]===this.wrapper&&(this.waypoint.destroy(),this.$element.removeClass(this.options.stuckClass),this.options.wrapper&&this.$element.unwrap())},t.defaults={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i.Sticky=t}(); - -/***/ }), - -/***/ "./fonts/icomoon.ttf": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/icomoon.bc02b6b6.ttf"; - -/***/ }), - -/***/ "./fonts/icomoon.woff": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "font/icomoon.74c810cf.woff"; - -/***/ }), - -/***/ "./img/bg-contact-location.jpg": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/bg-contact-location.84539770.jpg"; - -/***/ }), - -/***/ "./img/bg-dotted-focus.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/bg-dotted-focus.4833a119.png"; - -/***/ }), - -/***/ "./img/bg-dotted-line-red.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/bg-dotted-line-red.e040529d.png"; - -/***/ }), - -/***/ "./img/bg-dotted-line.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/bg-dotted-line.af50cb7c.png"; - -/***/ }), - -/***/ "./img/bg-scale.jpg": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/bg-scale.184a64b0.jpg"; - -/***/ }), - -/***/ "./img/icons/icon-attachment.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/icon-attachment.7cf02fca.png"; - -/***/ }), - -/***/ "./img/laptop.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/laptop.3696d7dc.png"; - -/***/ }), - -/***/ "./img/timeline-mask.png": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__.p + "img/timeline-mask.14eaff58.png"; - -/***/ }), - -/***/ "./js/contact.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function($) {/* harmony export (immutable) */ __webpack_exports__["a"] = contact; -var mapsapi = __webpack_require__("../../../../../node_modules/google-maps-api/index.js")(ajax.apikey); -function contact() { - - // Mobile Detection - var Env = { - core: { - mobile: false, - assetsURL: ajax.ajax_var.template_directory_uri - } - }; - if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) Env.core.mobile = true; - - function new_map($el) { - - var $markers = $el.find('.marker'); - - var args = { - zoom: 8, - styles: [{ elementType: 'geometry', stylers: [{ color: '#f3f3f3' }] }, { elementType: 'labels.text.stroke', stylers: [{ color: '#ffffff' }] }, { elementType: 'labels.text.fill', stylers: [{ color: '#7d7d7d' }] }, { - featureType: 'administrative.locality', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'poi', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'poi.park', - elementType: 'geometry', - stylers: [{ color: '#a8e6ac' }] - }, { - featureType: 'poi.park', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'road', - elementType: 'geometry', - stylers: [{ color: '#ffa432' }] - }, { - featureType: 'road', - elementType: 'geometry.stroke', - stylers: [{ color: '#ffffff' }] - }, { - featureType: 'road', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'road.highway', - elementType: 'geometry', - stylers: [{ color: '#ff8f02' }] - }, { - featureType: 'road.highway', - elementType: 'geometry.stroke', - stylers: [{ color: '#ffffff' }] - }, { - featureType: 'road.highway', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'transit', - elementType: 'geometry', - stylers: [{ color: '#ffa533' }] - }, { - featureType: 'transit.station', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'water', - elementType: 'geometry', - stylers: [{ color: '#c7f5ff' }] - }, { - featureType: 'water', - elementType: 'labels.text.fill', - stylers: [{ color: '#7d7d7d' }] - }, { - featureType: 'water', - elementType: 'labels.text.stroke', - stylers: [{ color: '#c7f5ff' }] - }], - center: new google.maps.LatLng(0, 0), - mapTypeId: google.maps.MapTypeId.ROADMAP - }; - - var map = new google.maps.Map($el[0], args); - - map.markers = []; - - $markers.each(function () { - - add_marker($(this), map); - }); - - center_map(map); - - return map; - } - - function add_marker($marker, map) { - - var latlng = new google.maps.LatLng($marker.attr('data-lat'), $marker.attr('data-lng')); - - var marker = new google.maps.Marker({ - position: latlng, - map: map - }); - - map.markers.push(marker); - - if ($marker.html()) { - - var infowindow = new google.maps.InfoWindow({ - content: $marker.html() - }); - - google.maps.event.addListener(marker, 'click', function () { - - infowindow.open(map, marker); - }); - } - } - - function center_map(map) { - - var bounds = new google.maps.LatLngBounds(); - - $.each(map.markers, function (i, marker) { - - var latlng = new google.maps.LatLng(marker.position.lat(), marker.position.lng()); - - bounds.extend(latlng); - }); - - if (map.markers.length == 1) { - map.setCenter(bounds.getCenter()); - map.setZoom(16); - } else { - map.fitBounds(bounds); - } - } - - var map = null; - - mapsapi().then(function (maps) { - $('.acf-map').each(function () { - map = new_map($(this)); - }); - }); - - /*Contact Form Validation and Submission Start*/ - //console.log(Parsleyjs); - - var formHandler = { - busy: false, - form_error: false, - formsubmit: function formsubmit() { - - if (formHandler.busy) return false; - - formHandler.busy = true; - - var formData = new FormData($("#contact_form")[0]); - formData.append("action", "framacContactForm"); - formData.append("nonce", ajax.nonce); - - $.ajax({ - cache: false, - type: 'POST', - url: ajax.url, - data: formData, - processData: false, - contentType: false, - - success: function success(data, textStatus, XMLHttpRequest) { - var parse_data = JSON.parse(data); - var class_name = ''; - if (parse_data.error === 0) { - $('#contact_form')[0].reset(); - - if (parse_data.m_status === 1) class_name = "success";else class_name = "fail"; - - $('#apply_success_msg').addClass(class_name).html(parse_data.res).show(); - - if (Env.core.mobile) { - $('html, body').animate({ - scrollTop: $("#apply_success_msg").offset() + 60 - }, 800); - } - } else { - $('.apply_error-common').html(parse_data.res).show(0); - } - }, - - error: function error(MLHttpRequest, textStatus, errorThrown) { - //console.log(errorThrown); - }, - - complete: function complete() { - formHandler.busy = false; - $('.formLoader').hide(); - } - }); - } - }; - - $("#contact_form").submit(function (e) { - e.preventDefault(); - $('#apply_success_msg').html('').hide(); - $('.formLoader').css('display', 'inline-block'); - if ($(this).parsley().isValid()) { - formHandler.formsubmit(); - } - }); - /*Contact Form Validation and Submission End*/ -}; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "./js/helpers.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export addClass */ -/* unused harmony export removeClass */ -/* unused harmony export toggleClass */ -/* unused harmony export hasClass */ -function addClass(el, className) { - if (el.classList) el.classList.add(className);else if (!hasClass(el, className)) el.className += " " + className; -} - -function removeClass(el, className) { - if (el.classList) el.classList.remove(className);else if (hasClass(el, className)) { - var reg = new RegExp('(\\s|^)' + className + '(\\s|$)'); - el.className = el.className.replace(reg, ' '); - } -} - -function toggleClass(el, className) { - if (hasClass(el, className)) { - addClass(el, 'out'); - setTimeout(function () { - removeClass(el, className); - removeClass(el, 'out'); - }, 500); - } else addClass(el, className); -} - -function hasClass(el, className) { - if (el.classList) return el.classList.contains(className);else return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')); -} - -/***/ }), - -/***/ "./js/home.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function($) {/* harmony export (immutable) */ __webpack_exports__["a"] = home; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_js__ = __webpack_require__("./js/helpers.js"); - - -function home() { - - var $grid = $('#Postdetails'); - var $scale = $('#EventScale'); - var active = $grid.data('postid'); - - - - $(document).ready(function () { - $('.goDown').click(function (e) { - e.preventDefault(); - var _target = $(this).data('target'); - console.log(_target); - $('html, body').animate({ scrollTop: $('#' + _target).offset().top }, 500); - }); - - var codeSwiperInit = false; - - /* Code Swiper */ - var home_code_swiper = new Swiper('#home_code_swiper', { - autoHeight: true, - spaceBetween: 0, - slidesPerView: 'auto', - resistanceRatio: 0.05, - centeredSlides: true, - slideToClickedSlide: true, - nextButton: '.swiper-button-next', - prevButton: '.swiper-button-prev', - breakpoints: { - 1023: { - slidesPerView: 1 - } - } - }); - var home_code_detail_swiper = new Swiper('#home_code_detail_swiper', { - spaceBetween: 0, - effect: 'fade', - allowSwipeToPrev: false, - allowSwipeToNext: false, - simulateTouch: false - }); - home_code_detail_swiper.params.control = home_code_swiper; - home_code_swiper.params.control = home_code_detail_swiper; - setTimeout(function () { - home_code_swiper.update(true); - home_code_detail_swiper.update(true); - }, 1000); - - /* Event Swiper */ - var event_detail_swiper = new Swiper('#event_detail_swiper', { - autoHeight: true, - spaceBetween: 0, - slidesPerView: 1, - slideToClickedSlide: true, - resistanceRatio: 0 - }); - var event_calender_swiper = new Swiper('#event_calender_swiper', { - spaceBetween: 0, - centeredSlides: true, - slidesPerView: 7, - resistanceRatio: 0, - slideToClickedSlide: true, - breakpoints: { - 1023: { - slidesPerView: 5 - } - } - }); - event_detail_swiper.params.control = event_calender_swiper; - event_calender_swiper.params.control = event_detail_swiper; - var $row = $('div[data-eventdate="latest"]'); - setTimeout(function () { - event_detail_swiper.update(true); - event_calender_swiper.update(true); - event_calender_swiper.slideTo($row.index()); - }, 1000); - - // CMS Page - Vision Section in viewport - var $wrapperDiv = $('#content'), - $bgTitleBlk = $('.bgTitleBlk'), - upperType = $('.upperType'), - lowerType = $('.lowerType'); - function callWayPoint(elemId, text, className) { - - var wp_called = false; - - function doTextChage() { - wp_called = true; - upperType.addClass('out'); - lowerType.addClass('out'); - $wrapperDiv.attr('class', 'pageContent ' + className); - setTimeout(function () { - upperType.html(text).removeClass('out'); - lowerType.html(text).removeClass('out'); - $wrapperDiv.attr('class', 'pageContent titleIn ' + className); - }, 400); - } - - new Waypoint.Inview({ - element: document.getElementById(elemId), - enter: function enter(direction) { - if (!wp_called) { - doTextChage(); - } - }, - entered: function entered(direction) { - if (!wp_called) { - doTextChage(); - } - }, - exit: function exit() { - wp_called = false; - }, - exited: function exited() { - wp_called = false; - } - }); - }; - - callWayPoint('siteIntro_iv_point', 'SECURE', 'secure'); - callWayPoint('code_demo_iv_point', 'ERROR!', 'error'); - callWayPoint('about_iv_point', 'ABOUT', 'about'); - callWayPoint('events_iv_point', 'FOLLOW', 'follow'); - callWayPoint('download_iv_point', 'DOWNLOAD', 'download bigTxt'); - - $(window).trigger('resize'); - }); -}; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "./js/lib/css_browser_selector.js": -/***/ (function(module, exports) { - -/* - CSS Browser Selector 0.81 - Originally written by Rafael Lima (http://rafael.adm.br) - http://rafael.adm.br/css_browser_selector - License: http://creativecommons.org/licenses/by/2.5/ - - Co-maintained by: - https://github.com/ridjohansen/css_browser_selector - https://github.com/delka/css_browser_selector - https://github.com/verbatim/css_browser_selector - */ -(function () { - var uaInfo = { - ua: '', - is: function is(t) { - return RegExp(t, "i").test(uaInfo.ua); - }, - version: function version(p, n) { - n = n.replace(".", "_"); - var i = n.indexOf('_'), - ver = ""; - while (i > 0) { - ver += " " + p + n.substring(0, i); - i = n.indexOf('_', i + 1); - } - ver += " " + p + n; - return ver; - }, - getBrowser: function getBrowser() { - var g = 'gecko', - w = 'webkit', - c = 'chrome', - f = 'firefox', - s = 'safari', - o = 'opera', - ua = uaInfo.ua, - is = uaInfo.is; - - return [!/opera|webtv/i.test(ua) && /msie\s(\d+)/.test(ua) ? 'ie ie' + (/trident\/4\.0/.test(ua) ? '8' : RegExp.$1) : is('edge\/') ? 'edge ie' + (/edge\/(\d+)\.(\d+)/.test(ua) ? RegExp.$1 + ' ie' + RegExp.$1 + '_' + RegExp.$2 : '') // IE Edge - : is('trident\/') ? 'ie ie' + (/trident\/.+rv:(\d+)/i.test(ua) ? RegExp.$1 : '') //ie11+ - : is('firefox/') ? g + " " + f + (/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua) ? ' ' + f + RegExp.$2 + ' ' + f + RegExp.$2 + "_" + RegExp.$4 : '') : is('gecko/') ? g : is('opera') ? o + (/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua) ? ' ' + o + RegExp.$2 + ' ' + o + RegExp.$2 + "_" + RegExp.$4 : /opera(\s|\/)(\d+)\.(\d+)/.test(ua) ? ' ' + o + RegExp.$2 + " " + o + RegExp.$2 + "_" + RegExp.$3 : '') : is('konqueror') ? 'konqueror' : is('chrome') ? w + ' ' + c + (/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua) ? ' ' + c + RegExp.$2 + (RegExp.$4 > 0 ? ' ' + c + RegExp.$2 + "_" + RegExp.$4 : '') : '') : is('iron') ? w + ' iron' : is('applewebkit/') ? w + ' ' + s + (/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua) ? ' ' + s + RegExp.$2 + " " + s + RegExp.$2 + RegExp.$3.replace('.', '_') : / Safari\/(\d+)/i.test(ua) ? RegExp.$1 == "419" || RegExp.$1 == "417" || RegExp.$1 == "416" || RegExp.$1 == "412" ? ' ' + s + '2_0' : RegExp.$1 == "312" ? ' ' + s + '1_3' : RegExp.$1 == "125" ? ' ' + s + '1_2' : RegExp.$1 == "85" ? ' ' + s + '1_0' : '' : '') : //applewebkit - is('mozilla/') ? g : '']; - }, - getPlatform: function getPlatform() { - var wp = 'winphone', - a = 'android', - bb = 'blackberry', - dv = 'device_', - ua = uaInfo.ua, - version = uaInfo.version, - is = uaInfo.is; - - return [is('j2me') ? 'j2me' : is('windows phone') ? wp + (/Windows Phone (\d+)(\.(\d+))+/i.test(ua) ? " " + wp + RegExp.$1 + " " + wp + RegExp.$1 + RegExp.$2.replace('.', '_') : /Windows Phone OS (\d+)(\.(\d+))+/i.test(ua) ? " " + wp + RegExp.$1 + " " + wp + RegExp.$1 + RegExp.$2.replace('.', '_') : '') : // Windows Phone - is('blackberry') ? bb + (/Version\/(\d+)(\.(\d+)+)/i.test(ua) ? " " + bb + RegExp.$1 + " " + bb + RegExp.$1 + RegExp.$2.replace('.', '_') : /Blackberry ?(([0-9]+)([a-z]?))[\/|;]/gi.test(ua) ? ' ' + bb + RegExp.$2 + (RegExp.$3 ? ' ' + bb + RegExp.$2 + RegExp.$3 : '') : '') : // blackberry - is('android') ? a + (/Version\/(\d+)(\.(\d+))+/i.test(ua) ? " " + a + RegExp.$1 + " " + a + RegExp.$1 + RegExp.$2.replace('.', '_') : '') + (/Android (.+); (.+) Build/i.test(ua) ? ' ' + dv + RegExp.$2.replace(/ /g, "_").replace(/-/g, "_") : '') : //android - is('ipad|ipod|iphone') ? (/CPU( iPhone)? OS (\d+[_|\.]\d+([_|\.]\d+)*)/i.test(ua) ? 'ios' + version('ios', RegExp.$2) : '') + ' ' + (/(ip(ad|od|hone))/gi.test(ua) ? RegExp.$1 : "") : //'iphone' - //:is('ipod')?'ipod' - //:is('ipad')?'ipad' - is('playbook') ? 'playbook' : is('kindle|silk') ? 'kindle' : is('playbook') ? 'playbook' : is('mac') ? 'mac' + (/mac os x ((\d+)[.|_](\d+))/.test(ua) ? ' mac' + RegExp.$2 + ' mac' + RegExp.$1.replace('.', "_") : '') : is('win') ? 'win' + (is('windows nt 10.0') ? ' win10' : is('windows nt 6.3') ? ' win8_1' : is('windows nt 6.2') ? ' win8' : is('windows nt 6.1') ? ' win7' : is('windows nt 6.0') ? ' vista' : is('windows nt 5.2') || is('windows nt 5.1') ? ' win_xp' : is('windows nt 5.0') ? ' win_2k' : is('windows nt 4.0') || is('WinNT4.0') ? ' win_nt' : '') : is('freebsd') ? 'freebsd' : is('x11|linux') ? 'linux' : '']; - }, - getMobile: function getMobile() { - var is = uaInfo.is; - return [is("android|mobi|mobile|j2me|iphone|ipod|ipad|blackberry|winphone|playbook|kindle|silk") ? 'mobile' : '']; - }, - getIpadApp: function getIpadApp() { - var is = uaInfo.is; - return [is('ipad|iphone|ipod') && !is('safari') ? 'ipad_app' : '']; - } - }; - - if (typeof html == 'undefined') { - html = document.documentElement; - } - - function css_browser_selector(u, ns) { - var html = document.documentElement, - b = []; - ns = ns ? ns : ""; - - /* ua */ - uaInfo.ua = u.toLowerCase(); - b = b.concat(uaInfo.getBrowser()); - b = b.concat(uaInfo.getPlatform()); - b = b.concat(uaInfo.getMobile()); - b = b.concat(uaInfo.getIpadApp()); - //b = b.concat(uaInfo.getLang()); - - /* save & add existing html classes */ - var classes = html.className; - var classesArray = classes.split(/ /); - - /* merge existing classes on html tag */ - b = b.concat(classesArray); - - /* removendo itens invalidos do array */ - /* add filter function polyfill for IE8 */ - if (!Array.prototype.filter) { - Array.prototype.filter = function (fun /*, thisArg*/) { - '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 = []; - var thisArg = arguments.length >= 2 ? arguments[1] : void 0; - for (var i = 0; i < len; i++) { - if (i in t) { - var val = t[i]; - - // NOTE: Technically this should Object.defineProperty at - // the next index, as push can be affected by - // properties on Object.prototype and Array.prototype. - // But that method's new, and collisions should be - // rare, so use the more-compatible alternative. - if (fun.call(thisArg, val, i, t)) { - res.push(val); - } - } - } - - return res; - }; - } - - b = b.filter(function (e) { - /* if no-js class exists, remove it */ - if (e === 'no-js') { - return false; - } - return e; - }); - - /* prefixo do namespace */ - b[0] = ns ? ns + b[0] : b[0]; - html.className = b.join(' ' + ns); - return html.className; - } - - // Add css_browser_selector as a global object. - window.css_browser_selector = css_browser_selector; -})(); - -// define css_browser_selector_ns before loading this script to assign a namespace -var css_browser_selector_ns = css_browser_selector_ns || ""; - -// init -css_browser_selector(navigator.userAgent, css_browser_selector_ns); - -/***/ }), - -/***/ "./js/lib/jQuery.scrollSpeed.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(jQuery) {// Custom scrolling speed with jQuery -// Source: github.com/ByNathan/jQuery.scrollSpeed -// Version: 1.0 - -(function ($) { - - jQuery.scrollSpeed = function (step, speed) { - - var $document = $(document), - $window = $(window), - $body = $('html, body'), - viewport = $window.height(), - top = 0, - scroll = false; - - if (window.navigator.msPointerEnabled) return false; - - $window.on('mousewheel DOMMouseScroll', function (e) { - if (!$('html').hasClass('oh')) { - scroll = true; - - if (e.originalEvent.wheelDeltaY < 0 || e.originalEvent.detail > 0) { - top = top + viewport >= $document.height() ? top : top += step; - } - - if (e.originalEvent.wheelDeltaY > 0 || e.originalEvent.detail < 0) top = top <= 0 ? 0 : top -= step; - - $body.stop().animate({ - - scrollTop: top - - }, speed, 'default', function () { - - scroll = false; - }); - return false; - } - }).on('scroll', function () { - - if (!scroll) top = $window.scrollTop(); - }).on('resize', function () { - - viewport = $window.height(); - }).on('keydown', function (e) { - if (!$('html').hasClass('oh')) { - if (e.keyCode == 34 || e.keyCode == 40) { - top = top + viewport >= $document.height() ? top : top += step; - $body.stop().animate({ - - scrollTop: top - - }, speed, 'default', function () { - - scroll = false; - }); - return false; - } else if (e.keyCode == 33 || e.keyCode == 38) { - top = top <= 0 ? 0 : top -= step; - $body.stop().animate({ - - scrollTop: top - - }, speed, 'default', function () { - - scroll = false; - }); - return false; - } - } - }); - }; - - jQuery.easing.default = function (x, t, b, c, d) { - - return -c * ((t = t / d - 1) * t * t * t - 1) + b; - }; -})(jQuery); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "./js/main.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* WEBPACK VAR INJECTION */(function(jQuery, $) { -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_jquery__ = __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_swiper__ = __webpack_require__("../../../../../node_modules/swiper/dist/js/swiper.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_swiper___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_swiper__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_parsleyjs__ = __webpack_require__("../../../../../node_modules/parsleyjs/dist/parsley.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_parsleyjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_parsleyjs__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_waypoints_lib_noframework_waypoints_min__ = __webpack_require__("../../../../../node_modules/waypoints/lib/noframework.waypoints.min.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_waypoints_lib_noframework_waypoints_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13_waypoints_lib_noframework_waypoints_min__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_waypoints_lib_shortcuts_sticky_min__ = __webpack_require__("../../../../../node_modules/waypoints/lib/shortcuts/sticky.min.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_waypoints_lib_shortcuts_sticky_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_14_waypoints_lib_shortcuts_sticky_min__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_waypoints_lib_shortcuts_inview_min__ = __webpack_require__("../../../../../node_modules/waypoints/lib/shortcuts/inview.min.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_waypoints_lib_shortcuts_inview_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15_waypoints_lib_shortcuts_inview_min__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__home_js__ = __webpack_require__("./js/home.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__contact_js__ = __webpack_require__("./js/contact.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__page_js__ = __webpack_require__("./js/page.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__plugin_kernel_js__ = __webpack_require__("./js/plugin_kernel.js"); -// Main Stylesheets - - - - - - - - - - - -// JS Libraries - - - - - - - - - - - -__webpack_require__("./js/lib/css_browser_selector.js"); -__webpack_require__("./js/lib/jQuery.scrollSpeed.js"); - -// global export -window.$ = window.jQuery = jQuery; -var Main = function Main() {}; -Main.prototype.init = function () { - - if ($('body').hasClass('home')) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_16__home_js__["a" /* home */])();else if ($('body').hasClass('page-template-page-contact')) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__contact_js__["a" /* contact */])();else if ($('body').hasClass('page-template-page-kernel_plugins')) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_19__plugin_kernel_js__["a" /* plugin_kernel */])();else if ($('body').hasClass('page-template-page-kernel')) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_19__plugin_kernel_js__["b" /* kernel */])();else __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_18__page_js__["a" /* page */])(); - - var siteHeader = document.querySelector('.siteHeader'); - document.getElementById('menu_toggle').onclick = function () { - if (siteHeader.getAttribute('class') == 'siteHeader') siteHeader.setAttribute('class', 'siteHeader menuOpen');else siteHeader.setAttribute('class', 'siteHeader'); - }; - - $(document).ready(function () { - - if ($('html').hasClass('ie10') || $('html').hasClass('ie11') || $('html').hasClass('edge') || $('html').hasClass('ie12')) { - $('summary').click(function () { - $(this).toggleClass('active'); - }); - } - - if ($('#menu li.menu-kernal').length > 0 && $('.pageKernel').length > 0) { - $('#menu li.menu-kernal').addClass('current-menu-item'); - } - - if ($('html').hasClass('win')) {} - // jQuery.scrollSpeed(80, 1000); - - - // Sticky right side link - var header_download_link = document.getElementById('header_download_link'); - var sticky = new Waypoint.Inview({ - element: document.getElementById('header_iv_point'), - enter: function enter(direction) { - // console.log('entered'); - header_download_link.setAttribute('class', 'btnDownload'); - }, - exited: function exited(direction) { - //console.log('exited'); - header_download_link.setAttribute('class', 'btnDownload sticky'); - }, - offset: { - top: '70px' - } - }); - - if ($('#sidebar').length > 0) { - var sidebar_wrap = document.getElementById('sidebar_wrap'); - var sticky_sidebar = new Waypoint.Inview({ - element: document.getElementById('sidebar_iv_point'), - enter: function enter(direction) { - // console.log('entered'); - sidebar_wrap.setAttribute('class', 'sidebarWrap'); - }, - exited: function exited(direction) { - //console.log('exited'); - sidebar_wrap.setAttribute('class', 'sidebarWrap sticky'); - } - }); - } - - $(".goBack, .backLink").click(function (e) { - e.preventDefault(); - window.history.back(); - }); - - var text_max = $('#contact_textarea').attr('maxlength'); - $('#textarea_count').html(text_max + ' / ' + text_max); - - $("#contact_textarea").on('input', function (e) { - var text_length = $('#contact_textarea').val().length; - var text_remaining = text_max - text_length; - $('#textarea_count').html(text_remaining + ' / ' + text_max); - }); - - function magicLine() { - var $el, leftPos, newWidth; - var $current_item_length = $("#menu-primary-meny .current-menu-item").length; - console.log($current_item_length); - $("#menu-primary-meny").append("<li id='magic-line'></li>"); - if ($current_item_length == 0) $("#menu-primary-meny").prepend("<li class='current-menu-item hide'><a href='#'>a</a></li>"); - - var $magicLine = $("#magic-line"); - $magicLine.width($(".current-menu-item").width()).css("left", $(".current-menu-item a").position().left).data("origLeft", $magicLine.position().left).data("origWidth", $magicLine.width()); - - if ($('body').hasClass('nonTouch')) { - $("#menu-primary-meny li a").hover(function () { - $el = $(this); - leftPos = $el.position().left; - newWidth = $el.parent().width(); - $magicLine.stop().animate({ - left: Math.round(leftPos), - width: Math.round(newWidth) - }, 150); - }, function () { - $magicLine.stop().animate({ - left: $magicLine.data("origLeft"), - width: $magicLine.data("origWidth") - }); - }); - } - } - - setTimeout(function () { - magicLine(); - }, 60); - }); -}; -var main = new Main(); -main.init(); -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"), __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "./js/page.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function($) {/* harmony export (immutable) */ __webpack_exports__["a"] = page; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lightgallery__ = __webpack_require__("../../../../../node_modules/lightgallery/dist/js/lightgallery.js"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lightgallery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lightgallery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lightgallery_dist_css_lightgallery_css__ = __webpack_require__("../../../../../node_modules/lightgallery/dist/css/lightgallery.css"); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lightgallery_dist_css_lightgallery_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lightgallery_dist_css_lightgallery_css__); - - -function page() { - - $(document).ready(function () { - - $('#screenshotsList').lightGallery({ - selector: '.item', - download: false - }); - - if ($('#case_study_list').length > 0) { - var case_study_swiper = new Swiper('#case_study_list', { - freeModeMomentum: false, - freeModeMomentumBounce: false, - autoHeight: true, - spaceBetween: 0, - slidesPerView: 1, - resistanceRatio: 0.05, - pagination: '.swiper-pagination', - paginationClickable: true, - nextButton: '.swiper-button-next', - prevButton: '.swiper-button-prev' - }); - setTimeout(function () { - case_study_swiper.update(true); - }, 1000); - } - - if ($('#rcmdCase_studies').length > 0) { - var case_study_swiper = new Swiper('#rcmdCase_studies', { - freeModeMomentum: false, - freeModeMomentumBounce: false, - loop: false, - autoHeight: true, - spaceBetween: 0, - slidesPerView: window.innerWidth > 600 ? 3 : 2, - nextButton: '.swiper-button-next', - prevButton: '.swiper-button-prev' - }); - } - - if ($('.codeTabs').length > 0) { - var OSName = "linux"; - if (navigator.appVersion.indexOf("Win") != -1) OSName = "windows"; - if (navigator.appVersion.indexOf("Mac") != -1) OSName = "mac"; - if (navigator.appVersion.indexOf("X11") != -1) OSName = "unix"; - if (navigator.appVersion.indexOf("Linux") != -1) OSName = "linux"; - - $('a[data-tab = ' + OSName + ']').addClass("active"); - $('.tab-' + OSName).removeClass('hide'); - - $('.codeTabs a').click(function (e) { - e.preventDefault(); - var _os = $(this).data('tab'); - $(this).siblings().removeClass('active'); - $(this).addClass('active'); - $('.codeScreen .codeTab').addClass('hide'); - $('.tab-' + _os).removeClass('hide'); - }); - } - - if ($('.tagsList a').length > 0) { - var addActiveClassTag = function addActiveClassTag(thisObj) { - var pageTag = $(thisObj).text().toLowerCase(); - if (pageTag == url_tag) { - $(thisObj).addClass('active'); - } - return true; - }; - - $(".tagsList a").each(function () { - addActiveClassTag(this); - return true; - }); - } - }); -}; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ "./js/plugin_kernel.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function($) {/* harmony export (immutable) */ __webpack_exports__["a"] = plugin_kernel; -/* harmony export (immutable) */ __webpack_exports__["b"] = kernel; -function plugin_kernel() { - if ($('.pluginSwiper').length == 1) { - var settings = { - pagination: '.swiper-pagination', - slidesPerView: 'auto', - spaceBetween: 8, - loop: true, - loopedSlides: 2, - paginationClickable: true, - nextButton: '.swiper-button-next', - prevButton: '.swiper-button-prev', - breakpoints: { - 767: { - spaceBetween: 15 - } - } - }, - kernel_swiper = new Swiper('.pluginSwiper', settings); - - setTimeout(function () { - kernel_swiper.update(true); - }, 1000); - } -}; - -function kernel() { - - var settings = { - pagination: '.swiper-pagination', - slidesPerView: 4, - paginationClickable: true, - spaceBetween: 15, - breakpoints: { - 540: { - slidesPerView: 1 - }, - 900: { - slidesPerView: 2 - }, - 1200: { - slidesPerView: 3 - } - } - }, - kernel_swiper_2 = new Swiper('.kernelSwiper', settings); - - setTimeout(function () { - kernel_swiper_2.update(true); - }, 1000); -}; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../../../../../node_modules/jquery/dist/jquery.js"))) - -/***/ }), - -/***/ 1: -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__("../../../../../node_modules/webpack/hot/dev-server.js"); -module.exports = __webpack_require__("./js/main.js"); - - -/***/ }) - -},[1]); diff --git a/_site/assets/js/manifest.js b/_site/assets/js/manifest.js deleted file mode 100644 index 333870f2..00000000 --- a/_site/assets/js/manifest.js +++ /dev/null @@ -1,795 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ var parentJsonpFunction = window["webpackJsonp"]; -/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = [], result; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ if(executeModules) { -/******/ for(i=0; i < executeModules.length; i++) { -/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]); -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ function hotDisposeChunk(chunkId) { -/******/ delete installedChunks[chunkId]; -/******/ } -/******/ var parentHotUpdateCallback = this["webpackHotUpdate"]; -/******/ this["webpackHotUpdate"] = -/******/ function webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars -/******/ hotAddUpdateChunk(chunkId, moreModules); -/******/ if(parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); -/******/ } ; -/******/ -/******/ function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ var script = document.createElement("script"); -/******/ script.type = "text/javascript"; -/******/ script.charset = "utf-8"; -/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ head.appendChild(script); -/******/ } -/******/ -/******/ function hotDownloadManifest() { // eslint-disable-line no-unused-vars -/******/ return new Promise(function(resolve, reject) { -/******/ if(typeof XMLHttpRequest === "undefined") -/******/ return reject(new Error("No browser support")); -/******/ try { -/******/ var request = new XMLHttpRequest(); -/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; -/******/ request.open("GET", requestPath, true); -/******/ request.timeout = 10000; -/******/ request.send(null); -/******/ } catch(err) { -/******/ return reject(err); -/******/ } -/******/ request.onreadystatechange = function() { -/******/ if(request.readyState !== 4) return; -/******/ if(request.status === 0) { -/******/ // timeout -/******/ reject(new Error("Manifest request to " + requestPath + " timed out.")); -/******/ } else if(request.status === 404) { -/******/ // no update available -/******/ resolve(); -/******/ } else if(request.status !== 200 && request.status !== 304) { -/******/ // other failure -/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); -/******/ } else { -/******/ // success -/******/ try { -/******/ var update = JSON.parse(request.responseText); -/******/ } catch(e) { -/******/ reject(e); -/******/ return; -/******/ } -/******/ resolve(update); -/******/ } -/******/ }; -/******/ }); -/******/ } -/******/ -/******/ -/******/ -/******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "7c8986b0ca7d8db7279d"; // eslint-disable-line no-unused-vars -/******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars -/******/ -/******/ function hotCreateRequire(moduleId) { // eslint-disable-line no-unused-vars -/******/ var me = installedModules[moduleId]; -/******/ if(!me) return __webpack_require__; -/******/ var fn = function(request) { -/******/ if(me.hot.active) { -/******/ if(installedModules[request]) { -/******/ if(installedModules[request].parents.indexOf(moduleId) < 0) -/******/ installedModules[request].parents.push(moduleId); -/******/ } else { -/******/ hotCurrentParents = [moduleId]; -/******/ hotCurrentChildModule = request; -/******/ } -/******/ if(me.children.indexOf(request) < 0) -/******/ me.children.push(request); -/******/ } else { -/******/ console.warn("[HMR] unexpected require(" + request + ") from disposed module " + moduleId); -/******/ hotCurrentParents = []; -/******/ } -/******/ return __webpack_require__(request); -/******/ }; -/******/ var ObjectFactory = function ObjectFactory(name) { -/******/ return { -/******/ configurable: true, -/******/ enumerable: true, -/******/ get: function() { -/******/ return __webpack_require__[name]; -/******/ }, -/******/ set: function(value) { -/******/ __webpack_require__[name] = value; -/******/ } -/******/ }; -/******/ }; -/******/ for(var name in __webpack_require__) { -/******/ if(Object.prototype.hasOwnProperty.call(__webpack_require__, name) && name !== "e") { -/******/ Object.defineProperty(fn, name, ObjectFactory(name)); -/******/ } -/******/ } -/******/ fn.e = function(chunkId) { -/******/ if(hotStatus === "ready") -/******/ hotSetStatus("prepare"); -/******/ hotChunksLoading++; -/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { -/******/ finishChunkLoading(); -/******/ throw err; -/******/ }); -/******/ -/******/ function finishChunkLoading() { -/******/ hotChunksLoading--; -/******/ if(hotStatus === "prepare") { -/******/ if(!hotWaitingFilesMap[chunkId]) { -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if(hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ } -/******/ }; -/******/ return fn; -/******/ } -/******/ -/******/ function hotCreateModule(moduleId) { // eslint-disable-line no-unused-vars -/******/ var hot = { -/******/ // private stuff -/******/ _acceptedDependencies: {}, -/******/ _declinedDependencies: {}, -/******/ _selfAccepted: false, -/******/ _selfDeclined: false, -/******/ _disposeHandlers: [], -/******/ _main: hotCurrentChildModule !== moduleId, -/******/ -/******/ // Module API -/******/ active: true, -/******/ accept: function(dep, callback) { -/******/ if(typeof dep === "undefined") -/******/ hot._selfAccepted = true; -/******/ else if(typeof dep === "function") -/******/ hot._selfAccepted = dep; -/******/ else if(typeof dep === "object") -/******/ for(var i = 0; i < dep.length; i++) -/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; -/******/ else -/******/ hot._acceptedDependencies[dep] = callback || function() {}; -/******/ }, -/******/ decline: function(dep) { -/******/ if(typeof dep === "undefined") -/******/ hot._selfDeclined = true; -/******/ else if(typeof dep === "object") -/******/ for(var i = 0; i < dep.length; i++) -/******/ hot._declinedDependencies[dep[i]] = true; -/******/ else -/******/ hot._declinedDependencies[dep] = true; -/******/ }, -/******/ dispose: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ addDisposeHandler: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ removeDisposeHandler: function(callback) { -/******/ var idx = hot._disposeHandlers.indexOf(callback); -/******/ if(idx >= 0) hot._disposeHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ // Management API -/******/ check: hotCheck, -/******/ apply: hotApply, -/******/ status: function(l) { -/******/ if(!l) return hotStatus; -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ addStatusHandler: function(l) { -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ removeStatusHandler: function(l) { -/******/ var idx = hotStatusHandlers.indexOf(l); -/******/ if(idx >= 0) hotStatusHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ //inherit from previous dispose call -/******/ data: hotCurrentModuleData[moduleId] -/******/ }; -/******/ hotCurrentChildModule = undefined; -/******/ return hot; -/******/ } -/******/ -/******/ var hotStatusHandlers = []; -/******/ var hotStatus = "idle"; -/******/ -/******/ function hotSetStatus(newStatus) { -/******/ hotStatus = newStatus; -/******/ for(var i = 0; i < hotStatusHandlers.length; i++) -/******/ hotStatusHandlers[i].call(null, newStatus); -/******/ } -/******/ -/******/ // while downloading -/******/ var hotWaitingFiles = 0; -/******/ var hotChunksLoading = 0; -/******/ var hotWaitingFilesMap = {}; -/******/ var hotRequestedFilesMap = {}; -/******/ var hotAvailableFilesMap = {}; -/******/ var hotDeferred; -/******/ -/******/ // The update info -/******/ var hotUpdate, hotUpdateNewHash; -/******/ -/******/ function toModuleId(id) { -/******/ var isNumber = (+id) + "" === id; -/******/ return isNumber ? +id : id; -/******/ } -/******/ -/******/ function hotCheck(apply) { -/******/ if(hotStatus !== "idle") throw new Error("check() is only allowed in idle status"); -/******/ hotApplyOnUpdate = apply; -/******/ hotSetStatus("check"); -/******/ return hotDownloadManifest().then(function(update) { -/******/ if(!update) { -/******/ hotSetStatus("idle"); -/******/ return null; -/******/ } -/******/ hotRequestedFilesMap = {}; -/******/ hotWaitingFilesMap = {}; -/******/ hotAvailableFilesMap = update.c; -/******/ hotUpdateNewHash = update.h; -/******/ -/******/ hotSetStatus("prepare"); -/******/ var promise = new Promise(function(resolve, reject) { -/******/ hotDeferred = { -/******/ resolve: resolve, -/******/ reject: reject -/******/ }; -/******/ }); -/******/ hotUpdate = {}; -/******/ for(var chunkId in installedChunks) -/******/ { // eslint-disable-line no-lone-blocks -/******/ /*globals chunkId */ -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if(hotStatus === "prepare" && hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ return promise; -/******/ }); -/******/ } -/******/ -/******/ function hotAddUpdateChunk(chunkId, moreModules) { // eslint-disable-line no-unused-vars -/******/ if(!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) -/******/ return; -/******/ hotRequestedFilesMap[chunkId] = false; -/******/ for(var moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ hotUpdate[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(--hotWaitingFiles === 0 && hotChunksLoading === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ -/******/ function hotEnsureUpdateChunk(chunkId) { -/******/ if(!hotAvailableFilesMap[chunkId]) { -/******/ hotWaitingFilesMap[chunkId] = true; -/******/ } else { -/******/ hotRequestedFilesMap[chunkId] = true; -/******/ hotWaitingFiles++; -/******/ hotDownloadUpdateChunk(chunkId); -/******/ } -/******/ } -/******/ -/******/ function hotUpdateDownloaded() { -/******/ hotSetStatus("ready"); -/******/ var deferred = hotDeferred; -/******/ hotDeferred = null; -/******/ if(!deferred) return; -/******/ if(hotApplyOnUpdate) { -/******/ hotApply(hotApplyOnUpdate).then(function(result) { -/******/ deferred.resolve(result); -/******/ }, function(err) { -/******/ deferred.reject(err); -/******/ }); -/******/ } else { -/******/ var outdatedModules = []; -/******/ for(var id in hotUpdate) { -/******/ if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ outdatedModules.push(toModuleId(id)); -/******/ } -/******/ } -/******/ deferred.resolve(outdatedModules); -/******/ } -/******/ } -/******/ -/******/ function hotApply(options) { -/******/ if(hotStatus !== "ready") throw new Error("apply() is only allowed in ready status"); -/******/ options = options || {}; -/******/ -/******/ var cb; -/******/ var i; -/******/ var j; -/******/ var module; -/******/ var moduleId; -/******/ -/******/ function getAffectedStuff(updateModuleId) { -/******/ var outdatedModules = [updateModuleId]; -/******/ var outdatedDependencies = {}; -/******/ -/******/ var queue = outdatedModules.slice().map(function(id) { -/******/ return { -/******/ chain: [id], -/******/ id: id -/******/ }; -/******/ }); -/******/ while(queue.length > 0) { -/******/ var queueItem = queue.pop(); -/******/ var moduleId = queueItem.id; -/******/ var chain = queueItem.chain; -/******/ module = installedModules[moduleId]; -/******/ if(!module || module.hot._selfAccepted) -/******/ continue; -/******/ if(module.hot._selfDeclined) { -/******/ return { -/******/ type: "self-declined", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ if(module.hot._main) { -/******/ return { -/******/ type: "unaccepted", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ for(var i = 0; i < module.parents.length; i++) { -/******/ var parentId = module.parents[i]; -/******/ var parent = installedModules[parentId]; -/******/ if(!parent) continue; -/******/ if(parent.hot._declinedDependencies[moduleId]) { -/******/ return { -/******/ type: "declined", -/******/ chain: chain.concat([parentId]), -/******/ moduleId: moduleId, -/******/ parentId: parentId -/******/ }; -/******/ } -/******/ if(outdatedModules.indexOf(parentId) >= 0) continue; -/******/ if(parent.hot._acceptedDependencies[moduleId]) { -/******/ if(!outdatedDependencies[parentId]) -/******/ outdatedDependencies[parentId] = []; -/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); -/******/ continue; -/******/ } -/******/ delete outdatedDependencies[parentId]; -/******/ outdatedModules.push(parentId); -/******/ queue.push({ -/******/ chain: chain.concat([parentId]), -/******/ id: parentId -/******/ }); -/******/ } -/******/ } -/******/ -/******/ return { -/******/ type: "accepted", -/******/ moduleId: updateModuleId, -/******/ outdatedModules: outdatedModules, -/******/ outdatedDependencies: outdatedDependencies -/******/ }; -/******/ } -/******/ -/******/ function addAllToSet(a, b) { -/******/ for(var i = 0; i < b.length; i++) { -/******/ var item = b[i]; -/******/ if(a.indexOf(item) < 0) -/******/ a.push(item); -/******/ } -/******/ } -/******/ -/******/ // at begin all updates modules are outdated -/******/ // the "outdated" status can propagate to parents if they don't accept the children -/******/ var outdatedDependencies = {}; -/******/ var outdatedModules = []; -/******/ var appliedUpdate = {}; -/******/ -/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { -/******/ console.warn("[HMR] unexpected require(" + result.moduleId + ") to disposed module"); -/******/ }; -/******/ -/******/ for(var id in hotUpdate) { -/******/ if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ moduleId = toModuleId(id); -/******/ var result; -/******/ if(hotUpdate[id]) { -/******/ result = getAffectedStuff(moduleId); -/******/ } else { -/******/ result = { -/******/ type: "disposed", -/******/ moduleId: id -/******/ }; -/******/ } -/******/ var abortError = false; -/******/ var doApply = false; -/******/ var doDispose = false; -/******/ var chainInfo = ""; -/******/ if(result.chain) { -/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); -/******/ } -/******/ switch(result.type) { -/******/ case "self-declined": -/******/ if(options.onDeclined) -/******/ options.onDeclined(result); -/******/ if(!options.ignoreDeclined) -/******/ abortError = new Error("Aborted because of self decline: " + result.moduleId + chainInfo); -/******/ break; -/******/ case "declined": -/******/ if(options.onDeclined) -/******/ options.onDeclined(result); -/******/ if(!options.ignoreDeclined) -/******/ abortError = new Error("Aborted because of declined dependency: " + result.moduleId + " in " + result.parentId + chainInfo); -/******/ break; -/******/ case "unaccepted": -/******/ if(options.onUnaccepted) -/******/ options.onUnaccepted(result); -/******/ if(!options.ignoreUnaccepted) -/******/ abortError = new Error("Aborted because " + moduleId + " is not accepted" + chainInfo); -/******/ break; -/******/ case "accepted": -/******/ if(options.onAccepted) -/******/ options.onAccepted(result); -/******/ doApply = true; -/******/ break; -/******/ case "disposed": -/******/ if(options.onDisposed) -/******/ options.onDisposed(result); -/******/ doDispose = true; -/******/ break; -/******/ default: -/******/ throw new Error("Unexception type " + result.type); -/******/ } -/******/ if(abortError) { -/******/ hotSetStatus("abort"); -/******/ return Promise.reject(abortError); -/******/ } -/******/ if(doApply) { -/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; -/******/ addAllToSet(outdatedModules, result.outdatedModules); -/******/ for(moduleId in result.outdatedDependencies) { -/******/ if(Object.prototype.hasOwnProperty.call(result.outdatedDependencies, moduleId)) { -/******/ if(!outdatedDependencies[moduleId]) -/******/ outdatedDependencies[moduleId] = []; -/******/ addAllToSet(outdatedDependencies[moduleId], result.outdatedDependencies[moduleId]); -/******/ } -/******/ } -/******/ } -/******/ if(doDispose) { -/******/ addAllToSet(outdatedModules, [result.moduleId]); -/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Store self accepted outdated modules to require them later by the module system -/******/ var outdatedSelfAcceptedModules = []; -/******/ for(i = 0; i < outdatedModules.length; i++) { -/******/ moduleId = outdatedModules[i]; -/******/ if(installedModules[moduleId] && installedModules[moduleId].hot._selfAccepted) -/******/ outdatedSelfAcceptedModules.push({ -/******/ module: moduleId, -/******/ errorHandler: installedModules[moduleId].hot._selfAccepted -/******/ }); -/******/ } -/******/ -/******/ // Now in "dispose" phase -/******/ hotSetStatus("dispose"); -/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { -/******/ if(hotAvailableFilesMap[chunkId] === false) { -/******/ hotDisposeChunk(chunkId); -/******/ } -/******/ }); -/******/ -/******/ var idx; -/******/ var queue = outdatedModules.slice(); -/******/ while(queue.length > 0) { -/******/ moduleId = queue.pop(); -/******/ module = installedModules[moduleId]; -/******/ if(!module) continue; -/******/ -/******/ var data = {}; -/******/ -/******/ // Call dispose handlers -/******/ var disposeHandlers = module.hot._disposeHandlers; -/******/ for(j = 0; j < disposeHandlers.length; j++) { -/******/ cb = disposeHandlers[j]; -/******/ cb(data); -/******/ } -/******/ hotCurrentModuleData[moduleId] = data; -/******/ -/******/ // disable module (this disables requires from this module) -/******/ module.hot.active = false; -/******/ -/******/ // remove module from cache -/******/ delete installedModules[moduleId]; -/******/ -/******/ // remove "parents" references from all children -/******/ for(j = 0; j < module.children.length; j++) { -/******/ var child = installedModules[module.children[j]]; -/******/ if(!child) continue; -/******/ idx = child.parents.indexOf(moduleId); -/******/ if(idx >= 0) { -/******/ child.parents.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ -/******/ // remove outdated dependency from module children -/******/ var dependency; -/******/ var moduleOutdatedDependencies; -/******/ for(moduleId in outdatedDependencies) { -/******/ if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) { -/******/ module = installedModules[moduleId]; -/******/ if(module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ for(j = 0; j < moduleOutdatedDependencies.length; j++) { -/******/ dependency = moduleOutdatedDependencies[j]; -/******/ idx = module.children.indexOf(dependency); -/******/ if(idx >= 0) module.children.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Not in "apply" phase -/******/ hotSetStatus("apply"); -/******/ -/******/ hotCurrentHash = hotUpdateNewHash; -/******/ -/******/ // insert new code -/******/ for(moduleId in appliedUpdate) { -/******/ if(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { -/******/ modules[moduleId] = appliedUpdate[moduleId]; -/******/ } -/******/ } -/******/ -/******/ // call accept handlers -/******/ var error = null; -/******/ for(moduleId in outdatedDependencies) { -/******/ if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) { -/******/ module = installedModules[moduleId]; -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ var callbacks = []; -/******/ for(i = 0; i < moduleOutdatedDependencies.length; i++) { -/******/ dependency = moduleOutdatedDependencies[i]; -/******/ cb = module.hot._acceptedDependencies[dependency]; -/******/ if(callbacks.indexOf(cb) >= 0) continue; -/******/ callbacks.push(cb); -/******/ } -/******/ for(i = 0; i < callbacks.length; i++) { -/******/ cb = callbacks[i]; -/******/ try { -/******/ cb(moduleOutdatedDependencies); -/******/ } catch(err) { -/******/ if(options.onErrored) { -/******/ options.onErrored({ -/******/ type: "accept-errored", -/******/ moduleId: moduleId, -/******/ dependencyId: moduleOutdatedDependencies[i], -/******/ error: err -/******/ }); -/******/ } -/******/ if(!options.ignoreErrored) { -/******/ if(!error) -/******/ error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Load self accepted modules -/******/ for(i = 0; i < outdatedSelfAcceptedModules.length; i++) { -/******/ var item = outdatedSelfAcceptedModules[i]; -/******/ moduleId = item.module; -/******/ hotCurrentParents = [moduleId]; -/******/ try { -/******/ __webpack_require__(moduleId); -/******/ } catch(err) { -/******/ if(typeof item.errorHandler === "function") { -/******/ try { -/******/ item.errorHandler(err); -/******/ } catch(err2) { -/******/ if(options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-error-handler-errored", -/******/ moduleId: moduleId, -/******/ error: err2, -/******/ orginalError: err -/******/ }); -/******/ } -/******/ if(!options.ignoreErrored) { -/******/ if(!error) -/******/ error = err2; -/******/ } -/******/ if(!error) -/******/ error = err; -/******/ } -/******/ } else { -/******/ if(options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-errored", -/******/ moduleId: moduleId, -/******/ error: err -/******/ }); -/******/ } -/******/ if(!options.ignoreErrored) { -/******/ if(!error) -/******/ error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // handle errors in accept handlers and self accepted module load -/******/ if(error) { -/******/ hotSetStatus("fail"); -/******/ return Promise.reject(error); -/******/ } -/******/ -/******/ hotSetStatus("idle"); -/******/ return new Promise(function(resolve) { -/******/ resolve(outdatedModules); -/******/ }); -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // objects to store loaded and loading chunks -/******/ var installedChunks = { -/******/ 2: 0 -/******/ }; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {}, -/******/ hot: hotCreateModule(moduleId), -/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), -/******/ children: [] -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var installedChunkData = installedChunks[chunkId]; -/******/ if(installedChunkData === 0) { -/******/ return new Promise(function(resolve) { resolve(); }); -/******/ } -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunkData) { -/******/ return installedChunkData[2]; -/******/ } -/******/ -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ installedChunkData[2] = promise; -/******/ -/******/ // start chunk loading -/******/ var head = document.getElementsByTagName('head')[0]; -/******/ var script = document.createElement('script'); -/******/ script.type = 'text/javascript'; -/******/ script.charset = 'utf-8'; -/******/ script.async = true; -/******/ script.timeout = 120000; -/******/ -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = __webpack_require__.p + "js/" + chunkId + "." + hotCurrentHash.substr(0, 20) + ".js"; -/******/ var timeout = setTimeout(onScriptComplete, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ function onScriptComplete() { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ head.appendChild(script); -/******/ -/******/ return promise; -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/app/themes/frama/build/"; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ -/******/ // __webpack_hash__ -/******/ __webpack_require__.h = function() { return hotCurrentHash; }; -/******/ }) -/************************************************************************/ -/******/ ([]); diff --git a/_site/assets/main.css b/_site/assets/main.css deleted file mode 100644 index 47e71747..00000000 --- a/_site/assets/main.css +++ /dev/null @@ -1,285 +0,0 @@ -/** Reset some basic elements */ -body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; } - -/** Basic styling */ -body { font: 400 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; color: #111; background-color: #fdfdfd; -webkit-text-size-adjust: 100%; -webkit-font-feature-settings: "kern" 1; -moz-font-feature-settings: "kern" 1; -o-font-feature-settings: "kern" 1; font-feature-settings: "kern" 1; font-kerning: normal; display: flex; min-height: 100vh; flex-direction: column; } - -/** Set `margin-bottom` to maintain vertical rhythm */ -h1, h2, h3, h4, h5, h6, p, blockquote, pre, ul, ol, dl, figure, .highlight { margin-bottom: 15px; } - -/** `main` element */ -main { display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ } - -/** Images */ -img { max-width: 100%; vertical-align: middle; } - -/** Figures */ -figure > img { display: block; } - -figcaption { font-size: 14px; } - -/** Lists */ -ul, ol { margin-left: 30px; } - -li > ul, li > ol { margin-bottom: 0; } - -/** Headings */ -h1, h2, h3, h4, h5, h6 { font-weight: 400; } - -/** Links */ -a { color: #2a7ae2; text-decoration: none; } - -a:visited { color: #1756a9; } - -a:hover { color: #111; text-decoration: underline; } - -.social-media-list a:hover { text-decoration: none; } - -.social-media-list a:hover .username { text-decoration: underline; } - -/** Blockquotes */ -blockquote { color: #828282; border-left: 4px solid #e8e8e8; padding-left: 15px; font-size: 18px; letter-spacing: -1px; font-style: italic; } - -blockquote > :last-child { margin-bottom: 0; } - -/** Code formatting */ -pre, code { font-size: 15px; border: 1px solid #e8e8e8; border-radius: 3px; background-color: #eef; } - -code { padding: 1px 5px; } - -pre { padding: 8px 12px; overflow-x: auto; } - -pre > code { border: 0; padding-right: 0; padding-left: 0; } - -/** Wrapper */ -.wrapper { max-width: -webkit-calc(800px - (30px * 2)); max-width: calc(800px - (30px * 2)); margin-right: auto; margin-left: auto; padding-right: 30px; padding-left: 30px; } - -@media screen and (max-width: 800px) { .wrapper { max-width: -webkit-calc(800px - (30px)); max-width: calc(800px - (30px)); padding-right: 15px; padding-left: 15px; } } - -/** Clearfix */ -.wrapper:after, .footer-col-wrapper:after { content: ""; display: table; clear: both; } - -/** Icons */ -.svg-icon { width: 16px; height: 16px; display: inline-block; fill: #828282; padding-right: 5px; vertical-align: text-top; } - -.social-media-list li + li { padding-top: 5px; } - -/** Tables */ -table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse; border: 1px solid #e8e8e8; } - -table tr:nth-child(even) { background-color: #f7f7f7; } - -table th, table td { padding: 10px 15px; } - -table th { background-color: #f0f0f0; border: 1px solid #dedede; border-bottom-color: #c9c9c9; } - -table td { border: 1px solid #e8e8e8; } - -/** Site header */ -.site-header { border-top: 5px solid #424242; border-bottom: 1px solid #e8e8e8; min-height: 55.95px; position: relative; } - -.site-title { font-size: 26px; font-weight: 300; line-height: 54px; letter-spacing: -1px; margin-bottom: 0; float: left; } - -.site-title, .site-title:visited { color: #424242; } - -.site-nav { float: right; line-height: 54px; } - -.site-nav .nav-trigger { display: none; } - -.site-nav .menu-icon { display: none; } - -.site-nav .page-link { color: #111; line-height: 1.5; } - -.site-nav .page-link:not(:last-child) { margin-right: 20px; } - -@media screen and (max-width: 600px) { .site-nav { position: absolute; top: 9px; right: 15px; background-color: #fdfdfd; border: 1px solid #e8e8e8; border-radius: 5px; text-align: right; } - .site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; z-index: 2; cursor: pointer; } - .site-nav .menu-icon { display: block; float: right; width: 36px; height: 26px; line-height: 0; padding-top: 10px; text-align: center; } - .site-nav .menu-icon > svg { fill: #424242; } - .site-nav input ~ .trigger { clear: both; display: none; } - .site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; } - .site-nav .page-link { display: block; padding: 5px 10px; margin-left: 20px; } - .site-nav .page-link:not(:last-child) { margin-right: 0; } } - -/** Site footer */ -.site-footer { border-top: 1px solid #e8e8e8; padding: 30px 0; } - -.footer-heading { font-size: 18px; margin-bottom: 15px; } - -.contact-list, .social-media-list { list-style: none; margin-left: 0; } - -.footer-col-wrapper { font-size: 15px; color: #828282; margin-left: -15px; } - -.footer-col { float: left; margin-bottom: 15px; padding-left: 15px; } - -.footer-col-1 { width: -webkit-calc(35% - (30px / 2)); width: calc(35% - (30px / 2)); } - -.footer-col-2 { width: -webkit-calc(20% - (30px / 2)); width: calc(20% - (30px / 2)); } - -.footer-col-3 { width: -webkit-calc(45% - (30px / 2)); width: calc(45% - (30px / 2)); } - -@media screen and (max-width: 800px) { .footer-col-1, .footer-col-2 { width: -webkit-calc(50% - (30px / 2)); width: calc(50% - (30px / 2)); } - .footer-col-3 { width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } - -@media screen and (max-width: 600px) { .footer-col { float: none; width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } - -/** Page content */ -.page-content { padding: 30px 0; flex: 1; } - -.page-heading { font-size: 32px; } - -.post-list-heading { font-size: 28px; } - -.post-list { margin-left: 0; list-style: none; } - -.post-list > li { margin-bottom: 30px; } - -.post-meta { font-size: 14px; color: #828282; } - -.post-link { display: block; font-size: 24px; } - -/** Posts */ -.post-header { margin-bottom: 30px; } - -.post-title { font-size: 42px; letter-spacing: -1px; line-height: 1; } - -@media screen and (max-width: 800px) { .post-title { font-size: 36px; } } - -.post-content { margin-bottom: 30px; } - -.post-content h2 { font-size: 32px; } - -@media screen and (max-width: 800px) { .post-content h2 { font-size: 28px; } } - -.post-content h3 { font-size: 26px; } - -@media screen and (max-width: 800px) { .post-content h3 { font-size: 22px; } } - -.post-content h4 { font-size: 20px; } - -@media screen and (max-width: 800px) { .post-content h4 { font-size: 18px; } } - -/** Syntax highlighting styles */ -.highlight { background: #fff; } - -.highlighter-rouge .highlight { background: #eef; } - -.highlight .c { color: #998; font-style: italic; } - -.highlight .err { color: #a61717; background-color: #e3d2d2; } - -.highlight .k { font-weight: bold; } - -.highlight .o { font-weight: bold; } - -.highlight .cm { color: #998; font-style: italic; } - -.highlight .cp { color: #999; font-weight: bold; } - -.highlight .c1 { color: #998; font-style: italic; } - -.highlight .cs { color: #999; font-weight: bold; font-style: italic; } - -.highlight .gd { color: #000; background-color: #fdd; } - -.highlight .gd .x { color: #000; background-color: #faa; } - -.highlight .ge { font-style: italic; } - -.highlight .gr { color: #a00; } - -.highlight .gh { color: #999; } - -.highlight .gi { color: #000; background-color: #dfd; } - -.highlight .gi .x { color: #000; background-color: #afa; } - -.highlight .go { color: #888; } - -.highlight .gp { color: #555; } - -.highlight .gs { font-weight: bold; } - -.highlight .gu { color: #aaa; } - -.highlight .gt { color: #a00; } - -.highlight .kc { font-weight: bold; } - -.highlight .kd { font-weight: bold; } - -.highlight .kp { font-weight: bold; } - -.highlight .kr { font-weight: bold; } - -.highlight .kt { color: #458; font-weight: bold; } - -.highlight .m { color: #099; } - -.highlight .s { color: #d14; } - -.highlight .na { color: #008080; } - -.highlight .nb { color: #0086B3; } - -.highlight .nc { color: #458; font-weight: bold; } - -.highlight .no { color: #008080; } - -.highlight .ni { color: #800080; } - -.highlight .ne { color: #900; font-weight: bold; } - -.highlight .nf { color: #900; font-weight: bold; } - -.highlight .nn { color: #555; } - -.highlight .nt { color: #000080; } - -.highlight .nv { color: #008080; } - -.highlight .ow { font-weight: bold; } - -.highlight .w { color: #bbb; } - -.highlight .mf { color: #099; } - -.highlight .mh { color: #099; } - -.highlight .mi { color: #099; } - -.highlight .mo { color: #099; } - -.highlight .sb { color: #d14; } - -.highlight .sc { color: #d14; } - -.highlight .sd { color: #d14; } - -.highlight .s2 { color: #d14; } - -.highlight .se { color: #d14; } - -.highlight .sh { color: #d14; } - -.highlight .si { color: #d14; } - -.highlight .sx { color: #d14; } - -.highlight .sr { color: #009926; } - -.highlight .s1 { color: #d14; } - -.highlight .ss { color: #990073; } - -.highlight .bp { color: #999; } - -.highlight .vc { color: #008080; } - -.highlight .vg { color: #008080; } - -.highlight .vi { color: #008080; } - -.highlight .il { color: #099; } - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/_site/assets/main.css.map b/_site/assets/main.css.map deleted file mode 100644 index d0968b93..00000000 --- a/_site/assets/main.css.map +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": 3, - "file": "main.css", - "sources": [ - "main.scss", - "../../.rvm/gems/ruby-2.6.3/gems/minima-2.5.1/_sass/minima.scss", - "../../.rvm/gems/ruby-2.6.3/gems/minima-2.5.1/_sass/minima/_base.scss", - "../../.rvm/gems/ruby-2.6.3/gems/minima-2.5.1/_sass/minima/_layout.scss", - "../../.rvm/gems/ruby-2.6.3/gems/minima-2.5.1/_sass/minima/_syntax-highlighting.scss" - ], - "sourcesContent": [ - "@import \"minima\";\n", - "@charset \"utf-8\";\n\n// Define defaults for each variable.\n\n$base-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$base-font-size: 16px !default;\n$base-font-weight: 400 !default;\n$small-font-size: $base-font-size * 0.875 !default;\n$base-line-height: 1.5 !default;\n\n$spacing-unit: 30px !default;\n\n$text-color: #111 !default;\n$background-color: #fdfdfd !default;\n$brand-color: #2a7ae2 !default;\n\n$grey-color: #828282 !default;\n$grey-color-light: lighten($grey-color, 40%) !default;\n$grey-color-dark: darken($grey-color, 25%) !default;\n\n$table-text-align: left !default;\n\n// Width of the content area\n$content-width: 800px !default;\n\n$on-palm: 600px !default;\n$on-laptop: 800px !default;\n\n// Use media queries like this:\n// @include media-query($on-palm) {\n// .wrapper {\n// padding-right: $spacing-unit / 2;\n// padding-left: $spacing-unit / 2;\n// }\n// }\n@mixin media-query($device) {\n @media screen and (max-width: $device) {\n @content;\n }\n}\n\n@mixin relative-font-size($ratio) {\n font-size: $base-font-size * $ratio;\n}\n\n// Import partials.\n@import\n \"minima/base\",\n \"minima/layout\",\n \"minima/syntax-highlighting\"\n;\n", - "/**\n * Reset some basic elements\n */\nbody, h1, h2, h3, h4, h5, h6,\np, blockquote, pre, hr,\ndl, dd, ol, ul, figure {\n margin: 0;\n padding: 0;\n}\n\n\n\n/**\n * Basic styling\n */\nbody {\n font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;\n color: $text-color;\n background-color: $background-color;\n -webkit-text-size-adjust: 100%;\n -webkit-font-feature-settings: \"kern\" 1;\n -moz-font-feature-settings: \"kern\" 1;\n -o-font-feature-settings: \"kern\" 1;\n font-feature-settings: \"kern\" 1;\n font-kerning: normal;\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n}\n\n\n\n/**\n * Set `margin-bottom` to maintain vertical rhythm\n */\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\nul, ol, dl, figure,\n%vertical-rhythm {\n margin-bottom: $spacing-unit / 2;\n}\n\n\n\n/**\n * `main` element\n */\nmain {\n display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */\n}\n\n\n\n/**\n * Images\n */\nimg {\n max-width: 100%;\n vertical-align: middle;\n}\n\n\n\n/**\n * Figures\n */\nfigure > img {\n display: block;\n}\n\nfigcaption {\n font-size: $small-font-size;\n}\n\n\n\n/**\n * Lists\n */\nul, ol {\n margin-left: $spacing-unit;\n}\n\nli {\n > ul,\n > ol {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Headings\n */\nh1, h2, h3, h4, h5, h6 {\n font-weight: $base-font-weight;\n}\n\n\n\n/**\n * Links\n */\na {\n color: $brand-color;\n text-decoration: none;\n\n &:visited {\n color: darken($brand-color, 15%);\n }\n\n &:hover {\n color: $text-color;\n text-decoration: underline;\n }\n\n .social-media-list &:hover {\n text-decoration: none;\n\n .username {\n text-decoration: underline;\n }\n }\n}\n\n\n/**\n * Blockquotes\n */\nblockquote {\n color: $grey-color;\n border-left: 4px solid $grey-color-light;\n padding-left: $spacing-unit / 2;\n @include relative-font-size(1.125);\n letter-spacing: -1px;\n font-style: italic;\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Code formatting\n */\npre,\ncode {\n @include relative-font-size(0.9375);\n border: 1px solid $grey-color-light;\n border-radius: 3px;\n background-color: #eef;\n}\n\ncode {\n padding: 1px 5px;\n}\n\npre {\n padding: 8px 12px;\n overflow-x: auto;\n\n > code {\n border: 0;\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n\n/**\n * Wrapper\n */\n.wrapper {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));\n max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));\n margin-right: auto;\n margin-left: auto;\n padding-right: $spacing-unit;\n padding-left: $spacing-unit;\n @extend %clearfix;\n\n @include media-query($on-laptop) {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));\n max-width: calc(#{$content-width} - (#{$spacing-unit}));\n padding-right: $spacing-unit / 2;\n padding-left: $spacing-unit / 2;\n }\n}\n\n\n\n/**\n * Clearfix\n */\n%clearfix:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n\n\n/**\n * Icons\n */\n\n.svg-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n fill: #{$grey-color};\n padding-right: 5px;\n vertical-align: text-top;\n}\n\n.social-media-list {\n li + li {\n padding-top: 5px;\n }\n}\n\n\n\n/**\n * Tables\n */\ntable {\n margin-bottom: $spacing-unit;\n width: 100%;\n text-align: $table-text-align;\n color: lighten($text-color, 18%);\n border-collapse: collapse;\n border: 1px solid $grey-color-light;\n tr {\n &:nth-child(even) {\n background-color: lighten($grey-color-light, 6%);\n }\n }\n th, td {\n padding: ($spacing-unit / 3) ($spacing-unit / 2);\n }\n th {\n background-color: lighten($grey-color-light, 3%);\n border: 1px solid darken($grey-color-light, 4%);\n border-bottom-color: darken($grey-color-light, 12%);\n }\n td {\n border: 1px solid $grey-color-light;\n }\n}\n", - "/**\n * Site header\n */\n.site-header {\n border-top: 5px solid $grey-color-dark;\n border-bottom: 1px solid $grey-color-light;\n min-height: $spacing-unit * 1.865;\n\n // Positioning context for the mobile navigation icon\n position: relative;\n}\n\n.site-title {\n @include relative-font-size(1.625);\n font-weight: 300;\n line-height: $base-line-height * $base-font-size * 2.25;\n letter-spacing: -1px;\n margin-bottom: 0;\n float: left;\n\n &,\n &:visited {\n color: $grey-color-dark;\n }\n}\n\n.site-nav {\n float: right;\n line-height: $base-line-height * $base-font-size * 2.25;\n\n .nav-trigger {\n display: none;\n }\n\n .menu-icon {\n display: none;\n }\n\n .page-link {\n color: $text-color;\n line-height: $base-line-height;\n\n // Gaps between nav items, but not on the last one\n &:not(:last-child) {\n margin-right: 20px;\n }\n }\n\n @include media-query($on-palm) {\n position: absolute;\n top: 9px;\n right: $spacing-unit / 2;\n background-color: $background-color;\n border: 1px solid $grey-color-light;\n border-radius: 5px;\n text-align: right;\n\n label[for=\"nav-trigger\"] {\n display: block;\n float: right;\n width: 36px;\n height: 36px;\n z-index: 2;\n cursor: pointer;\n }\n\n .menu-icon {\n display: block;\n float: right;\n width: 36px;\n height: 26px;\n line-height: 0;\n padding-top: 10px;\n text-align: center;\n\n > svg {\n fill: $grey-color-dark;\n }\n }\n\n input ~ .trigger {\n clear: both;\n display: none;\n }\n\n input:checked ~ .trigger {\n display: block;\n padding-bottom: 5px;\n }\n\n .page-link {\n display: block;\n padding: 5px 10px;\n\n &:not(:last-child) {\n margin-right: 0;\n }\n margin-left: 20px;\n }\n }\n}\n\n\n\n/**\n * Site footer\n */\n.site-footer {\n border-top: 1px solid $grey-color-light;\n padding: $spacing-unit 0;\n}\n\n.footer-heading {\n @include relative-font-size(1.125);\n margin-bottom: $spacing-unit / 2;\n}\n\n.contact-list,\n.social-media-list {\n list-style: none;\n margin-left: 0;\n}\n\n.footer-col-wrapper {\n @include relative-font-size(0.9375);\n color: $grey-color;\n margin-left: -$spacing-unit / 2;\n @extend %clearfix;\n}\n\n.footer-col {\n float: left;\n margin-bottom: $spacing-unit / 2;\n padding-left: $spacing-unit / 2;\n}\n\n.footer-col-1 {\n width: -webkit-calc(35% - (#{$spacing-unit} / 2));\n width: calc(35% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-2 {\n width: -webkit-calc(20% - (#{$spacing-unit} / 2));\n width: calc(20% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-3 {\n width: -webkit-calc(45% - (#{$spacing-unit} / 2));\n width: calc(45% - (#{$spacing-unit} / 2));\n}\n\n@include media-query($on-laptop) {\n .footer-col-1,\n .footer-col-2 {\n width: -webkit-calc(50% - (#{$spacing-unit} / 2));\n width: calc(50% - (#{$spacing-unit} / 2));\n }\n\n .footer-col-3 {\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n@include media-query($on-palm) {\n .footer-col {\n float: none;\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n\n\n/**\n * Page content\n */\n.page-content {\n padding: $spacing-unit 0;\n flex: 1;\n}\n\n.page-heading {\n @include relative-font-size(2);\n}\n\n.post-list-heading {\n @include relative-font-size(1.75);\n}\n\n.post-list {\n margin-left: 0;\n list-style: none;\n\n > li {\n margin-bottom: $spacing-unit;\n }\n}\n\n.post-meta {\n font-size: $small-font-size;\n color: $grey-color;\n}\n\n.post-link {\n display: block;\n @include relative-font-size(1.5);\n}\n\n\n\n/**\n * Posts\n */\n.post-header {\n margin-bottom: $spacing-unit;\n}\n\n.post-title {\n @include relative-font-size(2.625);\n letter-spacing: -1px;\n line-height: 1;\n\n @include media-query($on-laptop) {\n @include relative-font-size(2.25);\n }\n}\n\n.post-content {\n margin-bottom: $spacing-unit;\n\n h2 {\n @include relative-font-size(2);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.75);\n }\n }\n\n h3 {\n @include relative-font-size(1.625);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.375);\n }\n }\n\n h4 {\n @include relative-font-size(1.25);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.125);\n }\n }\n}\n", - "/**\n * Syntax highlighting styles\n */\n.highlight {\n background: #fff;\n @extend %vertical-rhythm;\n\n .highlighter-rouge & {\n background: #eef;\n }\n\n .c { color: #998; font-style: italic } // Comment\n .err { color: #a61717; background-color: #e3d2d2 } // Error\n .k { font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #998; font-style: italic } // Comment.Multiline\n .cp { color: #999; font-weight: bold } // Comment.Preproc\n .c1 { color: #998; font-style: italic } // Comment.Single\n .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #a00 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #a00 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #458; font-weight: bold } // Keyword.Type\n .m { color: #099 } // Literal.Number\n .s { color: #d14 } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #0086B3 } // Name.Builtin\n .nc { color: #458; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #900; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #000080 } // Name.Tag\n .nv { color: #008080 } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #bbb } // Text.Whitespace\n .mf { color: #099 } // Literal.Number.Float\n .mh { color: #099 } // Literal.Number.Hex\n .mi { color: #099 } // Literal.Number.Integer\n .mo { color: #099 } // Literal.Number.Oct\n .sb { color: #d14 } // Literal.String.Backtick\n .sc { color: #d14 } // Literal.String.Char\n .sd { color: #d14 } // Literal.String.Doc\n .s2 { color: #d14 } // Literal.String.Double\n .se { color: #d14 } // Literal.String.Escape\n .sh { color: #d14 } // Literal.String.Heredoc\n .si { color: #d14 } // Literal.String.Interpol\n .sx { color: #d14 } // Literal.String.Other\n .sr { color: #009926 } // Literal.String.Regex\n .s1 { color: #d14 } // Literal.String.Single\n .ss { color: #990073 } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #008080 } // Name.Variable.Class\n .vg { color: #008080 } // Name.Variable.Global\n .vi { color: #008080 } // Name.Variable.Instance\n .il { color: #099 } // Literal.Number.Integer.Long\n}\n" - ], - "names": [], - "mappings": "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" -} \ No newline at end of file diff --git a/_site/assets/minima-social-icons.svg b/_site/assets/minima-social-icons.svg deleted file mode 100644 index 1f16c135..00000000 --- a/_site/assets/minima-social-icons.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39f87ca832d235ede52f66a4d7ae03d050e6a8b4e1ceba6a5b646fd43ee76223 -size 9906 diff --git a/_site/blog/index.html b/_site/blog/index.html deleted file mode 100644 index 3b62fa48..00000000 --- a/_site/blog/index.html +++ /dev/null @@ -1,265 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Blog - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/blog.css"> - - - <link rel="stylesheet" href="/assets/css/blog.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-22 current_page_item menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="defaultPage blogsPage" id="content" role="main"> - <div class="contentWrap"> - <h1><strong>Blog</strong></h1> - - <form class="searchForm mobileOnly" action="../index.html"> - <button type="submit" class="submit searchLink pull-left disabled" title="Search"><i class= - "icon icon-search"></i></button><input type="text" name="s" value="" required="" placeholder= - "Search for the post here"><input type="hidden" name="post_type" value="post"> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent"> - - - <div class="postLists"> - - <article> - <figure> - <a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Welcome to Jekyll!</a> - - <address> - on 22 August 2019 - </address></h3> - - <p>You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when...</p><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Read More</a> - </div> - </article> - - <article> - <figure> - <a href="/pony/2019/06/22/jungle.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/pony/2019/06/22/jungle.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 22 June 2019 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/pony/2019/06/22/jungle.html">Read More</a> - </div> - </article> - - <article> - <figure> - <a href="/2018/06/13/test.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/2018/06/13/test.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 13 June 2018 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/2018/06/13/test.html">Read More</a> - </div> - </article> - - <article> - <figure> - <a href="/2018/06/13/pomm.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/2018/06/13/pomm.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 13 June 2018 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/2018/06/13/pomm.html">Read More</a> - </div> - </article> - - <article> - <figure> - <a href="/2018/06/13/pla.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/2018/06/13/pla.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 13 June 2018 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/2018/06/13/pla.html">Read More</a> - </div> - </article> - - </div> - - - <div class="pagination clearfix"> - - - - <span class='page-numbers current'>1</span> - - - - <a class='page-numbers' href="/blog/page2/">2</a> - - - - <a class="next page-numbers" href="/blog/page2/">Next »</a> - - </div> - - </div> - - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/blog/page2/index.html b/_site/blog/page2/index.html deleted file mode 100644 index 8ba3c4b2..00000000 --- a/_site/blog/page2/index.html +++ /dev/null @@ -1,197 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Blog - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/blog.css"> - - - <link rel="stylesheet" href="/assets/css/blog.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-22 current_page_item menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="defaultPage blogsPage" id="content" role="main"> - <div class="contentWrap"> - <h1><strong>Blog</strong></h1> - - <form class="searchForm mobileOnly" action="../index.html"> - <button type="submit" class="submit searchLink pull-left disabled" title="Search"><i class= - "icon icon-search"></i></button><input type="text" name="s" value="" required="" placeholder= - "Search for the post here"><input type="hidden" name="post_type" value="post"> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent"> - - - <div class="postLists"> - - <article> - <figure> - <a href="/2018/06/13/arbre.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/2018/06/13/arbre.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 13 June 2018 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/2018/06/13/arbre.html">Read More</a> - </div> - </article> - - </div> - - - <div class="pagination clearfix"> - - <a class="prev page-numbers" href="/blog/">« Previous</a> - - - - <a class='page-numbers' href="/blog/index.html">1</a> - - - - <span class='page-numbers current'>2</span> - - - - </div> - - </div> - - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/category/jekyll/index.html b/_site/category/jekyll/index.html deleted file mode 100644 index bd6022d2..00000000 --- a/_site/category/jekyll/index.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>jekyll</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/blog.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-22 current_page_item menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="defaultPage blogsPage" id="content" role="main"> - <div class="contentWrap"> - <h1><strong>Blog</strong></h1> - - <form class="searchForm mobileOnly" action="../index.html"> - <button type="submit" class="submit searchLink pull-left disabled" title="Search"><i class= - "icon icon-search"></i></button><input type="text" name="s" value="" required="" placeholder= - "Search for the post here"><input type="hidden" name="post_type" value="post"> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent"> - - - <div class="goBackBtn"> - <a class="goBack2" href="/blog/index.html"><i class="icon-arrow-left"></i>Back</a> - </div> - <h2 class="searchTitle"><span>Tag Archives:</span> <span class="search-terms">jekyll</span></h2> - - - <div class="postLists"> - - <article> - <figure> - <a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Welcome to Jekyll!</a> - - <address> - on 22 August 2019 - </address></h3> - - <p>You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when...</p><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Read More</a> - </div> - </article> - - </div> - - - </div> - - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel active"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/category/pony/index.html b/_site/category/pony/index.html deleted file mode 100644 index 555fe608..00000000 --- a/_site/category/pony/index.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>pony</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/blog.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-22 current_page_item menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="defaultPage blogsPage" id="content" role="main"> - <div class="contentWrap"> - <h1><strong>Blog</strong></h1> - - <form class="searchForm mobileOnly" action="../index.html"> - <button type="submit" class="submit searchLink pull-left disabled" title="Search"><i class= - "icon icon-search"></i></button><input type="text" name="s" value="" required="" placeholder= - "Search for the post here"><input type="hidden" name="post_type" value="post"> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent"> - - - <div class="goBackBtn"> - <a class="goBack2" href="/blog/index.html"><i class="icon-arrow-left"></i>Back</a> - </div> - <h2 class="searchTitle"><span>Tag Archives:</span> <span class="search-terms">pony</span></h2> - - - <div class="postLists"> - - <article> - <figure> - <a href="/pony/2019/06/22/jungle.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/pony/2019/06/22/jungle.html">Frama-C 15 (Phosphorus) released, and open source case studies</a> - - <address> - Andre on 22 June 2019 - </address></h3> - - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which...</p><a href="/pony/2019/06/22/jungle.html">Read More</a> - </div> - </article> - - </div> - - - </div> - - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel active"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/category/update/index.html b/_site/category/update/index.html deleted file mode 100644 index 41778b02..00000000 --- a/_site/category/update/index.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>update</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/blog.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-22 current_page_item menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="defaultPage blogsPage" id="content" role="main"> - <div class="contentWrap"> - <h1><strong>Blog</strong></h1> - - <form class="searchForm mobileOnly" action="../index.html"> - <button type="submit" class="submit searchLink pull-left disabled" title="Search"><i class= - "icon icon-search"></i></button><input type="text" name="s" value="" required="" placeholder= - "Search for the post here"><input type="hidden" name="post_type" value="post"> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent"> - - - <div class="goBackBtn"> - <a class="goBack2" href="/blog/index.html"><i class="icon-arrow-left"></i>Back</a> - </div> - <h2 class="searchTitle"><span>Tag Archives:</span> <span class="search-terms">update</span></h2> - - - <div class="postLists"> - - <article> - <figure> - <a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html" class="img" style= - "background-image: url(/assets/img/default-blog.jpg);"></a> - </figure> - - <div class="content"> - <h3><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Welcome to Jekyll!</a> - - <address> - on 22 August 2019 - </address></h3> - - <p>You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when...</p><a href="/jekyll/update/2019/08/22/welcome-to-jekyll.html">Read More</a> - </div> - </article> - - </div> - - - </div> - - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel active"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/e-acsl.html b/_site/fc-plugins/e-acsl.html deleted file mode 100644 index f603bf44..00000000 --- a/_site/fc-plugins/e-acsl.html +++ /dev/null @@ -1,176 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>E-ACSL</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">E-ACSL</h2> - - <aside> - <p>Runtime Verification Tool</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>Frama-C's <strong>E-ACSL</strong> plug-in automatically translates an annotated C program into another program - that detects the violated annotations at runtime. If no annotation is violated, the behavior of the new program is - the same as the one of the original program.</p> - - <p>Combined with other Frama-C plug-ins that generate annotations, the verification process is pretty automatic and - may verify much more properties than standard testing. This way, it is a <a class="plain" href= - "https://en.wikipedia.org/wiki/Memory_debugger">memory debugger</a> offering functionalities comparable to Valgrind - or AddressSanitizer, and even more powerful.</p> - </dd> - - <dt class="subTitle">Quick Start</dt> - - <dd> - <p>E-ACSL comes with a convenient script <em>e-acsl-gcc.sh</em> which may be called as follow:</p> - <pre>$ e-acsl-gcc.sh -c <files></pre> - - <p>It generates three files <em>./a.out</em>, <em>./a.out.frama-c</em> and <em>./a.out.e-acsl</em>. The first one - is the binary produced by <em>gcc</em> from the input files, the second one is the instrumented file with the - monitor generated by E-ACSL from the input files. The third one is the binary produced by <em>gcc</em> from this - latter file, so monitoring the annotations. Its execution behaves in the same way than the two other files, except - that it fails if an annotation is violated.</p> - - <p>In order to automatically check that no <b>undefined behaviors</b> of many kinds are executed, just used it as - follow:</p> - <pre>$ e-acsl-gcc.sh -c --rte=all <files></pre> - - <p> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/eva.html b/_site/fc-plugins/eva.html deleted file mode 100644 index a0aa2121..00000000 --- a/_site/fc-plugins/eva.html +++ /dev/null @@ -1,238 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Evolved Value Analysis (EVA)</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Evolved Value Analysis (EVA)</h2> - - <aside> - <p>Automatically computes variation domains for the variables of the program.</p> - </aside> - - <figure class="pluginDetailThumb"> - <img src="/assets/img/plugins/eva.png" alt=""> -</figure> - -<dl class="defnitionList"> - <dt class="subTitle">Value analysis based on abstract interpretation</dt> - - <dd> - <p>The <b>Evolved Value Analysis</b> plug-in computes variation domains for variables. It is quite automatic, - although the user may guide the analysis in places. It handles a wide spectrum of C constructs. This plug-in uses - abstract interpretation techniques.</p> - - <p>The results of <b>EVA</b> can be exploited directly in two ways.</p> - <img src="/assets/img/plugins/eva-img.png"> - - <ul> - <li>They can be used to infer the absence of run-time errors. The results are displayed in reverse, that is, - alarms are emitted for all the operations that could lead to a run-time error. If an alarm is not emitted for an - operation in the source code, then this operation is guaranteed not to cause a run-time error.</li> - - <li>The Frama-C graphical user interface displays the inferred sets for possible values of a variable in each - point of the analyzed program.</li> - </ul> - - <p>Maturity: industrialized.</p> - </dd> - - <dt class="subTitle">Quick Start</dt> - - <dd> - <p>The plug-in can be used both with the graphical user interface and in batch mode. In batch mode, the command - line may look like:</p> -<pre> -frama-c -val file1.c file2.c -</pre> - - <p>A list of alarms (corresponding to possible run-time errors as computed by the analysis) is produced on the - standard output.</p> - - <p>The results of <b>EVA</b> are used by many other plug-ins. In this cases, the analysis is initiated - automatically by the exploiting plug-in, but it is still possible to configure it for the case at hand (<i>e.g.</i> - through the same command-line options that would be used in conjunction with <tt>-val</tt>).</p> - </dd> - - <dt class="subTitle">First Example</dt> - - <dd> - <p>Consider the following function, in file <em>test.c</em>:</p> - <pre> -int abs(int x) { - if (x < 0) return -x; - else return x; -} -</pre> - - <p>On this code, Eva reports the possible integer overflow when <tt>x</tt> is the smallest negative integer by - emitting an alarm at line 2. The alarm is the ACSL assertion <tt>assert -x ≤ 2147483647;</tt> that guards against - the overflow.<br> - Eva also displays the possible values of the variables at the end of the function. Here, we can see that the result - is always positive.</p> - <pre> -$ frama-c -val test.c -main abs -[…] -mytests/test.c:2:[value] warning: signed overflow. assert -x ≤ 2147483647; -[value] done for function abs -[value] ====== VALUES COMPUTED ====== -[value:final-states] Values at end of function abs: - __retres ∈ [0..2147483647] -</pre> - - <p>One can also inspect in the graphical interface of Frama-C the alarms emitted by Eva, as well as the possible - values inferred at each program point.</p> - </dd> - - <dt class="subTitle">Technical Notes</dt> - - <dd> - <p>Recursive calls are currently not supported.</p> - - <p>Only sequential code can be analyzed at this time.</p> - </dd> - - <dt class="subTitle">Further Readings</dt> - - <dd> - <p>The options to configure the analysis as well as the syntax of the results are described in the <a class="plain" - href="/download/frama-c-value-analysis.pdf">EVA user manual</a>.</p> - </dd> - - <dt class="subTitle"></dt> - - <dd></dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/impact.html b/_site/fc-plugins/impact.html deleted file mode 100644 index d315e1a6..00000000 --- a/_site/fc-plugins/impact.html +++ /dev/null @@ -1,182 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Impact analysis</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Impact analysis</h2> - - <aside> - <p>Highlights the locations in the source code that are impacted by a modification.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <b>Impact analysis</b> plug-in allows the automatic computation of the set of statements impacted by the - side effects of a statement of a C program. Statements not appearing in this set are guaranteed not to be impacted - by the selected statement.</p> - - <p>Impact analysis is available through a contextual menu at each statement in the Frama-C graphical user - interface. Invoking this analysis on a statement displays the impact of the statement on the rest of the - program.</p> - - <p> - <img src="/assets/img/plugins/impact-img.png"></p> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>The plug-in can be used both with the graphical user interface and in batch mode. In batch mode, you must put - pragmas on the statements you want to analyze:<br> - <code>/*@ impact pragma stmt; */</code></p> - - <p>Then, the following command line computes the impact from the pragma statements in the code of functions - <tt>f1,...,fn</tt>:<br> - <code>frama-c -impact-pragma f1,...,fn file1.c file2.c</code></p> - - <p>To print the list of impacted statements on the standard output:<br> - <code>frama-c -impact-print file1.c file2.c</code></p> - </dd> - - <dt class="subTitle">Dependency</dt> - - <dd> - <p>This plug-in depends on results of the Value analysis plug-in.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/jessie.html b/_site/fc-plugins/jessie.html deleted file mode 100644 index 19a83327..00000000 --- a/_site/fc-plugins/jessie.html +++ /dev/null @@ -1,174 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Jessie</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Jessie</h2> - - <aside> - <p>A deductive verification plug-in.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <b>Jessie</b> plug-in allows deductive verification of C programs annotated with <a href= - "/html/documentation/e-acsl.html">ACSL</a>. It uses internally the languages and tools of the - <a class="extlink">Why platform</a>. The generated verification conditions can be submitted to external automatic - provers such as <a class="exe" href= - "http://www.kindsoftware.com/products/opensource/archives/Simplify-1.5.5-13-06-07-binary.zip">Simplify</a>, - <a href="http://alt-ergo.lri.fr">Alt-Ergo</a>, <a href= - "http://research.microsoft.com/en-us/um/redmond/projects/z3/">Z3</a>, <a href= - "http://yices.csl.sri.com/">Yices</a>, <a href="http://www.cs.nyu.edu/acsys/cvc3/">CVC3</a>.</p> - - <p>For more complex situations, interactive theorem provers can be used to establish validity of VCs. Please look - at the <a class="extlink" href="http://krakatoa.lri.fr/">Jessie</a> web page for more details.</p> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>The plug-in is activated with the following command line:</p> - <pre> -frama-c -jessie [options] <file>.c</pre> - - <p>A short manual including a tutorial and reference is available on the <a href="http://krakatoa.lri.fr/">Jessie - Web page</a>. Please read this document for details on other command-line options and supported or unsupported - features.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/metrics-calculation.html b/_site/fc-plugins/metrics-calculation.html deleted file mode 100644 index 2b484243..00000000 --- a/_site/fc-plugins/metrics-calculation.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Metrics calculation</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Metrics calculation</h2> - - <aside> - <p>Allows the user to compute various metrics from the source code.</p> - </aside> - - <h2 class="subTitle">Metrics calculation</h2> - -<aside> - <p>Allows the user to compute various metrics from the source code.</p> -</aside> - -<dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <b>Metrics</b> plug-in allows the automatic computation of various measures on the source code.</p> - - <p>It can be used to compute the following measures:</p> - - <ul> - <li>McCabe's cyclomatic complexity;</li> - - <li>Halstead complexity;</li> - - <li>Value analysis coverage estimate.</li> - </ul> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>This plug-in can be partly used with the graphical user interface. In batch mode, the command line may look - like:<br> - <code>frama-c -metrics file1.c file2.c</code></p> - - <p>The use of this plug-in is detailed in <a href="https://frama-c.com/download/frama-c-metrics-manual.pdf" target= - "_blank" rel="noopener">the short documentation</a>.</p> - </dd> - - <dt class="subTitle">Dependency</dt> - - <dd> - <p>This plug-in depends on results of the Value analysis plug-in for the <tt>-metrics-value-cover</tt> option.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/mthread.html b/_site/fc-plugins/mthread.html deleted file mode 100644 index d93d3f16..00000000 --- a/_site/fc-plugins/mthread.html +++ /dev/null @@ -1,261 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Mthread</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Mthread</h2> - - <aside> - <p>Analyzes concurrent C programs, taking into account all possible thread interactions. Provides precise information about shared variables, which mutex protects a part of the code, etc.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <b>Mthread</b> plug-in automatically analyzes concurrent C programs, using the techniques used by the Value - analysis. At the end of its execution, the concurrent behavior of each thread is over-approximated. Thus, the - information delivered by the plug-in take into account all the <i>possible concurrent behaviors</i> of the - program.</p> - - <p>The results of Mthread are many-fold:</p> - - <ul> - <li>For each thread, all possible instructions that can lead to a <i>run-time error</i>. As explained above, this - information takes into account all possible <i>interleavings</i> between all threads.</li> - - <li>An over-approximation of the <i>memory zones that are accessed concurrently</i> by more than one thread. For - each zone and thread, Mthread also returns the program points at which the zone is accessed, whether the zone is - read or is written, and the callstack that lead to the statement.</li> - - <li>At each program point, the list of mutexes that can be locked by the current thread. This information is used - to identify shared memory zones on which <i>race conditions</i> may occur.</li> - - <li>An over-approximation of the messages exchanged by all threads through <i>explicit message-passing</i>, along - with the emission and reception points.</li> - - <li>For each thread, a slicing of all the statements it can execute, in which only the statements related to - concurrency are kept. See for example <a href= - "http://localhost:8000/documentation/mthread/download/frama-c-mthread-graph.svg">this graph</a>. - </li> - - <li>For each program point of each thread, an over approximation of the possible values</li> - </ul> - </dd> - - <dt class="subTitle">Installation</dt> - - <dd> - <p>The plug-in is currently available under a proprietary licence. You can contact - <tt>support[at]frama-c.com</tt> to obtain such a licence.</p> - - <p>Evaluation versions, in the form of pre-compiled binaries compatible with Frama-C Oxygen, are also available for - some platforms. Do not hesitate to contact us if you are interested.</p> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>The plug-in is activated with the following command line:</p> - <pre> - frama-c -mthread file1.c file2.c ... concurrent_library.c - </pre> - - <p>Notice that you must explicitely pass a stubbed version of your concurrency library on the command-line. Support - for the often used <tt>pthread</tt> primitives is included in the plug-in. Preliminary support for the - <tt>VxWorks</tt> and <tt>Win32</tt> libraries also exist.</p> - - <p>The main options are:</p> - - <dl> - <dt><tt>-mt-verbose</tt></dt> - - <dd>Gives some additional information during computation.</dd> - - <dt><tt>-mt-shared-zones <i>n</i></tt></dt> - - <dd>Show the values written in all shared zones at level 1, and with the calling contexts in which they are - written at level 2.</dd> - - <dt><tt>-mt-print-callstacks</tt></dt> - - <dd>Print the calling context at which the concurrent operations occur.</dd> - - <dt><tt>-mt-extract html</tt></dt> - - <dd>Generate an html summary of the results, as well as the concurrent (sliced) graphs of each thread.</dd> - - <dt><tt>-mt-help</tt></dt> - - <dd>Gives the whole list of options</dd> - </dl> - </dd> - - <dt class="subTitle">Ressources</dt> - - <dd> - <ul class="none"> - <li> - <a href="https://framac.s3.amazonaws.com/staging/uploads/2017/10/frama-c-mthread-manual.pdf">Documentation</a> - </li> - - <li> - <a class="src" href="http://localhost:8000/documentation/mthread/download/frama-c-mthread-examples.tgz">A few - examples, with the outputs of the plugin.</a> - </li> - </ul> - </dd> - - <dt class="subTitle">Known Restrictions</dt> - - <dd> - <ul> - <li>The detection of race condition supposes that shared zones are protected by mutexes. Lock-free algorithms are - not detected as such.</li> - - <li>Using the plug-in requires stubbing the concurrency library, if it is not amongst of the available ones - (currently <tt>pthread</tt>, <tt>VxWorks</tt> and <tt>Win32</tt>).</li> - </ul> - </dd> - - <dt class="subTitle">Contact</dt> - - <dd> - <p>For any questions, remarks or suggestions, please contact <a class="email" href= - "mailto:boris.yakobowski@cea.fr?subject=[Mthread]">Boris Yakobowski</a>.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/pathcrawler.html b/_site/fc-plugins/pathcrawler.html deleted file mode 100644 index 026fd436..00000000 --- a/_site/fc-plugins/pathcrawler.html +++ /dev/null @@ -1,230 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>PathCrawler</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">PathCrawler</h2> - - <aside> - <p>PathCrawler automatically finds test-case inputs to ensure coverage of a C function. It can be used for structural unit testing, as a complement to static analysis or to study the feasible execution paths of the function.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - <dd> - <p>PathCrawler automatically finds test-case inputs.</p> - <img src="/assets/img/plugins/pathcrawler-img.png"> - </dd> - <dt class="subTitle">What's it for ?</dt> - - <dd> - <p><b>PathCrawler</b>'s principal functionality is to automate structural unit testing by generating test inputs - which cover all the feasible execution paths of the C function under test.</p> - - <p>It can also be used to satisfy other coverage criteria (like <i>k-path</i> coverage restricting the all-path - criterion to paths with at most <i>k</i> consecutive loop iterations, branch coverage, MC-DC,&), to generate - supplementary tests to improve coverage of an existing functional test suite or to generate just the tests - necessary to cover the part of the code which has been impacted by a modification.</p> - - <p><b>PathCrawler</b> can be used to ensure, and demonstrate, code coverage when this is imposed by a standard. - However, it can also be used even when code coverage is not imposed, as a convenient and rigorous way of debugging - code fragments during development.</p> - - <p>Apart from generating tests to ensure coverage, <b>PathCrawler</b> can be used to detect all run-time errors, - anomalies such as uninitialized variables or integer overflows and unreachable code.</p> - - <p>Another use is to cross-check one implementation against another (previous version or implementation for another - platform) or to check conformity with a specification coded in C. <b>PathCrawler</b> will either find test-cases to - demonstrate any differences between the results of the two codes or else demonstrate that no such differences - exist.</p> - - <p>The path tests generated by <b>PathCrawler</b> can also be used to measure the effective execution time of an - uninterrupted task in a real-time application, and get an accurate estimate of the longest execution time.</p> - </dd> - - <dt class="subTitle">Can I try it?</dt> - - <dd> - <p>The <a href="http://PathCrawler-online.com/">PathCrawler-online</a> web service makes a restricted version of - <b>PathCrawler</b> freely available for evaluation and teaching. The user uploads the C source code to be tested - and the server displays the test-cases generated by<br> - <b>PathCrawler</b> and a detailed justification of the coverage. The user can define the test context and browse - the results using specialized interfaces in the form of web-pages. The server allows many test-case generation - sessions to be run in parallel in a completely robust and secure way.</p> - - <p>Automatic testing tools allow huge savings but they do not exonerate the user from thinking carefully about what - they want testing to achieve. To successfully use <b>PathCrawler</b>, the user must provide not only the full - source code (with C stubs for missing functions), but also must set the test parameters and program the oracle. - This demands a different "mindset" from that used for manual unit testing and so <b>PathCrawler-online</b> proposes - numerous code examples to help the user get started and a tutorial based on some of these examples.</p> - - <p>Users who have tried <b>PathCrawler-online</b> and would like to use the <b>PathCrawler</b> plug-in are invited - to contact <a href="mailto:PathCrawler@cea.fr">PathCrawler@cea.fr</a> to obtain the executable code. This usually necessitates the signature of a non-disclosure - agreement but no payment in the case of use for research or evaluation.</p> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>The plug-in is activated with the following command line:</p> - <pre> - frama-c -pc [options] -main <tested function> <file>.c - </pre> - - <p>For further details, see the <a href= - "http://localhost:8000/documentation/pathcrawler/download/frama-c-pathcrawler.pdf">user manual.</a></p> - </dd> - - <dt class="subTitle">Known restrictions</dt> - - <dd> - <p>Note that <b>PathCrawler</b> is based on constraint resolution, which is NP-complete. This means that finding a - test or demonstrating the infeasibility of the path to be covered, cannot always be guaranteed to terminate within - a reasonable time. When this occurs, <b>PathCrawler</b> reports that the corresponding path is probably infeasible - but that this cannot be demonstrated. This problem is usually only posed by functions under test which implement - numerical algorithms in which the branch conditions involve the results of complex calculations.</p> - - <p>A different problem is posed by functions which have too many easible execution paths for all-path coverage to - be practical, even when the effective calling context is taken into account. Indeed, the number of execution paths - suffers from a combinatorial explosion in the presence of loops with input-dependent limits, cascades of - conditional instructions, function calls, etc. For these functions, another coverage criterion may have to be used. - Various specialised criteria are currently being developed.</p> - - <p>Finally, there are <a href="http://pathcrawler-online.com">certain constructions in C</a> which - <b>PathCrawler</b> cannot treat yet (Menu Documentation, Section "Limitations of PathCrawler").</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/scope.html b/_site/fc-plugins/scope.html deleted file mode 100644 index bfaa2c38..00000000 --- a/_site/fc-plugins/scope.html +++ /dev/null @@ -1,243 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Scope & Data-flow browsing</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Scope & Data-flow browsing</h2> - - <aside> - <p>Allows the user to navigate the dataflow of the program, from definition to use or from use to definition.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Scope plug-in</dt> - - <dd> - <p>This plug-in computes information about dependencies on a user-specified l-value <tt>D</tt> at a user-specified - program point <tt>L</tt>. It provides the following three features, which are presented in greater details - below.</p> - - <dl> - <dt><tt>ShowDefs</tt></dt> - - <dd>gives information about the statements that may contribute to the value of <tt>D</tt> at <tt>L</tt>;</dd> - - <dt><tt>DataScope</tt></dt> - - <dd>shows the statements where <tt>D</tt> is guaranteed to have the same value than at <tt>L</tt>;</dd> - - <dt><tt>Zones</tt></dt> - - <dd>shows which data is needed in the previous statements to compute <tt>D</tt> at <tt>L</tt>.</dd> - </dl> - - <p> </p> - </dd> - - <dt class="subTitle">Show Defs</dt> - - <dd> - <p><tt class="gui-button">ShowDefs</tt> selects the statements that contribute to define the value of <tt>D</tt> at - <tt>L</tt>, and print a message if a part of <tt>D</tt> might be undefined. Notice that undefined only means here - that it has not been defined on some path from the beginning of the function.</p> - </dd> - - <dt class="subTitle">DataScope</dt> - - <dd> - <p><tt class="gui-button">DataScope</tt> selects sets of statements around a user-specified program point - <tt>L</tt> where a user-specified l-value <tt>D</tt> is guaranteed to have the same value than at <tt>L</tt>.</p> - - <ul> - <li>backward selected statements are colored in green: if a statement <code class="code">s</code> belongs to this - selection, then for all executions of the function, the value of <tt>D</tt> is not modified between the execution - of <tt>s</tt> and the <b>next</b> time <code class="code">L</code> is reached.</li> - - <li>forward selected statements are colored in blue: if a statement <code class="code">s</code> belongs to this - selection, then for all executions of the function, the value of <tt>D</tt> is not modified between the - <b>last</b> time <code class="code">L</code> is reached and the time <tt>s</tt> is reached.</li> - - <li>statements that are in both selections are colored in purple.</li> - - <li>the starting statement is underlined and is always part of the forward set.</li> - </ul> - </dd> - - <dt class="subTitle">Zones</dt> - - <dd> - <p><tt class="gui-button">Zones</tt> computes, for each point <tt>Li</tt> of the function, the data <tt>Di</tt> - needed to know the value of <tt>D</tt> at <tt>L</tt>. After this computation, the result <tt>Di</tt> will be - printed in the information window each time a statement <tt>Li</tt> is selected. Of course, the only interesting - program points <tt>Li</tt> are the one that are reached before <tt>L</tt>&</p> - - <p>The statements that contribute to the computation are highlighted so that you should get the same result - <tt>Di</tt> for successive statements that are not highlighted.</p> - </dd> - - <dt class="subTitle">How to use them</dt> - - <dd> - <p>Those features are available through the graphical user interface once the value analysis has been done. They - can be called from the menu <tt class="gui-button">Dependencies</tt> in the pop-up menu that appears when clicking - the right button on a statement :</p> - - <ul> - <li>The program point <tt>L</tt> is the one <b>before</b> the selected statement;</li> - - <li>the l-value <tt>D</tt> for which computations are done is either the one that is currently selected if any, - or an l-value entered by the user in a pop-up window.</li> - </ul> - - <p>Results are presented by coloring the statements in the graphical interface as explained above. In addition, - when something has been selected through these dependency features, a message in the information window serves as a - reminder of where it comes from.</p> - - <p>Note that all the variables that appear in the user-provided l-value are taken into account, so that selecting - <code>T[0]</code> and <code>T[i]</code> might lead to different results, even if the analysis is performed at a - point where <code>i=0</code>.</p> - </dd> - - <dt class="subTitle">Dependencies on other plug-in</dt> - - <dd> - <p>Note that the <b>Scope</b> plug-in only takes into account the executions that have been considered by the Value - analysis plug-in. In particular, the alarms emitted by the value analysis may correspond to executions that the - value analysis ceased to consider. The alarms emitted by the value analysis should therefore be examined carefully - by the user.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/semantic-constant-folding.html b/_site/fc-plugins/semantic-constant-folding.html deleted file mode 100644 index cf7a069f..00000000 --- a/_site/fc-plugins/semantic-constant-folding.html +++ /dev/null @@ -1,196 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Semantic constant folding</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Semantic constant folding</h2> - - <aside> - <p>Makes use of the results of the EVA plug-in to replace, in the source code, the constant expressions by their values.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <b>Semantic constant folding</b> plug-in produces an output program where C expressions which are - established as constant by the Value analysis plug-in are replaced by their value. Because it relies on EVA, it is - able to do more of these simplifications than a syntactic analysis would. The output program is guaranteed to be - compilable C code, and to have the same semantics as the original program.</p> - - <p>The plug-in performs propagation of constant integers and addresses, but at this time, it does not handle - floating-point values.</p> - </dd> - - <dt class="subTitle">Usage</dt> - - <dd> - <p>The command-line options related to constant folding are:</p> - - <ul> - <li><tt>-semantic-const-folding</tt><br> - activate semantic constant folding and pretty print the new source code.</li> - - <li><tt>-semantic-const-fold f1,...,fn</tt><br> - replace constant expressions in functions <tt>f1,...,fn</tt>.</li> - - <li><tt>-cast-from-constant</tt><br> - allow introduction of new casts from a folded constant.</li> - </ul> - </dd> - - <dt class="subTitle">Example</dt> - - <dd> - <p>Consider the code fragment:</p> - <pre> - p = &x; - x = 3; - send(*p+4); - </pre> - - <p>The <b>Semantic constant folding</b> plug-in produces:</p> - <pre> - p = &x; - x = 3; - send(7); - </pre> - - <p>If you need to remove the (now useless) first two statements, you may make use of the Spare Code analysis - plug-in.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/spare-code.html b/_site/fc-plugins/spare-code.html deleted file mode 100644 index 96fd2971..00000000 --- a/_site/fc-plugins/spare-code.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Spare code</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Spare code</h2> - - <aside> - <p>Removes "spare code", code that does not contribute to the final results of the program.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Usage</dt> - - <dd> - <p>The plug-in can be invoked through the command line using the options :</p> - - <dl> - <dt><tt>-sparecode-analysis</tt></dt> - - <dd>Removes statements and functions that are not useful to compute the result of the program.</dd> - - <dt><tt>-rm-unused-globals</tt></dt> - - <dd>Removes unused types and global variables.</dd> - </dl> - </dd> - - <dt class="subTitle">Behavior</dt> - - <dd> - <p>The <b>Spare code</b> plug-in produces an output program which is guaranteed to be compilable C code, and to - have the same behavior as the analyzed program from the point of view of the values assigned to the output - variables of the main function.</p> - - <p>By default, the reachable <a href="http://localhost:8000/documentation/spare-code/acsl.html">ACSL</a> - annotations are preserved, and the statements that are necessary to compute the values of the program variables - used in these annotations are retained. This behavior can be toggled off using the <tt>-sparecode-no-annot</tt> - option.</p> - - <p>To prevent elimination of some statements, <em>slicing pragmas</em> can be inserted into the source code. The - syntax of these pragmas is as follows:</p> - - <dl> - <dt><tt>/*@ slice pragma ctrl; */</tt></dt> - - <dd>Preserves the reachability of this control-flow point.</dd> - - <dt><tt>/*@ slice pragma expr e; */</tt></dt> - - <dd> - Preserves the value of the <a href="/html/documentation/acsl.html">ACSL</a> - expression <tt>e</tt> at this control-flow point. - </dd> - - <dt><tt>/*@ slice pragma stmt; */</tt></dt> - - <dd>Preserves the effects of the next statement.</dd> - </dl> - </dd> - - <dt class="subTitle">Known restrictions</dt> - - <dd> - <p>Only the annotations found inside the body of a function (<i>e.g.</i> assertions) are processed at the moment. - Function specifications such as pre and post-conditions are not taken into account, and are omitted from the - resulting program.</p> - </dd> - - <dt class="subTitle">Dependencies</dt> - - <dd> - <p>This plug-in uses the results of the Value analysis plug-in and of the function dependencies computation - (documented together with the value analysis).</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/studia.html b/_site/fc-plugins/studia.html deleted file mode 100644 index 549f0704..00000000 --- a/_site/fc-plugins/studia.html +++ /dev/null @@ -1,205 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Studia</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Studia</h2> - - <aside> - <p>Studia helps with EVA case studies on the GUI.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Studia, for case studies</dt> - - <dd> - <p>The Studia plug-in helps tracking the origin of alarms reported by EVA, adding useful shortcuts in the Frama-C - GUI for navigation between an expression and its uses/definitions.</p> - - <p>Maturity: Mature</p> - </dd> - - <dt class="subTitle">Quick Start</dt> - - <dd> - <p><code>$ frama-c-gui -val studia.c</code></p> - - <p>Right-click on an expression in the code and choose the <strong>Studia</strong> context menu to access its - features.</p><img class="size-full wp-image-640" src="/assets/img/plugins/studia-img.png" alt="" width="630" height="189" - srcset="/assets/img/plugins/studia-img.png 630w, /assets/img/plugins/studia-img.png 300w" - sizes="(max-width: 630px) 100vw, 630px"> - - <p>Use the example code below.</p> - </dd> - - <dt class="subTitle">Example</dt> - - <dd> - <pre> - #include - typedef struct { - int id; - char msg[16]; - } person; - - void disable(person *p) { - if (p->id == 2) - strcat(p->msg, "_disabled"); - } - - void set_state(person *p, int on) { - if (p->id > 0 && !on) { - disable(p); - } - } - - void main() { - person p = {2, "john_doe"}; - set_state(&p, 0); - } - </pre> - - <p>Other plug-ins derived from EVA, such as Impact, Occurrence and Scope, also include menus in the GUI which - complement Studia.</p> - </dd> - - <dt class="subTitle">Technical Notes</dt> - - <dd> - <p>Automatically enabled after running EVA and opening the GUI.</p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/variadic.html b/_site/fc-plugins/variadic.html deleted file mode 100644 index 309b677f..00000000 --- a/_site/fc-plugins/variadic.html +++ /dev/null @@ -1,285 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Variadic</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">Variadic</h2> - - <aside> - <p>Variadic simplifies variadic functions for other plug-ins.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>The <strong>Variadic</strong> plug-in (distributed with Frama-C and enabled by default) performs the translation - of calls to variadic functions into calls to semantically equivalent, but non-variadic functions.</p> - - <p><strong>Variadic</strong> enables other plug-ins to automatically handle programs containing variadic calls, - without having to implement specific behavior to handle them.</p> - - <p>It also performs some conformance checks in variadic function calls, emitting warnings when possible violations - of the C standard are detected.</p> - - <p>Finally, <strong>Variadic</strong> generates function prototypes with ACSL specifications for each variadic - call. These specifications ensure that required preconditions are verified, and allow other analyses to reason - about calls to these variadic functions.</p> - - <p><strong>Maturity</strong>: Mature</p> - </dd> - - <dt class="subTitle">Quick Start</dt> - - <dd> - <p>The plug-in is automatically enabled by default and performs its code transformation before the analyses - specified in the command-line. The result can be output via the kernel option <code>-print</code>. It can also be - directly used by other plug-ins.</p> - </dd> - - <dt class="subTitle">Example</dt> - - <dd> - <p>Example input:</p> - <pre style="font-size: smaller; color: black;"> - <span style="color: #004a43;">#</span><span style="color: #004a43;">include </span><span style= - "color: #800000;"><</span><span style="color: #40015a;">stdio.h</span><span style="color: #800000;">>></span> - - <span style="color: #800000; font-weight: bold;">void</span> <span style="color: #400000;">main</span><span style= - "color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: #800080;">{</span> - <span style="color: #800000; font-weight: bold;">int</span> n <span style="color: #808030;">=</span> <span style= - "color: #008c00;">5</span><span style="color: #800080;">;</span> - <span style="color: #603000;">printf</span><span style="color: #808030;">(</span><span style= - "color: #800000;">"</span><span style="color: #007997;">%d</span><span style="color: #0000e6;">, </span><span style= - "color: #007997;">%*s</span><span style="color: #800000;">"</span><span style="color: #808030;">,</span> <span style= - "color: #008c00;">42</span><span style="color: #808030;">,</span> n<span style="color: #808030;">,</span> <span style= - "color: #800000;">"</span><span style="color: #0000e6;">hello</span><span style="color: #800000;">"</span><span style= - "color: #808030;">)</span><span style="color: #800080;">;</span> - <span style="color: #800080;">}</span> - </pre> - - <p>Example output:</p> - <pre style="color: black; font-size: smaller;"> - <span style="color: #696969;">/* Generated by Frama-C */</span> - <span style="color: #004a43;">#</span><span style="color: #004a43;">include </span><span style= - "color: #800000;"><</span><span style="color: #40015a;">stdio.h</span><span style="color: #800000;">></span> - <span style="color: #696969;">/*@</span> - <span style="color: #696969;"> requires valid_read_string(format);</span> - <span style="color: #696969;"> requires valid_read_string(param2);</span> - <span style="color: #696969;"> assigns \result, __fc_stdout->__fc_FILE_data;</span> - <span style="color: #696969;"> assigns \result</span> - <span style="color: #696969;"> \from (indirect: __fc_stdout->__fc_FILE_id),</span> - <span style="color: #696969;"> __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),</span> - <span style="color: #696969;"> *(param2 + (0 ..)), param1, param0;</span> - <span style="color: #696969;"> assigns __fc_stdout->__fc_FILE_data</span> - <span style="color: #696969;"> \from (indirect: __fc_stdout->__fc_FILE_id),</span> - <span style="color: #696969;"> __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),</span> - <span style="color: #696969;"> *(param2 + (0 ..)), param1, param0;</span> - <span style="color: #696969;">*/</span> - <span style="color: #800000; font-weight: bold;">int</span> printf_va_1<span style="color: #808030;">(</span><span style= - "color: #800000; font-weight: bold;">char</span> <span style="color: #800000; font-weight: bold;">const</span> <span style= - "color: #808030;">*</span>format<span style="color: #808030;">,</span> <span style= - "color: #800000; font-weight: bold;">int</span> param0<span style="color: #808030;">,</span> - <span style="color: #800000; font-weight: bold;">int</span> param2<span style= - "color: #808030;">,</span> <span style="color: #800000; font-weight: bold;">char</span> <span style= - "color: #808030;">*</span>param3<span style="color: #808030;">)</span><span style="color: #800080;">;</span> - - <span style="color: #800000; font-weight: bold;">void</span> <span style="color: #400000;">main</span><span style= - "color: #808030;">(</span><span style="color: #800000; font-weight: bold;">void</span><span style="color: #808030;">)</span> - <span style="color: #800080;">{</span> - <span style="color: #800000; font-weight: bold;">int</span> n <span style="color: #808030;">=</span> <span style= - "color: #008c00;">5</span><span style="color: #800080;">;</span> - printf_va_1<span style="color: #808030;">(</span><span style="color: #800000;">"</span><span style= - "color: #007997;">%d</span><span style="color: #0000e6;">, </span><span style="color: #007997;">%*s</span><span style= - "color: #800000;">"</span><span style="color: #808030;">,</span><span style="color: #008c00;">42</span><span style= - "color: #808030;">,</span>n<span style="color: #808030;">,</span><span style="color: #808030;">(</span><span style= - "color: #800000; font-weight: bold;">char</span> <span style="color: #808030;">*</span><span style= - "color: #808030;">)</span><span style="color: #800000;">"</span><span style="color: #0000e6;">hello</span><span style= - "color: #800000;">"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> - <span style="color: #800000; font-weight: bold;">return</span><span style="color: #800080;">;</span> - <span style="color: #800080;">}</span> - </pre> - - <p>The plug-in can be made more strict via option <code>-variadic-strict</code>, which enables checking - non-portable implicit casts in calls of standard variadic functions.</p> - - <p>If necessary, the <strong>Variadic</strong> plug-in can be disabled via option - <code>-variadic-no-translation</code>.</p> - - <p></p> - </dd> - - <dt class="subTitle">Technical Notes</dt> - - <dd> - <p>Calls to standard variadic functions such as <code>printf</code> and <code>scanf</code> with non-static format - arguments are not currently supported. For instance, the following call is not translated by the plug-in:</p> - <pre style="color: black; font-size: smaller;"> - <span style='color:#004a43;'>#</span><span style='color:#004a43;'>include </span><span style= - 'color:#800000;'><</span><span style='color:#40015a;'>stdio.h</span><span style='color:#800000;'>></span> - - <span style='color:#800000; font-weight:bold;'>void</span> f<span style='color:#808030;'>(</span><span style= - 'color:#800000; font-weight:bold;'>int</span> n<span style='color:#808030;'>)</span> <span style='color:#800080;'>{</span> - <span style='color:#603000;'>printf</span><span style='color:#808030;'>(</span>n <span style= - 'color:#808030;'>&</span>lt<span style='color:#800080;'>;</span> <span style='color:#008c00;'>2</span> <span style= - 'color:#800080;'>?</span> - <span style='color:#800000;'>"</span><span style='color:#007997;'>%d</span><span style= - 'color:#0000e6;'> packet is available</span><span style='color:#800000;'>"</span> <span style='color:#800080;'>:</span> - <span style='color:#800000;'>"</span><span style='color:#007997;'>%d</span><span style= - 'color:#0000e6;'> packets are available</span><span style='color:#800000;'>"</span><span style= - 'color:#808030;'>,</span> n<span style='color:#808030;'>)</span><span style='color:#800080;'>;</span> - <span style='color:#800080;'>}</span> - </pre> - - <p>Also, unless option <code>-print-libc</code> is enabled, the output produced by <strong>Variadic</strong>, in - particular when using macros <code>va_list</code>, <code>va_arg</code>, etc, is not guaranteed to be parsable. - Using <code>-print-libc</code> avoids this issue.</p> - </dd> - - <dt class="subTitle">Documentation</dt> - - <dd> - <p>Information about the plug-in is available via its help option:</p> - - <p><code>frama-c -variadic-help</code></p> - - <p>If you want more detailed information about this plug-in, please contact us.</p> - - <p>Variadic has no specific user manual; its usage is presented in the <a class="plain" href= - "http://frama-c.com/download/user-manual-Phosphorus-20170501.pdf">Frama-C user manual</a></p> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/fc-plugins/wp.html b/_site/fc-plugins/wp.html deleted file mode 100644 index ab10e775..00000000 --- a/_site/fc-plugins/wp.html +++ /dev/null @@ -1,236 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>WP</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pluginDetail"> - <div class="tabs"> - <div class="wrap"> - <div class="goBackBtn"> - <a class="goBack" href="/html/kernel-plugin.html"><i class="icon-arrow-left"></i>Back</a> - </div><a class="tabLink active" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pages"> - <div class="bgTextbig"> - Plugins - </div> - - <div class="wrap"> - <h2 class="subTitle">WP</h2> - - <aside> - <p>Deductive proofs of ACSL contracts.</p> - </aside> - - <dl class="defnitionList"> - <dt class="subTitle">Overview</dt> - - <dd> - <p>This plug-in allows to prove that ACSL contracts are fulfilled for all possible execution of the code. It is - based on weakest-precondition calculus and relies on external automated provers and proof assistants to finally - assess the desired properties.</p> - - <p>Proving properties by WP is a modular approach, which makes it a strong alternative to consider in replacement - of traditional unitary testing.</p> - - <p>Maturity: industrialized.</p> - </dd> - - <dt class="subTitle">Quick Start</dt> - - <dd> - <pre> - $ frama-c -wp file.c - </pre> - </dd> - - <dt class="subTitle">Technical Notes</dt> - - <dd> - <p><b>WP</b> has an internal prover, <b>Qed</b>, which is also used to simplify the proof obligations before being - send to external provers.</p> - - <p>Recommended external provers</p> - - <ul> - <li><b>Alt-Ergo</b>, <b>Coq</b> (native support)</li> - - <li><b>Z3</b>, <b>CVC4</b> and all other provers supported by the <b>Why-3</b> platform</li> - </ul> - </dd> - - <dt class="subTitle">User Manual and Tutorial</dt> - - <dd> - <p>For more details about the <b>WP</b> plug-in, including installation instructions, please consult the WP manual - and use the Frama-C mailing lists <a class="main" href= - "http://localhost:8000/documentation/wp/download/frama-c-wp-manual.pdf">WP Plug-in Manual</a></p> - - <p>The Fraunhofer <b>Fokus</b> Team provides an extensive corpus of <b>ACSL</b> annotations for typical C programs - to be proved by <b>WP</b>. It is available online and a public repository hosts the annotated source examples:</p> - - <ul> - <li> - <a class="plain" href="http://www.fokus.fraunhofer.de/download/acsl_by_example">ACSL By Example</a> - </li> - - <li> - <a class="plain" href="https://gitlab.fokus.fraunhofer.de/verification/open-acslbyexample.git">Examples Git - Repository</a> - </li> - </ul> - - <p>Other previous tutorials on deductive verification of C programs with Frama-C plug-ins Jessie or WP can be - helpful as well:</p> - - <ul> - <li> - <a class="plain" href= - "http://kosmatov.perso.sfr.fr/nikolai/publications/tutorial_2013_06_18_tap2013_slides.pdf">Tutorial at TAP - 2013</a> and <a class="plain" href= - "http://kosmatov.perso.sfr.fr/nikolai/publications/kosmatov_ps_tap_2013.pdf">accompanying tutorial paper</a> - </li> - - <li> - <a class="plain" href= - "http://kosmatov.perso.sfr.fr/nikolai/publications/tutorial_2013_03_18_sac2013_slides.pdf">Tutorial at SAC - 2013</a> - </li> - - <li> - <a class="plain" href= - "https://bts.frama-c.com/dokuwiki/lib/exe/fetch.php?media=mantis:frama-c:tutorial:ifm-2013:slides.pdf">Tutorial - at iFM 2013</a> - </li> - </ul> - - <p>Publications:</p> - - <ul> - <li>Some publications describing the WP plug-in and its applications are listed on <a class="plain" href= - "https://bts.frama-c.com/dokuwiki/doku.php?id=mantis:frama-c:publications">the Frama-C wiki</a> - </li> - </ul> - </dd> -</dl> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/feed.xml b/_site/feed.xml deleted file mode 100644 index b53e005d..00000000 --- a/_site/feed.xml +++ /dev/null @@ -1,862 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2019-10-02T14:45:38+02:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">Your awesome title</title><subtitle>Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.</subtitle><entry><title type="html">Welcome to Jekyll!</title><link href="http://localhost:4000/jekyll/update/2019/08/22/welcome-to-jekyll.html" rel="alternate" type="text/html" title="Welcome to Jekyll!" /><published>2019-08-22T13:59:15+02:00</published><updated>2019-08-22T13:59:15+02:00</updated><id>http://localhost:4000/jekyll/update/2019/08/22/welcome-to-jekyll</id><content type="html" xml:base="http://localhost:4000/jekyll/update/2019/08/22/welcome-to-jekyll.html"><p>You’ll find this post in your <code class="highlighter-rouge">_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code class="highlighter-rouge">jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p> - -<p>Jekyll requires blog post files to be named according to the following format:</p> - -<p><code class="highlighter-rouge">YEAR-MONTH-DAY-title.MARKUP</code></p> - -<p>Where <code class="highlighter-rouge">YEAR</code> is a four-digit number, <code class="highlighter-rouge">MONTH</code> and <code class="highlighter-rouge">DAY</code> are both two-digit numbers, and <code class="highlighter-rouge">MARKUP</code> is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.</p> - -<p>Jekyll also offers powerful support for code snippets:</p> - -<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">print_hi</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span> - <span class="nb">puts</span> <span class="s2">"Hi, </span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2">"</span> -<span class="k">end</span> -<span class="n">print_hi</span><span class="p">(</span><span class="s1">'Tom'</span><span class="p">)</span> -<span class="c1">#=&gt; prints 'Hi, Tom' to STDOUT.</span></code></pre></figure> - -<p>Check out the <a href="https://jekyllrb.com/docs/home">Jekyll docs</a> for more info on how to get the most out of Jekyll. File all bugs/feature requests at <a href="https://github.com/jekyll/jekyll">Jekyll’s GitHub repo</a>. If you have questions, you can ask them on <a href="https://talk.jekyllrb.com/">Jekyll Talk</a>.</p></content><author><name></name></author><summary type="html">You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.</summary></entry><entry><title type="html">Frama-C 15 (Phosphorus) released, and open source case studies</title><link href="http://localhost:4000/pony/2019/06/22/jungle.html" rel="alternate" type="text/html" title="Frama-C 15 (Phosphorus) released, and open source case studies" /><published>2019-06-22T00:00:00+02:00</published><updated>2019-06-22T00:00:00+02:00</updated><id>http://localhost:4000/pony/2019/06/22/jungle</id><content type="html" xml:base="http://localhost:4000/pony/2019/06/22/jungle.html"><p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include &lt;stdio.h&gt;</code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include &lt;stdio.h&gt; - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout-&gt;__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout-&gt;__fc_FILE_data -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make &lt;target&gt;.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code>&lt;target&gt;.parse</code>, <code>&lt;target&gt;.eva</code>, -<code>&lt;target&gt;.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load &lt;target&gt;.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p></content><author><name>Andre</name></author><summary type="html">Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which contains some snapshots of code bases ready to be analyzed with Frama-C/EVA. Highlighted new features E-ACSL in the default release One notable change in this release is the direct integration of E-ACSL: instead of having to install OPAM packages frama-c and frama-c-e-acsl, you only need to install frama-c. E-ACSL enables runtime verification in Frama-C, serving as an efficient tool for detecting undefined behavior and for debugging ACSL specifications. It can be used in a stand-alone mode (e.g. with assertions generated by the RTEgen plug-in), or in combination with EVA, in which case its instrumentation is more efficient: EVA only generates ACSL assertions for the properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation. Note that, due to the usage of jemalloc and some technical details, E-ACSL is disabled by default in Mac and Windows. Better pretty-printing of #include directives One of the drawbacks of the -print option of Frama-C was the fact that the code was entirely preprocessed, expanding a Hello world example to several hundreds of lines, due to the expansion of #include &lt;stdio.h&gt; and derived files. There are now two options, -print-libc and -no-print-libc (the latter is enabled by default) which control the folding/unfolding of #include directives in pretty-printed code. More specifically, if your original code is: #include &lt;stdio.h&gt; int main() { printf("hello world!\n"); return 0; } Then the result of -print will be: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" /*@ requires valid_read_string(format); assigns \result, __fc_stdout-&gt;__fc_FILE_data; assigns \result \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); assigns __fc_stdout-&gt;__fc_FILE_data \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); */int printf_va_1(char const *format); int main(void) { int __retres; printf_va_1("hello world!\n"); __retres = 0; return __retres; } There are two interesting things to notice here: Some #include directives are present at the beginning of the file. These directives correspond to all files from the Frama-C standard library whose identifiers were present in the (expanded) original code. For instance, errno.h is present because Frama-Cs stdio.h includes it. As you can see, the mechanism does not guarantee a minimal number of includes, but it is much cleaner than having all files expanded; The specification of printf_va_1 is visible. This is due to the fact that the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus)) generated this specification it is not part of the standard Frama-C library. In fact, printf_va_1 is a specific instantiation of the variadic printf function. You can disable the automatic variadic translation with -variadic-no-translation, in which case -print will result in: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" int main(void) { int __retres; printf("hello world!\n"); __retres = 0; return __retres; } The Phosphorus release also includes, as usual, a series of bug fixes and minor improvements. Consult the Changelog for more details. Open source case studies A new Github repository on the Frama-C organization, open-source-case-studies, has been created to help users quickly run Frama-C (and EVA in particular) in more realistic code bases, which includes different sorts of open-source code; some of them are very small (a single file) while others contain significantly larger bases. Their usage is very simple: once you have installed Frama-C and put it in the PATH, enter one of the case study directories and run: make to parse and run EVA; make &lt;target&gt;.eva.gui to open the Frama-C GUI and view the results. The target names vary on each case study, and can be obtained via make help. Note that this will show only the base target name, from which other targets are derived (e.g. &lt;target&gt;.parse, &lt;target&gt;.eva, &lt;target&gt;.eva.gui). All case studies include a Makefile, which uses the files in fcscripts to generate targets and Makefile rules to allow running EVA quickly. Among the facilities provided by these scripts, we highlight: templates for Frama-C parametrization (i.e. variables CPPFLAGS, FCFLAGS and EVAFLAGS to delineate which options are related to preprocessing, parsing and running EVA), including helpful default parameters; automatic target dependencies on command line arguments: Frama-C reparses files only when they are modified, and re-runs EVA only when command line arguments change; saving of intermediate results in directories (for easy comparison via Meld), to run other plug-ins without having to re-run EVA (e.g. frama-c -load &lt;target&gt;.eva/framac.sav ...). Note, however, that there are some caveats concerning this repository: It is not representative of the scale of programs that Frama-C/EVA can handle; indeed, all large code bases where Frama-C/EVA is applied consist in industrial code that cannot be shared; One of the main purposes of the repository (internally) is to serve for non-regression testing, which means that some analyses are not fully parametrized; Some case studies include code that is not ideally dealt with by EVA, but may be useful for other plug-ins. Those caveats aside, we hope this repository will give practical examples and help you to parametrize your own analyses. If you also have some interesting open source code bases on which to run EVA, you can submit them to us as a Github pull requests. This will make it easier to compare the behavior of future versions of Frama-C on such code, and to benefit from improvements in the analyzer.</summary></entry><entry><title type="html">Frama-C 15 (Phosphorus) released, and open source case studies</title><link href="http://localhost:4000/2018/06/13/arbre.html" rel="alternate" type="text/html" title="Frama-C 15 (Phosphorus) released, and open source case studies" /><published>2018-06-13T00:00:00+02:00</published><updated>2018-06-13T00:00:00+02:00</updated><id>http://localhost:4000/2018/06/13/arbre</id><content type="html" xml:base="http://localhost:4000/2018/06/13/arbre.html"><p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include &lt;stdio.h&gt;</code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include &lt;stdio.h&gt; - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout-&gt;__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout-&gt;__fc_FILE_data -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make &lt;target&gt;.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code>&lt;target&gt;.parse</code>, <code>&lt;target&gt;.eva</code>, -<code>&lt;target&gt;.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load &lt;target&gt;.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p></content><author><name>Andre</name></author><summary type="html">Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which contains some snapshots of code bases ready to be analyzed with Frama-C/EVA. Highlighted new features E-ACSL in the default release One notable change in this release is the direct integration of E-ACSL: instead of having to install OPAM packages frama-c and frama-c-e-acsl, you only need to install frama-c. E-ACSL enables runtime verification in Frama-C, serving as an efficient tool for detecting undefined behavior and for debugging ACSL specifications. It can be used in a stand-alone mode (e.g. with assertions generated by the RTEgen plug-in), or in combination with EVA, in which case its instrumentation is more efficient: EVA only generates ACSL assertions for the properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation. Note that, due to the usage of jemalloc and some technical details, E-ACSL is disabled by default in Mac and Windows. Better pretty-printing of #include directives One of the drawbacks of the -print option of Frama-C was the fact that the code was entirely preprocessed, expanding a Hello world example to several hundreds of lines, due to the expansion of #include &lt;stdio.h&gt; and derived files. There are now two options, -print-libc and -no-print-libc (the latter is enabled by default) which control the folding/unfolding of #include directives in pretty-printed code. More specifically, if your original code is: #include &lt;stdio.h&gt; int main() { printf("hello world!\n"); return 0; } Then the result of -print will be: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" /*@ requires valid_read_string(format); assigns \result, __fc_stdout-&gt;__fc_FILE_data; assigns \result \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); assigns __fc_stdout-&gt;__fc_FILE_data \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); */int printf_va_1(char const *format); int main(void) { int __retres; printf_va_1("hello world!\n"); __retres = 0; return __retres; } There are two interesting things to notice here: Some #include directives are present at the beginning of the file. These directives correspond to all files from the Frama-C standard library whose identifiers were present in the (expanded) original code. For instance, errno.h is present because Frama-Cs stdio.h includes it. As you can see, the mechanism does not guarantee a minimal number of includes, but it is much cleaner than having all files expanded; The specification of printf_va_1 is visible. This is due to the fact that the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus)) generated this specification it is not part of the standard Frama-C library. In fact, printf_va_1 is a specific instantiation of the variadic printf function. You can disable the automatic variadic translation with -variadic-no-translation, in which case -print will result in: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" int main(void) { int __retres; printf("hello world!\n"); __retres = 0; return __retres; } The Phosphorus release also includes, as usual, a series of bug fixes and minor improvements. Consult the Changelog for more details. Open source case studies A new Github repository on the Frama-C organization, open-source-case-studies, has been created to help users quickly run Frama-C (and EVA in particular) in more realistic code bases, which includes different sorts of open-source code; some of them are very small (a single file) while others contain significantly larger bases. Their usage is very simple: once you have installed Frama-C and put it in the PATH, enter one of the case study directories and run: make to parse and run EVA; make &lt;target&gt;.eva.gui to open the Frama-C GUI and view the results. The target names vary on each case study, and can be obtained via make help. Note that this will show only the base target name, from which other targets are derived (e.g. &lt;target&gt;.parse, &lt;target&gt;.eva, &lt;target&gt;.eva.gui). All case studies include a Makefile, which uses the files in fcscripts to generate targets and Makefile rules to allow running EVA quickly. Among the facilities provided by these scripts, we highlight: templates for Frama-C parametrization (i.e. variables CPPFLAGS, FCFLAGS and EVAFLAGS to delineate which options are related to preprocessing, parsing and running EVA), including helpful default parameters; automatic target dependencies on command line arguments: Frama-C reparses files only when they are modified, and re-runs EVA only when command line arguments change; saving of intermediate results in directories (for easy comparison via Meld), to run other plug-ins without having to re-run EVA (e.g. frama-c -load &lt;target&gt;.eva/framac.sav ...). Note, however, that there are some caveats concerning this repository: It is not representative of the scale of programs that Frama-C/EVA can handle; indeed, all large code bases where Frama-C/EVA is applied consist in industrial code that cannot be shared; One of the main purposes of the repository (internally) is to serve for non-regression testing, which means that some analyses are not fully parametrized; Some case studies include code that is not ideally dealt with by EVA, but may be useful for other plug-ins. Those caveats aside, we hope this repository will give practical examples and help you to parametrize your own analyses. If you also have some interesting open source code bases on which to run EVA, you can submit them to us as a Github pull requests. This will make it easier to compare the behavior of future versions of Frama-C on such code, and to benefit from improvements in the analyzer.</summary></entry><entry><title type="html">Frama-C 15 (Phosphorus) released, and open source case studies</title><link href="http://localhost:4000/2018/06/13/pla.html" rel="alternate" type="text/html" title="Frama-C 15 (Phosphorus) released, and open source case studies" /><published>2018-06-13T00:00:00+02:00</published><updated>2018-06-13T00:00:00+02:00</updated><id>http://localhost:4000/2018/06/13/pla</id><content type="html" xml:base="http://localhost:4000/2018/06/13/pla.html"><p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include &lt;stdio.h&gt;</code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include &lt;stdio.h&gt; - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout-&gt;__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout-&gt;__fc_FILE_data -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make &lt;target&gt;.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code>&lt;target&gt;.parse</code>, <code>&lt;target&gt;.eva</code>, -<code>&lt;target&gt;.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load &lt;target&gt;.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p></content><author><name>Andre</name></author><summary type="html">Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which contains some snapshots of code bases ready to be analyzed with Frama-C/EVA. Highlighted new features E-ACSL in the default release One notable change in this release is the direct integration of E-ACSL: instead of having to install OPAM packages frama-c and frama-c-e-acsl, you only need to install frama-c. E-ACSL enables runtime verification in Frama-C, serving as an efficient tool for detecting undefined behavior and for debugging ACSL specifications. It can be used in a stand-alone mode (e.g. with assertions generated by the RTEgen plug-in), or in combination with EVA, in which case its instrumentation is more efficient: EVA only generates ACSL assertions for the properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation. Note that, due to the usage of jemalloc and some technical details, E-ACSL is disabled by default in Mac and Windows. Better pretty-printing of #include directives One of the drawbacks of the -print option of Frama-C was the fact that the code was entirely preprocessed, expanding a Hello world example to several hundreds of lines, due to the expansion of #include &lt;stdio.h&gt; and derived files. There are now two options, -print-libc and -no-print-libc (the latter is enabled by default) which control the folding/unfolding of #include directives in pretty-printed code. More specifically, if your original code is: #include &lt;stdio.h&gt; int main() { printf("hello world!\n"); return 0; } Then the result of -print will be: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" /*@ requires valid_read_string(format); assigns \result, __fc_stdout-&gt;__fc_FILE_data; assigns \result \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); assigns __fc_stdout-&gt;__fc_FILE_data \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); */int printf_va_1(char const *format); int main(void) { int __retres; printf_va_1("hello world!\n"); __retres = 0; return __retres; } There are two interesting things to notice here: Some #include directives are present at the beginning of the file. These directives correspond to all files from the Frama-C standard library whose identifiers were present in the (expanded) original code. For instance, errno.h is present because Frama-Cs stdio.h includes it. As you can see, the mechanism does not guarantee a minimal number of includes, but it is much cleaner than having all files expanded; The specification of printf_va_1 is visible. This is due to the fact that the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus)) generated this specification it is not part of the standard Frama-C library. In fact, printf_va_1 is a specific instantiation of the variadic printf function. You can disable the automatic variadic translation with -variadic-no-translation, in which case -print will result in: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" int main(void) { int __retres; printf("hello world!\n"); __retres = 0; return __retres; } The Phosphorus release also includes, as usual, a series of bug fixes and minor improvements. Consult the Changelog for more details. Open source case studies A new Github repository on the Frama-C organization, open-source-case-studies, has been created to help users quickly run Frama-C (and EVA in particular) in more realistic code bases, which includes different sorts of open-source code; some of them are very small (a single file) while others contain significantly larger bases. Their usage is very simple: once you have installed Frama-C and put it in the PATH, enter one of the case study directories and run: make to parse and run EVA; make &lt;target&gt;.eva.gui to open the Frama-C GUI and view the results. The target names vary on each case study, and can be obtained via make help. Note that this will show only the base target name, from which other targets are derived (e.g. &lt;target&gt;.parse, &lt;target&gt;.eva, &lt;target&gt;.eva.gui). All case studies include a Makefile, which uses the files in fcscripts to generate targets and Makefile rules to allow running EVA quickly. Among the facilities provided by these scripts, we highlight: templates for Frama-C parametrization (i.e. variables CPPFLAGS, FCFLAGS and EVAFLAGS to delineate which options are related to preprocessing, parsing and running EVA), including helpful default parameters; automatic target dependencies on command line arguments: Frama-C reparses files only when they are modified, and re-runs EVA only when command line arguments change; saving of intermediate results in directories (for easy comparison via Meld), to run other plug-ins without having to re-run EVA (e.g. frama-c -load &lt;target&gt;.eva/framac.sav ...). Note, however, that there are some caveats concerning this repository: It is not representative of the scale of programs that Frama-C/EVA can handle; indeed, all large code bases where Frama-C/EVA is applied consist in industrial code that cannot be shared; One of the main purposes of the repository (internally) is to serve for non-regression testing, which means that some analyses are not fully parametrized; Some case studies include code that is not ideally dealt with by EVA, but may be useful for other plug-ins. Those caveats aside, we hope this repository will give practical examples and help you to parametrize your own analyses. If you also have some interesting open source code bases on which to run EVA, you can submit them to us as a Github pull requests. This will make it easier to compare the behavior of future versions of Frama-C on such code, and to benefit from improvements in the analyzer.</summary></entry><entry><title type="html">Frama-C 15 (Phosphorus) released, and open source case studies</title><link href="http://localhost:4000/2018/06/13/pomm.html" rel="alternate" type="text/html" title="Frama-C 15 (Phosphorus) released, and open source case studies" /><published>2018-06-13T00:00:00+02:00</published><updated>2018-06-13T00:00:00+02:00</updated><id>http://localhost:4000/2018/06/13/pomm</id><content type="html" xml:base="http://localhost:4000/2018/06/13/pomm.html"><p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include &lt;stdio.h&gt;</code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include &lt;stdio.h&gt; - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout-&gt;__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout-&gt;__fc_FILE_data -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make &lt;target&gt;.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code>&lt;target&gt;.parse</code>, <code>&lt;target&gt;.eva</code>, -<code>&lt;target&gt;.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load &lt;target&gt;.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p></content><author><name>Andre</name></author><summary type="html">Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which contains some snapshots of code bases ready to be analyzed with Frama-C/EVA. Highlighted new features E-ACSL in the default release One notable change in this release is the direct integration of E-ACSL: instead of having to install OPAM packages frama-c and frama-c-e-acsl, you only need to install frama-c. E-ACSL enables runtime verification in Frama-C, serving as an efficient tool for detecting undefined behavior and for debugging ACSL specifications. It can be used in a stand-alone mode (e.g. with assertions generated by the RTEgen plug-in), or in combination with EVA, in which case its instrumentation is more efficient: EVA only generates ACSL assertions for the properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation. Note that, due to the usage of jemalloc and some technical details, E-ACSL is disabled by default in Mac and Windows. Better pretty-printing of #include directives One of the drawbacks of the -print option of Frama-C was the fact that the code was entirely preprocessed, expanding a Hello world example to several hundreds of lines, due to the expansion of #include &lt;stdio.h&gt; and derived files. There are now two options, -print-libc and -no-print-libc (the latter is enabled by default) which control the folding/unfolding of #include directives in pretty-printed code. More specifically, if your original code is: #include &lt;stdio.h&gt; int main() { printf("hello world!\n"); return 0; } Then the result of -print will be: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" /*@ requires valid_read_string(format); assigns \result, __fc_stdout-&gt;__fc_FILE_data; assigns \result \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); assigns __fc_stdout-&gt;__fc_FILE_data \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); */int printf_va_1(char const *format); int main(void) { int __retres; printf_va_1("hello world!\n"); __retres = 0; return __retres; } There are two interesting things to notice here: Some #include directives are present at the beginning of the file. These directives correspond to all files from the Frama-C standard library whose identifiers were present in the (expanded) original code. For instance, errno.h is present because Frama-Cs stdio.h includes it. As you can see, the mechanism does not guarantee a minimal number of includes, but it is much cleaner than having all files expanded; The specification of printf_va_1 is visible. This is due to the fact that the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus)) generated this specification it is not part of the standard Frama-C library. In fact, printf_va_1 is a specific instantiation of the variadic printf function. You can disable the automatic variadic translation with -variadic-no-translation, in which case -print will result in: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" int main(void) { int __retres; printf("hello world!\n"); __retres = 0; return __retres; } The Phosphorus release also includes, as usual, a series of bug fixes and minor improvements. Consult the Changelog for more details. Open source case studies A new Github repository on the Frama-C organization, open-source-case-studies, has been created to help users quickly run Frama-C (and EVA in particular) in more realistic code bases, which includes different sorts of open-source code; some of them are very small (a single file) while others contain significantly larger bases. Their usage is very simple: once you have installed Frama-C and put it in the PATH, enter one of the case study directories and run: make to parse and run EVA; make &lt;target&gt;.eva.gui to open the Frama-C GUI and view the results. The target names vary on each case study, and can be obtained via make help. Note that this will show only the base target name, from which other targets are derived (e.g. &lt;target&gt;.parse, &lt;target&gt;.eva, &lt;target&gt;.eva.gui). All case studies include a Makefile, which uses the files in fcscripts to generate targets and Makefile rules to allow running EVA quickly. Among the facilities provided by these scripts, we highlight: templates for Frama-C parametrization (i.e. variables CPPFLAGS, FCFLAGS and EVAFLAGS to delineate which options are related to preprocessing, parsing and running EVA), including helpful default parameters; automatic target dependencies on command line arguments: Frama-C reparses files only when they are modified, and re-runs EVA only when command line arguments change; saving of intermediate results in directories (for easy comparison via Meld), to run other plug-ins without having to re-run EVA (e.g. frama-c -load &lt;target&gt;.eva/framac.sav ...). Note, however, that there are some caveats concerning this repository: It is not representative of the scale of programs that Frama-C/EVA can handle; indeed, all large code bases where Frama-C/EVA is applied consist in industrial code that cannot be shared; One of the main purposes of the repository (internally) is to serve for non-regression testing, which means that some analyses are not fully parametrized; Some case studies include code that is not ideally dealt with by EVA, but may be useful for other plug-ins. Those caveats aside, we hope this repository will give practical examples and help you to parametrize your own analyses. If you also have some interesting open source code bases on which to run EVA, you can submit them to us as a Github pull requests. This will make it easier to compare the behavior of future versions of Frama-C on such code, and to benefit from improvements in the analyzer.</summary></entry><entry><title type="html">Frama-C 15 (Phosphorus) released, and open source case studies</title><link href="http://localhost:4000/2018/06/13/test.html" rel="alternate" type="text/html" title="Frama-C 15 (Phosphorus) released, and open source case studies" /><published>2018-06-13T00:00:00+02:00</published><updated>2018-06-13T00:00:00+02:00</updated><id>http://localhost:4000/2018/06/13/test</id><content type="html" xml:base="http://localhost:4000/2018/06/13/test.html"><p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include &lt;stdio.h&gt;</code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include &lt;stdio.h&gt; - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout-&gt;__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout-&gt;__fc_FILE_data -\from (indirect: __fc_stdout-&gt;__fc_FILE_id), -__fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make &lt;target&gt;.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code>&lt;target&gt;.parse</code>, <code>&lt;target&gt;.eva</code>, -<code>&lt;target&gt;.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load &lt;target&gt;.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p></content><author><name>Andre</name></author><summary type="html">Frama-C 15 (Phosphorus) has been released, and the OPAM package is already available! A MinGW-based OPAM package, distributed by fdopens MinGW OPAM repository, is also available. In this post, we briefly highlight two new features in this release. We also announce the release of a new Github repository, open-source-case-studies, which contains some snapshots of code bases ready to be analyzed with Frama-C/EVA. Highlighted new features E-ACSL in the default release One notable change in this release is the direct integration of E-ACSL: instead of having to install OPAM packages frama-c and frama-c-e-acsl, you only need to install frama-c. E-ACSL enables runtime verification in Frama-C, serving as an efficient tool for detecting undefined behavior and for debugging ACSL specifications. It can be used in a stand-alone mode (e.g. with assertions generated by the RTEgen plug-in), or in combination with EVA, in which case its instrumentation is more efficient: EVA only generates ACSL assertions for the properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation. Note that, due to the usage of jemalloc and some technical details, E-ACSL is disabled by default in Mac and Windows. Better pretty-printing of #include directives One of the drawbacks of the -print option of Frama-C was the fact that the code was entirely preprocessed, expanding a Hello world example to several hundreds of lines, due to the expansion of #include &lt;stdio.h&gt; and derived files. There are now two options, -print-libc and -no-print-libc (the latter is enabled by default) which control the folding/unfolding of #include directives in pretty-printed code. More specifically, if your original code is: #include &lt;stdio.h&gt; int main() { printf("hello world!\n"); return 0; } Then the result of -print will be: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" /*@ requires valid_read_string(format); assigns \result, __fc_stdout-&gt;__fc_FILE_data; assigns \result \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); assigns __fc_stdout-&gt;__fc_FILE_data \from (indirect: __fc_stdout-&gt;__fc_FILE_id), __fc_stdout-&gt;__fc_FILE_data, (indirect: *(format + (0 ..))); */int printf_va_1(char const *format); int main(void) { int __retres; printf_va_1("hello world!\n"); __retres = 0; return __retres; } There are two interesting things to notice here: Some #include directives are present at the beginning of the file. These directives correspond to all files from the Frama-C standard library whose identifiers were present in the (expanded) original code. For instance, errno.h is present because Frama-Cs stdio.h includes it. As you can see, the mechanism does not guarantee a minimal number of includes, but it is much cleaner than having all files expanded; The specification of printf_va_1 is visible. This is due to the fact that the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus)) generated this specification it is not part of the standard Frama-C library. In fact, printf_va_1 is a specific instantiation of the variadic printf function. You can disable the automatic variadic translation with -variadic-no-translation, in which case -print will result in: /* Generated by Frama-C */#include "errno.h" #include "stdarg.h" #include "stddef.h" #include "stdio.h" int main(void) { int __retres; printf("hello world!\n"); __retres = 0; return __retres; } The Phosphorus release also includes, as usual, a series of bug fixes and minor improvements. Consult the Changelog for more details. Open source case studies A new Github repository on the Frama-C organization, open-source-case-studies, has been created to help users quickly run Frama-C (and EVA in particular) in more realistic code bases, which includes different sorts of open-source code; some of them are very small (a single file) while others contain significantly larger bases. Their usage is very simple: once you have installed Frama-C and put it in the PATH, enter one of the case study directories and run: make to parse and run EVA; make &lt;target&gt;.eva.gui to open the Frama-C GUI and view the results. The target names vary on each case study, and can be obtained via make help. Note that this will show only the base target name, from which other targets are derived (e.g. &lt;target&gt;.parse, &lt;target&gt;.eva, &lt;target&gt;.eva.gui). All case studies include a Makefile, which uses the files in fcscripts to generate targets and Makefile rules to allow running EVA quickly. Among the facilities provided by these scripts, we highlight: templates for Frama-C parametrization (i.e. variables CPPFLAGS, FCFLAGS and EVAFLAGS to delineate which options are related to preprocessing, parsing and running EVA), including helpful default parameters; automatic target dependencies on command line arguments: Frama-C reparses files only when they are modified, and re-runs EVA only when command line arguments change; saving of intermediate results in directories (for easy comparison via Meld), to run other plug-ins without having to re-run EVA (e.g. frama-c -load &lt;target&gt;.eva/framac.sav ...). Note, however, that there are some caveats concerning this repository: It is not representative of the scale of programs that Frama-C/EVA can handle; indeed, all large code bases where Frama-C/EVA is applied consist in industrial code that cannot be shared; One of the main purposes of the repository (internally) is to serve for non-regression testing, which means that some analyses are not fully parametrized; Some case studies include code that is not ideally dealt with by EVA, but may be useful for other plug-ins. Those caveats aside, we hope this repository will give practical examples and help you to parametrize your own analyses. If you also have some interesting open source code bases on which to run EVA, you can submit them to us as a Github pull requests. This will make it easier to compare the behavior of future versions of Frama-C on such code, and to benefit from improvements in the analyzer.</summary></entry></feed> \ No newline at end of file diff --git a/_site/html/authors.html b/_site/html/authors.html deleted file mode 100644 index 1715fc23..00000000 --- a/_site/html/authors.html +++ /dev/null @@ -1,177 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Authors - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="page-template page-template-page-authors page-template-page-authors-php page page-id-231 nonTouch"> - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage authorsPage" id="content" role="main"> - <article id="post-231" class="post-231 page type-page status-publish hentry"> - <h1 class="entry-title">Authors</h1> - - <section class="articleContent"> - <div class="authorPageContent pageWrapper"> - <div class="contentInfoBox"> - <h5>The Frama-C platform is the creation of:</h5> - - <nav> - <span>François Bobot</span> | <span>Loïc Correnson</span> | <span>Richard Bonichon</span> | <span>Pascal Cuoq</span> | <span>Zaynah Dargaye</span> | <span>Jean-Christophe Filliâtre</span> | <span>Philippe Herrmann</span> | <span>Florent Kirchner</span> | <span>Matthieu Lemerre</span> | <span>Claude Marché</span> | <span>Benjamin Monate</span> | <span>Yannick Moy</span> | <span>Anne Pacalet</span> | <span>Virgile Prevosto</span> | <span>Julien Signoles</span> | <span>Boris Yakobowski</span> - </nav> - </div> - - <div class="contentInfoBox"> - <h5>The Frama-C platform is co-developed at two French public institutions:</h5> - - <div class="authorList"> - <div class="authorInfo"> - <figure> - <img src="/assets/img/author/list-cea-tech.jpg"> - </figure> - - <p><span class="title">CEA LIST</span> Software Security Laboratory</p> - </div> - - <div class="authorInfo"> - <figure> - <img src="/assets/img/author/inria.jpg"> - </figure> - - <p><span class="title">INRIA Saclay - ILe - De - France</span> Toccata team, common with LRI-CNRS and - Université Paris-Sud 11</p> - </div> - </div> - </div> - - <div class="entry-links hide"></div> - </div> - </section> - </article> - - <section class="bgTitleBlk titleIn lightTxt"> - <div class="upperBlk"> - <div class="upperType"> - Authors - </div> - </div> - - <div class="lowerBlk"> - <div class="lowerType"> - Authors - </div> - </div> - </section> - - <section id="comments" style="display: none;"></section> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/contact.html b/_site/html/contact.html deleted file mode 100644 index 39e6f733..00000000 --- a/_site/html/contact.html +++ /dev/null @@ -1,318 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Contact Us</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/contact.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <head> -<script type="text/javascript"> -var url = 'https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow&tagged=frama-c&filter=withbody&key=nQzVjuCq0ZwXFrvkmRKTag(('; - -var getJSON = function(url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'json'; - xhr.onload = function() { - var status = xhr.status; - if (status === 200) { - callback(null, xhr.response); - } else { - callback(status, xhr.response); - } - }; - xhr.send(); -}; - -window.onload = getJSON(url, -function(err, data) { - if (err !== null) { - alert('Something went wrong: ' + err); - } else { - posts = data['items']; - html = ""; - for (let i = 0; i < 5; i++){ - post = posts[i]; - tags = ""; - for (let tag = 0; tag < post['tags'].length; tag++){ - tags += "<label class=\"tag\"><a href=\"https://stackoverflow.com/questions/tagged/" + post['tags'][tag] + "\" target=\"_blank\">" + post['tags'][tag] + "</a></label>"; - } - html += "<li><a class=\"qus\" href=\"" + post['link'] + "\" target=\"_blank\">" + post['title'] + "</a> <span class=\"ans\">" + post['body'].replace(/<[^>]*>?/gm, '').substring(0, 320) +"...<p class=\"tags\">"+ tags +"</p><aside>" + "<span class=\"vote-count\">" + post['score'] + "<br>Score</span> <span class=\"answer-count\">" + post['answer_count'] + "<br>Answer</span> <span class=\"views-count\">" + post['view_count'] + "<br>Views</span></label></aside></li>"; - } - document.getElementById("postsStack").innerHTML = html; - } -}); - -</script> -</head> -<body class="page-template page-template-page-contact page-template-page-contact-php page page-id-18 nonTouch"> -<div id="wrapper" class="hfeed"> - - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-18 current_page_item menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="pageContact pages"> - <div class="bgTextbig"> - Contact - </div> - - <h1 class="pageTitle">Contact Us</h1> - - <div class="contact-form"></div> - - <form action="" method="post" id="contact_form" data-parsley-validate="" name="contact_form"> - <span class="formALert alertError apply_error-common" style="display:none;"></span> <span class="formALert alertSuccess" - id="apply_success_msg" style="display:none;"></span> - - <div class="leftBlock"> - <div class="inputWrap"> - <div class="textError"></div><input type="text" name="name" placeholder="Name" class="textbox" data-parsley-required= - "" data-parsley-pattern="^[a-zA-Z_ ]+$" data-parsley-errors-container=".textError"> - </div> - - <div class="inputWrap"> - <div class="emailError"></div><input type="email" name="email" placeholder="Email" class="textbox" - data-parsley-required="" data-parsley-errors-container=".emailError"> - </div> - - <div class="choose"> - <div class="radioError"></div><span>You are:</span> - - <p><input id="radio1" name="you_are" type="radio" value="An Academic" data-parsley-required="" - data-parsley-errors-container=".radioError"> <label for="radio1">An Academic</label></p> - - <p><input id="radio2" name="you_are" type="radio" value="An Industrial" data-parsley-required="" - data-parsley-errors-container=".radioError"> <label for="radio2">An industrial</label></p> - - <p><input id="radio3" name="you_are" type="radio" value="An Applicant" data-parsley-required="" - data-parsley-errors-container=".radioError"> <label for="radio3">An Applicant</label></p> - </div> - </div> - - <div class="messageWrap"> - <span>Type your message</span> - <textarea id="contact_textarea" name="message" placeholder="Your message" data-parsley-required="" - data-parsley-errors-container=".textareaError" maxlength="220"> -</textarea> - - <div class="textareaError"></div> - - <div class="submitWrap"> - <button id="cf_submit"><i class="icon-btn-submit"></i></button> - </div><i id="textarea_count" class="characterLimit"></i> - </div> - </form> - - <div class="locate"> - <figure style= - "background:url(PrtScr-capture_2686.jpg) no-repeat center bottom; background-size: cover;"> - </figure> - - <!-- <div class="acf-map" id="googleMap"> --> - <!-- <div class="marker" data-lat="48.712144" data-lng="2.194427000000019"> --> - <!-- <p class="address">8 Avenue de la Vauve, 91120 Palaiseau, France</p> --> - <!-- </div> --> - <!-- </div> --> - </div> - - <div class="contactInfo"> - <h4>Please Contact</h4> - - <p>If you think Frama-C could be part of any kind of scientific collaboration, including research projects, internships, - PhDs, post-doctoral positions and dissemination activities,</p> - - <p><a href="mailto:florent.kirchner@cea.fr">Florent.Kirchner@cea.fr</a><small>|</small><a href= - "mailto:loic.correnson@cea.fr">Loic.Correnson@cea.fr</a></p> - </div> - - <div class="usefulLinks" id="side-content"> - <h3 class="subTitle">Community</h3> - - <div id="sidebar-content"> - <ul class="side-feed"> - <li class="icon_1"> - <a href="https://bts.frama-c.com/my_view_page.php" target="_blank"> - <div class="slideCaption"> - Bug Tracker - </div> - - <div class="description"> - The official Frama-C bug tracking system (BTS). - </div></a> - </li> - - <li class="icon_2"> - <a href="https://stackoverflow.com/tags/frama-c/" target="_blank"> - <div class="slideCaption"> - Stack Overflow - </div> - - <div class="description"> - The Frama-C community uses Stack Overflow for general-purpose questions. - </div></a> - </li> - - <li class="icon_3"> - <a href="https://lists.gforge.inria.fr/pipermail/frama-c-discuss/" target="_blank"> - <div class="slideCaption"> - Frama-C-discuss - </div> - - <div class="description"> - The official Frama-C mailing list (announcements and general questions). - </div></a> - </li> - - <li class="icon_4"> - <a href="https://github.com/frama-c" target="_blank"> - <div class="slideCaption"> - Frama-C on Github - </div> - - <div class="description"> - Frama-C snapshots and related code bases (Qed, open source case studies...). - </div></a> - </li> - - <li class="icon_5"> - <a href="https://github.com/acsl-language" target="_blank"> - <div class="slideCaption"> - ACSL on Github - </div> - - <div class="description"> - Official Github repositories for the ANSI/ISO C Specification Language (ACSL). - </div></a> - </li> - - <li class="icon_6"> - <a href="/html/careers.html" target="_blank"> - <div class="slideCaption"> - Careers - </div> - - <div class="description"> - Reference site about Lorem Ipsum, giving information on its origins, as well as a random Lipsum generator. - </div></a> - </li> - </ul> - </div> - </div> - - <div class="stackPost" id="stackpots"> - <h3 class="subTitle">Newest Frama-C Questions & Answers on Stack Overflow</h3> - - <ul id="postsStack"> - - </ul> - </div> - </div> - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/documentation.html b/_site/html/documentation.html deleted file mode 100644 index ee606a9a..00000000 --- a/_site/html/documentation.html +++ /dev/null @@ -1,337 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Documentation - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/documentation.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="page-template page-template-page-documentation page-template-page-documentation-php page page-id-20 nonTouch"> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-20 current_page_item menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pageDocumentation pages"> - <div class="bgTextbig"> - Documentation - </div> - - <div class="wrap"> - <h1 class="pageTitle">Documentation</h1> - - <div class="pageBanner" style= - "background-image:url('/assets/img/documentation-banner.jpg');background-size:cover;"> - <p>All the documentation<br> - you need !</p> - </div> - - <div class="docListwrap"> - <section> - <div class="docListTitle"> - <span>Plug-ins Manuals</span> - </div> - - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Aoraï"><span>Aoraï</span></h4> - - <p>Verify specifications expressed as LTL (Linear Temporal Logic) formulas.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/aorai.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="E-ACSL"><span>E-ACSL</span></h4> - - <p>Runtime Verification Tool</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/e-acsl.html"></a> <a class="btnPdfDownload" target="_blank" - href="http://frama-c.com/download/e-acsl/e-acsl-manual-19.0-Potassium.pdf"><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Evolved Value Analysis (EVA)"><span>Evolved Value Analysis (EVA)</span></h4> - - <p>Automatically computes variation domains for the variables of the program.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/eva.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Frama-Clang"><span>Frama-Clang</span></h4> - - <p>This plug-in provides a C++ front-end to Frama-C, based on the clang compiler.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/frama-clang.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Impact analysis"><span>Impact analysis</span></h4> - - <p>Highlights the locations in the source code that are impacted by a modification.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/impact.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Jessie"><span>Jessie</span></h4> - - <p>A deductive verification plug-in.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/jessie.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Metrics calculation"><span>Metrics calculation</span></h4> - - <p>Allows the user to compute various metrics from the source code.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/metrics-calculation.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Mthread"><span>Mthread</span></h4> - - <p>Analyzes concurrent C programs, taking into account all possible thread interactions. Provides precise information about shared variables, which mutex protects a part of the code, etc.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/mthread.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Occurrence analysis plug-in"><span>Occurrence analysis plug-in</span></h4> - - <p>Also provided as a simple example for new plug-in development, this plug-in allows the user to reach the statements where a given variable is used.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/occurence.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="PathCrawler"><span>PathCrawler</span></h4> - - <p>PathCrawler automatically finds test-case inputs to ensure coverage of a C function. It can be used for structural unit testing, as a complement to static analysis or to study the feasible execution paths of the function.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/pathcrawler.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Scope & Data-flow browsing"><span>Scope & Data-flow browsing</span></h4> - - <p>Allows the user to navigate the dataflow of the program, from definition to use or from use to definition.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/scope.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Semantic constant folding"><span>Semantic constant folding</span></h4> - - <p>Makes use of the results of the EVA plug-in to replace, in the source code, the constant expressions by their values.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/semantic-constant-folding.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Slicing"><span>Slicing</span></h4> - - <p>This plug-in slices the code according to a user-provided criterion.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/slicing.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Spare code"><span>Spare code</span></h4> - - <p>Removes "spare code", code that does not contribute to the final results of the program.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/spare-code.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Studia"><span>Studia</span></h4> - - <p>Studia helps with EVA case studies on the GUI.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/studia.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Variadic"><span>Variadic</span></h4> - - <p>Variadic simplifies variadic functions for other plug-ins.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/variadic.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="WP"><span>WP</span></h4> - - <p>Deductive proofs of ACSL contracts.</p><span class="docReadMore">Read - More</span><a class="linkReadmore" href="/fc-plugins/wp.html"></a> <a class="btnPdfDownload" target="_blank" - href=""><i class="icon-download-arrow"></i></a> - </div> - </div> - - </section> - - <section> - <div class="docListTitle"> - <span>ACSL (ANSI/ISO-C Specification Language)</span> - </div> - - <div class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="ACSL Reference Manual"><span>ACSL Reference Manual</span></h4> - - <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys - standard dummy text ever since the 1500s, when an unknown printer took...</p><a class="btnPdfDownload" target= - "_blank" href="https://framac.s3.amazonaws.com/production/uploads/2017/08/download.pdf"><i class= - "icon-download-arrow"></i></a> - </div> - </div> - </section> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> -</body> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/framac-versions.html b/_site/html/framac-versions.html deleted file mode 100644 index 76e3fc84..00000000 --- a/_site/html/framac-versions.html +++ /dev/null @@ -1,222 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Versions Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage versionsPage pages textLeft" id="content" role="main"> - <div class="wrap"> - <div class="versionsPageContent"> - <div class="paragraphGroup"> - <h3>Frama-C Versions</h3> - - <p>All versions older than <a href="index.html#" class="link">Frama-C v4.x - Beryllium</a> include Why and the - plug-in Jessie.</p> - </div> - - <ul class="arrowList versionsList"> - - <li> - <a href="/fc-versions/potassium.html">Frama-C v19 Potassium</a> - </li> - - <li> - <a href="/fc-versions/argon.html">Frama-C v18 Argon</a> - </li> - - <li> - <a href="/fc-versions/chlorine.html">Frama-C v17 Chlorine</a> - </li> - - <li> - <a href="/fc-versions/sulfur.html">Frama-C v16 Sulfur</a> - </li> - - <li> - <a href="/fc-versions/phosphorus.html">Frama-C v15 Phosphorus</a> - </li> - - <li> - <a href="/fc-versions/silicon.html">Frama-C v14 Silicon</a> - </li> - - <li> - <a href="/fc-versions/aluminium.html">Frama-C v13 Aluminium</a> - </li> - - <li> - <a href="/fc-versions/magnesium.html">Frama-C v12 Magnesium</a> - </li> - - <li> - <a href="/fc-versions/sodium.html">Frama-C v11 Sodium</a> - </li> - - <li> - <a href="/fc-versions/neon.html">Frama-C v10 Neon</a> - </li> - - <li> - <a href="/fc-versions/fluorine.html">Frama-C v9 Argon</a> - </li> - - <li> - <a href="/fc-versions/oxygen.html">Frama-C v8 Oxygen</a> - </li> - - <li> - <a href="/fc-versions/nitrogen.html">Frama-C v7 Nitrogen</a> - </li> - - <li> - <a href="/fc-versions/carbon.html">Frama-C v6 Carbon</a> - </li> - - <li> - <a href="/fc-versions/boron.html">Frama-C v5 Boron</a> - </li> - - <li> - <a href="/fc-versions/beryllium.html">Frama-C v4 Beryllium</a> - </li> - - <li> - <a href="/fc-versions/lithium.html">Frama-C v3 Lithium</a> - </li> - - <li> - <a href="/fc-versions/helium.html">Frama-C v2 Helium</a> - </li> - - <li> - <a href="/fc-versions/hydrogen.html">Frama-C v1 Hydrogen</a> - </li> - - </ul> - </div> - </div> - - <!-- <section class="bgTitleBlk titleIn lightTxt"> --> - <!-- <div class="upperBlk"> --> - <!-- <div class="upperType"> --> - <!-- VERSION --> - <!-- </div> --> - <!-- </div> --> - - <!-- <div class="lowerBlk"> --> - <!-- <div class="lowerType"> --> - <!-- VERSION --> - <!-- </div> --> - <!-- </div> --> - <!-- </section> --> - </div> - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/get-frama-c.html b/_site/html/get-frama-c.html deleted file mode 100644 index e6aceed6..00000000 --- a/_site/html/get-frama-c.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Get Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/get-framac.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="getFramaC"> - <div class="wrap"> - <h1 class="pageTitle">Choose for which terminal you want Frama C</h1> - - <div class="OS codeTabs"> - <a href="index.html#" role="button" data-tab="linux"><b>Linux</b></a> <a href="index.html#" role="button" data-tab= - "mac"><b>Mac</b></a> <a href="index.html#" role="button" data-tab="windows"><b>Windows</b></a> - </div> - - <div class="otherConfiguration"> - If you have a different configuration, <a target="_blank" href="https://github.com/Frama-C" class="lineMove">click - here</a> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-linux hide"> - <pre style='color:#000000;background:#f9f9f9;'>opam <span style='color:#400000;'>list</span> <span style='color:#808030;'>-</span>a <span style='color:#696969;'># List the available packages</span></br>opam install lwt <span style='color:#696969;'># Install LWT</span></br>opam <span style='color:#400000;'>update</span> <span style='color:#696969;'># Update the package list...</span></br>opam upgrade <span style='color:#696969;'># Upgrade the installed packages to their latest version</span></pre> - </div> - - <div class="codeTab tab-mac hide"> - <pre style='color:#000020;background:#f6f8ff;'> -opam install depext -opam depext frama<span style='color:#308080;'>-</span>c - -<span style='color:#595979;'># remove the previous version of frama-c</span> -opam remove <span style='color:#308080;'>-</span><span style='color:#308080;'>-</span>force frama<span style= -'color:#308080;'>-</span>c frama<span style='color:#308080;'>-</span>c<span style='color:#308080;'>-</span>base - -<span style='color:#595979;'># optional packages, but recommended (for efficiency, and for the GUI)</span> -opam install depext -opam depext zarith lablgtk conf<span style='color:#308080;'>-</span>gtksourceview conf<span style= -'color:#308080;'>-</span>gnomecanvas -opam install zarith lablgtk conf<span style='color:#308080;'>-</span>gtksourceview conf<span style= -'color:#308080;'>-</span>gnomecanvas - -<span style='color:#595979;'># install custom version of frama-c</span> -opam pin <span style='color:#400000;'>add</span> frama<span style='color:#308080;'>-</span>c<span style= -'color:#308080;'>-</span>base <dir> -</pre> - </div> - - <div class="codeTab tab-windows hide"> - <pre style='color:#d1d1d1;background:#000000;'> -<span style='color:#9999a9;'># First you need to install OPAM</span> -opam install frama<span style='color:#d2cd86;'>-</span>c - -<span style='color:#9999a9;'># To get the exact list of packages</span> -opam install depext -opam depext frama<span style='color:#d2cd86;'>-</span>c - -<span style='color:#9999a9;'># optional packages, but recommended (for efficiency, and for the GUI)</span> -opam install depext -opam depext zarith lablgtk conf<span style='color:#d2cd86;'>-</span>gtksourceview conf<span style= -'color:#d2cd86;'>-</span>gnomecanvas -opam install zarith lablgtk conf<span style='color:#d2cd86;'>-</span>gtksourceview conf<span style= -'color:#d2cd86;'>-</span>gnomecanvas -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/kernel-plugin.html b/_site/html/kernel-plugin.html deleted file mode 100644 index eaa6d337..00000000 --- a/_site/html/kernel-plugin.html +++ /dev/null @@ -1,658 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Kernel & Plugins - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="page-template page-template-page-kernel_plugins page-template-page-kernel_plugins-php page page-id-16 nonTouch"> - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-16 current_page_item menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="tabs"> - <div class="wrap"> - <a class="active tabLink" href="kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - - <div class="tabOptions"> - <div class="pluginSearch"> - <!-- <form class="searchForm" method="get" action="kernel-plugin.html" data-parsley-validate=""> --> - <!-- <button type="submit" class="submit searchLink" title="Search"><i class="icon icon-search"></i></button> --> - <!-- <input type="text" name="plugin" placeholder="Search for the plugins here" data-parsley-required=""> --> - - <!-- <div class="error" id="top_search_error" style="display: none;" role="alert"></div> --> - <!-- </form> --> - <!-- Documentation plugin --> - <a class="btn" target="_blank" href="frama-c-plugin-development-guide.pdf"><span>Write Your Own Plugin</span></a> - </div> - </div> - </div> - </div> - - <div class="pluginSliderWrapper"> - <div class="pluginSwiper swiper-container"> - <div class="swiper-wrapper"> - - - - - <div class="swiper-slide" id="post_details" style="background-image: url(kernel-plugin.html);background-size:cover;"> - <div> - <h3>E-ACSL<i class="icon-arrow-thin-rgt"></i></h3> - - <p>Runtime Verification Tool</p> - - <p><a class="readMore" href="/fc-plugins/e-acsl.html">Read More</a></p> - </div> - </div> - - - - <div class="swiper-slide" id="post_details" style="background-image: url(kernel-plugin.html);background-size:cover;"> - <div> - <h3>Evolved Value Analysis (EVA)<i class="icon-arrow-thin-rgt"></i></h3> - - <p>Automatically computes variation domains for the variables of the program.</p> - - <p><a class="readMore" href="/fc-plugins/eva.html">Read More</a></p> - </div> - </div> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <div class="swiper-slide" id="post_details" style="background-image: url(kernel-plugin.html);background-size:cover;"> - <div> - <h3>WP<i class="icon-arrow-thin-rgt"></i></h3> - - <p>Deductive proofs of ACSL contracts.</p> - - <p><a class="readMore" href="/fc-plugins/wp.html">Read More</a></p> - </div> - </div> - - - </div> - - <div class="swiper-pagination"></div> - </div> - - <div class="nextPrev"> - <div class="swiper-button-prev"></div> - - <div class="swiper-button-next"></div> - </div> - </div> - - <div class="pagePlugin pages"> - <div class="bgTextbig"> - Plugin - </div> - - <div class="wrap"> - <div class="docListwrap"> - - <section> - <div class="docListTitle"> - <span>Main analyzers</span> - </div> - - - - - <a role="link" href="/fc-plugins/e-acsl.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="E-ACSL"><span>E-ACSL</span></h4> - - <p>Runtime Verification Tool</p> - </div> - </a> - - - - <a role="link" href="/fc-plugins/eva.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Evolved Value Analysis (EVA)"><span>Evolved Value Analysis (EVA)</span></h4> - - <p>Automatically computes variation domains for the variables of the program.</p> - </div> - </a> - - - - - - - - <a role="link" href="/fc-plugins/jessie.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Jessie"><span>Jessie</span></h4> - - <p>A deductive verification plug-in.</p> - </div> - </a> - - - - - - - - - - - - - - - - - - - - - - - - <a role="link" href="/fc-plugins/wp.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="WP"><span>WP</span></h4> - - <p>Deductive proofs of ACSL contracts.</p> - </div> - </a> - - - </section> - - <section> - <div class="docListTitle"> - <span>For test-case generation</span> - </div> - - - - - - - - - - - - - - - - - - - - - <a role="link" href="/fc-plugins/pathcrawler.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="PathCrawler"><span>PathCrawler</span></h4> - - <p>PathCrawler automatically finds test-case inputs to ensure coverage of a C function. It can be used for structural unit testing, as a complement to static analysis or to study the feasible execution paths of the function.</p> - </div> - </a> - - - - - - - - - - - - - - - - - </section> - - <section> - <div class="docListTitle"> - <span>For concurrent programs</span> - </div> - - - - - - - - - - - - - - - - - <a role="link" href="/fc-plugins/mthread.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Mthread"><span>Mthread</span></h4> - - <p>Analyzes concurrent C programs, taking into account all possible thread interactions. Provides precise information about shared variables, which mutex protects a part of the code, etc.</p> - </div> - </a> - - - - - - - - - - - - - - - - - - - - - </section> - - <section> - <div class="docListTitle"> - <span>For verifying functional specifications</span> - </div> - - - <a role="link" href="/fc-plugins/aorai.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Aoraï"><span>Aoraï</span></h4> - - <p>Verify specifications expressed as LTL (Linear Temporal Logic) formulas.</p> - </div> - </a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - </section> - - <section> - <div class="docListTitle"> - <span>For code transformation</span> - </div> - - - - - - - - - - - - - - - - - - - - - - - - - <a role="link" href="/fc-plugins/semantic-constant-folding.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Semantic constant folding"><span>Semantic constant folding</span></h4> - - <p>Makes use of the results of the EVA plug-in to replace, in the source code, the constant expressions by their values.</p> - </div> - </a> - - - - <a role="link" href="/fc-plugins/slicing.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Slicing"><span>Slicing</span></h4> - - <p>This plug-in slices the code according to a user-provided criterion.</p> - </div> - </a> - - - - <a role="link" href="/fc-plugins/spare-code.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Spare code"><span>Spare code</span></h4> - - <p>Removes "spare code", code that does not contribute to the final results of the program.</p> - </div> - </a> - - - - - - <a role="link" href="/fc-plugins/variadic.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Variadic"><span>Variadic</span></h4> - - <p>Variadic simplifies variadic functions for other plug-ins.</p> - </div> - </a> - - - - - </section> - - <section> - <div class="docListTitle"> - <span>For browsing unfamiliar code</span> - </div> - - - - - - - - - - - <a role="link" href="/fc-plugins/impact.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Impact analysis"><span>Impact analysis</span></h4> - - <p>Highlights the locations in the source code that are impacted by a modification.</p> - </div> - </a> - - - - - - <a role="link" href="/fc-plugins/metrics-calculation.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Metrics calculation"><span>Metrics calculation</span></h4> - - <p>Allows the user to compute various metrics from the source code.</p> - </div> - </a> - - - - - - <a role="link" href="/fc-plugins/occurence.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Occurrence analysis plug-in"><span>Occurrence analysis plug-in</span></h4> - - <p>Also provided as a simple example for new plug-in development, this plug-in allows the user to reach the statements where a given variable is used.</p> - </div> - </a> - - - - - - <a role="link" href="/fc-plugins/scope.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Scope & Data-flow browsing"><span>Scope & Data-flow browsing</span></h4> - - <p>Allows the user to navigate the dataflow of the program, from definition to use or from use to definition.</p> - </div> - </a> - - - - - - - - - - <a role="link" href="/fc-plugins/studia.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Studia"><span>Studia</span></h4> - - <p>Studia helps with EVA case studies on the GUI.</p> - </div> - </a> - - - - - - - </section> - - <section> - <div class="docListTitle"> - <span>Front-end for other languages</span> - </div> - - - - - - - - - <a role="link" href="/fc-plugins/frama-clang.html" class="listItem"> - <div> - <h4 class="listItemTitle" data-bgtext="Frama-Clang"><span>Frama-Clang</span></h4> - - <p>This plug-in provides a C++ front-end to Frama-C, based on the clang compiler.</p> - </div> - </a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - </section> - - </div> - </div> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> -</body> - - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/kernel.html b/_site/html/kernel.html deleted file mode 100644 index 42f84955..00000000 --- a/_site/html/kernel.html +++ /dev/null @@ -1,330 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Kernel & Plugins - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="page-template page-template-page-kernel page-template-page-kernel-php page page-id-179 nonTouch"> - <div id="wrapper" class="hfeed"> - - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="tabs"> - <div class="wrap"> - <a class="tabLink" href="/html/kernel-plugin.html">Plugins</a> <em></em> <a class="tabLink active" href= - "/html/kernel.html">Kernel</a> <em></em> <a class="tabLink" href="/html/gui.html">GUI</a> - </div> - </div> - - <div class="pageKernel pages"> - <div class="bgTextbig"> - Kernel - </div> - - <div class="wrap"> - <p>WIP (TA)</p> - - <p>The Frama-C kernel acts as a <em>lingua franca</em> for all <a href= - "https://framac-staging.eu-staging.kacdn.net/kernel-plugin/">Frama-C plugins</a>. A software analysis platform that - checks security, verifies requirements, and guarantees trust in C programs.</p> - - <p>Frama-C is a source code analysis platform that aims at conducting verification of industrial-size C programs. It - provides its users with a collection of plug-ins that perform static analysis, deductive verification, and testing, for - safety- and security-critical software. Collaborative verification across cooperating plug-ins is enabled by their - integration on top of a shared kernel and datastructures, and their compliance to a common specification language. This - foundational article presents a consolidated view of the platform, its main and composite analyses, and some of its - industrial achievements.</p> - - <p>3.1. Architecture<br> - The Frama-C platform is written in OCaml [LDF+13], a functional language whose features are very in- teresting for - implementing program analyzers [CSB+09]. Fig. 2 shows a functional view of the Frama-C plug-in-oriented architecture (`a - la Eclipse) whose kernel is based on a modified version of CIL [NMRW02]. CIL is a front-end for C that parses ISO C99 - programs into a normalized representation. For instance, loop constructs (for, while, do & while) are given a single - normalized form, normalized expressions have no side-effects, etc. Frama-C extends CIL to support dedicated source code - annotations expressed in ACSL (see Section 3.2). This modified CIL front-end produces the C + ACSL abstract syntax tree - (AST), an abstract view of the program shared among all analyzers. This AST takes into account machine-dependent - parameters (size of integral types, endianness, etc.) which can easily be modified by the end-user.<br> - In addition to the AST, the kernel provides several general services for helping plug-in development [SCP13] and - providing convenient features to Frama-C’s end-user.</p> - - <p>• Messages, source code and annotations are uniformly displayed.<br> - • Parameters and command line options are homogeneously handled.<br> - • A journal of user actions can be synthesized and replayed afterwards, a useful feature in debugging and qualification - contexts [Sig14].<br> - • A safe serialization mechanism [CDS11] allows the user to save results of analyses and reload them later.<br> - • Projects, presented in Section 3.3, isolate unrelated program representations, and guarantee the integrity<br> - of analyses.<br> - • Consistency mechanisms control the collaboration between analyzers (Section 3.4).<br> - • A visitor mechanism, partly inherited from CIL, facilitates crawling through the AST and writing code transformation - plug-ins.</p> - - <p>Analyzers are developed as separate plug-ins on top of the kernel. Plug-ins are dynamically linked against the kernel - to offer new analyses, or to modify existing ones. Any plug-in can register new services in a plug-in database stored in - the kernel, thereby making these services available to all plug-ins.</p> - - <p>3.2. ACSL<br> - Functional properties of C programs can be expressed within Frama-C as ACSL annotations [BFH+13]. ACSL, the ANSI/ISO C - Specification Language, is a formal specification language inspired by Java’s JML [BCC+05], both being based on the - notion of function contract introduced by Eiffel [Mey97]. In its most basic form, the specification (or contract) of a - function states the pre-conditions it requires from its caller and the post- conditions it ensures when returning. Among - these post-conditions, one kind of clause plays a particular role by saying which memory locations the function assigns, - i.e. which locations might have a different value between the pre- and the post-state. Conversely, any memory location - not mentioned in this clause is supposed to be left unmodified by the function.<br> - Annotations are written in first-order logic, and it is possible to define custom functions and predicates for use in - annotations together with ACSL built-ins. Indeed, ACSL features its own functions and predicates to describe memory - states. However, it does not introduce any notion beyond the C standard, leaving each plug-in free to perform its own - abstractions over the concrete memory layout.</p> - - <p>For instance, Fig. 3 provides a formal ACSL specification for a swap function. Informally, swap is supposed to - exchange the content of two (valid) pointer cells given as argument.<br> - The first pre-condition states that the two arguments must be valid int pointers, i.e. that dereferencing a or b will not - produce a run-time error. In addition, the second pre-condition asks that the two locations do not overlap. \valid and - \separated are two built-in ACSL predicates.<br> - The assigns clause states that only the locations pointed to by a and b might be modified by a call to swap; any other - memory location is untouched. Finally, the post-condition says that at the end of the function, *a contains the value - that was in *b in the pre-state, and vice versa.<br> - Function contracts can also be structured into behaviors. In addition to the clauses described above, a behavior can be - guarded by assumes clauses, which specify under which conditions the behavior is activated. This provides a convenient - way to distinguish various cases under which the function can be called. Behaviors do not need to be either complete (at - least one behavior is active for any given call) or disjoint (there is at most one behavior active for a given call), but - this can be stipulated with the appropriate clauses in order to check that the specification is correct in this respect. - As an example, Fig. 4 presents the specification of a function swap_or_null similar to swap except that it will attempt - to swap contents only when both pointers are non-null. This corresponds to the behavior not_null, in which case the - function expects to have valid (in C a non-null pointer is not necessarily valid) and separated pointers and will act as - above. On the other hand, in the null case, the function does nothing: at least one pointer is null, so the values cannot - be swapped. We are always in exactly one of these two cases, so null and not_null are clearly complete and disjoint.<br> - In addition to function specifications, ACSL offers the possibility of writing annotations in the code, in the form of - assertions, properties that must be true at a given point, or loop invariants, properties that are true for each loop - step. More precisely, a loop invariant is associated to a for, while, or do & while loop. It must hold when arriving at - the loop entry for the first time, and must be preserved by a loop step. That is, if we enter the loop body in a state - that verifies the invariant, then the invariant must hold at the end of the block – except if we exit from the block - through goto, break or continue. With these two properties, we can then prove by induction that the invariant is true for - any number of loop steps<br> - (including 0). As with assigns clauses in function contracts, loop assigns clauses are a particular case of invariant - that state which memory locations might have been modified since the beginning of the loop (implicitly stating that all - other locations are not modified by the loop). Loop invariants are required for<br> - deductive verification (see Section 5).</p> - - <p>As an example, Fig. 5 presents a simple for loop initializing the elements of an array, together with its associated - invariants. The first invariant specifies the bounds of the index of the loop. Note that the invariant uses i<=10, - while the test in the code is i<10. Indeed, the invariant must be preserved by any step of the loop, including the - last one, in which i is equal to 10 at the end of the step. The second invariant states that the i-1 first cells of the - array have been initialized. It is true before entering the loop, as there is no j such that 0<=j<0, so the - implication is trivially true. Then, if we suppose that the invariant holds at the beginning of a loop step, the step - will initialize cell i and increment i, so that the invariant is still true af the end of the step. Similarly, the loop - assigns clause indicates that the loop has potentially modified i and the first i-1 cells of the array. Namely, this is - true when entering the loop (nothing has been modified), and if we suppose that only i and the beginning of the array has - been assigned, the next loop step also assigns i and the ith cell, again making the invariant true at the end of the - step. Loop invariants are not concerned with termination. Instead, termination can be ensured through the special clause - loop variant. It requires an integer expression that strictly decreases during a loop step, while remaining positive each - time the loop enters a new iteration. When both these conditions are met, we know that the loop can only be taken a - finite number of times. An example of variant for the loop in Fig. 5 would be the following: loop variant 10 - i; Each - plug-in can provide a validity status to any ACSL property and/or generate ACSL annotations. This lets ACSL annotations - play an important role in the communication between plug-ins, as explained in Section 3.4. 3.3. Projects Frama-C allows a - user to work on several programs in parallel thanks to the notion of project. A project consistently stores a program - with all its required information, including results computed by analyzers and their parameters. Several projects may - coexist in memory at the same time. A non-interference theorem guarantees project partitioning [Sig09]: any modification - on a value of a project P does not impact a value of another project P′. Such a feature is of particular interest when - a program transformer such as E-ACSL (Section 7), Aora ̈ı (Section 8), or Slicing (Section 10.1) is used. The result of - the transformation is a fresh AST that coexists with the original one, making backtracking and comparisons easy. This is - illustrated in Section 10.2. Another use of projects is to process the same program in different ways – for instance - with different analysis parameters. 3.4. Collaborations across analyzers In Frama-C, analyzers can interoperate in two - different ways: either sequentially, by chaining analysis results to perform complex operations; or in parallel, by - combining partial analysis results into a full program verification. The former consists in using the results of an - analyzer as input to another one thanks to the plug-in database stored by the Frama-C kernel. Refer to Section 10.1 for - an illustration of a sequential analysis. The parallel collaboration of analyzers consists in verifying a program by - heterogeneous means. ACSL is used to this end as a collaborative language: plug-ins generate program annotations, which - are then vali- dated by other plug-ins. Partial results coming from various plug-ins are integrated by the kernel to - provide a consolidated status of the validity of all ACSL properties. For instance, when the Value plug-in (Section 4) is - unable to ensure the validity of a pointer p, it emits an unproved ACSL annotation assert \valid(p). ACSL’s blocking - semantics states that an execution trace leading to an invalid property stops its execu- tion (see [GGJK08, HMM12, - CS12]). Thus, Value can assume that p is valid from this program point onwards, since the execution can only continue if - the assert is valid. The WP plug-in (Section 5) may later be used to prove this hypothesis, or it can be checked at - runtime by leveraging the E-ACSL plug-in (Section 7). The kernel automatically computes the validity status of each - program property from the information provided by all analyzers and ensures the correctness of the entire verification - process. For that, plug-ins can set the local validity status of an ACSL property, together with its set of dependencies. - Those dependencies can be: • other ACSL properties that are assumed to be true; • the reachability of a statement; - • some parameters of the plug-in that set a hypothesis over the memory state of the program. With this information, the - kernel can then compute a consolidated validity status for each ACSL property. [CS12] presents the algorithm that is used - for that purpose. Its main correctness property can be stated as: “if the consolidated status of a property is computed - as valid [resp. invalid] by the kernel, then the property is valid [resp. invalid] with respect to ACSL semanticsâ€. - This algorithm is also complete:“if a property is proven valid [resp. invalid] by at least one analyzer, then its - computed consolidated status is valid [resp. invalid] as soon as one other analyzer does not prove the contrary, in which - case the special status ‘inconsistent’ is computed.â€1</p> - - <div class="aboutKernel"> - <h2 class="subTitle">Some articles about kernal sections</h2> - - <div class="kernelSwiper swiper-container"> - <div class="swiper-wrapper"> - <div class="swiper-slide"> - <a target="_blank" href="index.html"> - <figure style= - "background-image:url('https://framac.s3.amazonaws.com/production/uploads/2017/08/fff.pngtextBIGSHOT.png');background-size:cover;"> - </figure> - - <div class="slideCaption"> - ACSL:ANSI/ISO - </div></a> - </div> - - <div class="swiper-slide"> - <a target="_blank" href="https://frama-c.com/about.html"> - <figure style= - "background-image:url('https://framac.s3.amazonaws.com/production/uploads/2017/07/PrtScr-capture_2686.jpg');background-size:cover;"> - </figure> - - <div class="slideCaption"> - Developer Manual - </div></a> - </div> - - <div class="swiper-slide"> - <a target="_blank" href="https://framac.s3.amazonaws.com/production/uploads/2017/07/saveInCallback.pdf"> - <figure style= - "background-image:url('https://framac.s3.amazonaws.com/production/uploads/2017/07/banner.jpg');background-size:cover;"> - </figure> - - <div class="slideCaption"> - Dev Guide - </div></a> - </div> - - <div class="swiper-slide"> - <a target="_blank" href="https://framac.s3.amazonaws.com/production/uploads/2017/08/download.pdf"> - <figure style= - "background-image:url('https://framac.s3.amazonaws.com/production/uploads/2017/08/u-psud.jpg');background-size:cover;"> - </figure> - - <div class="slideCaption"> - user Manual - </div></a> - </div> - - <div class="swiper-slide"> - <a target="_blank" href="https://framac.s3.amazonaws.com/production/uploads/2017/08/Form10C.pdf"> - <figure style= - "background-image:url('https://framac.s3.amazonaws.com/production/uploads/2017/08/inria.jpg');background-size:cover;"> - </figure> - - <div class="slideCaption"> - taswd - </div></a> - </div> - </div> - - <div class="swiper-pagination"></div> - </div> - </div> - </div> - </div> - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> -</body> - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/terms-of-use.html b/_site/html/terms-of-use.html deleted file mode 100644 index 081daed7..00000000 --- a/_site/html/terms-of-use.html +++ /dev/null @@ -1,168 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title></title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/terms.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - -<header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - -<div id="container" class="mainContainer"> - <div class="pages pageTerms"> - <dl class="defnitionList"> - <dt class="subTitle">Legal information and diffusion rights</dt> - - <dd> - <p>All materials and graphical elements contained on this site are protected by French and international copyright law - and intellectual property rights. Reproduction in part or in whole of materials and graphical elements of this site is - prohibited without the express permission of the Director of publication.</p> - </dd> - - <dt class="subTitle">Contacts</dt> - - <dd> - <p>For requests to use any of the contents of this site, please contact us:</p> - - <div> - <h5>Director of publication</h5> - - <p>C. Marché<br> - INRIA - 4, rue Jacques Monod<br> - F-91893 Orsay cedex</p> - </div> - - <div> - <h5>Webmaster</h5> - - <p>Florent.Kirchner@cea.fr<br> - F. Kirchner<br> - CEA Saclay<br> - F-91191 Gif sur Yvette cedex</p> - </div> - </dd> - - <dt class="subTitle">Déclaration CNIL</dt> - - <dd> - <p>Conformément à la loi n° 78-17 du 6 janvier 1978, relative à l'Informatique, aux Fichiers et aux Libertés, vous - disposez d'un droit d'accès et de rectification des informations nominatives vous concernant. Vous pouvez l'exercer en - vous adressant à :</p> - - <div> - Florent.Kirchner@cea.fr<br> - F. Kirchner<br> - CEA Saclay<br> - F91191 Gif sur Yvette cedex - </div> - </dd> - </dl> - </div> - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> -</div> -</div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/html/using-frama-c.html b/_site/html/using-frama-c.html deleted file mode 100644 index 9c58eac5..00000000 --- a/_site/html/using-frama-c.html +++ /dev/null @@ -1,296 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Using Frama C - Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/plugin.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="page-template page-template-page-usingFramac page-template-page-usingFramac-php page page-id-12 nonTouch"> - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class= - "menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-12 current_page_item menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage usagePage" id="content" role="main"> - <article id="post-12" class="post-12 page type-page status-publish hentry"> - <h1 class="entry-title hide">Using Frama C</h1> - - <section class="articleContent"> - <div class="usagePageContent"> - <div class="codeDemoHead usageCodeDemo"> - <figure> - <img src="/assets/img/using-framac-img.jpg" alt= - "Using Frama C"> - </figure> - </div> - - <div class="contentWrap"> - <div class="paragraphGroup"> - <h3>Using Frama-C to grasp source code internals</h3> - - <p>The C language has been in use for a long time, and numerous programs today make use of C routines. This - ubiquity is due to historical reasons, and to the fact that C is well adapted for a significant number of - applications (e.g. embedded code). However, the C language exposes many notoriously awkward constructs. precise - analyses despite the pitfalls of C</p> - - <p><b>Many Frama-C plug-ins are able to reveal what the analyzed C code actually does. Equipped with Frama-C, you - can:</b></p> - - <div class="tabsBlock"> - <details> - <summary> - Observe sets of possible values for the variables of the program at each point of the execution; - </summary> - - <p>Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, - convallis a pellentesque nec, egestas non nisi. Proin eget tortor risus. Vestibulum ac diam sit amet quam - vehicula elementum sed sit amet dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum - congue leo eget malesuada. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna - dictum porta. Quisque velit nisi, pretium ut lacinia in, elementum id enim.</p> - </details> - - <details open=""> - <summary> - Slice the original program into simplified ones; - </summary> - - <p>Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, - convallis a pellentesque nec, egestas non nisi. Proin eget tortor risus. Vestibulum ac diam sit amet quam - vehicula elementum sed sit amet dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum - congue leo eget malesuada. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna - dictum porta. Quisque velit nisi, pretium ut lacinia in, elementum id enim.</p> - </details> - - <details> - <summary> - Navigate the dataflow of the program, from definition to use or from use to definition. - </summary> - - <p>Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, - convallis a pellentesque nec, egestas non nisi. Proin eget tortor risus. Vestibulum ac diam sit amet quam - vehicula elementum sed sit amet dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum - congue leo eget malesuada. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna - dictum porta. Quisque velit nisi, pretium ut lacinia in, elementum id enim.</p> - </details> - </div> - </div> - - <div id="group_robustness"> - <div class="paragraphGroup"> - <h3>Test robustness of your code</h3> - - <p>Frama-C allows to verify that the source code complies with a provided formal specification. Functional - specifications can be written in a dedicated language, ACSL. The specifications can be partial, concentrating - on one aspect of the analyzed program at a time.</p> - - <p>The most structured sections of your existing design documents can also be considered as formal - specifications. For instance, the list of global variables that a function is supposed to read from or write to - is a formal specification. Frama-C can compute this information automatically from the source code of the - function, allowing you to verify that the code satisfies this part of the design document, faster and with less - risks than a code review.</p> - </div> - </div> - - <div id="group_code_standards"> - <div class="paragraphGroup"> - <h3>Enforce code standards</h3> - - <p>Frama-C allows to verify that the source code complies with a provided formal specification. Functional - specifications can be written in a dedicated language, ACSL. The specifications can be partial, concentrating - on one aspect of the analyzed program at a time.</p> - - <p>The most structured sections of your existing design documents can also be considered as formal - specifications. For instance, the list of global variables that a function is supposed to read from or write to - is a formal specification. Frama-C can compute this information automatically from the source code of the - function, allowing you to verify that the code satisfies this part of the design document, faster and with less - risks than a code review.</p> - </div> - </div> - - <div id="group_security_defects"> - <div class="paragraphGroup"> - <h3>Detect Security Defects</h3> - - <p>Frama-C allows to verify that the source code complies with a provided formal specification. Functional - specifications can be written in a dedicated language, ACSL. The specifications can be partial, concentrating - on one aspect of the analyzed program at a time.</p> - - <p>The most structured sections of your existing design documents can also be considered as formal - specifications. For instance, the list of global variables that a function is supposed to read from or write to - is a formal specification. Frama-C can compute this information automatically from the source code of the - function, allowing you to verify that the code satisfies this part of the design document, faster and with less - risks than a code review.</p> - </div> - </div> - </div> - - <div class="contentFluid recommendBlock"> - <div class="contentWrap"> - <h3>Case Studies</h3> - - <div id="case_study_list" class="caseStudyList swiper-container"> - <div class="swiper-wrapper"> - - <div class="swiper-slide"> - <div class="caseStudyItem"> - <div> - <h4>Dassault Aviation</h4> - - <p>TEESTT - -</p><a href="/case_studies/dassault.html" class="btn"><small>Discover More</small></a> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="caseStudyItem"> - <div> - <h4>Dassault Aviation Other one</h4> - - <p>TEESTT - -MEGA - -</p><a href="/case_studies/dassault_copy.html" class="btn"><small>Discover More</small></a> - </div> - </div> - </div> - - </div> - - <div class="swiper-button-prev"></div> - - <div class="swiper-button-next"></div> - </div> - </div> - </div> - </div> - </section> - </article> - - <!-- USIIINGGGG --> - <section class="bgTitleBlk titleIn lightTxt"> - <div class="upperBlk"> - <div class="upperType"> - Using - </div> - </div> - - <div class="lowerBlk"> - <div class="lowerType"> - Using - </div> - </div> - </section> - </div> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <div class="clear"></div> - </div> - </div> -</body> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/index.html b/_site/index.html deleted file mode 100644 index 4ff8265a..00000000 --- a/_site/index.html +++ /dev/null @@ -1,601 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="stylesheet" href="/assets/css/home.css"> - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <body class="home page-template-default page page-id-7 nonTouch"> - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="pageContent titleIn secure" id="content" role="main"> - <section class="section siteIntro fullScreen verticalFlex" id="intro_screen" data-title="SECURE"> - <div class="sectionContent"> - <h2 class="banner-title">Securing the future of your critical activities</h2> - - <p class="banner-desc">The Frama-C source code analysis platform provides tools to make your code safer and more - secure.</p><a class="btn cta-download" href="/html/get-frama-c.html"><span>Download <b>Frama-C</b><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class= - "icon icon-curly-right"></i></span></span></a> - </div> - - <div id="siteIntro_iv_point" class="inviewCenter"></div><a class="goDown" data-target="code_demo_screen" role= - "button"><span>Get Started</span><i class="icon icon-arrow-thin-dwn"></i></a> - </section> - - <section class="section codeDemoScreen textCenter" id="code_demo_screen" data-title="ERROR!"> - <div class="sectionContent"> - <h3>Trying out Frama-C analyzing<br> - a simple C program</h3> - - <div class="slideHeader"> - <h4>Browsing the analysis results with Frama-C</h4> - - <div id="home_code_swiper" class="tabSlider swiper-container"> - <div class="sliderWrapper swiper-wrapper"> - <div class="swiper-slide"> - <div role="button" class="slideTxt" target="tab_0"> - <span>Interface Overview</span> - </div> - </div> - - <div class="swiper-slide"> - <div role="button" class="slideTxt" target="tab_1"> - <span>Value Analysis</span> - </div> - </div> - - <div class="swiper-slide"> - <div role="button" class="slideTxt" target="tab_2"> - <span>Effects Analysis</span> - </div> - </div> - - <div class="swiper-slide"> - <div role="button" class="slideTxt" target="tab_3"> - <span>Dependency Analysis</span> - </div> - </div> - - <div class="swiper-slide"> - <div role="button" class="slideTxt" target="tab_4"> - <span>Impact Analysis</span> - </div> - </div> - </div> - - <div class="swiper-button-prev"></div> - - <div class="swiper-button-next"></div> - </div> - </div> - - <div class="codeDemoBlock"> - <div id="home_code_detail_swiper" class="swiper-container"> - <div class="swiper-wrapper"> - <div class="swiper-slide"> - <div class="codeTips"> - <div class="title"> - <b>01</b><span>This command-line creates an analysis project for file <samp>first.c</samp>.</span> - </div> - - <div class="title"> - <b>02</b><span>Option <samp>-val</samp> runs the Evolved Value Analysis plug-in and prepares its - results.</span> - </div> - - <div class="title"> - <b>03</b><span>Option <tt>-slevel 10</tt> is one of several options that influence the precision of the - value analysis.</span> - </div> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-demo"> - <div style="background: #202020; overflow:auto;width:auto;border:solid transparent;"> - <pre style="margin: 0; line-height: 125%; background: #202020;"> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">S=</span><span style= -"color: #3677a9">0</span><span style="color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">T[</span><span style= -"color: #3677a9">5</span><span style="color: #d0d0d0">];</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #447fcf">main</span><span style= -"color: #d0d0d0">(</span><span style="color: #6ab825; font-weight: bold">void</span><span style="color: #d0d0d0">)</span> - <span style="color: #d0d0d0">{</span> - <span class="highlight">int i;</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*p</span> <span style= -"color: #d0d0d0">=</span> <span style="color: #d0d0d0">&T[</span><span style="color: #3677a9">0</span><span style= -"color: #d0d0d0">]</span> <span style="color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">for</span> <span style="color: #d0d0d0">(i=</span><span style= -"color: #3677a9">0</span><span style="color: #d0d0d0">;</span> <span style="color: #d0d0d0">i<</span><span style= -"color: #3677a9">5</span><span style="color: #d0d0d0">;</span> <span style="color: #d0d0d0">i++)</span> - <span style="color: #d0d0d0">{</span> <span style="color: #d0d0d0">S</span> <span style="color: #d0d0d0">=</span> <span style= -"color: #d0d0d0">S+i;</span> <span style="color: #d0d0d0">*p++</span> <span style="color: #d0d0d0">=</span> <span style= -"color: #d0d0d0">S;</span> <span style="color: #d0d0d0">}</span> - <span style="color: #6ab825; font-weight: bold">return</span> <span style="color: #d0d0d0">S;</span> - <span style="color: #d0d0d0">}</span> - - - <span style="color: #d0d0d0"><span class="arrowTooltip left"><span><span class= -"title"><b>01</b><span>This command-line creates an analysis project for file <samp>first.c</samp>.</span></span></span></span><u></u>frama-c-gui</span> <span style="color: #d0d0d0">-slevel</span> <span style="color: #3677a9">10<span class="tooltip">3</span></span> <span style="color: #d0d0d0">-val<span class="tooltip">2</span> <span style="color: #d0d0d0">first.c<span class="tooltip">1</span><span class="arrowTooltip right"><span><span class="title"><b>02</b><span>Option <samp>-val</samp> runs the Evolved Value Analysis plug-in and prepares its results.</span></span></span></span><u></u></span> -</span> -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="codeTips"> - <div class="title"> - <b>01</b><span>The Evolved Value Analysis (EVA) plug-in computes sets of possible values for every variable - at each point of the program.</span> - </div> - - <div class="title"> - <b>02</b><span>When the execution reaches the highlighted point inside the loop, the variable - <samp>S</samp> always contains either 0, 1, 3, or 6. Frama-C guarantees that it does not take any other - values at that point.</span> - </div> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-demo"> - <div style="background: #202020; overflow:auto;width:auto;border:solid transparent;"> - <pre style="margin: 0; line-height: 125%; background: #202020;"> - <span style="color: #d0d0d0">i</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style= -"color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">while</span> <span style="color: #d0d0d0">(i</span> <span style= -"color: #d0d0d0"><</span> <span style="color: #3677a9">5</span><span style="color: #d0d0d0">)</span> <span style= -"color: #d0d0d0">{</span> - <span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*tmp;</span> - <span class="arrowTooltip left"><span><span class= -"title"><b>01</b><span>The Evolved Value Analysis (EVA) plug-in computes sets of possible values for every variable at each point of the program.</span></span></span></span><u></u><span style="color: #d0d0d0"><span class="highlight">S<span class="tooltip">1</span></span></span> <span style="color: #d0d0d0">+=</span> <span style="color: #d0d0d0">i;</span> - <span style="color: #d0d0d0">{</span> <span style="color: #999999; font-style: italic">/* sequence */</span> - <span style="color: #d0d0d0">tmp</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">p;</span> - <span style="color: #d0d0d0">p</span> <span style="color: #d0d0d0">++;</span> - <span style="color: #d0d0d0">*tmp</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">S;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">i++;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #6ab825; font-weight: bold">return</span> <span style="color: #d0d0d0">S;</span> - <span style="color: #d0d0d0">}</span> - - <span style="color: #d0d0d0">S</span> <span style="color: #a61717; background-color: #e3d2d2">∈</span> <span style= -"color: #d0d0d0">{</span><span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span> <span style= -"color: #3677a9">1</span><span style="color: #d0d0d0">;</span> <span style="color: #3677a9">3</span><span style= -"color: #d0d0d0">;</span> <span style="color: #3677a9">6</span><span style="color: #d0d0d0">}</span><span class= -"tooltip">2</span><span class="arrowTooltip right"><span><span class= -"title"><b>02</b><span>When the execution reaches the highlighted point inside the loop, the variable <samp>S</samp> always contains either 0, 1, 3, or 6. Frama-C guarantees that it does not take any other values at that point.</span></span></span></span><u></u> - <span style="color: #d0d0d0">S</span> <span style="color: #d0d0d0">(after)</span> <span style= -"color: #a61717; background-color: #e3d2d2">∈</span> <span style="color: #d0d0d0">{</span><span style= -"color: #3677a9">0</span><span style="color: #d0d0d0">;</span> <span style="color: #3677a9">1</span><span style= -"color: #d0d0d0">;</span> <span style="color: #3677a9">3</span><span style="color: #d0d0d0">;</span> <span style= -"color: #3677a9">6</span><span style="color: #d0d0d0">;</span> <span style="color: #3677a9">10</span><span style= -"color: #d0d0d0">}</span> -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="codeTips"> - <div class="title"> - <b>01</b><span>For each statement, Frama-C can provide an exhaustive list of the memory cells that may be - modified by this statement during the execution, even if the statement uses pointers.</span> - </div> - - <div class="title"> - <b>02</b><span>Frama-C guarantees that anytime it is executed, the statement <samp>*tmp = S;</samp> does - not change any memory location other than the cells of the array <samp>T</samp>.</span> - </div> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-demo"> - <div style="background: #202020; overflow:auto;width:auto;border:solid transparent;"> - <pre style="margin: 0; line-height: 125%; background: #202020;"> - <span style="color: #d0d0d0">p</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">T;</span> - <span style="color: #d0d0d0">i</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style= -"color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">while</span> <span style="color: #d0d0d0">(i</span> <span style= -"color: #d0d0d0"><</span> <span style="color: #3677a9">5</span><span style="color: #d0d0d0">)</span> <span style= -"color: #d0d0d0">{</span> - <span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*tmp;</span> - <span style="color: #d0d0d0">S</span> <span style="color: #d0d0d0">+=</span> <span style="color: #d0d0d0">i;</span> - <span style="color: #d0d0d0">{</span> <span style="color: #999999; font-style: italic">/* sequence */</span> - <span style="color: #d0d0d0">tmp</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">p;</span> - <span style="color: #d0d0d0">p</span> <span style="color: #d0d0d0">++;</span> - <span class="arrowTooltip left"><span><span class= -"title"><b>01</b><span>For each statement, Frama-C can provide an exhaustive list of the memory cells that may be modified by this statement during the execution, even if the statement uses pointers.</span></span></span></span><u></u><span class="highlight">*tmp = S;<span class="tooltip">1</span></span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">i++;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #6ab825; font-weight: bold">return</span> <span style="color: #d0d0d0">S;</span> - <span style="color: #d0d0d0">}</span> - - <span class="highlight">*tmp = S;</span> <span style="color: #d0d0d0">modifies</span> <span style= -"color: #d0d0d0">T[</span><span style="color: #3677a9">0..4</span><span style="color: #d0d0d0">]</span><span class= -"arrowTooltip right"><span><span class= -"title"><b>02</b><span>Frama-C guarantees that anytime it is executed, the statement <samp>*tmp = S;</samp> does not change any memory location other than the cells of the array <samp>T</samp>.</span></span></span></span><u></u><span class="tooltip">2</span> -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="codeTips"> - <div class="title"> - <b>01</b><span>The dependencies plug-in highlights the statements that define the value of variable - <samp>S</samp> at this point.</span> - </div> - - <div class="title"> - <b>02</b><span>The value contained in variable <samp>S</samp> at the statement <samp>*tmp = S;</samp> was - defined by the statement <samp>S += i;</samp></span> - </div> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-demo"> - <div style="background: #202020; overflow:auto;width:auto;border:solid transparent;"> - <pre style="margin: 0; line-height: 125%; background: #202020;"> -<span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #447fcf">main</span><span style= -"color: #d0d0d0">(</span><span style="color: #6ab825; font-weight: bold">void</span><span style="color: #d0d0d0">)</span> -<span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">i;</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*p;</span> - <span style="color: #d0d0d0">p</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">T;</span> - <span style="color: #d0d0d0">i</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style= -"color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">while</span> <span style="color: #d0d0d0">(i</span> <span style= -"color: #d0d0d0"><</span> <span style="color: #3677a9">5</span><span style="color: #d0d0d0">)</span> <span style= -"color: #d0d0d0">{</span> - <span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*tmp;</span> - <span class="highlight2">S += i;</span><span class="tooltip">2</span><span class="arrowTooltip right"><span><span class= -"title"><b>02</b><span>The value contained in variable <samp>S</samp> at the statement <samp>*tmp = S;</samp> was defined by the statement <samp>S += i;</samp></span></span></span></span><u></u> - <span style="color: #d0d0d0">{</span> <span style="color: #999999; font-style: italic">/* sequence */</span> - <span style="color: #d0d0d0">tmp</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">p;</span> - <span style="color: #d0d0d0">p</span> <span style="color: #d0d0d0">++;</span> - <span class="arrowTooltip left"><span><span class= -"title"><b>01</b><span>The dependencies plug-in highlights the statements that define the value of variable <samp>S</samp> at this point.</span></span></span></span><u></u><span style="color: #d0d0d0">*tmp</span> <span style="color: #d0d0d0">=</span> <span class="highlight">S<span class="tooltip">1</span></span><span style="color: #d0d0d0">;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">i++;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #6ab825; font-weight: bold">return</span> <span style="color: #d0d0d0">S;</span> -<span style="color: #d0d0d0">}</span> -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="codeTips"> - <div class="title"> - <b>01</b><span>This analysis highlights all the statements impacted by the selected statement.</span> - </div> - - <div class="title"> - <b>02</b><span>This statement has repercussions on the statements <samp>tmp = p; p++; *tmp = S;</samp>. It - is guaranteed not to affect the statements <samp>S += i;</samp> and <samp>i ++;</samp></span> - </div> - </div> - - <div class="notebook code"> - <div> - <div class="codeScreen"> - <div class="codeTab tab-demo"> - <div style="background: #202020; overflow:auto;width:auto;border:solid transparent;"> - <pre style="margin: 0; line-height: 125%; background: #202020;"> -<span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #447fcf">main</span><span style= -"color: #d0d0d0">(</span><span style="color: #6ab825; font-weight: bold">void</span><span style="color: #d0d0d0">)</span> -<span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">i;</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*p;</span> - <span class="arrowTooltip left"><span><span class= -"title"><b>01</b><span>This analysis highlights all the statements impacted by the selected statement.</span></span></span></span><u></u><span class="highlight">p = T;</span><span class="tooltip">1</span> - <span style="color: #d0d0d0">i</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style= -"color: #d0d0d0">;</span> - <span style="color: #6ab825; font-weight: bold">while</span> <span style="color: #d0d0d0">(i</span> <span style= -"color: #d0d0d0"><</span> <span style="color: #3677a9">5</span><span style="color: #d0d0d0">)</span> <span style= -"color: #d0d0d0">{</span> - <span style="color: #d0d0d0">{</span> - <span style="color: #6ab825; font-weight: bold">int</span> <span style="color: #d0d0d0">*tmp;</span> - <span style="color: #d0d0d0">S</span> <span style="color: #d0d0d0">+=</span> <span style="color: #d0d0d0">i;</span> - <span style="color: #d0d0d0">{</span> <span style="color: #999999; font-style: italic">/* sequence */</span> - <span class="highlight2">tmp = p;</span> - <span class="highlight2">p++;</span> - <span class="highlight2">*tmp = S;</span><span class="tooltip">2</span><span class="arrowTooltip right"><span><span class= -"title"><b>02</b><span>This statement has repercussions on the statements <samp>tmp = p; p++; *tmp = S;</samp>. It is guaranteed not to affect the statements <samp>S += i;</samp> and <samp>i ++;</samp></span></span></span></span><u></u> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #d0d0d0">i++;</span> - <span style="color: #d0d0d0">}</span> - <span style="color: #6ab825; font-weight: bold">return</span> <span style="color: #d0d0d0">S;</span> -<span style="color: #d0d0d0">}</span> -</pre> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - - <div id="code_demo_iv_point" class="inviewCenter"></div> - </section> - - <section class="section aboutScreen fullScreen verticalFlex" id="about_screen" data-title="ABOUT"> - <div class="sectionContent"> - <div class="circleBlock"> - <h2>How can<br> - Frama-C<br> - be used?</h2> - - <div class="circle robustness"></div> - - <div class="circle codeStandard"></div> - - <div class="circle security"></div><a href="/html/using-frama-c.html#group_robustness" class="robustness" role= - "button"><span class="icon"><i class=" icon-thumb"></i></span> <span class="txt">Test your software's - <b>robustness</b></span></a><a href="/html/using-frama-c.html#group_code_standards" class="codeStandard" role= - "button"><span class="icon"><i class=" icon-code"></i></span> <span class="txt">Enforce <b>code - requirements</b></span></a><a href="/html/using-frama-c.html#group_security_defects" class="security" role= - "button"><span class="icon"><i class=" icon-lock"></i></span> <span class="txt">Detect <b>security - defects</b></span></a> - </div> - </div> - - <div id="about_iv_point" class="inviewCenter"></div> - </section> - - <section id="latest_events" class="section calendarScreen fullScreen" data-title="FOLLOW"> - <div class="sectionContent"> - <h2>Frama-C Calendar</h2> - - <div id="event_detail_swiper" class="eventDetailsBlock swiper-container"> - <div class="swiper-wrapper"> - - <div class="swiper-slide"> - <div class="eventDetail" id="post_details_486"> - <figure> - <span class="img" style= - "background-image: url()"></span> - </figure> - - <div class="contentBlk"> - <time><b>10</b><b>August</b><small>2019</small></time> - <div> - <h3>A new day in Frama-C</h3> - - <p> -</p><a class="read-more link" href= - "/events/event1.html" target="_blank">Read More</a> - </div> - </div> - </div> - </div> - - <div class="swiper-slide"> - <div class="eventDetail" id="post_details_486"> - <figure> - <span class="img" style= - "background-image: url()"></span> - </figure> - - <div class="contentBlk"> - <time><b>10</b><b>August</b><small>2019</small></time> - <div> - <h3>A new day in Frama-C</h3> - - <p> -</p><a class="read-more link" href= - "/events/event2.html" target="_blank">Read More</a> - </div> - </div> - </div> - </div> - - </div> - </div> - </div> - - <div class="eventScaleBlock"> - <div class="scaleBg"> - <u></u> - </div> - - <div id="event_calender_swiper" class="swiper-container"> - <div class="swiper-wrapper"> - - <div class="swiper-slide"> - <a role="button" class="eventLink"><time><b>10</b><small>August</small></time><span>A new day in Frama-C</span></a> - </div> - - <div class="swiper-slide"> - <a role="button" class="eventLink"><time><b>10</b><small>August</small></time><span>A new day in Frama-C</span></a> - </div> - - </div> - </div> - </div> - - <div id="events_iv_point" class="inviewCenter"></div> - </section> - - <section class="section downloadSection fullScreen verticalFlex" id="download_screen" data-title="DOWNLOAD"> - <div class="sectionContent"> - <div class="head"> - <h3>Get Frama-C</h3> - - <nav> - <span class="currentVersion">Latest Version</span><a role="button" href="/html/get-frama-c.html">Potassium</a><a href="/html/framac-versions.html" class="previousVersion">Previous Versions</a> - </nav> - </div> - - <div class="linkBlk"> - <p>Frama-C is only available for Desktop</p><a class="btn mobileLink" href="/html/get-frama-c.html"><span>Discover - more about <b>Frama-C</b></span></a> <a class="btn cta-download" href="/html/get-frama-c.html"><span>Download - <b>Frama-C</b><span><i class="icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class= - "icon icon-curly-right"></i></span></span></a> - </div> - </div> - - <div id="download_iv_point" class="inviewCenter"></div> - </section> - - <footer id="footer" class="mainFooter"> -<a href="/index.html" rel="home" class="footLogo" title="Frama-C"><img src="/assets/img/framac.gif" -alt=""></a> - -<nav> - <a href="https://twitter.com/frama_c" target="_blank" class="twitterLink"><i class="icon icon-twitter"></i></a> -</nav> - -<div class="copyright"> - <span>Copyright © 2015-2018 Frama-C. All Rights Reserved.</span> - - <ul id="menu-footer-menu" class="footer-list-menu"> - <li id="menu-item-214" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-214"> - <a href="/html/terms-of-use.html">Terms Of Use</a> - </li> - - <li id="menu-item-233" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-233"> - <a href="/html/authors.html">Authors</a> - </li> - </ul> -</div> - -<div id="copyright" class="hide"> - © 2019 Frama-C. All Rights Reserved. -</div> -</footer> - - <section class="bgTitleBlk titleIn white"> - <div class="upperBlk"> - <div class="upperType"> - SECURE - </div> - </div> - - <div class="lowerBlk"> - <div class="lowerType"> - SECURE - </div> - </div> - </section> - </div> - <script> - var homeLabels = {secure_label : 'Secure',error_label : 'Error',about_label : 'About',follow_label : 'Follow',footer_label : 'Get Frama-C',}; - </script> - - <div class="clear"></div> - </div> - </div> -<body> - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/jekyll/update/2019/08/22/welcome-to-jekyll.html b/_site/jekyll/update/2019/08/22/welcome-to-jekyll.html deleted file mode 100644 index 0de806a4..00000000 --- a/_site/jekyll/update/2019/08/22/welcome-to-jekyll.html +++ /dev/null @@ -1,173 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Welcome to Jekyll!</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Welcome to Jekyll!</span></h1> - - <address> - - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>You’ll find this post in your <code class="highlighter-rouge">_posts</code> directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run <code class="highlighter-rouge">jekyll serve</code>, which launches a web server and auto-regenerates your site when a file is updated.</p> - -<p>Jekyll requires blog post files to be named according to the following format:</p> - -<p><code class="highlighter-rouge">YEAR-MONTH-DAY-title.MARKUP</code></p> - -<p>Where <code class="highlighter-rouge">YEAR</code> is a four-digit number, <code class="highlighter-rouge">MONTH</code> and <code class="highlighter-rouge">DAY</code> are both two-digit numbers, and <code class="highlighter-rouge">MARKUP</code> is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.</p> - -<p>Jekyll also offers powerful support for code snippets:</p> - -<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">print_hi</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span> - <span class="nb">puts</span> <span class="s2">"Hi, </span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2">"</span> -<span class="k">end</span> -<span class="n">print_hi</span><span class="p">(</span><span class="s1">'Tom'</span><span class="p">)</span> -<span class="c1">#=> prints 'Hi, Tom' to STDOUT.</span></code></pre></figure> - -<p>Check out the <a href="https://jekyllrb.com/docs/home">Jekyll docs</a> for more info on how to get the most out of Jekyll. File all bugs/feature requests at <a href="https://github.com/jekyll/jekyll">Jekyll’s GitHub repo</a>. If you have questions, you can ask them on <a href="https://talk.jekyllrb.com/">Jekyll Talk</a>.</p> - - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> diff --git a/_site/pony/2019/06/22/jungle.html b/_site/pony/2019/06/22/jungle.html deleted file mode 100644 index 39a21b3c..00000000 --- a/_site/pony/2019/06/22/jungle.html +++ /dev/null @@ -1,325 +0,0 @@ -<!DOCTYPE html> - -<html lang="en-US" class="framac-site"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-sclable=no"> - - - <title>Frama-C 15 (Phosphorus) released, and open source case studies</title> - - <link rel="stylesheet" href="/assets/css/main.css"> - <link rel="stylesheet" href="/assets/css/page.css"> - <link rel="stylesheet" href="/assets/css/home.css"> - <link rel="stylesheet" href="/assets/css/icomoon.css"> - <link rel="stylesheet" href="/assets/css/default.css"> - <link rel="stylesheet" href="/assets/css/blog.css"> - <link rel="stylesheet" href="/assets/css/documentation.css"> - - - <link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon"> -</head> - - <div id="wrapper" class="hfeed"> - - <header class="siteHeader" id="site_header"> - <div id="header_iv_point" class="inviewTop"></div><span class="brandLogo"><a href="/index.html" rel="home" title= - "Frama-C"><img src="/assets/img/framac.gif" alt=""><span>Frama-C</span></a></span><a role="button" id= - "menu_toggle" class="menuToggle"><span class="open"><i></i><i></i><i></i></span><span class="close"><i></i><i></i></span></a> - - <nav id="menu" role="navigation"> - <div class="menu-primary-meny-container"> - <ul id="menu-primary-meny" class="menu"> - - <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"> - - <a href="/html/using-frama-c.html">Using Frama C</a> - </li> - - - <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"> - - <a href="/html/kernel-plugin.html">Kernel & Plugins</a> - </li> - - <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"> - - <a href="/dokuwiki/start.html">Documentation</a> - </li> - - - <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29"> - - <a href="/blog/index.html">Blog</a> - </li> - - - <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"> - - <a href="/html/careers.html">Careers</a> - </li> - - - - <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"> - - <a href="/html/contact.html">Contact</a> - </li> - </ul> - </div><a role="button" href="/html/get-frama-c.html" id="header_download_link" class="btnDownload"><span><i class= - "icon icon-curly-left"></i><i class="icon icon-download-arrow"></i><i class="icon icon-curly-right"></i></span></a> - </nav> -</header> - - <div id="container" class="mainContainer"> - <div class="defaultPage blogsPage singleBlogPage" id="content" role="main"> - <div class="contentWrap"> - <div class="breadcrumb backNavigation"> - <a href="/blog/index.html" class="backLink2"><i class="icon icon-arrow-left"></i> Back to blogs</a> - </div> - - <h1><span>Frama-C 15 (Phosphorus) released, and open source case studies</span></h1> - - <address> - Andre - </address> - </div> - - <div class="contentWrap"> - <div class="blogsSection"> - <div class="blogsSectionContent singleBlog"> - <article> - - <div class="content"> - <p>Frama-C 15 (Phosphorus) has been released, and the OPAM package is already<br> -available! A MinGW-based OPAM package, distributed by fdopens<br> -<a href="https://github.com/fdopen/opam-repository-mingw">MinGW OPAM repository</a>, is<br> -also available.</p> - - -<p>In this post, we briefly highlight two new features in this release.<br> -We also announce the release of a new Github repository,<br> -<code>open-source-case-studies</code>, which contains some snapshots of code bases<br> -ready to be analyzed with Frama-C/EVA.</p> - -<h2>Highlighted new features</h2> - -<h3>E-ACSL in the default release</h3> - -<p>One notable change in this release is the direct integration of E-ACSL:<br> -instead of having to install OPAM packages <code>frama-c</code> and <code>frama-c-e-acsl</code>,<br> -you only need to install <code>frama-c</code>.</p> - -<p>E-ACSL enables runtime verification in Frama-C, serving as an efficient tool<br> -for detecting undefined behavior and for debugging ACSL specifications.<br> -It can be used in a stand-alone mode (e.g. with assertions generated by<br> -the RTEgen plug-in), or in combination with EVA, in which case its<br> -instrumentation is more efficient: EVA only generates ACSL assertions for the<br> -properties that it cannot prove, thus greatly reducing E-ACSLs instrumentation.</p> - -<p>Note that, due to the usage of <code>jemalloc</code> and some technical details, E-ACSL<br> -is disabled by default in Mac and Windows.</p> - -<h3>Better pretty-printing of <code>#include</code> directives</h3> - -<p>One of the drawbacks of the <code>-print</code> option of Frama-C was the fact that the<br> -code was entirely preprocessed, expanding a Hello world example to several<br> -hundreds of lines, due to the expansion of <code>#include <stdio.h></code> and derived<br> -files.</p> - -<p>There are now two options, <code>-print-libc</code> and <code>-no-print-libc</code> (the latter is<br> -enabled by default) which control the folding/unfolding of <code>#include</code> directives<br> -in pretty-printed code. More specifically, if your original code is:</p> -<pre> -<code class="newpre">#include <stdio.h> - -int main() { -printf("hello world!\n"); -return 0; -} -</code> -</pre> - -<p>Then the result of <code>-print</code> will be:</p> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -/*@ requires valid_read_string(format); -assigns \result, __fc_stdout->__fc_FILE_data; -assigns \result -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -assigns __fc_stdout->__fc_FILE_data -\from (indirect: __fc_stdout->__fc_FILE_id), -__fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); -*/int printf_va_1(char const *format); - -int main(void) -{ -int __retres; -printf_va_1("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>There are two interesting things to notice here:</p> - -<ol> -<li>Some <code>#include</code> directives are present at the beginning of the file. These<br> -directives correspond to all files from the Frama-C standard library whose<br> -identifiers were present in the (expanded) original code. For instance,<br> -<code>errno.h</code> is present because Frama-Cs <code>stdio.h</code> includes it. As you can see,<br> -the mechanism does not guarantee a minimal number of includes, but it is much<br> -cleaner than having all files expanded;</li> - -<li>The specification of <code>printf_va_1</code> is visible. This is due to the fact that<br> -the Variadic plug-in (which is enabled by default on Frama-C 15 (Phosphorus))<br> -generated this specification it is not part of the standard<br> -Frama-C library. In fact, <code>printf_va_1</code> is a specific instantiation of the<br> -variadic <code>printf</code> function. You can disable the automatic variadic translation<br> -with <code>-variadic-no-translation</code>, in which case <code>-print</code> will result in:</li> -</ol> -<pre> -<code class="newpre">/* Generated by Frama-C */#include "errno.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdio.h" -int main(void) -{ -int __retres; -printf("hello world!\n"); -__retres = 0; -return __retres; -} -</code> -</pre> - -<p>The Phosphorus release also includes, as usual, a series of bug fixes and minor<br> -improvements. Consult the Changelog for more details.</p> - -<h2>Open source case studies</h2> - -<p>A new Github repository on the Frama-C organization,<br> -<a href="https://github.com/Frama-C/open-source-case-studies">open-source-case-studies</a>,<br> -has been created to help users quickly run Frama-C (and EVA in particular) in<br> -more realistic code bases, which includes different sorts of open-source code;<br> -some of them are very small (a single file) while others contain significantly<br> -larger bases. Their usage is very simple: once you have installed Frama-C and<br> -put it in the <code>PATH</code>, enter one of the case study directories and run:</p> - -<ul> -<li><code>make</code> to parse and run EVA;</li> - -<li><code>make <target>.eva.gui</code> to open the Frama-C GUI and view the results.</li> -</ul> - -<p>The target names vary on each case study, and can be obtained via <code>make help</code>.<br> -Note that this will show only the base target name, from which other targets<br> -are derived (e.g. <code><target>.parse</code>, <code><target>.eva</code>, -<code><target>.eva.gui</code>).</p> - -<p>All case studies include a <code>Makefile</code>, which uses the files in <code>fcscripts</code> to<br> -generate targets and Makefile rules to allow running EVA quickly.<br> -Among the facilities provided by these scripts, we highlight:</p> - -<ul> -<li>templates for Frama-C parametrization (i.e. variables <code>CPPFLAGS</code>, <code>FCFLAGS</code><br> -and <code>EVAFLAGS</code> to delineate which options are related to preprocessing,<br> -parsing and running EVA), including helpful default parameters;</li> - -<li>automatic target dependencies on command line arguments: Frama-C reparses<br> -files only when they are modified, and re-runs EVA only when command line<br> -arguments change;</li> - -<li>saving of intermediate results in directories (for easy comparison via Meld),<br> -to run other plug-ins without having to re-run EVA<br> -(e.g. <code>frama-c -load <target>.eva/framac.sav ...</code>).</li> -</ul> - -<p>Note, however, that there are some caveats concerning this repository:</p> - -<ol> -<li>It is not representative of the scale of programs that Frama-C/EVA can<br> -handle; indeed, all large code bases where Frama-C/EVA is applied consist<br> -in industrial code that cannot be shared;</li> - -<li>One of the main purposes of the repository (internally) is to serve for<br> -non-regression testing, which means that some analyses are not fully<br> -parametrized;</li> - -<li>Some case studies include code that is not ideally dealt with by EVA, but<br> -may be useful for other plug-ins.</li> -</ol> - -<p>Those caveats aside, we hope this repository will give practical examples<br> -and help you to parametrize your own analyses. If you also have some interesting<br> -open source code bases on which to run EVA, you can submit them to us as<br> -a Github pull requests. This will make it easier to compare the behavior of<br> -future versions of Frama-C on such code, and to benefit from improvements in the<br> -analyzer.</p> - - </div> - </article> - </div> - - <aside id="sidebar" role="complementary"> - <div id="sidebar_iv_point" class="inviewTop"></div> - - <div id="sidebar_wrap" class="sidebarWrap"> - <!-- <form class="searchForm" action="../index.html" data-parsley-validate=""> - <input type="text" name="s" required="" value="" placeholder="Search for the post here"> <input type="hidden" - name="post_type" value="post"> <button type="submit" class="submit searchLink pull-left disabled" title= - "Search"><i class="icon icon-search"></i></button> - - <div class="error" id="top_search_error" style="display: none;" role="alert"> - Enter Search Term - </div> - </form> --> - - <div class="tagsList"> - <h4>Popular tags</h4> - - <nav> - - - <a href="/category/pony/index.html" class="btn btnCancel"><span>pony</span></a> - - - - <a href="/category/jekyll/index.html" class="btn btnCancel"><span>jekyll</span></a> - - - - <a href="/category/update/index.html" class="btn btnCancel"><span>update</span></a> - - - </nav> - </div> - - <!-- <div class="feedsList"> - <h4>Feed</h4><a href="/html/feed.html" target="_blank">Feed</a> - </div> --> - </div> -</aside> - </div> - </div> - </div> - </div> - </div> - - - - <script type='text/javascript' src='/assets/js/manifest.js'></script> - <script type='text/javascript' src='/assets/js/lib.js'></script> - <script type='text/javascript'> - var ajax = {"url":"http:\/\/localhost:8000\/wp\/wp-admin\/admin-ajax.php","ajax_var":{"template_directory_uri":"http:\/\/localhost:8000\/app\/themes\/frama"},"apikey":"AIzaSyDwKjbfd43-rY5muMW76XUdAFMb7mL9kU8","nonce":"eb10361e5c"}; - </script> - <script type='text/javascript' src='/assets/js/main.js'></script> - - - </body> -</html> -- GitLab