diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6489a07 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +dist: xenial +language: python + +python: + - 3.7 + +addons: + apt: + update: true + packages: + - webhttrack + - httrack + +cache: pip + +install: + - pip3 install requests BeautifulSoup4 html5lib + +script: + - echo Skipping + +before_deploy: + - python3 deploy.py + - export TRAVIS_TAG=$(git describe --tags --abbrev=0) + +deploy: + provider: releases + api_key: $GH_TOKEN + file: "Slim_Framework.tgz" + skip_cleanup: true + on: + condition: $TRAVIS_EVENT_TYPE = cron diff --git a/SlimFramework.xml b/SlimFramework.xml index 33f66e0..3c56dda 100644 --- a/SlimFramework.xml +++ b/SlimFramework.xml @@ -1,5 +1,5 @@ - 3.5.0 - https://github.com/pfefferle/dash-slimframework/releases/download/v3.5.0/Slim_Framework.tgz + 3.12.1 + https://github.com/pfefferle/dash-slimframework/releases/download/v3.12.1/Slim_Framework.tgz diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css deleted file mode 100644 index 41e9602..0000000 --- a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfonte0a5.eot?v=4.3.0');src:url('../fonts/fontawesome-webfontd41d.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfonte0a5.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfonte0a5.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfonte0a5.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfonte0a5.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfontd41d.eot b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfontd41d.eot deleted file mode 100644 index 33b2bb8..0000000 Binary files a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfontd41d.eot and /dev/null differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.eot b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.eot deleted file mode 100644 index 33b2bb8..0000000 Binary files a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.eot and /dev/null differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.svg b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.svg deleted file mode 100644 index 1ee89d4..0000000 --- a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.woff b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.woff deleted file mode 100644 index e69de29..0000000 diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.woff2 b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.woff2 deleted file mode 100644 index 3311d58..0000000 Binary files a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.woff2 and /dev/null differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css new file mode 100644 index 0000000..748f4b3 --- /dev/null +++ b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont3e6e.eot?v=4.7.0');src:url('../fonts/fontawesome-webfontd41d.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont3e6e.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont3e6e.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont3e6e.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont3e6e.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.eot b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.eot differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.svg b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.ttf b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.ttf similarity index 50% rename from Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.ttf rename to Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.ttf index ed9372f..35acda2 100644 Binary files a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.3.0/fonts/fontawesome-webfonte0a5.ttf and b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.ttf differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff2 b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont3e6e.woff2 differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfontd41d.eot b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfontd41d.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/Slim_Framework.docset/Contents/Resources/Documents/maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfontd41d.eot differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/assets/fonts/glyphicons-halflings-regulard41d.eot b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/assets/fonts/glyphicons-halflings-regulard41d.eot index e69de29..b93a495 100644 Binary files a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/assets/fonts/glyphicons-halflings-regulard41d.eot and b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/assets/fonts/glyphicons-halflings-regulard41d.eot differ diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html.txt b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html.txt deleted file mode 100644 index 1eb468a..0000000 --- a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html.txt +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - Contributor Guidelines - Slim Framework - - - - - - - - - - - - - - - - - - -
-
- - -
-
- - - - - - - -

Get Started

- - - - -

Tutorial

- - - - -

Concepts

- - - - -

The Application

- - - - -

The Request

- - - - -

The Response

- - - - -

Routing

- - - - -

Error Handling

- - - - -

Cook book

- - - - -

Add Ons

- - - - -

Contributing

- - -
- -
-

Contributor Guidelines

- -

I encourage everyone to contribute to the Slim Framework project. You can find the latest code on GitHub at https://github.com/slimphp/Slim.

- -

Issue Tracker

- -

You can find outstanding issues on the GitHub Issue Tracker. If you intend to work on a specific issue, leave a comment on the appropriate thread to inform other project contributors.

- -

Pull Requests

- -
    -
  • Each pull request should contain only one new feature or improvement.
  • -
  • Pull requests should be submitted to the master branch
  • -
- -

Code Style

- -

All pull requests must use the PSR-2 code style.

- -
    -
  • Code MUST use the PSR-1 code style.
  • -
  • Code MUST use 4 spaces for indenting, not tabs.
  • -
  • There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.
  • -
  • There MUST be one blank line after the namespace declaration, and there MUST be one blank line after the block of use declarations.
  • -
  • Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.
  • -
  • Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.
  • -
  • Visibility MUST be declared on all properties and methods; abstract and final MUST be declared before the visibility; static MUST be declared after the visibility.
  • -
  • Control structure keywords MUST have one space after them; method and function calls MUST NOT.
  • -
  • Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.
  • -
  • Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before.
  • -
- -
-
- - -
-
- - - - - - - - - - - - \ No newline at end of file diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html/index.html b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html/index.html deleted file mode 100644 index 602a140..0000000 --- a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/contributors/guidelines.html/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- -
- GitHub Status — - @githubstatus -
- - - - -
- - diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/index.html b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/index.html index 07332e8..72e79a9 100644 --- a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/index.html +++ b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/index.html @@ -1,5 +1,5 @@ - + @@ -15,7 +15,7 @@ - + @@ -33,13 +33,16 @@

Documentation

- Edit This Page + Edit This Page +
-
-

- This documentation is for Slim 3. The Slim 2 documentation is available at docs.slimframework.com. -

-
+ + +

+ +
+ This website and documentation is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. +

Welcome

@@ -62,13 +65,13 @@

Symfony or Laravel. +

You don’t always need a kitchen-sink solution like Symfony or Laravel. These are great tools, for sure. But they are often overkill. Instead, Slim provides only a minimal set of tools that do what you need and nothing else.

How does it work?

-

First, you need a web server like Nginx or Apache. You should configure +

First, you need a web server like Nginx or Apache. You should configure your web server so that it sends all appropriate requests to one “front-controller” PHP file. You instantiate and run your Slim app in this PHP file.

@@ -80,8 +83,7 @@

<?php
+  

+
Figure 1: Example Slim application

Request and response

@@ -106,7 +108,7 @@

PSR 7 interfaces. The Slim app route can inspect +to its callback routine. These objects implement the popular PSR 7 interfaces. The Slim app route can inspect or manipulate these objects as necessary. Ultimately, each Slim app route MUST return a PSR 7 Response object.

@@ -158,7 +160,7 @@

- + @@ -192,6 +194,19 @@

Rob Allen, and the Slim Framework Team

-
- - - - -
+ Donate with PayPal @@ -577,6 +652,8 @@

- - - - - Router - Slim Framework - - - - - - - - - - - - - - - - - - -
-
- - -
- - -
-

Router

- -

The Slim Framework’s router is built on top of the nikic/fastroute component, and it is remarkably fast and stable.

- -

How to create routes

- -

You can define application routes using proxy methods on the \Slim\App instance. The Slim Framework provides methods for the most popular HTTP methods.

- -

GET Route

- -

You can add a route that handles only GET HTTP requests with the Slim -application’s get() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->get('/books/{id}', function ($request, $response, $args) {
-    // Show book identified by $args['id']
-});
- -

POST Route

- -

You can add a route that handles only POST HTTP requests with the Slim -application’s post() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->post('/books', function ($request, $response, $args) {
-    // Create new book
-});
- -

PUT Route

- -

You can add a route that handles only PUT HTTP requests with the Slim -application’s put() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->put('/books/{id}', function ($request, $response, $args) {
-    // Update book identified by $args['id']
-});
- -

DELETE Route

- -

You can add a route that handles only DELETE HTTP requests with the Slim -application’s delete() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->delete('/books/{id}', function ($request, $response, $args) {
-    // Delete book identified by $args['id']
-});
- -

OPTIONS Route

- -

You can add a route that handles only OPTIONS HTTP requests with the Slim -application’s options() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->options('/books/{id}', function ($request, $response, $args) {
-    // Return response headers
-});
- -

PATCH Route

- -

You can add a route that handles only PATCH HTTP requests with the Slim -application’s patch() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->patch('/books/{id}', function ($request, $response, $args) {
-    // Apply changes to book identified by $args['id']
-});
- -

Any Route

- -

You can add a route that handles all HTTP request methods with the Slim application’s any() method. It accepts two arguments:

- -
    -
  1. The route pattern (with optional named placeholders)
  2. -
  3. The route callback
  4. -
- -
$app = new \Slim\App();
-$app->any('/books/[{id}]', function ($request, $response, $args) {
-    // Apply changes to books or book identified by $args['id'] if specified.
-    // To check which method is used: $request->getMethod();
-});
- -

Note that the second parameter is a callback. You could specify a Class (which need a __invoke() implementation) instead of a Closure. You can then do the mapping somewhere else:

- -
$app->any('/user', 'MyRestfulController');
- -

Custom Route

- -

You can add a route that handles multiple HTTP request methods with the Slim application’s map() method. It accepts three arguments:

- -
    -
  1. Array of HTTP methods
  2. -
  3. The route pattern (with optional named placeholders)
  4. -
  5. The route callback
  6. -
- -
$app = new \Slim\App();
-$app->map(['GET', 'POST'], '/books', function ($request, $response, $args) {
-    // Create new book or list all books
-});
- -

Route callbacks

- -

Each routing method described above accepts a callback routine as its final argument. This argument can be any PHP callable, and by default it accepts three arguments.

- -
-
Request
-
The first argument is a Psr\Http\Message\ServerRequestInterface object that represents the current HTTP request.
-
Response
-
The second argument is a Psr\Http\Message\ResponseInterface object that represents the current HTTP response.
-
Arguments
-
The third argument is an associative array that contains values for the current route’s named placeholders.
-
- -

Writing content to the response

- -

There are two ways you can write content to the HTTP response. First, you can simply echo() content from the route callback. This content will be appended to the current HTTP response object. Second, you can return a Psr\Http\Message\ResponseInterface object.

- -

Closure binding

- -

If you use a Closure instance as the route callback, the closure’s state is bound to the Container instance. This means you will have access to the DI container instance inside of the Closure via the $this keyword:

- -
$app = new \Slim\App();
-$app->get('/hello/{name}', function ($request, $response, $args) {
-    // Use app HTTP cookie service
-    $this->get('cookies')->set('name', [
-        'value' => $args['name'],
-        'expires' => '7 days'
-    ]);
-});
- -

Route strategies

- -

The route callback signature is determined by a route strategy. By default, Slim expects route callbacks to accept the request, response, and an array of route placeholder arguments. This is called the RequestResponse strategy. However, you can change the expected route callback signature by simply using a different strategy. As an example, Slim provides an alternative strategy called RequestResponseArgs that accepts request and response, plus each route placeholder as a separate argument. Here is an example of using this alternative strategy; simply replace the foundHandler dependency provided by the default \Slim\Container:

- -
$c = new \Slim\Container();
-$c['foundHandler'] = function() {
-    return new \Slim\Handlers\Strategies\RequestResponseArgs();
-};
-
-$app = new \Slim\App($c);
-$app->get('/hello/{name}', function ($request, $response, $name) {
-    return $response->write($name);
-});
- -

You can provide your own route strategy by implementing the \Slim\Interfaces\InvocationStrategyInterface.

- -

Route placeholders

- -

Each routing method described above accepts a URL pattern that is matched against the current HTTP request URI. Route patterns may use named placeholders to dynamically match HTTP request URI segments.

- -

Format

- -

A route pattern placeholder starts with a {, followed by the placeholder name, ending with a }. This is an example placeholder named name:

- -
$app = new \Slim\App();
-$app->get('/hello/{name}', function ($request, $response, $args) {
-    echo "Hello, " . $args['name'];
-});
- -

Optional segments

- -

To make a section optional, simply wrap in square brackets:

- -
$app->get('/users[/{id}]', function ($request, $response, $args) {
-    // reponds to both `/users` and `/users/123`
-    // but not to `/users/`
-});
- -

Multiple optional parameters are supported by nesting:

- -
$app->get('/news[/{year}[/{month}]]', function ($request, $response, $args) {
-    // reponds to `/news`, `/news/2016` and `/news/2016/03`
-});
- -

For “Unlimited” optional parameters, you can do this:

- -
$app->get('/news[/{params:.*}]', function ($request, $response, $args) {
-    $params = explode('/', $request->getAttribute('params'));
-
-    // $params is an array of all the optional segments
-});
- -

In this example, a URI of /news/2016/03/20 would result in the $params array -containing three elements: ['2016', '03', '20'].

- -

Regular expression matching

- -

By default the placeholders are written inside {} and can accept any -values. However, placeholders can also require the HTTP request URI to match a particular regular expression. If the current HTTP request URI does not match a placeholder regular expression, the route is not invoked. This is an example placeholder named id that requires one or more digits.

- -
$app = new \Slim\App();
-$app->get('/users/{id:[0-9]+}', function ($request, $response, $args) {
-    // Find user identified by $args['id']
-});
- -

Route names

- -

Application routes can be assigned a name. This is useful if you want to programmatically generate a URL to a specific route with the router’s pathFor() method. Each routing method described above returns a \Slim\Route object, and this object exposes a setName() method.

- -
$app = new \Slim\App();
-$app->get('/hello/{name}', function ($request, $response, $args) {
-    echo "Hello, " . $args['name'];
-})->setName('hello');
- -

You can generate a URL for this named route with the application router’s pathFor() method.

- -
echo $app->getContainer()->get('router')->pathFor('hello', [
-    'name' => 'Josh'
-]);
-// Outputs "/hello/Josh"
- -

The router’s pathFor() method accepts two arguments:

- -
    -
  1. The route name
  2. -
  3. Associative array of route pattern placeholders and replacement values
  4. -
- -

Route groups

- -

To help organize routes into logical groups, the \Slim\App also provides a group() method. Each group’s route pattern is prepended to the routes or groups contained within it, and any placeholder arguments in the group pattern are ultimately made available to the nested routes:

- -
$app = new \Slim\App();
-$app->group('/users/{id:[0-9]+}', function () {
-    $this->map(['GET', 'DELETE', 'PATCH', 'PUT'], '', function ($request, $response, $args) {
-        // Find, delete, patch or replace user identified by $args['id']
-    })->setName('user');
-    $this->get('/reset-password', function ($request, $response, $args) {
-        // Route for /users/{id:[0-9]+}/reset-password
-        // Reset the password for user identified by $args['id']
-    })->setName('user-password-reset');
-});
- -

Note inside the group closure, $this is used instead of $app. Slim binds the closure to the application instance for you, just like it is the case with route callback binds with container instance.

- -
    -
  • inside group closure, $this is bound to the instance of Slim\App
  • -
  • inside route closure, $this is bound to the instance of Slim\Container
  • -
- -

Route middleware

- -

You can also attach middleware to any route or route group. Learn more.

- -

Router caching

- -

It’s possible to enable router cache by setting valid filename in default Slim settings. Learn more.

- -

Container Resolution

- -

You are not limited to defining a function for your routes. In Slim there are a few different ways to define your route action functions.

- -

In addition to a function, you may use: - - An invokable class - - Class:method

- -

This function is enabled by Slim’s Callable Resolver Class. It translates a string entry into a function call. -Example:

- -
$app->get('/home', '\HomeController:home');
- -

In this code above we are defining a /home route and telling Slim to execute the home() method on the \HomeController class.

- -

Slim first looks for an entry of \HomeController in the container, if it’s found it will use that instance otherwise it will call it’s constructor with the container as the first argument. Once an instance of the class is created it will then call the specified method using whatever Strategy you have defined.

- -

Alternatively, you can use an invokable class, such as:

- -
class MyAction {
-   protected $ci;
-   //Constructor
-   public function __construct(ContainerInterface $ci) {
-       $this->ci = $ci;
-   }
-   
-   public function __invoke($request, $response, $args) {
-        //your code
-        //to access items in the container... $this->ci->get('');
-   }
-}
- -

You can use this class like so.

- -
$app->get('/home', '\MyAction');
- -

In a more traditional MVC approach you can construct controllers with many actions instead of an invokable class which only handles one action.

- -
class MyController {
-   protected $ci;
-   //Constructor
-   public function __construct(ContainerInterface $ci) {
-       $this->ci = $ci;
-   }
-   
-   public function method1($request, $response, $args) {
-        //your code
-        //to access items in the container... $this->ci->get('');
-   }
-   
-   public function method2($request, $response, $args) {
-        //your code
-        //to access items in the container... $this->ci->get('');
-   }
-      
-   public function method3($request, $response, $args) {
-        //your code
-        //to access items in the container... $this->ci->get('');
-   }
-}
- -

You can use your controller methods like so.

- -
$app->get('/method1', '\MyController:method1');
-$app->get('/method2', '\MyController:method2');
-$app->get('/method3', '\MyController:method3');
- - - - -
-
- - -
-
- - - - - - - - - - - - \ No newline at end of file diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/start/upgrade.html b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/start/upgrade.html deleted file mode 100644 index 3016544..0000000 --- a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/start/upgrade.html +++ /dev/null @@ -1,718 +0,0 @@ - - - - - - - Upgrade Guide - Slim Framework - - - - - - - - - - - - - - - - - - -
-
- - -
- - -
-

Upgrade Guide

- -

If you are upgrading from version 2 to version 3, these are the significant changes that -you need to be aware of.

- -

New PHP version

-

Slim 3 requires PHP 5.5+

- -

New Route Function Signature

- -
$app->get('/', function (Request $req,  Response $res, $args = []) {
-    return $res->withStatus(400)->write('Bad Request');
-});
- -

Getting _GET and _POST variables

- -
$app->get('/', function (Request $req,  Response $res, $args = []) {
-    $myvar1 = $req->getParam('myvar'); //checks both _GET and _POST [NOT PSR-7 Compliant]
-    $myvar2 = $req->getParsedBody()['myvar']; //checks _POST  [IS PSR-7 compliant]
-    $myvar3 = $req->getQueryParams()['myvar']; //checks _GET [IS PSR-7 compliant]
-});
- -

Hooks

-

Hooks are no longer part of Slim as of v3. You should consider reimplementing any functionality associated with the default hooks in Slim v2 as middleware instead. If you need the ability to apply custom hooks at arbitrary points in your code (for example, within a route), you should consider a third-party package such as Symfony’s EventDispatcher or Zend Framework’s EventManager.

- -

Removal HTTP Cache

-

In Slim v3 we have removed the HTTP-Caching into its own module Slim\Http\Cache.

- -

Removal of Stop/Halt

-

Slim Core has removed Stop/Halt. -In your applications, you should transition to using the withStatus() and withBody() methods.

- -

Changed Redirect

-

In Slim v2.x one would use the helper function $app->redirect(); to trigger a redirect request. -In Slim v3.x one can do the same with using the Response class like so.

- -

Example:

- -
$app->get('/', function ($req, $res, $args) {
-  return $res->withStatus(302)->withHeader('Location', 'your-new-uri');
-});
- -

Middleware Signature

-

The middleware signature has changed from a class to a function.

- -

New signature:

- -
use Psr\Http\Message\RequestInterface as Request;
-use Psr\Http\Message\ResponseInterface as Response;
-
-$app->add(function (Request $req,  Response $res, callable $next) {
-    // Do stuff before passing along
-    $newResponse = $next($req, $res);
-    // Do stuff after route is rendered
-    return $newResponse; // continue
-});
- -

You can still use a class:

- -
namespace My;
-
-use Psr\Http\Message\RequestInterface as Request;
-use Psr\Http\Message\ResponseInterface as Response;
-
-class Middleware
-{
-    function __invoke(Request $req,  Response $res, callable $next) {
-        // Do stuff before passing along
-        $newResponse = $next($req, $res);
-        // Do stuff after route is rendered
-        return $newResponse; // continue
-    }
-}
-
-
-// Register
-$app->add(new My\Middleware());
-// or
-$app->add(My\Middleware::class);
- -

Middleware Execution

-

Application middleware is executed as Last In First Executed (LIFE).

- -

Flash Messages

-

Flash messages are no longer a part of the Slim v3 core but instead have been moved to seperate Slim Flash package.

- -

Cookies

-

In v3.0 cookies has been removed from core. See FIG Cookies for a PSR-7 compatible cookie component.

- -

Removal of Crypto

-

In v3.0 we have removed the dependency for crypto in core.

- -

New Router

-

Slim now utilizes FastRoute, a new, more powerful router!

- -

This means that the specification of route patterns has changed with named parameters now in braces and square brackets used for optional segments:

- -
// named parameter:
-$app->get('/hello/{name}', /*...*/);
-
-// optional segment:
-$app->get('/news[/{year}]', /*...*/);
- -

Route Middleware

-

The syntax for adding route middleware has changed slightly. -In v3.0:

- -
$app->get(…)->add($mw2)->add($mw1);
- -

Getting the current route

-

The route is an attribute of the Request object in v3.0:

- -
$request->getAttribute('route');
- -

When getting the current route in middleware, the value for -determineRouteBeforeAppMiddleware must be set to true in the Application -configuration, otherwise the getAttribute call returns null.

- -

urlFor() is now pathFor() in the router

- -

urlFor() has been renamed pathFor() and can be found in the router object:

- -
$app->get('/', function ($request, $response, $args) {
-    $url = $this->router->pathFor('home');
-    $response->write("<a href='$url'>Home</a>");
-    return $response;
-})->setName('home');
- -

Also, pathFor() is base path aware.

- -

Container and DI … Constructing

-

Slim uses Pimple as a Dependency Injection Container.

- -
// index.php
-$app = new Slim\App(
-    new \Slim\Container(
-        include '../config/container.config.php'
-    )
-);
-
-// Slim will grab the Home class from the container defined below and execute its index method.
-// If the class is not defined in the container Slim will still contruct it and pass the container as the first arugment to the constructor!
-$app->get('/', Home::class . ':index');
-
-
-// In container.config.php
-// We are using the SlimTwig here
-return [
-    'settings' => [
-        'viewTemplatesDirectory' => '../templates',
-    ],
-    'twig' => [
-        'title' => '',
-        'description' => '',
-        'author' => ''
-    ],
-    'view' => function ($c) {
-        $view = new Twig(
-            $c['settings']['viewTemplatesDirectory'],
-            [
-                'cache' => false // '../cache'
-            ]
-        );
-
-        // Instantiate and add Slim specific extension
-        $view->addExtension(
-            new TwigExtension(
-                $c['router'],
-                $c['request']->getUri()
-            )
-        );
-
-        foreach ($c['twig'] as $name => $value) {
-            $view->getEnvironment()->addGlobal($name, $value);
-        }
-
-        return $view;
-    },
-    Home::class => function ($c) {
-        return new Home($c['view']);
-    }
-];
- -

PSR-7 Objects

- -

Request, Response, Uri & UploadFile are immutable.

-

This means that when you change one of these objects, the old instance is not updated.

- -
// This is WRONG. The change will not pass through.
-$app->add(function (Request $request, Response $response, $next) {
-    $request->withAttribute('abc', 'def');
-    return $next($request, $response);
-});
-
-// This is correct.
-$app->add(function (Request $request, Response $response, $next) {
-    $request = $request->withAttribute('abc', 'def');
-    return $next($request, $response);
-});
- -

Message bodies are streams

- -
// ...
-$image = __DIR__ . '/huge_photo.jpg';
-$body = new Stream($image);
-$response = (new Response())
-     ->withStatus(200, 'OK')
-     ->withHeader('Content-Type', 'image/jpeg')
-     ->withHeader('Content-Length', filesize($image))
-     ->withBody($body);
-// ...
- -

For text:

- -
// ...
-$response = (new Response())->getBody()->write('Hello world!')
-
-// Or Slim specific: Not PSR-7 compliant.
-$response = (new Response())->write('Hello world!');
-// ...
- - - - -
-
- - -
-
- - - - - - - - - - - - \ No newline at end of file diff --git a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/concepts/di.html b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/v3/concepts/di.html similarity index 70% rename from Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/concepts/di.html rename to Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/v3/concepts/di.html index 5169ba6..4e20bea 100644 --- a/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/concepts/di.html +++ b/Slim_Framework.docset/Contents/Resources/Documents/www.slimframework.com/docs/v3/concepts/di.html @@ -1,5 +1,5 @@ - + @@ -13,9 +13,9 @@ - - - + + + @@ -33,10 +33,11 @@

Dependency Container

Slim uses a dependency container to prepare, manage, and inject application -dependencies. Slim supports containers that implement the Container-Interop interface. You can use Slim’s built-in container (based on Pimple) +dependencies. Slim supports containers that implement PSR-11 or the Container-Interop interface. You can use Slim’s built-in container (based on Pimple) or third-party containers like Acclimate or PHP-DI.

@@ -45,14 +46,24 @@

$container = new \Slim\Container;
-$app = new \Slim\App($container);
+
$container = new \Slim\Container;
+$app = new \Slim\App($container);
+
+ +

Add a service to Slim container:

+ +
$container = $app->getContainer();
+$container['myService'] = function ($container) {
+    $myService = new MyService();
+    return $myService;
+};
+

You can fetch services from your container explicitly or implicitly. You can fetch an explicit reference to the container instance from inside a Slim application route like this:

-
/**
+
+ return $res; +}); +

You can implicitly fetch services from the container like this:

-
/**
+
+ return $res; +}); +

To test if a service exists in the container before using it, use the has() method, like this:

-
/**
+
+ return $res; +}); +

Slim uses __get() and __isset() magic methods that defer to the application’s container for all properties that do not already exist on the application instance.

@@ -125,7 +139,7 @@

\Slim\Interfaces\Http\EnvironmentInterface. +
Instance of \Slim\Http\Environment.
request
Instance of \Psr\Http\Message\ServerRequestInterface.
response
@@ -239,6 +253,19 @@

Rob Allen, and the Slim Framework Team

-
- - - - -
+ Donate with PayPal @@ -634,6 +721,8 @@

+ @@ -13,9 +13,9 @@ - - - + + + @@ -33,7 +33,8 @@

Middleware

You can run code before and after your Slim application to manipulate the Request and Response objects as you see fit. This is called middleware. @@ -87,7 +88,7 @@

<?php
+

Invokable class middleware example

This example middleware is an invokable class that implements the magic __invoke() method.

-
<?php
+
<?php
 class ExampleMiddleware
 {
     /**
@@ -129,11 +131,13 @@ 

return $response; } -}

+} +

To use this class as a middleware, you can use ->add( new ExampleMiddleware() ); function chain after the $app, Route, or group(), which in the code below, any one of these, could represent $subject.

-
$subject->add( new ExampleMiddleware() );
+
$subject->add( new ExampleMiddleware() );
+

How do I add middleware?

@@ -143,7 +147,7 @@

add() method. This example adds the Closure middleware example above:

-
<?php
+
+$app->run(); +

This would output this HTTP response body:

-
BEFORE Hello AFTER
-
-
+
BEFORE Hello AFTER
+

Route middleware

Route middleware is invoked only if its route matches the current HTTP request method and URI. Route middleware is specified immediately after you invoke any of the Slim application’s routing methods (e.g., get() or post()). Each routing method returns an instance of \Slim\Route, and this class provides the same middleware interface as the Slim application instance. Add middleware to a Route with the Route instance’s add() method. This example adds the Closure middleware example above:

-
<?php
+
<?php
 $app = new \Slim\App();
 
 $mw = function ($request, $response, $next) {
@@ -189,21 +193,20 @@ 

return $response; })->add($mw); -$app->run();

+$app->run(); +

This would output this HTTP response body:

-
BEFORE Hello AFTER
-
-
+
BEFORE Hello AFTER
+

Group Middleware

In addition to the overall application, and standard routes being able to accept middleware, the group() multi-route definition functionality, also allows individual routes internally. Route group middleware is invoked only if its route matches one of the defined HTTP request methods and URIs from the group. To add middleware within the callback, and entire-group middleware to be set by chaining add() after the group() method.

Sample Application, making use of callback middleware on a group of url-handlers

- -
<?php
+
<?php
 
 require_once __DIR__.'/vendor/autoload.php';
 
@@ -226,25 +229,23 @@ 

$response->getBody()->write('. Enjoy!'); return $response; -});

+}); +

When calling the /utils/date method, this would output a string similar to the below

-
It is now 2015-07-06 03:11:01. Enjoy!
-
-
+
It is now 2015-07-06 03:11:01. Enjoy!
+

visiting /utils/time would output a string similar to the below

-
It is now 1436148762. Enjoy!
-
-
+
It is now 1436148762. Enjoy!
+

but visiting / (domain-root), would be expected to generate the following output as no middleware has been assigned

-
Hello World
-
-
+
Hello World
+

Passing variables from middleware

The easiest way to pass attributes from middleware is to use the request’s @@ -252,12 +253,23 @@

$request = $request->withAttribute('foo', 'bar');
+
$request = $request->withAttribute('foo', 'bar');
+

Getting the variable in the route callback:

-
$foo = $request->getAttribute('foo');
+
$foo = $request->getAttribute('foo');
+
+ +

Finding available middleware

+

You may find a PSR 7 Middleware class already written that will satisfy your needs. Here are a few unofficial lists to search.

+ +