├── .gitattributes ├── .gitignore ├── .here ├── CNAME ├── README.md ├── css ├── fonts │ ├── L-Consolas-Bold.ttf │ ├── L-Consolas-BoldItalic.ttf │ ├── L-Consolas-Italic.ttf │ └── L-Consolas.ttf └── slides.css ├── img ├── como.png ├── fff.png ├── logo.png ├── mu_dsa_rev.png └── mu_jschool.png ├── index.Rmd ├── index.html ├── index_files ├── font-awesome │ ├── css │ │ ├── all.css │ │ └── v4-shims.css │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 └── remark-css │ └── robot.css ├── rtweet-workshop.Rproj └── script.Rmd /.gitattributes: -------------------------------------------------------------------------------- 1 | *.* linguist-language=R 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rhistory 2 | .RData 3 | .Rproj.user 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.here: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/.here -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | rtweet-workshop.mikewk.com 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rtweet-workshop 2 | [Slides](https://rtweet-workshop.mikewk.com) and [code](https://github.com/mkearney/rtweet-workshop/script.Rmd) for my [rtweet](https://rtweet.info) workshop. 3 | -------------------------------------------------------------------------------- /css/fonts/L-Consolas-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-Bold.ttf -------------------------------------------------------------------------------- /css/fonts/L-Consolas-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-BoldItalic.ttf -------------------------------------------------------------------------------- /css/fonts/L-Consolas-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-Italic.ttf -------------------------------------------------------------------------------- /css/fonts/L-Consolas.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas.ttf -------------------------------------------------------------------------------- /css/slides.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i'); 2 | 3 | @font-face{ 4 | font-family: 'L-Consolas'; 5 | src: url('fonts/L-Consolas.ttf') format('truetype'); 6 | font-weight: 400; 7 | font-style: normal; 8 | } 9 | 10 | 11 | @font-face{ 12 | font-family: 'L-Consolas'; 13 | src: url('fonts/L-Consolas-Bold.ttf') format('truetype'); 14 | font-weight: 700; 15 | font-style: normal; 16 | } 17 | 18 | @font-face{ 19 | font-family: 'L-Consolas'; 20 | src: url('fonts/L-Consolas-Italic.ttf') format('truetype'); 21 | font-weight: 400; 22 | font-style: italic; 23 | } 24 | 25 | @font-face{ 26 | font-family: 'L-Consolas'; 27 | src: url('fonts/L-Consolas-BoldItalic.ttf') format('truetype'); 28 | font-weight: 700; 29 | font-style: italic; 30 | } 31 | 32 | .remark-slide-content { 33 | font-size: 1.38em; 34 | padding: .25em 3.5em .25em 4em; 35 | } 36 | 37 | h1, h2, h3 { 38 | font-family: Roboto, 'Helvetica Neue', 'Helvetica', sans-serif; 39 | font-weight: 700; 40 | color: #222; 41 | } 42 | .remark-code, .remark-inline-code { 43 | font-family: 'L-Consolas', 'Consolas', Monaco, monospace; 44 | } 45 | 46 | body { 47 | font-size: 22px; 48 | font-family: Roboto, 'Helvetica Neue', Helvetica, sans-serif; 49 | } 50 | .title-slide h3, .remark-slide .title-slide h3, h1, h2, h3 { 51 | font-family: Roboto, Helvetica, sans-serif; 52 | } 53 | .title-slide { 54 | background-image: url("../img/mu_jschool.png"), 55 | url("../img/mu_dsa_rev.png"); 56 | background-size: 300px auto, 300px auto; 57 | background-position: 0 100%, 100% 100%; 58 | } 59 | 60 | .remark-slide-content { 61 | background-image: url("../img/mu_jschool.png"), 62 | url("../img/mu_dsa_rev.png"); 63 | background-size: 250px auto, 250px auto; 64 | background-position: 0% 100%, 100% 100%; 65 | } 66 | .inverse { 67 | background-image: none !important; 68 | } 69 | 70 | .remark-slide-number { 71 | top: 12px; 72 | bottom: unset; 73 | } 74 | .title-slide .remark-slide-number { 75 | display: none; 76 | } 77 | ul li, ol li { 78 | margin-top: .6em; 79 | margin-bottom: .6em; 80 | } 81 | /*.mjx-chtml { 82 | font-size: 120% !important; 83 | }*/ 84 | table { 85 | margin: auto; 86 | border-top: 2px solid #000; 87 | border-bottom: 2px solid #000; 88 | border-spacing: 0; 89 | min-width: 30%; 90 | font-size: 75%; 91 | } 92 | table thead th { 93 | border-bottom: 1px solid #333; 94 | border-collapse: collapse; 95 | } 96 | th, td { padding: 4px 12px; } 97 | td { vertical-align: middle; } 98 | tr:nth-child(even) { background: #f3f3f3 } 99 | .remark-code, .remark-inline-code { 100 | font-family: "L-Consolas", 'Courier New', monospace; 101 | } 102 | pre code { 103 | font-size: 84% !important; 104 | } 105 | 106 | .hljs { 107 | box-shadow: 2px 2px 2px rgba(0,0,0,.2); 108 | background-color: #f3f3f3 !important; 109 | border-color: rgba(0,0,0,.05); 110 | border-style: solid; 111 | border-width: 1px; 112 | border-radius: 2px; 113 | } 114 | .wide pre { 115 | width: 110% !important; 116 | margin-left: -6.25% !important; 117 | } 118 | .tight ul li, .tight ol li { 119 | margin-top: .6em; 120 | margin-bottom: .6em; 121 | line-height: 0 !important; 122 | } 123 | .tight p { 124 | margin-top: -.2em; 125 | } 126 | blockquote { 127 | border-top: solid 1px rgba(0,0,0,.1); 128 | border-left: none; 129 | color: #333333bb; 130 | padding: unset; 131 | margin-left: 2em; 132 | } 133 | .hljs { 134 | color: #222 !important; 135 | } 136 | .hljs-comment, .hljs-quote { 137 | font-style: normal !important; 138 | } 139 | li code.remark-inline-code , p code.remark-inline-code { 140 | background-color: #f5f5f5; 141 | font-size: 102%; 142 | } 143 | -------------------------------------------------------------------------------- /img/como.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/como.png -------------------------------------------------------------------------------- /img/fff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/fff.png -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/logo.png -------------------------------------------------------------------------------- /img/mu_dsa_rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/mu_dsa_rev.png -------------------------------------------------------------------------------- /img/mu_jschool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/mu_jschool.png -------------------------------------------------------------------------------- /index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "rtweet-workshop" 3 | subtitle: "Collecting and analyzing Twitter data" 4 | author: '`r rmdees::title_author()`' 5 | date: '`r rmdees::title_icons_fa5(twitter = "kearneymw", github = "mkearney")`' 6 | output: 7 | xaringan::moon_reader: 8 | css: ["robot", "css/slides.css"] 9 | self_contained: no 10 | nature: 11 | highlightStyle: github 12 | highlightLines: true 13 | countIncrementalSlides: false 14 | ratio: '16:9' 15 | --- 16 | 17 | ```{r setup, include=FALSE} 18 | knitr::opts_chunk$set( 19 | echo = TRUE, 20 | eval = FALSE, 21 | collapse = TRUE, 22 | comment = "#>" 23 | ) 24 | options(htmltools.dir.version = FALSE) 25 | htmltools::tagList(rmarkdown::html_dependency_font_awesome()) 26 | 27 | ## load libraries, set ggplot2 theme, and create datatable function 28 | library(mwk) 29 | theme_set(dataviz::theme_mwk(base_size = 14)) 30 | set.seed(20180911) 31 | print <- function(x, n = NULL, align = "c", digits = 3) { 32 | if (is.null(n)) n <- nrow(x) 33 | if (nrow(x) < n) n <- nrow(x) 34 | cat(paste(knitr::kable(x[seq_len(n), ], format = "markdown", 35 | align = align, digits = digits), collapse = "\n")) 36 | } 37 | ``` 38 | 39 | background-image: url(img/logo.png) 40 | background-size: 350px auto 41 | background-position: 50% 20% 42 | class: center, bottom 43 | 44 | View these slides at [rtweet-workshop.mikewk.com](https://rtweet-workshop.mikewk.com) 45 | 46 | View companion script at [rtweet-workshop.mikewk.com/script.Rmd](https://rtweet-workshop.mikewk.com/script.Rmd) 47 | 48 | View the Github repo at [github.com/mkearney/rtweet-workshop](https://github.com/mkearney/rtweet-workshop) 49 | 50 | --- 51 | class: tight 52 | 53 | ## About {rtweet} 54 | 55 | - On Comprehensive R Archive Network (CRAN) 56 | 57 | [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)[![CRAN status](https://www.r-pkg.org/badges/version/rtweet)](https://cran.r-project.org/package=rtweet) 58 | 59 | - Growing base of users 60 | 61 | ![Downloads](https://cranlogs.r-pkg.org/badges/grand-total/rtweet)[![Depsy](http://depsy.org/api/package/cran/rtweet/badge.svg)](http://depsy.org/package/r/rtweet) 62 | 63 | - Fairly stable 64 | 65 | [![Build Status](https://travis-ci.org/mkearney/rtweet.svg?branch=master)](https://travis-ci.org/mkearney/rtweet)[![Coverage Status](https://codecov.io/gh/mkearney/rtweet/branch/master/graph/badge.svg)](https://codecov.io/gh/mkearney/rtweet?branch=master)[![lifecycle](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://www.tidyverse.org/lifecycle/#maturing) 66 | 67 | - Package website: [rtweet.info](http://rtweet.info) 68 | 69 | [![Generic badge](https://img.shields.io/badge/website-up-green.svg)](http://rtweet.info/) 70 | 71 | - Github repo: [mkearney/rtweet](https://github.com/mkearney/rtweet) 72 | 73 | [![Generic badge](https://img.shields.io/badge/stars-352-blue.svg)](https://github.com/mkearney/rtweet/)[![Generic badge](https://img.shields.io/badge/forks-81-blue.svg)](https://github.com/mkearney/rtweet/) 74 | 75 | --- 76 | 77 | ## Roadmap 78 | 1. Search tweets 79 | 1. Timelines 80 | 1. Favorites 81 | 1. Lookup tweets 82 | 1. Friends/followers 83 | 1. Lookup users 84 | 1. Lists 85 | 1. Stream 86 | 87 | --- 88 | 89 | ## Install 90 | 91 | - Install **{rtweet}** from [CRAN](https://cran.r-project/package=rtweet). 92 | 93 | ```{r} 94 | install.packages("rtweet") 95 | ``` 96 | 97 | - Or install the **development version** from [Github](https://github.com/mkearney/rtweet). 98 | 99 | ```{r} 100 | #devtools::install_github("mkearney/rtweet") 101 | ``` 102 | 103 | - Load **{rtweet}** 104 | 105 | ```{r tidy=FALSE} 106 | library(rtweet) 107 | ``` 108 | 109 | 110 | --- 111 | 112 | ## httpuv 113 | 114 | To authorize rtweet's embedded **rstats2twitter** app via web browser, the **{httpuv}** pakage is required 115 | 116 | ```{r} 117 | ## install httpuv for browser-based authentication 118 | install.packages("httpuv") 119 | ``` 120 | 121 | 122 | --- 123 | class: inverse, center, middle 124 | 125 | # Accessing web APIs 126 | 127 | --- 128 | 129 | ## Some background 130 | 131 | **Application Program Interfaces** (APIs) are sets of protocols that govern interactions between sites and users. 132 | 133 | + APIs are similar to web browsers but with different purpose: 134 | - Web browsers render **visual content** 135 | - Web APIs manage and organize **data** 136 | + For public APIs, many sites only allow **authorized** users 137 | - Twitter, Facebook, Instagram, Github, etc. 138 | 139 | --- 140 | 141 | ## developer.twitter.com 142 | 143 | To create your own token (with write and DM-read access), users must... 144 | 145 | 1. Apply and get approved for a developer account with Twitter 146 | 1. Create a Twitter app (fill out a form) 147 | - For step-by-step instructions on how to create a Twitter app and corresponding token, see 148 | [rtweet.info/articles/auth.html](https://rtweet.info/articles/auth.html) 149 | 150 | --- 151 | class: inverse, center, middle 152 | 153 | # Twitter Data! 154 | 155 | --- 156 | class: inverse, center, middle 157 | 158 | # 1.
Searching for tweets 159 | 160 | --- 161 | 162 | ## `search_tweets()` 163 | 164 | Search for one or more keyword(s) 165 | 166 | ```{r} 167 | rds <- search_tweets("rstats data science") 168 | rds 169 | ``` 170 | 171 |
172 | 173 | > *Note*: implicit `AND` between words 174 | 175 | --- 176 | 177 | ## `search_tweets()` 178 | 179 | Search for exact phrase 180 | 181 | ```{r} 182 | ## single quotes around doubles 183 | ds <- search_tweets('"data science"') 184 | 185 | ## or escape the quotes 186 | ds <- search_tweets("\"data science\"") 187 | ds 188 | ``` 189 | 190 | --- 191 | 192 | ## `search_tweets()` 193 | 194 | Search for keyword(s) **and** phrase 195 | 196 | ```{r} 197 | rpds <- search_tweets("rstats python \"data science\"") 198 | rpds 199 | ``` 200 | 201 | --- 202 | 203 | ## `search_tweets()` 204 | 205 | + `search_tweets()` returns 100 most recent matching tweets by default 206 | 207 | + Increase `n` to return more (tip: use intervals of 100) 208 | 209 | ```{r} 210 | rstats <- search_tweets("rstats", n = 10000) 211 | rstats 212 | ``` 213 | 214 |
215 | 216 | > Rate limit of 18,000 per fifteen minutes 217 | 218 | --- 219 | 220 | ## `search_tweets()` 221 | 222 | **PRO TIP #1**: Get the firehose for free by searching for tweets by 223 | verified **or** non-verified tweets 224 | 225 | ```{r} 226 | fff <- search_tweets( 227 | "filter:verified OR -filter:verified", n = 18000) 228 | fff 229 | ``` 230 | 231 | Visualize second-by-second frequency 232 | 233 | ```{r} 234 | ts_plot(fff, "secs") 235 | ``` 236 | 237 | 238 | --- 239 | 240 |

241 | 242 | --- 243 | 244 | ## `search_tweets()` 245 | 246 | **PRO TIP #2**: Use search operators provided by Twitter, e.g., 247 | 248 | + filter by language and exclude retweets and replies 249 | 250 | ```{r} 251 | rt <- search_tweets("rstats", lang = "en", 252 | include_rts = FALSE, `-filter` = "replies") 253 | ``` 254 | 255 | + filter only tweets linking to news articles 256 | 257 | ```{r} 258 | nws <- search_tweets("filter:news") 259 | ``` 260 | 261 | --- 262 | 263 | ## `search_tweets()` 264 | 265 | + filter only tweets that contain links 266 | 267 | ```{r} 268 | links <- search_tweets("filter:links") 269 | links 270 | ``` 271 | 272 | 273 | + filter only tweets that contain video 274 | 275 | ```{r} 276 | vids <- search_tweets("filter:video") 277 | vids 278 | ``` 279 | 280 | --- 281 | 282 | ## `search_tweets()` 283 | 284 | + filter only tweets sent `from:{screen_name}` or `to:{screen_name}` certain users 285 | 286 | ```{r} 287 | ## vector of screen names 288 | users <- c("cnnbrk", "AP", "nytimes", 289 | "foxnews", "msnbc", "seanhannity", "maddow") 290 | paste0("from:", users, collapse = " OR ") 291 | #> "from:cnnbrk OR from:AP OR from:nytimes OR from:foxnews OR 292 | #> from:msnbc OR from:seanhannity OR from:maddow" 293 | 294 | tousers <- search_tweets(paste0("from:", users, collapse = " OR ")) 295 | tousers 296 | ``` 297 | 298 | 299 | --- 300 | 301 | ## `search_tweets()` 302 | 303 | + filter only tweets with at least 100 favorites or 100 retweets 304 | 305 | ```{r} 306 | pop <- search_tweets( 307 | "(filter:verified OR -filter:verified) (min_faves:100 OR min_retweets:100)") 308 | ``` 309 | 310 | + filter by the type of device that posted the tweet. 311 | 312 | ```{r} 313 | rt <- search_tweets("lang:en", source = '"Twitter for iPhone"') 314 | ``` 315 | 316 | 317 | --- 318 | 319 | ## `search_tweets()` 320 | 321 | **PRO TIP #3**: Search by geolocation (ex: tweets within 25 miles of Columbia, MO) 322 | 323 | ```{r} 324 | como <- search_tweets( 325 | geocode = "38.9517,-92.3341,25mi", n = 10000 326 | ) 327 | como 328 | ``` 329 | 330 | 331 | --- 332 | 333 | ## `search_tweets()` 334 | 335 | Use `lat_lng()` to convert geographical data into `lat` and `lng` variables. 336 | 337 | ```{r} 338 | como <- lat_lng(como) 339 | par(mar = c(0, 0, 0, 0)) 340 | maps::map("state", fill = TRUE, col = "#ffffff", 341 | lwd = .25, mar = c(0, 0, 0, 0), 342 | xlim = c(-96, -89), y = c(35, 41)) 343 | with(como, points(lng, lat, pch = 20, col = "red")) 344 | ``` 345 | 346 |
347 | 348 | > This code plots geotagged tweets on a map of Missouri 349 | 350 | --- 351 | 352 |

353 | 354 | --- 355 | 356 | ## `search_tweets()` 357 | 358 | **PRO TIP #4**: (for developer accounts only) Use `bearer_token()` to increase rate limit to 45,000 per 359 | fifteen minutes. 360 | 361 | ```{r} 362 | mosen <- search_tweets( 363 | "mccaskill OR hawley", 364 | n = 45000, 365 | token = bearer_token() 366 | ) 367 | ``` 368 | 369 | 370 | --- 371 | class: inverse, center, middle 372 | 373 | # 2.
User timelines 374 | 375 | --- 376 | 377 | ## `get_timeline()` 378 | 379 | Get the most recent tweets posted by a user. 380 | 381 | ```{r} 382 | cnn <- get_timeline("cnn") 383 | ``` 384 | 385 | --- 386 | 387 | ## `get_timeline()` 388 | 389 | Get up to the most recent 3,200 tweets (endpoint max) posted by multiple users. 390 | 391 | ```{r} 392 | nws <- get_timeline(c("cnn", "foxnews", "msnbc"), n = 3200) 393 | ``` 394 | 395 | --- 396 | 397 | ## `ts_plot()` 398 | 399 | Group by `screen_name` and plot hourly frequencies of tweets. 400 | 401 | ```{r} 402 | nws %>% 403 | dplyr::group_by(screen_name) %>% 404 | ts_plot("hours") 405 | ``` 406 | 407 | 408 | --- 409 | class: inverse, center, middle 410 | 411 | # 3.
User favorites 412 | 413 | --- 414 | 415 | ## `get_favorites()` 416 | 417 | Get up to the most recent 3,000 tweets favorited by a user. 418 | 419 | ```{r} 420 | kmw_favs <- get_favorites("kearneymw", n = 3000) 421 | ``` 422 | 423 | --- 424 | class: inverse, center, middle 425 | 426 | # 4.
Lookup statuses 427 | 428 | --- 429 | 430 | ## `lookup_tweets()` 431 | 432 | ```{r} 433 | ## `lookup_tweets()` 434 | status_ids <- c("947235015343202304", "947592785519173637", 435 | "948359545767841792", "832945737625387008") 436 | twt <- lookup_tweets(status_ids) 437 | ``` 438 | 439 | 440 | --- 441 | class: inverse, center, middle 442 | 443 | # 5.
Getting friends/followers 444 | 445 | --- 446 | 447 | ## Friends/followers 448 | 449 | Twitter's API documentation distinguishes between **friends** and **followers**. 450 | 451 | + **Friend** refers to an account a given user follows 452 | + **Follower** refers to an account following a given user 453 | 454 | --- 455 | 456 | ## `get_friends()` 457 | 458 | Get user IDs of accounts **followed by** (AKA friends) [@jack](https://twitter.com/jack), the co-founder and CEO of Twitter. 459 | 460 | ```{r} 461 | fds <- get_friends("jack") 462 | fds 463 | ``` 464 | 465 | --- 466 | 467 | ## `get_friends()` 468 | 469 | Get friends of **multiple** users in a single call. 470 | 471 | ```{r} 472 | fds <- get_friends( 473 | c("hadleywickham", "NateSilver538", "Nate_Cohn") 474 | ) 475 | fds 476 | ``` 477 | 478 | --- 479 | 480 | ## `get_followers()` 481 | 482 | Get user IDs of accounts **following** (AKA followers) [@mizzou](https://twitter.com/mizzou). 483 | 484 | ```{r} 485 | mu <- get_followers("mizzou") 486 | mu 487 | ``` 488 | 489 | --- 490 | 491 | ## `get_followers()` 492 | 493 | Unlike friends (limited by Twitter to 5,000), there is **no limit** on the number of followers. 494 | 495 | To get user IDs of all 55(ish) million followers of @realDonaldTrump, you need two things: 496 | 497 | 1. A stable **internet** connection 498 | 1. **Time** – approximately five and a half days 499 | 500 | --- 501 | 502 | ## `get_followers()` 503 | 504 | Get all of Donald Trump's followers. 505 | 506 | ```{r} 507 | ## get all of trump's followers 508 | rdt <- get_followers( 509 | "realdonaldtrump", 510 | n = 56000000, 511 | retryonratelimit = TRUE 512 | ) 513 | ``` 514 | 515 | 516 | --- 517 | class: inverse, center, middle 518 | 519 | # 6.
Lookup users 520 | 521 | --- 522 | 523 | ## `lookup_users()` 524 | 525 | Lookup users-level (and most recent tweet) associated with vector of `user_id` or `screen_name`. 526 | 527 | ```{r} 528 | ## vector of users 529 | users <- c("hadleywickham", "NateSilver538", "Nate_Cohn") 530 | 531 | ## lookup users twitter data 532 | usr <- lookup_users(users) 533 | usr 534 | ``` 535 | 536 | 537 | --- 538 | 539 | ## `search_users()` 540 | 541 | It's also possible to search for users. Twitter will look for matches in user names, screen names, and profile bios. 542 | 543 | ```{r} 544 | ## search for breaking news accounts 545 | bkn <- search_users("breaking news") 546 | bkn 547 | ``` 548 | 549 | --- 550 | class: inverse, center, middle 551 | 552 | # 7.
Lists 553 | 554 | --- 555 | 556 | ## `lists_memberships()` 557 | 558 | + Get an account's list memberships (lists that include an account) 559 | 560 | ```{r} 561 | ## lists that include Nate Silver 562 | nsl <- lists_memberships("NateSilver538") 563 | nsl 564 | ``` 565 | 566 | --- 567 | 568 | ## `lists_members()` 569 | 570 | + Get all list members (accounts on a list) 571 | 572 | ```{r} 573 | ## all members of congress 574 | cng <- lists_members(owner_user = "cspan", slug = "members-of-congress") 575 | cng 576 | ``` 577 | 578 | --- 579 | class: inverse, center, middle 580 | 581 | # 8.
Streaming tweets 582 | 583 | --- 584 | 585 | ## `stream_tweets()` 586 | 587 | **Sampling**: small random sample (`~ 1%`) of all publicly available tweets 588 | 589 | ```{r} 590 | ss <- stream_tweets("") 591 | ``` 592 | 593 | **Filtering**: search-like query (up to 400 keywords) 594 | 595 | ```{r} 596 | sf <- stream_tweets("mueller,fbi,investigation,trump,realdonaldtrump") 597 | ``` 598 | 599 | --- 600 | 601 | ## `stream_tweets()` 602 | 603 | **Tracking**: vector of user ids (up to 5000 user_ids) 604 | 605 | ```{r} 606 | ## user IDs from congress members (lists_members ex output) 607 | st <- stream_tweets(cng$user_id) 608 | ``` 609 | 610 | **Location**: geographical coordinates (1-360 degree location boxes) 611 | 612 | ```{r} 613 | ## world-wide bounding box 614 | sl <- stream_tweets(c(-180, -90, 180, 90)) 615 | ``` 616 | 617 | --- 618 | 619 | ## `stream_tweets()` 620 | 621 | The default duration for streams is thirty seconds `timeout = 30` 622 | 623 | + Specify specific stream duration in seconds 624 | 625 | ```{r} 626 | ## stream for 10 minutes 627 | stm <- stream_tweets(timeout = 60 * 10) 628 | ``` 629 | 630 | --- 631 | 632 | ## `stream_tweets()` 633 | 634 | Stream JSON data directly to a text file 635 | 636 | ```{r} 637 | stream_tweets(timeout = 60 * 10, 638 | file_name = "random-stream-2018-11-13.json", 639 | parse = FALSE) 640 | ``` 641 | 642 | Read-in a streamed JSON file 643 | 644 | ```{r} 645 | rj <- parse_stream("random-stream-2018-11-13.json") 646 | ``` 647 | 648 | --- 649 | 650 | ## `stream_tweets()` 651 | 652 | Stream tweets indefinitely. 653 | 654 | ```{r} 655 | stream_tweets(timeout = Inf, 656 | file_name = "random-stream-2018-11-13.json", 657 | parse = FALSE) 658 | ``` 659 | 660 | --- 661 | 662 | ## `lookup_coords()` 663 | 664 | A useful convenience function–though it now requires an API key–for quickly looking up coordinates 665 | 666 | ```{r} 667 | ## stream tweets sent from london 668 | luk1 <- stream_tweets(q = lookup_coords("London, UK"), timeout = 60) 669 | 670 | ## search tweets sent from london 671 | luk2 <- search_tweets( 672 | geocode = lookup_coords("London, UK"), n = 1000) 673 | ``` 674 | 675 | 676 | --- 677 | class: inverse, center, middle 678 | 679 | # Analyzing Twitter data 680 | 681 | --- 682 | 683 | ## Data set 684 | 685 | For these examples, let's gather a data set of iPhone and Android users 686 | 687 | ```{r} 688 | iphone_android <- search_tweets( 689 | paste0('(filter:verified OR -filter:verified) AND \n', 690 | '(source:"Twitter for iPhone" OR source:"Twitter for Android")'), 691 | include_rts = FALSE, 692 | n = 18000 693 | ) 694 | 695 | ## view breakdown of tweet source (device) 696 | table(iphone_android$source) 697 | ``` 698 | 699 | --- 700 | 701 | ## Text processing 702 | 703 | Tokenize tweets [into words] 704 | 705 | ```{r} 706 | ## tokenize each tweet into words vecotr 707 | wds <- tokenizers::tokenize_tweets(iphone_android$text) 708 | 709 | ## collapse back into stirngs 710 | txt <- purrr::map_chr(wds, paste, collapse = " ") 711 | 712 | ## get sentiment using afinn dictionary 713 | iphone_android$sent <- syuzhet::get_sentiment( 714 | iphone_android$text, method = "afinn" 715 | ) 716 | ``` 717 | 718 | --- 719 | 720 | ## Compare groups 721 | 722 | Group by source and summarize some numeric variables 723 | 724 | ```{r} 725 | iphone_android %>% 726 | group_by(source) %>% 727 | summarise(sent = mean(sent, na.rm = TRUE), 728 | avg_rt = mean(retweet_count, na.rm = TRUE), 729 | avg_fav = mean(favorites_count, na.rm = TRUE), 730 | tweets = mean(statuses_count, na.rm = TRUE), 731 | friends = mean(retweet_count, na.rm = TRUE), 732 | followers = mean(retweet_count, na.rm = TRUE), 733 | ff_rat = (friends + 1) / (friends + followers + 1) 734 | ) 735 | ``` 736 | 737 | --- 738 | 739 | ## Features 740 | 741 | Easily automate feature extraction for Twitter data. 742 | 743 | ```{r} 744 | ## install package 745 | remotes::install_github("mkearney/textfeatures") 746 | 747 | ## feature extraction 748 | tf <- textfeatures::textfeatures(iphone_android) 749 | 750 | ## add dependent variable 751 | tf$y <- tweet_source_data$source == "Twitter for iPhone" 752 | ``` 753 | 754 | --- 755 | 756 | ## Machine learning 757 | 758 | Run a boosted model 759 | 760 | ```{r} 761 | ## load gbm and estimate model 762 | library(gbm) 763 | m1 <- gbm(y ~ ., data = tf[1:15000, -1], n.trees = 200) 764 | #summary(m1) 765 | 766 | ## generate predictions 767 | p <- predict(m1, newdata = tf[15001:nrow(tf), -1], 768 | type = "response", n.trees = 200) 769 | 770 | ## how'd we do? 771 | table(p > .50, tf$y[15001:nrow(tf)]) 772 | ``` 773 | 774 | --- 775 | 776 | ## Tweetbotornot 777 | 778 | A package designed to estimate the probability of an account being a bot. 779 | 780 | ```{r} 781 | ## install from Github 782 | remotes::install_github("mkearney/tweetbotornot") 783 | 784 | ## estimate some accounts 785 | bp <- tweetbotornot::tweetbotornot(c( 786 | "kearneymw", 787 | "realdonaldtrump", 788 | "netflix_bot", 789 | "tidyversetweets", 790 | "thebotlebowski") 791 | ) 792 | bp 793 | ``` 794 | 795 | 796 | 797 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | rtweet-workshop 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 847 | 848 | 849 | 894 | 895 | 905 | 906 | 925 | 926 | 936 | 937 | 938 | -------------------------------------------------------------------------------- /index_files/font-awesome/css/all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:a 2s infinite linear}.fa-pulse{animation:a 1s infinite steps(8)}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} -------------------------------------------------------------------------------- /index_files/font-awesome/css/v4-shims.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa.fa-glass:before { 6 | content: "\f000"; } 7 | 8 | .fa.fa-meetup { 9 | font-family: 'Font Awesome 5 Brands'; 10 | font-weight: 400; } 11 | 12 | .fa.fa-star-o { 13 | font-family: 'Font Awesome 5 Free'; 14 | font-weight: 400; } 15 | 16 | .fa.fa-star-o:before { 17 | content: "\f005"; } 18 | 19 | .fa.fa-remove:before { 20 | content: "\f00d"; } 21 | 22 | .fa.fa-close:before { 23 | content: "\f00d"; } 24 | 25 | .fa.fa-gear:before { 26 | content: "\f013"; } 27 | 28 | .fa.fa-trash-o { 29 | font-family: 'Font Awesome 5 Free'; 30 | font-weight: 400; } 31 | 32 | .fa.fa-trash-o:before { 33 | content: "\f2ed"; } 34 | 35 | .fa.fa-file-o { 36 | font-family: 'Font Awesome 5 Free'; 37 | font-weight: 400; } 38 | 39 | .fa.fa-file-o:before { 40 | content: "\f15b"; } 41 | 42 | .fa.fa-clock-o { 43 | font-family: 'Font Awesome 5 Free'; 44 | font-weight: 400; } 45 | 46 | .fa.fa-clock-o:before { 47 | content: "\f017"; } 48 | 49 | .fa.fa-arrow-circle-o-down { 50 | font-family: 'Font Awesome 5 Free'; 51 | font-weight: 400; } 52 | 53 | .fa.fa-arrow-circle-o-down:before { 54 | content: "\f358"; } 55 | 56 | .fa.fa-arrow-circle-o-up { 57 | font-family: 'Font Awesome 5 Free'; 58 | font-weight: 400; } 59 | 60 | .fa.fa-arrow-circle-o-up:before { 61 | content: "\f35b"; } 62 | 63 | .fa.fa-play-circle-o { 64 | font-family: 'Font Awesome 5 Free'; 65 | font-weight: 400; } 66 | 67 | .fa.fa-play-circle-o:before { 68 | content: "\f144"; } 69 | 70 | .fa.fa-repeat:before { 71 | content: "\f01e"; } 72 | 73 | .fa.fa-rotate-right:before { 74 | content: "\f01e"; } 75 | 76 | .fa.fa-refresh:before { 77 | content: "\f021"; } 78 | 79 | .fa.fa-list-alt { 80 | font-family: 'Font Awesome 5 Free'; 81 | font-weight: 400; } 82 | 83 | .fa.fa-dedent:before { 84 | content: "\f03b"; } 85 | 86 | .fa.fa-video-camera:before { 87 | content: "\f03d"; } 88 | 89 | .fa.fa-picture-o { 90 | font-family: 'Font Awesome 5 Free'; 91 | font-weight: 400; } 92 | 93 | .fa.fa-picture-o:before { 94 | content: "\f03e"; } 95 | 96 | .fa.fa-photo { 97 | font-family: 'Font Awesome 5 Free'; 98 | font-weight: 400; } 99 | 100 | .fa.fa-photo:before { 101 | content: "\f03e"; } 102 | 103 | .fa.fa-image { 104 | font-family: 'Font Awesome 5 Free'; 105 | font-weight: 400; } 106 | 107 | .fa.fa-image:before { 108 | content: "\f03e"; } 109 | 110 | .fa.fa-pencil:before { 111 | content: "\f303"; } 112 | 113 | .fa.fa-map-marker:before { 114 | content: "\f3c5"; } 115 | 116 | .fa.fa-pencil-square-o { 117 | font-family: 'Font Awesome 5 Free'; 118 | font-weight: 400; } 119 | 120 | .fa.fa-pencil-square-o:before { 121 | content: "\f044"; } 122 | 123 | .fa.fa-share-square-o { 124 | font-family: 'Font Awesome 5 Free'; 125 | font-weight: 400; } 126 | 127 | .fa.fa-share-square-o:before { 128 | content: "\f14d"; } 129 | 130 | .fa.fa-check-square-o { 131 | font-family: 'Font Awesome 5 Free'; 132 | font-weight: 400; } 133 | 134 | .fa.fa-check-square-o:before { 135 | content: "\f14a"; } 136 | 137 | .fa.fa-arrows:before { 138 | content: "\f0b2"; } 139 | 140 | .fa.fa-times-circle-o { 141 | font-family: 'Font Awesome 5 Free'; 142 | font-weight: 400; } 143 | 144 | .fa.fa-times-circle-o:before { 145 | content: "\f057"; } 146 | 147 | .fa.fa-check-circle-o { 148 | font-family: 'Font Awesome 5 Free'; 149 | font-weight: 400; } 150 | 151 | .fa.fa-check-circle-o:before { 152 | content: "\f058"; } 153 | 154 | .fa.fa-mail-forward:before { 155 | content: "\f064"; } 156 | 157 | .fa.fa-eye { 158 | font-family: 'Font Awesome 5 Free'; 159 | font-weight: 400; } 160 | 161 | .fa.fa-eye-slash { 162 | font-family: 'Font Awesome 5 Free'; 163 | font-weight: 400; } 164 | 165 | .fa.fa-warning:before { 166 | content: "\f071"; } 167 | 168 | .fa.fa-calendar:before { 169 | content: "\f073"; } 170 | 171 | .fa.fa-arrows-v:before { 172 | content: "\f338"; } 173 | 174 | .fa.fa-arrows-h:before { 175 | content: "\f337"; } 176 | 177 | .fa.fa-bar-chart { 178 | font-family: 'Font Awesome 5 Free'; 179 | font-weight: 400; } 180 | 181 | .fa.fa-bar-chart:before { 182 | content: "\f080"; } 183 | 184 | .fa.fa-bar-chart-o { 185 | font-family: 'Font Awesome 5 Free'; 186 | font-weight: 400; } 187 | 188 | .fa.fa-bar-chart-o:before { 189 | content: "\f080"; } 190 | 191 | .fa.fa-twitter-square { 192 | font-family: 'Font Awesome 5 Brands'; 193 | font-weight: 400; } 194 | 195 | .fa.fa-facebook-square { 196 | font-family: 'Font Awesome 5 Brands'; 197 | font-weight: 400; } 198 | 199 | .fa.fa-gears:before { 200 | content: "\f085"; } 201 | 202 | .fa.fa-thumbs-o-up { 203 | font-family: 'Font Awesome 5 Free'; 204 | font-weight: 400; } 205 | 206 | .fa.fa-thumbs-o-up:before { 207 | content: "\f164"; } 208 | 209 | .fa.fa-thumbs-o-down { 210 | font-family: 'Font Awesome 5 Free'; 211 | font-weight: 400; } 212 | 213 | .fa.fa-thumbs-o-down:before { 214 | content: "\f165"; } 215 | 216 | .fa.fa-heart-o { 217 | font-family: 'Font Awesome 5 Free'; 218 | font-weight: 400; } 219 | 220 | .fa.fa-heart-o:before { 221 | content: "\f004"; } 222 | 223 | .fa.fa-sign-out:before { 224 | content: "\f2f5"; } 225 | 226 | .fa.fa-linkedin-square { 227 | font-family: 'Font Awesome 5 Brands'; 228 | font-weight: 400; } 229 | 230 | .fa.fa-linkedin-square:before { 231 | content: "\f08c"; } 232 | 233 | .fa.fa-thumb-tack:before { 234 | content: "\f08d"; } 235 | 236 | .fa.fa-external-link:before { 237 | content: "\f35d"; } 238 | 239 | .fa.fa-sign-in:before { 240 | content: "\f2f6"; } 241 | 242 | .fa.fa-github-square { 243 | font-family: 'Font Awesome 5 Brands'; 244 | font-weight: 400; } 245 | 246 | .fa.fa-lemon-o { 247 | font-family: 'Font Awesome 5 Free'; 248 | font-weight: 400; } 249 | 250 | .fa.fa-lemon-o:before { 251 | content: "\f094"; } 252 | 253 | .fa.fa-square-o { 254 | font-family: 'Font Awesome 5 Free'; 255 | font-weight: 400; } 256 | 257 | .fa.fa-square-o:before { 258 | content: "\f0c8"; } 259 | 260 | .fa.fa-bookmark-o { 261 | font-family: 'Font Awesome 5 Free'; 262 | font-weight: 400; } 263 | 264 | .fa.fa-bookmark-o:before { 265 | content: "\f02e"; } 266 | 267 | .fa.fa-twitter { 268 | font-family: 'Font Awesome 5 Brands'; 269 | font-weight: 400; } 270 | 271 | .fa.fa-facebook { 272 | font-family: 'Font Awesome 5 Brands'; 273 | font-weight: 400; } 274 | 275 | .fa.fa-facebook:before { 276 | content: "\f39e"; } 277 | 278 | .fa.fa-facebook-f { 279 | font-family: 'Font Awesome 5 Brands'; 280 | font-weight: 400; } 281 | 282 | .fa.fa-facebook-f:before { 283 | content: "\f39e"; } 284 | 285 | .fa.fa-github { 286 | font-family: 'Font Awesome 5 Brands'; 287 | font-weight: 400; } 288 | 289 | .fa.fa-credit-card { 290 | font-family: 'Font Awesome 5 Free'; 291 | font-weight: 400; } 292 | 293 | .fa.fa-feed:before { 294 | content: "\f09e"; } 295 | 296 | .fa.fa-hdd-o { 297 | font-family: 'Font Awesome 5 Free'; 298 | font-weight: 400; } 299 | 300 | .fa.fa-hdd-o:before { 301 | content: "\f0a0"; } 302 | 303 | .fa.fa-hand-o-right { 304 | font-family: 'Font Awesome 5 Free'; 305 | font-weight: 400; } 306 | 307 | .fa.fa-hand-o-right:before { 308 | content: "\f0a4"; } 309 | 310 | .fa.fa-hand-o-left { 311 | font-family: 'Font Awesome 5 Free'; 312 | font-weight: 400; } 313 | 314 | .fa.fa-hand-o-left:before { 315 | content: "\f0a5"; } 316 | 317 | .fa.fa-hand-o-up { 318 | font-family: 'Font Awesome 5 Free'; 319 | font-weight: 400; } 320 | 321 | .fa.fa-hand-o-up:before { 322 | content: "\f0a6"; } 323 | 324 | .fa.fa-hand-o-down { 325 | font-family: 'Font Awesome 5 Free'; 326 | font-weight: 400; } 327 | 328 | .fa.fa-hand-o-down:before { 329 | content: "\f0a7"; } 330 | 331 | .fa.fa-arrows-alt:before { 332 | content: "\f31e"; } 333 | 334 | .fa.fa-group:before { 335 | content: "\f0c0"; } 336 | 337 | .fa.fa-chain:before { 338 | content: "\f0c1"; } 339 | 340 | .fa.fa-scissors:before { 341 | content: "\f0c4"; } 342 | 343 | .fa.fa-files-o { 344 | font-family: 'Font Awesome 5 Free'; 345 | font-weight: 400; } 346 | 347 | .fa.fa-files-o:before { 348 | content: "\f0c5"; } 349 | 350 | .fa.fa-floppy-o { 351 | font-family: 'Font Awesome 5 Free'; 352 | font-weight: 400; } 353 | 354 | .fa.fa-floppy-o:before { 355 | content: "\f0c7"; } 356 | 357 | .fa.fa-navicon:before { 358 | content: "\f0c9"; } 359 | 360 | .fa.fa-reorder:before { 361 | content: "\f0c9"; } 362 | 363 | .fa.fa-pinterest { 364 | font-family: 'Font Awesome 5 Brands'; 365 | font-weight: 400; } 366 | 367 | .fa.fa-pinterest-square { 368 | font-family: 'Font Awesome 5 Brands'; 369 | font-weight: 400; } 370 | 371 | .fa.fa-google-plus-square { 372 | font-family: 'Font Awesome 5 Brands'; 373 | font-weight: 400; } 374 | 375 | .fa.fa-google-plus { 376 | font-family: 'Font Awesome 5 Brands'; 377 | font-weight: 400; } 378 | 379 | .fa.fa-google-plus:before { 380 | content: "\f0d5"; } 381 | 382 | .fa.fa-money { 383 | font-family: 'Font Awesome 5 Free'; 384 | font-weight: 400; } 385 | 386 | .fa.fa-money:before { 387 | content: "\f3d1"; } 388 | 389 | .fa.fa-unsorted:before { 390 | content: "\f0dc"; } 391 | 392 | .fa.fa-sort-desc:before { 393 | content: "\f0dd"; } 394 | 395 | .fa.fa-sort-asc:before { 396 | content: "\f0de"; } 397 | 398 | .fa.fa-linkedin { 399 | font-family: 'Font Awesome 5 Brands'; 400 | font-weight: 400; } 401 | 402 | .fa.fa-linkedin:before { 403 | content: "\f0e1"; } 404 | 405 | .fa.fa-rotate-left:before { 406 | content: "\f0e2"; } 407 | 408 | .fa.fa-legal:before { 409 | content: "\f0e3"; } 410 | 411 | .fa.fa-tachometer:before { 412 | content: "\f3fd"; } 413 | 414 | .fa.fa-dashboard:before { 415 | content: "\f3fd"; } 416 | 417 | .fa.fa-comment-o { 418 | font-family: 'Font Awesome 5 Free'; 419 | font-weight: 400; } 420 | 421 | .fa.fa-comment-o:before { 422 | content: "\f075"; } 423 | 424 | .fa.fa-comments-o { 425 | font-family: 'Font Awesome 5 Free'; 426 | font-weight: 400; } 427 | 428 | .fa.fa-comments-o:before { 429 | content: "\f086"; } 430 | 431 | .fa.fa-flash:before { 432 | content: "\f0e7"; } 433 | 434 | .fa.fa-clipboard { 435 | font-family: 'Font Awesome 5 Free'; 436 | font-weight: 400; } 437 | 438 | .fa.fa-paste { 439 | font-family: 'Font Awesome 5 Free'; 440 | font-weight: 400; } 441 | 442 | .fa.fa-paste:before { 443 | content: "\f328"; } 444 | 445 | .fa.fa-lightbulb-o { 446 | font-family: 'Font Awesome 5 Free'; 447 | font-weight: 400; } 448 | 449 | .fa.fa-lightbulb-o:before { 450 | content: "\f0eb"; } 451 | 452 | .fa.fa-exchange:before { 453 | content: "\f362"; } 454 | 455 | .fa.fa-cloud-download:before { 456 | content: "\f381"; } 457 | 458 | .fa.fa-cloud-upload:before { 459 | content: "\f382"; } 460 | 461 | .fa.fa-bell-o { 462 | font-family: 'Font Awesome 5 Free'; 463 | font-weight: 400; } 464 | 465 | .fa.fa-bell-o:before { 466 | content: "\f0f3"; } 467 | 468 | .fa.fa-cutlery:before { 469 | content: "\f2e7"; } 470 | 471 | .fa.fa-file-text-o { 472 | font-family: 'Font Awesome 5 Free'; 473 | font-weight: 400; } 474 | 475 | .fa.fa-file-text-o:before { 476 | content: "\f15c"; } 477 | 478 | .fa.fa-building-o { 479 | font-family: 'Font Awesome 5 Free'; 480 | font-weight: 400; } 481 | 482 | .fa.fa-building-o:before { 483 | content: "\f1ad"; } 484 | 485 | .fa.fa-hospital-o { 486 | font-family: 'Font Awesome 5 Free'; 487 | font-weight: 400; } 488 | 489 | .fa.fa-hospital-o:before { 490 | content: "\f0f8"; } 491 | 492 | .fa.fa-tablet:before { 493 | content: "\f3fa"; } 494 | 495 | .fa.fa-mobile:before { 496 | content: "\f3cd"; } 497 | 498 | .fa.fa-mobile-phone:before { 499 | content: "\f3cd"; } 500 | 501 | .fa.fa-circle-o { 502 | font-family: 'Font Awesome 5 Free'; 503 | font-weight: 400; } 504 | 505 | .fa.fa-circle-o:before { 506 | content: "\f111"; } 507 | 508 | .fa.fa-mail-reply:before { 509 | content: "\f3e5"; } 510 | 511 | .fa.fa-github-alt { 512 | font-family: 'Font Awesome 5 Brands'; 513 | font-weight: 400; } 514 | 515 | .fa.fa-folder-o { 516 | font-family: 'Font Awesome 5 Free'; 517 | font-weight: 400; } 518 | 519 | .fa.fa-folder-o:before { 520 | content: "\f07b"; } 521 | 522 | .fa.fa-folder-open-o { 523 | font-family: 'Font Awesome 5 Free'; 524 | font-weight: 400; } 525 | 526 | .fa.fa-folder-open-o:before { 527 | content: "\f07c"; } 528 | 529 | .fa.fa-smile-o { 530 | font-family: 'Font Awesome 5 Free'; 531 | font-weight: 400; } 532 | 533 | .fa.fa-smile-o:before { 534 | content: "\f118"; } 535 | 536 | .fa.fa-frown-o { 537 | font-family: 'Font Awesome 5 Free'; 538 | font-weight: 400; } 539 | 540 | .fa.fa-frown-o:before { 541 | content: "\f119"; } 542 | 543 | .fa.fa-meh-o { 544 | font-family: 'Font Awesome 5 Free'; 545 | font-weight: 400; } 546 | 547 | .fa.fa-meh-o:before { 548 | content: "\f11a"; } 549 | 550 | .fa.fa-keyboard-o { 551 | font-family: 'Font Awesome 5 Free'; 552 | font-weight: 400; } 553 | 554 | .fa.fa-keyboard-o:before { 555 | content: "\f11c"; } 556 | 557 | .fa.fa-flag-o { 558 | font-family: 'Font Awesome 5 Free'; 559 | font-weight: 400; } 560 | 561 | .fa.fa-flag-o:before { 562 | content: "\f024"; } 563 | 564 | .fa.fa-mail-reply-all:before { 565 | content: "\f122"; } 566 | 567 | .fa.fa-star-half-o { 568 | font-family: 'Font Awesome 5 Free'; 569 | font-weight: 400; } 570 | 571 | .fa.fa-star-half-o:before { 572 | content: "\f089"; } 573 | 574 | .fa.fa-star-half-empty { 575 | font-family: 'Font Awesome 5 Free'; 576 | font-weight: 400; } 577 | 578 | .fa.fa-star-half-empty:before { 579 | content: "\f089"; } 580 | 581 | .fa.fa-star-half-full { 582 | font-family: 'Font Awesome 5 Free'; 583 | font-weight: 400; } 584 | 585 | .fa.fa-star-half-full:before { 586 | content: "\f089"; } 587 | 588 | .fa.fa-code-fork:before { 589 | content: "\f126"; } 590 | 591 | .fa.fa-chain-broken:before { 592 | content: "\f127"; } 593 | 594 | .fa.fa-shield:before { 595 | content: "\f3ed"; } 596 | 597 | .fa.fa-calendar-o { 598 | font-family: 'Font Awesome 5 Free'; 599 | font-weight: 400; } 600 | 601 | .fa.fa-calendar-o:before { 602 | content: "\f133"; } 603 | 604 | .fa.fa-maxcdn { 605 | font-family: 'Font Awesome 5 Brands'; 606 | font-weight: 400; } 607 | 608 | .fa.fa-html5 { 609 | font-family: 'Font Awesome 5 Brands'; 610 | font-weight: 400; } 611 | 612 | .fa.fa-css3 { 613 | font-family: 'Font Awesome 5 Brands'; 614 | font-weight: 400; } 615 | 616 | .fa.fa-ticket:before { 617 | content: "\f3ff"; } 618 | 619 | .fa.fa-minus-square-o { 620 | font-family: 'Font Awesome 5 Free'; 621 | font-weight: 400; } 622 | 623 | .fa.fa-minus-square-o:before { 624 | content: "\f146"; } 625 | 626 | .fa.fa-level-up:before { 627 | content: "\f3bf"; } 628 | 629 | .fa.fa-level-down:before { 630 | content: "\f3be"; } 631 | 632 | .fa.fa-pencil-square:before { 633 | content: "\f14b"; } 634 | 635 | .fa.fa-external-link-square:before { 636 | content: "\f360"; } 637 | 638 | .fa.fa-compass { 639 | font-family: 'Font Awesome 5 Free'; 640 | font-weight: 400; } 641 | 642 | .fa.fa-caret-square-o-down { 643 | font-family: 'Font Awesome 5 Free'; 644 | font-weight: 400; } 645 | 646 | .fa.fa-caret-square-o-down:before { 647 | content: "\f150"; } 648 | 649 | .fa.fa-toggle-down { 650 | font-family: 'Font Awesome 5 Free'; 651 | font-weight: 400; } 652 | 653 | .fa.fa-toggle-down:before { 654 | content: "\f150"; } 655 | 656 | .fa.fa-caret-square-o-up { 657 | font-family: 'Font Awesome 5 Free'; 658 | font-weight: 400; } 659 | 660 | .fa.fa-caret-square-o-up:before { 661 | content: "\f151"; } 662 | 663 | .fa.fa-toggle-up { 664 | font-family: 'Font Awesome 5 Free'; 665 | font-weight: 400; } 666 | 667 | .fa.fa-toggle-up:before { 668 | content: "\f151"; } 669 | 670 | .fa.fa-caret-square-o-right { 671 | font-family: 'Font Awesome 5 Free'; 672 | font-weight: 400; } 673 | 674 | .fa.fa-caret-square-o-right:before { 675 | content: "\f152"; } 676 | 677 | .fa.fa-toggle-right { 678 | font-family: 'Font Awesome 5 Free'; 679 | font-weight: 400; } 680 | 681 | .fa.fa-toggle-right:before { 682 | content: "\f152"; } 683 | 684 | .fa.fa-eur:before { 685 | content: "\f153"; } 686 | 687 | .fa.fa-euro:before { 688 | content: "\f153"; } 689 | 690 | .fa.fa-gbp:before { 691 | content: "\f154"; } 692 | 693 | .fa.fa-usd:before { 694 | content: "\f155"; } 695 | 696 | .fa.fa-dollar:before { 697 | content: "\f155"; } 698 | 699 | .fa.fa-inr:before { 700 | content: "\f156"; } 701 | 702 | .fa.fa-rupee:before { 703 | content: "\f156"; } 704 | 705 | .fa.fa-jpy:before { 706 | content: "\f157"; } 707 | 708 | .fa.fa-cny:before { 709 | content: "\f157"; } 710 | 711 | .fa.fa-rmb:before { 712 | content: "\f157"; } 713 | 714 | .fa.fa-yen:before { 715 | content: "\f157"; } 716 | 717 | .fa.fa-rub:before { 718 | content: "\f158"; } 719 | 720 | .fa.fa-ruble:before { 721 | content: "\f158"; } 722 | 723 | .fa.fa-rouble:before { 724 | content: "\f158"; } 725 | 726 | .fa.fa-krw:before { 727 | content: "\f159"; } 728 | 729 | .fa.fa-won:before { 730 | content: "\f159"; } 731 | 732 | .fa.fa-btc { 733 | font-family: 'Font Awesome 5 Brands'; 734 | font-weight: 400; } 735 | 736 | .fa.fa-bitcoin { 737 | font-family: 'Font Awesome 5 Brands'; 738 | font-weight: 400; } 739 | 740 | .fa.fa-bitcoin:before { 741 | content: "\f15a"; } 742 | 743 | .fa.fa-file-text:before { 744 | content: "\f15c"; } 745 | 746 | .fa.fa-sort-alpha-asc:before { 747 | content: "\f15d"; } 748 | 749 | .fa.fa-sort-alpha-desc:before { 750 | content: "\f15e"; } 751 | 752 | .fa.fa-sort-amount-asc:before { 753 | content: "\f160"; } 754 | 755 | .fa.fa-sort-amount-desc:before { 756 | content: "\f161"; } 757 | 758 | .fa.fa-sort-numeric-asc:before { 759 | content: "\f162"; } 760 | 761 | .fa.fa-sort-numeric-desc:before { 762 | content: "\f163"; } 763 | 764 | .fa.fa-youtube-square { 765 | font-family: 'Font Awesome 5 Brands'; 766 | font-weight: 400; } 767 | 768 | .fa.fa-youtube { 769 | font-family: 'Font Awesome 5 Brands'; 770 | font-weight: 400; } 771 | 772 | .fa.fa-xing { 773 | font-family: 'Font Awesome 5 Brands'; 774 | font-weight: 400; } 775 | 776 | .fa.fa-xing-square { 777 | font-family: 'Font Awesome 5 Brands'; 778 | font-weight: 400; } 779 | 780 | .fa.fa-youtube-play { 781 | font-family: 'Font Awesome 5 Brands'; 782 | font-weight: 400; } 783 | 784 | .fa.fa-youtube-play:before { 785 | content: "\f167"; } 786 | 787 | .fa.fa-dropbox { 788 | font-family: 'Font Awesome 5 Brands'; 789 | font-weight: 400; } 790 | 791 | .fa.fa-stack-overflow { 792 | font-family: 'Font Awesome 5 Brands'; 793 | font-weight: 400; } 794 | 795 | .fa.fa-instagram { 796 | font-family: 'Font Awesome 5 Brands'; 797 | font-weight: 400; } 798 | 799 | .fa.fa-flickr { 800 | font-family: 'Font Awesome 5 Brands'; 801 | font-weight: 400; } 802 | 803 | .fa.fa-adn { 804 | font-family: 'Font Awesome 5 Brands'; 805 | font-weight: 400; } 806 | 807 | .fa.fa-bitbucket { 808 | font-family: 'Font Awesome 5 Brands'; 809 | font-weight: 400; } 810 | 811 | .fa.fa-bitbucket-square { 812 | font-family: 'Font Awesome 5 Brands'; 813 | font-weight: 400; } 814 | 815 | .fa.fa-bitbucket-square:before { 816 | content: "\f171"; } 817 | 818 | .fa.fa-tumblr { 819 | font-family: 'Font Awesome 5 Brands'; 820 | font-weight: 400; } 821 | 822 | .fa.fa-tumblr-square { 823 | font-family: 'Font Awesome 5 Brands'; 824 | font-weight: 400; } 825 | 826 | .fa.fa-long-arrow-down:before { 827 | content: "\f309"; } 828 | 829 | .fa.fa-long-arrow-up:before { 830 | content: "\f30c"; } 831 | 832 | .fa.fa-long-arrow-left:before { 833 | content: "\f30a"; } 834 | 835 | .fa.fa-long-arrow-right:before { 836 | content: "\f30b"; } 837 | 838 | .fa.fa-apple { 839 | font-family: 'Font Awesome 5 Brands'; 840 | font-weight: 400; } 841 | 842 | .fa.fa-windows { 843 | font-family: 'Font Awesome 5 Brands'; 844 | font-weight: 400; } 845 | 846 | .fa.fa-android { 847 | font-family: 'Font Awesome 5 Brands'; 848 | font-weight: 400; } 849 | 850 | .fa.fa-linux { 851 | font-family: 'Font Awesome 5 Brands'; 852 | font-weight: 400; } 853 | 854 | .fa.fa-dribbble { 855 | font-family: 'Font Awesome 5 Brands'; 856 | font-weight: 400; } 857 | 858 | .fa.fa-skype { 859 | font-family: 'Font Awesome 5 Brands'; 860 | font-weight: 400; } 861 | 862 | .fa.fa-foursquare { 863 | font-family: 'Font Awesome 5 Brands'; 864 | font-weight: 400; } 865 | 866 | .fa.fa-trello { 867 | font-family: 'Font Awesome 5 Brands'; 868 | font-weight: 400; } 869 | 870 | .fa.fa-gratipay { 871 | font-family: 'Font Awesome 5 Brands'; 872 | font-weight: 400; } 873 | 874 | .fa.fa-gittip { 875 | font-family: 'Font Awesome 5 Brands'; 876 | font-weight: 400; } 877 | 878 | .fa.fa-gittip:before { 879 | content: "\f184"; } 880 | 881 | .fa.fa-sun-o { 882 | font-family: 'Font Awesome 5 Free'; 883 | font-weight: 400; } 884 | 885 | .fa.fa-sun-o:before { 886 | content: "\f185"; } 887 | 888 | .fa.fa-moon-o { 889 | font-family: 'Font Awesome 5 Free'; 890 | font-weight: 400; } 891 | 892 | .fa.fa-moon-o:before { 893 | content: "\f186"; } 894 | 895 | .fa.fa-vk { 896 | font-family: 'Font Awesome 5 Brands'; 897 | font-weight: 400; } 898 | 899 | .fa.fa-weibo { 900 | font-family: 'Font Awesome 5 Brands'; 901 | font-weight: 400; } 902 | 903 | .fa.fa-renren { 904 | font-family: 'Font Awesome 5 Brands'; 905 | font-weight: 400; } 906 | 907 | .fa.fa-pagelines { 908 | font-family: 'Font Awesome 5 Brands'; 909 | font-weight: 400; } 910 | 911 | .fa.fa-stack-exchange { 912 | font-family: 'Font Awesome 5 Brands'; 913 | font-weight: 400; } 914 | 915 | .fa.fa-arrow-circle-o-right { 916 | font-family: 'Font Awesome 5 Free'; 917 | font-weight: 400; } 918 | 919 | .fa.fa-arrow-circle-o-right:before { 920 | content: "\f35a"; } 921 | 922 | .fa.fa-arrow-circle-o-left { 923 | font-family: 'Font Awesome 5 Free'; 924 | font-weight: 400; } 925 | 926 | .fa.fa-arrow-circle-o-left:before { 927 | content: "\f359"; } 928 | 929 | .fa.fa-caret-square-o-left { 930 | font-family: 'Font Awesome 5 Free'; 931 | font-weight: 400; } 932 | 933 | .fa.fa-caret-square-o-left:before { 934 | content: "\f191"; } 935 | 936 | .fa.fa-toggle-left { 937 | font-family: 'Font Awesome 5 Free'; 938 | font-weight: 400; } 939 | 940 | .fa.fa-toggle-left:before { 941 | content: "\f191"; } 942 | 943 | .fa.fa-dot-circle-o { 944 | font-family: 'Font Awesome 5 Free'; 945 | font-weight: 400; } 946 | 947 | .fa.fa-dot-circle-o:before { 948 | content: "\f192"; } 949 | 950 | .fa.fa-vimeo-square { 951 | font-family: 'Font Awesome 5 Brands'; 952 | font-weight: 400; } 953 | 954 | .fa.fa-try:before { 955 | content: "\f195"; } 956 | 957 | .fa.fa-turkish-lira:before { 958 | content: "\f195"; } 959 | 960 | .fa.fa-plus-square-o { 961 | font-family: 'Font Awesome 5 Free'; 962 | font-weight: 400; } 963 | 964 | .fa.fa-plus-square-o:before { 965 | content: "\f0fe"; } 966 | 967 | .fa.fa-slack { 968 | font-family: 'Font Awesome 5 Brands'; 969 | font-weight: 400; } 970 | 971 | .fa.fa-wordpress { 972 | font-family: 'Font Awesome 5 Brands'; 973 | font-weight: 400; } 974 | 975 | .fa.fa-openid { 976 | font-family: 'Font Awesome 5 Brands'; 977 | font-weight: 400; } 978 | 979 | .fa.fa-institution:before { 980 | content: "\f19c"; } 981 | 982 | .fa.fa-bank:before { 983 | content: "\f19c"; } 984 | 985 | .fa.fa-mortar-board:before { 986 | content: "\f19d"; } 987 | 988 | .fa.fa-yahoo { 989 | font-family: 'Font Awesome 5 Brands'; 990 | font-weight: 400; } 991 | 992 | .fa.fa-google { 993 | font-family: 'Font Awesome 5 Brands'; 994 | font-weight: 400; } 995 | 996 | .fa.fa-reddit { 997 | font-family: 'Font Awesome 5 Brands'; 998 | font-weight: 400; } 999 | 1000 | .fa.fa-reddit-square { 1001 | font-family: 'Font Awesome 5 Brands'; 1002 | font-weight: 400; } 1003 | 1004 | .fa.fa-stumbleupon-circle { 1005 | font-family: 'Font Awesome 5 Brands'; 1006 | font-weight: 400; } 1007 | 1008 | .fa.fa-stumbleupon { 1009 | font-family: 'Font Awesome 5 Brands'; 1010 | font-weight: 400; } 1011 | 1012 | .fa.fa-delicious { 1013 | font-family: 'Font Awesome 5 Brands'; 1014 | font-weight: 400; } 1015 | 1016 | .fa.fa-digg { 1017 | font-family: 'Font Awesome 5 Brands'; 1018 | font-weight: 400; } 1019 | 1020 | .fa.fa-pied-piper-pp { 1021 | font-family: 'Font Awesome 5 Brands'; 1022 | font-weight: 400; } 1023 | 1024 | .fa.fa-pied-piper-alt { 1025 | font-family: 'Font Awesome 5 Brands'; 1026 | font-weight: 400; } 1027 | 1028 | .fa.fa-drupal { 1029 | font-family: 'Font Awesome 5 Brands'; 1030 | font-weight: 400; } 1031 | 1032 | .fa.fa-joomla { 1033 | font-family: 'Font Awesome 5 Brands'; 1034 | font-weight: 400; } 1035 | 1036 | .fa.fa-spoon:before { 1037 | content: "\f2e5"; } 1038 | 1039 | .fa.fa-behance { 1040 | font-family: 'Font Awesome 5 Brands'; 1041 | font-weight: 400; } 1042 | 1043 | .fa.fa-behance-square { 1044 | font-family: 'Font Awesome 5 Brands'; 1045 | font-weight: 400; } 1046 | 1047 | .fa.fa-steam { 1048 | font-family: 'Font Awesome 5 Brands'; 1049 | font-weight: 400; } 1050 | 1051 | .fa.fa-steam-square { 1052 | font-family: 'Font Awesome 5 Brands'; 1053 | font-weight: 400; } 1054 | 1055 | .fa.fa-automobile:before { 1056 | content: "\f1b9"; } 1057 | 1058 | .fa.fa-cab:before { 1059 | content: "\f1ba"; } 1060 | 1061 | .fa.fa-envelope-o { 1062 | font-family: 'Font Awesome 5 Free'; 1063 | font-weight: 400; } 1064 | 1065 | .fa.fa-envelope-o:before { 1066 | content: "\f0e0"; } 1067 | 1068 | .fa.fa-deviantart { 1069 | font-family: 'Font Awesome 5 Brands'; 1070 | font-weight: 400; } 1071 | 1072 | .fa.fa-soundcloud { 1073 | font-family: 'Font Awesome 5 Brands'; 1074 | font-weight: 400; } 1075 | 1076 | .fa.fa-file-pdf-o { 1077 | font-family: 'Font Awesome 5 Free'; 1078 | font-weight: 400; } 1079 | 1080 | .fa.fa-file-pdf-o:before { 1081 | content: "\f1c1"; } 1082 | 1083 | .fa.fa-file-word-o { 1084 | font-family: 'Font Awesome 5 Free'; 1085 | font-weight: 400; } 1086 | 1087 | .fa.fa-file-word-o:before { 1088 | content: "\f1c2"; } 1089 | 1090 | .fa.fa-file-excel-o { 1091 | font-family: 'Font Awesome 5 Free'; 1092 | font-weight: 400; } 1093 | 1094 | .fa.fa-file-excel-o:before { 1095 | content: "\f1c3"; } 1096 | 1097 | .fa.fa-file-powerpoint-o { 1098 | font-family: 'Font Awesome 5 Free'; 1099 | font-weight: 400; } 1100 | 1101 | .fa.fa-file-powerpoint-o:before { 1102 | content: "\f1c4"; } 1103 | 1104 | .fa.fa-file-image-o { 1105 | font-family: 'Font Awesome 5 Free'; 1106 | font-weight: 400; } 1107 | 1108 | .fa.fa-file-image-o:before { 1109 | content: "\f1c5"; } 1110 | 1111 | .fa.fa-file-photo-o { 1112 | font-family: 'Font Awesome 5 Free'; 1113 | font-weight: 400; } 1114 | 1115 | .fa.fa-file-photo-o:before { 1116 | content: "\f1c5"; } 1117 | 1118 | .fa.fa-file-picture-o { 1119 | font-family: 'Font Awesome 5 Free'; 1120 | font-weight: 400; } 1121 | 1122 | .fa.fa-file-picture-o:before { 1123 | content: "\f1c5"; } 1124 | 1125 | .fa.fa-file-archive-o { 1126 | font-family: 'Font Awesome 5 Free'; 1127 | font-weight: 400; } 1128 | 1129 | .fa.fa-file-archive-o:before { 1130 | content: "\f1c6"; } 1131 | 1132 | .fa.fa-file-zip-o { 1133 | font-family: 'Font Awesome 5 Free'; 1134 | font-weight: 400; } 1135 | 1136 | .fa.fa-file-zip-o:before { 1137 | content: "\f1c6"; } 1138 | 1139 | .fa.fa-file-audio-o { 1140 | font-family: 'Font Awesome 5 Free'; 1141 | font-weight: 400; } 1142 | 1143 | .fa.fa-file-audio-o:before { 1144 | content: "\f1c7"; } 1145 | 1146 | .fa.fa-file-sound-o { 1147 | font-family: 'Font Awesome 5 Free'; 1148 | font-weight: 400; } 1149 | 1150 | .fa.fa-file-sound-o:before { 1151 | content: "\f1c7"; } 1152 | 1153 | .fa.fa-file-video-o { 1154 | font-family: 'Font Awesome 5 Free'; 1155 | font-weight: 400; } 1156 | 1157 | .fa.fa-file-video-o:before { 1158 | content: "\f1c8"; } 1159 | 1160 | .fa.fa-file-movie-o { 1161 | font-family: 'Font Awesome 5 Free'; 1162 | font-weight: 400; } 1163 | 1164 | .fa.fa-file-movie-o:before { 1165 | content: "\f1c8"; } 1166 | 1167 | .fa.fa-file-code-o { 1168 | font-family: 'Font Awesome 5 Free'; 1169 | font-weight: 400; } 1170 | 1171 | .fa.fa-file-code-o:before { 1172 | content: "\f1c9"; } 1173 | 1174 | .fa.fa-vine { 1175 | font-family: 'Font Awesome 5 Brands'; 1176 | font-weight: 400; } 1177 | 1178 | .fa.fa-codepen { 1179 | font-family: 'Font Awesome 5 Brands'; 1180 | font-weight: 400; } 1181 | 1182 | .fa.fa-jsfiddle { 1183 | font-family: 'Font Awesome 5 Brands'; 1184 | font-weight: 400; } 1185 | 1186 | .fa.fa-life-ring { 1187 | font-family: 'Font Awesome 5 Free'; 1188 | font-weight: 400; } 1189 | 1190 | .fa.fa-life-bouy { 1191 | font-family: 'Font Awesome 5 Free'; 1192 | font-weight: 400; } 1193 | 1194 | .fa.fa-life-bouy:before { 1195 | content: "\f1cd"; } 1196 | 1197 | .fa.fa-life-buoy { 1198 | font-family: 'Font Awesome 5 Free'; 1199 | font-weight: 400; } 1200 | 1201 | .fa.fa-life-buoy:before { 1202 | content: "\f1cd"; } 1203 | 1204 | .fa.fa-life-saver { 1205 | font-family: 'Font Awesome 5 Free'; 1206 | font-weight: 400; } 1207 | 1208 | .fa.fa-life-saver:before { 1209 | content: "\f1cd"; } 1210 | 1211 | .fa.fa-support { 1212 | font-family: 'Font Awesome 5 Free'; 1213 | font-weight: 400; } 1214 | 1215 | .fa.fa-support:before { 1216 | content: "\f1cd"; } 1217 | 1218 | .fa.fa-circle-o-notch:before { 1219 | content: "\f1ce"; } 1220 | 1221 | .fa.fa-rebel { 1222 | font-family: 'Font Awesome 5 Brands'; 1223 | font-weight: 400; } 1224 | 1225 | .fa.fa-ra { 1226 | font-family: 'Font Awesome 5 Brands'; 1227 | font-weight: 400; } 1228 | 1229 | .fa.fa-ra:before { 1230 | content: "\f1d0"; } 1231 | 1232 | .fa.fa-resistance { 1233 | font-family: 'Font Awesome 5 Brands'; 1234 | font-weight: 400; } 1235 | 1236 | .fa.fa-resistance:before { 1237 | content: "\f1d0"; } 1238 | 1239 | .fa.fa-empire { 1240 | font-family: 'Font Awesome 5 Brands'; 1241 | font-weight: 400; } 1242 | 1243 | .fa.fa-ge { 1244 | font-family: 'Font Awesome 5 Brands'; 1245 | font-weight: 400; } 1246 | 1247 | .fa.fa-ge:before { 1248 | content: "\f1d1"; } 1249 | 1250 | .fa.fa-git-square { 1251 | font-family: 'Font Awesome 5 Brands'; 1252 | font-weight: 400; } 1253 | 1254 | .fa.fa-git { 1255 | font-family: 'Font Awesome 5 Brands'; 1256 | font-weight: 400; } 1257 | 1258 | .fa.fa-hacker-news { 1259 | font-family: 'Font Awesome 5 Brands'; 1260 | font-weight: 400; } 1261 | 1262 | .fa.fa-y-combinator-square { 1263 | font-family: 'Font Awesome 5 Brands'; 1264 | font-weight: 400; } 1265 | 1266 | .fa.fa-y-combinator-square:before { 1267 | content: "\f1d4"; } 1268 | 1269 | .fa.fa-yc-square { 1270 | font-family: 'Font Awesome 5 Brands'; 1271 | font-weight: 400; } 1272 | 1273 | .fa.fa-yc-square:before { 1274 | content: "\f1d4"; } 1275 | 1276 | .fa.fa-tencent-weibo { 1277 | font-family: 'Font Awesome 5 Brands'; 1278 | font-weight: 400; } 1279 | 1280 | .fa.fa-qq { 1281 | font-family: 'Font Awesome 5 Brands'; 1282 | font-weight: 400; } 1283 | 1284 | .fa.fa-weixin { 1285 | font-family: 'Font Awesome 5 Brands'; 1286 | font-weight: 400; } 1287 | 1288 | .fa.fa-wechat { 1289 | font-family: 'Font Awesome 5 Brands'; 1290 | font-weight: 400; } 1291 | 1292 | .fa.fa-wechat:before { 1293 | content: "\f1d7"; } 1294 | 1295 | .fa.fa-send:before { 1296 | content: "\f1d8"; } 1297 | 1298 | .fa.fa-paper-plane-o { 1299 | font-family: 'Font Awesome 5 Free'; 1300 | font-weight: 400; } 1301 | 1302 | .fa.fa-paper-plane-o:before { 1303 | content: "\f1d8"; } 1304 | 1305 | .fa.fa-send-o { 1306 | font-family: 'Font Awesome 5 Free'; 1307 | font-weight: 400; } 1308 | 1309 | .fa.fa-send-o:before { 1310 | content: "\f1d8"; } 1311 | 1312 | .fa.fa-circle-thin { 1313 | font-family: 'Font Awesome 5 Free'; 1314 | font-weight: 400; } 1315 | 1316 | .fa.fa-circle-thin:before { 1317 | content: "\f111"; } 1318 | 1319 | .fa.fa-header:before { 1320 | content: "\f1dc"; } 1321 | 1322 | .fa.fa-sliders:before { 1323 | content: "\f1de"; } 1324 | 1325 | .fa.fa-futbol-o { 1326 | font-family: 'Font Awesome 5 Free'; 1327 | font-weight: 400; } 1328 | 1329 | .fa.fa-futbol-o:before { 1330 | content: "\f1e3"; } 1331 | 1332 | .fa.fa-soccer-ball-o { 1333 | font-family: 'Font Awesome 5 Free'; 1334 | font-weight: 400; } 1335 | 1336 | .fa.fa-soccer-ball-o:before { 1337 | content: "\f1e3"; } 1338 | 1339 | .fa.fa-slideshare { 1340 | font-family: 'Font Awesome 5 Brands'; 1341 | font-weight: 400; } 1342 | 1343 | .fa.fa-twitch { 1344 | font-family: 'Font Awesome 5 Brands'; 1345 | font-weight: 400; } 1346 | 1347 | .fa.fa-yelp { 1348 | font-family: 'Font Awesome 5 Brands'; 1349 | font-weight: 400; } 1350 | 1351 | .fa.fa-newspaper-o { 1352 | font-family: 'Font Awesome 5 Free'; 1353 | font-weight: 400; } 1354 | 1355 | .fa.fa-newspaper-o:before { 1356 | content: "\f1ea"; } 1357 | 1358 | .fa.fa-paypal { 1359 | font-family: 'Font Awesome 5 Brands'; 1360 | font-weight: 400; } 1361 | 1362 | .fa.fa-google-wallet { 1363 | font-family: 'Font Awesome 5 Brands'; 1364 | font-weight: 400; } 1365 | 1366 | .fa.fa-cc-visa { 1367 | font-family: 'Font Awesome 5 Brands'; 1368 | font-weight: 400; } 1369 | 1370 | .fa.fa-cc-mastercard { 1371 | font-family: 'Font Awesome 5 Brands'; 1372 | font-weight: 400; } 1373 | 1374 | .fa.fa-cc-discover { 1375 | font-family: 'Font Awesome 5 Brands'; 1376 | font-weight: 400; } 1377 | 1378 | .fa.fa-cc-amex { 1379 | font-family: 'Font Awesome 5 Brands'; 1380 | font-weight: 400; } 1381 | 1382 | .fa.fa-cc-paypal { 1383 | font-family: 'Font Awesome 5 Brands'; 1384 | font-weight: 400; } 1385 | 1386 | .fa.fa-cc-stripe { 1387 | font-family: 'Font Awesome 5 Brands'; 1388 | font-weight: 400; } 1389 | 1390 | .fa.fa-bell-slash-o { 1391 | font-family: 'Font Awesome 5 Free'; 1392 | font-weight: 400; } 1393 | 1394 | .fa.fa-bell-slash-o:before { 1395 | content: "\f1f6"; } 1396 | 1397 | .fa.fa-trash:before { 1398 | content: "\f2ed"; } 1399 | 1400 | .fa.fa-copyright { 1401 | font-family: 'Font Awesome 5 Free'; 1402 | font-weight: 400; } 1403 | 1404 | .fa.fa-eyedropper:before { 1405 | content: "\f1fb"; } 1406 | 1407 | .fa.fa-area-chart:before { 1408 | content: "\f1fe"; } 1409 | 1410 | .fa.fa-pie-chart:before { 1411 | content: "\f200"; } 1412 | 1413 | .fa.fa-line-chart:before { 1414 | content: "\f201"; } 1415 | 1416 | .fa.fa-lastfm { 1417 | font-family: 'Font Awesome 5 Brands'; 1418 | font-weight: 400; } 1419 | 1420 | .fa.fa-lastfm-square { 1421 | font-family: 'Font Awesome 5 Brands'; 1422 | font-weight: 400; } 1423 | 1424 | .fa.fa-ioxhost { 1425 | font-family: 'Font Awesome 5 Brands'; 1426 | font-weight: 400; } 1427 | 1428 | .fa.fa-angellist { 1429 | font-family: 'Font Awesome 5 Brands'; 1430 | font-weight: 400; } 1431 | 1432 | .fa.fa-cc { 1433 | font-family: 'Font Awesome 5 Free'; 1434 | font-weight: 400; } 1435 | 1436 | .fa.fa-cc:before { 1437 | content: "\f20a"; } 1438 | 1439 | .fa.fa-ils:before { 1440 | content: "\f20b"; } 1441 | 1442 | .fa.fa-shekel:before { 1443 | content: "\f20b"; } 1444 | 1445 | .fa.fa-sheqel:before { 1446 | content: "\f20b"; } 1447 | 1448 | .fa.fa-meanpath { 1449 | font-family: 'Font Awesome 5 Brands'; 1450 | font-weight: 400; } 1451 | 1452 | .fa.fa-meanpath:before { 1453 | content: "\f2b4"; } 1454 | 1455 | .fa.fa-buysellads { 1456 | font-family: 'Font Awesome 5 Brands'; 1457 | font-weight: 400; } 1458 | 1459 | .fa.fa-connectdevelop { 1460 | font-family: 'Font Awesome 5 Brands'; 1461 | font-weight: 400; } 1462 | 1463 | .fa.fa-dashcube { 1464 | font-family: 'Font Awesome 5 Brands'; 1465 | font-weight: 400; } 1466 | 1467 | .fa.fa-forumbee { 1468 | font-family: 'Font Awesome 5 Brands'; 1469 | font-weight: 400; } 1470 | 1471 | .fa.fa-leanpub { 1472 | font-family: 'Font Awesome 5 Brands'; 1473 | font-weight: 400; } 1474 | 1475 | .fa.fa-sellsy { 1476 | font-family: 'Font Awesome 5 Brands'; 1477 | font-weight: 400; } 1478 | 1479 | .fa.fa-shirtsinbulk { 1480 | font-family: 'Font Awesome 5 Brands'; 1481 | font-weight: 400; } 1482 | 1483 | .fa.fa-simplybuilt { 1484 | font-family: 'Font Awesome 5 Brands'; 1485 | font-weight: 400; } 1486 | 1487 | .fa.fa-skyatlas { 1488 | font-family: 'Font Awesome 5 Brands'; 1489 | font-weight: 400; } 1490 | 1491 | .fa.fa-diamond { 1492 | font-family: 'Font Awesome 5 Free'; 1493 | font-weight: 400; } 1494 | 1495 | .fa.fa-diamond:before { 1496 | content: "\f3a5"; } 1497 | 1498 | .fa.fa-intersex:before { 1499 | content: "\f224"; } 1500 | 1501 | .fa.fa-facebook-official { 1502 | font-family: 'Font Awesome 5 Brands'; 1503 | font-weight: 400; } 1504 | 1505 | .fa.fa-facebook-official:before { 1506 | content: "\f09a"; } 1507 | 1508 | .fa.fa-pinterest-p { 1509 | font-family: 'Font Awesome 5 Brands'; 1510 | font-weight: 400; } 1511 | 1512 | .fa.fa-whatsapp { 1513 | font-family: 'Font Awesome 5 Brands'; 1514 | font-weight: 400; } 1515 | 1516 | .fa.fa-hotel:before { 1517 | content: "\f236"; } 1518 | 1519 | .fa.fa-viacoin { 1520 | font-family: 'Font Awesome 5 Brands'; 1521 | font-weight: 400; } 1522 | 1523 | .fa.fa-medium { 1524 | font-family: 'Font Awesome 5 Brands'; 1525 | font-weight: 400; } 1526 | 1527 | .fa.fa-y-combinator { 1528 | font-family: 'Font Awesome 5 Brands'; 1529 | font-weight: 400; } 1530 | 1531 | .fa.fa-yc { 1532 | font-family: 'Font Awesome 5 Brands'; 1533 | font-weight: 400; } 1534 | 1535 | .fa.fa-yc:before { 1536 | content: "\f23b"; } 1537 | 1538 | .fa.fa-optin-monster { 1539 | font-family: 'Font Awesome 5 Brands'; 1540 | font-weight: 400; } 1541 | 1542 | .fa.fa-opencart { 1543 | font-family: 'Font Awesome 5 Brands'; 1544 | font-weight: 400; } 1545 | 1546 | .fa.fa-expeditedssl { 1547 | font-family: 'Font Awesome 5 Brands'; 1548 | font-weight: 400; } 1549 | 1550 | .fa.fa-battery-4:before { 1551 | content: "\f240"; } 1552 | 1553 | .fa.fa-battery:before { 1554 | content: "\f240"; } 1555 | 1556 | .fa.fa-battery-3:before { 1557 | content: "\f241"; } 1558 | 1559 | .fa.fa-battery-2:before { 1560 | content: "\f242"; } 1561 | 1562 | .fa.fa-battery-1:before { 1563 | content: "\f243"; } 1564 | 1565 | .fa.fa-battery-0:before { 1566 | content: "\f244"; } 1567 | 1568 | .fa.fa-object-group { 1569 | font-family: 'Font Awesome 5 Free'; 1570 | font-weight: 400; } 1571 | 1572 | .fa.fa-object-ungroup { 1573 | font-family: 'Font Awesome 5 Free'; 1574 | font-weight: 400; } 1575 | 1576 | .fa.fa-sticky-note-o { 1577 | font-family: 'Font Awesome 5 Free'; 1578 | font-weight: 400; } 1579 | 1580 | .fa.fa-sticky-note-o:before { 1581 | content: "\f249"; } 1582 | 1583 | .fa.fa-cc-jcb { 1584 | font-family: 'Font Awesome 5 Brands'; 1585 | font-weight: 400; } 1586 | 1587 | .fa.fa-cc-diners-club { 1588 | font-family: 'Font Awesome 5 Brands'; 1589 | font-weight: 400; } 1590 | 1591 | .fa.fa-clone { 1592 | font-family: 'Font Awesome 5 Free'; 1593 | font-weight: 400; } 1594 | 1595 | .fa.fa-hourglass-o { 1596 | font-family: 'Font Awesome 5 Free'; 1597 | font-weight: 400; } 1598 | 1599 | .fa.fa-hourglass-o:before { 1600 | content: "\f254"; } 1601 | 1602 | .fa.fa-hourglass-1:before { 1603 | content: "\f251"; } 1604 | 1605 | .fa.fa-hourglass-2:before { 1606 | content: "\f252"; } 1607 | 1608 | .fa.fa-hourglass-3:before { 1609 | content: "\f253"; } 1610 | 1611 | .fa.fa-hand-rock-o { 1612 | font-family: 'Font Awesome 5 Free'; 1613 | font-weight: 400; } 1614 | 1615 | .fa.fa-hand-rock-o:before { 1616 | content: "\f255"; } 1617 | 1618 | .fa.fa-hand-grab-o { 1619 | font-family: 'Font Awesome 5 Free'; 1620 | font-weight: 400; } 1621 | 1622 | .fa.fa-hand-grab-o:before { 1623 | content: "\f255"; } 1624 | 1625 | .fa.fa-hand-paper-o { 1626 | font-family: 'Font Awesome 5 Free'; 1627 | font-weight: 400; } 1628 | 1629 | .fa.fa-hand-paper-o:before { 1630 | content: "\f256"; } 1631 | 1632 | .fa.fa-hand-stop-o { 1633 | font-family: 'Font Awesome 5 Free'; 1634 | font-weight: 400; } 1635 | 1636 | .fa.fa-hand-stop-o:before { 1637 | content: "\f256"; } 1638 | 1639 | .fa.fa-hand-scissors-o { 1640 | font-family: 'Font Awesome 5 Free'; 1641 | font-weight: 400; } 1642 | 1643 | .fa.fa-hand-scissors-o:before { 1644 | content: "\f257"; } 1645 | 1646 | .fa.fa-hand-lizard-o { 1647 | font-family: 'Font Awesome 5 Free'; 1648 | font-weight: 400; } 1649 | 1650 | .fa.fa-hand-lizard-o:before { 1651 | content: "\f258"; } 1652 | 1653 | .fa.fa-hand-spock-o { 1654 | font-family: 'Font Awesome 5 Free'; 1655 | font-weight: 400; } 1656 | 1657 | .fa.fa-hand-spock-o:before { 1658 | content: "\f259"; } 1659 | 1660 | .fa.fa-hand-pointer-o { 1661 | font-family: 'Font Awesome 5 Free'; 1662 | font-weight: 400; } 1663 | 1664 | .fa.fa-hand-pointer-o:before { 1665 | content: "\f25a"; } 1666 | 1667 | .fa.fa-hand-peace-o { 1668 | font-family: 'Font Awesome 5 Free'; 1669 | font-weight: 400; } 1670 | 1671 | .fa.fa-hand-peace-o:before { 1672 | content: "\f25b"; } 1673 | 1674 | .fa.fa-registered { 1675 | font-family: 'Font Awesome 5 Free'; 1676 | font-weight: 400; } 1677 | 1678 | .fa.fa-creative-commons { 1679 | font-family: 'Font Awesome 5 Brands'; 1680 | font-weight: 400; } 1681 | 1682 | .fa.fa-gg { 1683 | font-family: 'Font Awesome 5 Brands'; 1684 | font-weight: 400; } 1685 | 1686 | .fa.fa-gg-circle { 1687 | font-family: 'Font Awesome 5 Brands'; 1688 | font-weight: 400; } 1689 | 1690 | .fa.fa-tripadvisor { 1691 | font-family: 'Font Awesome 5 Brands'; 1692 | font-weight: 400; } 1693 | 1694 | .fa.fa-odnoklassniki { 1695 | font-family: 'Font Awesome 5 Brands'; 1696 | font-weight: 400; } 1697 | 1698 | .fa.fa-odnoklassniki-square { 1699 | font-family: 'Font Awesome 5 Brands'; 1700 | font-weight: 400; } 1701 | 1702 | .fa.fa-get-pocket { 1703 | font-family: 'Font Awesome 5 Brands'; 1704 | font-weight: 400; } 1705 | 1706 | .fa.fa-wikipedia-w { 1707 | font-family: 'Font Awesome 5 Brands'; 1708 | font-weight: 400; } 1709 | 1710 | .fa.fa-safari { 1711 | font-family: 'Font Awesome 5 Brands'; 1712 | font-weight: 400; } 1713 | 1714 | .fa.fa-chrome { 1715 | font-family: 'Font Awesome 5 Brands'; 1716 | font-weight: 400; } 1717 | 1718 | .fa.fa-firefox { 1719 | font-family: 'Font Awesome 5 Brands'; 1720 | font-weight: 400; } 1721 | 1722 | .fa.fa-opera { 1723 | font-family: 'Font Awesome 5 Brands'; 1724 | font-weight: 400; } 1725 | 1726 | .fa.fa-internet-explorer { 1727 | font-family: 'Font Awesome 5 Brands'; 1728 | font-weight: 400; } 1729 | 1730 | .fa.fa-television:before { 1731 | content: "\f26c"; } 1732 | 1733 | .fa.fa-contao { 1734 | font-family: 'Font Awesome 5 Brands'; 1735 | font-weight: 400; } 1736 | 1737 | .fa.fa-500px { 1738 | font-family: 'Font Awesome 5 Brands'; 1739 | font-weight: 400; } 1740 | 1741 | .fa.fa-amazon { 1742 | font-family: 'Font Awesome 5 Brands'; 1743 | font-weight: 400; } 1744 | 1745 | .fa.fa-calendar-plus-o { 1746 | font-family: 'Font Awesome 5 Free'; 1747 | font-weight: 400; } 1748 | 1749 | .fa.fa-calendar-plus-o:before { 1750 | content: "\f271"; } 1751 | 1752 | .fa.fa-calendar-minus-o { 1753 | font-family: 'Font Awesome 5 Free'; 1754 | font-weight: 400; } 1755 | 1756 | .fa.fa-calendar-minus-o:before { 1757 | content: "\f272"; } 1758 | 1759 | .fa.fa-calendar-times-o { 1760 | font-family: 'Font Awesome 5 Free'; 1761 | font-weight: 400; } 1762 | 1763 | .fa.fa-calendar-times-o:before { 1764 | content: "\f273"; } 1765 | 1766 | .fa.fa-calendar-check-o { 1767 | font-family: 'Font Awesome 5 Free'; 1768 | font-weight: 400; } 1769 | 1770 | .fa.fa-calendar-check-o:before { 1771 | content: "\f274"; } 1772 | 1773 | .fa.fa-map-o { 1774 | font-family: 'Font Awesome 5 Free'; 1775 | font-weight: 400; } 1776 | 1777 | .fa.fa-map-o:before { 1778 | content: "\f279"; } 1779 | 1780 | .fa.fa-commenting { 1781 | font-family: 'Font Awesome 5 Free'; 1782 | font-weight: 400; } 1783 | 1784 | .fa.fa-commenting:before { 1785 | content: "\f4ad"; } 1786 | 1787 | .fa.fa-commenting-o { 1788 | font-family: 'Font Awesome 5 Free'; 1789 | font-weight: 400; } 1790 | 1791 | .fa.fa-commenting-o:before { 1792 | content: "\f4ad"; } 1793 | 1794 | .fa.fa-houzz { 1795 | font-family: 'Font Awesome 5 Brands'; 1796 | font-weight: 400; } 1797 | 1798 | .fa.fa-vimeo { 1799 | font-family: 'Font Awesome 5 Brands'; 1800 | font-weight: 400; } 1801 | 1802 | .fa.fa-vimeo:before { 1803 | content: "\f27d"; } 1804 | 1805 | .fa.fa-black-tie { 1806 | font-family: 'Font Awesome 5 Brands'; 1807 | font-weight: 400; } 1808 | 1809 | .fa.fa-fonticons { 1810 | font-family: 'Font Awesome 5 Brands'; 1811 | font-weight: 400; } 1812 | 1813 | .fa.fa-reddit-alien { 1814 | font-family: 'Font Awesome 5 Brands'; 1815 | font-weight: 400; } 1816 | 1817 | .fa.fa-edge { 1818 | font-family: 'Font Awesome 5 Brands'; 1819 | font-weight: 400; } 1820 | 1821 | .fa.fa-credit-card-alt:before { 1822 | content: "\f09d"; } 1823 | 1824 | .fa.fa-codiepie { 1825 | font-family: 'Font Awesome 5 Brands'; 1826 | font-weight: 400; } 1827 | 1828 | .fa.fa-modx { 1829 | font-family: 'Font Awesome 5 Brands'; 1830 | font-weight: 400; } 1831 | 1832 | .fa.fa-fort-awesome { 1833 | font-family: 'Font Awesome 5 Brands'; 1834 | font-weight: 400; } 1835 | 1836 | .fa.fa-usb { 1837 | font-family: 'Font Awesome 5 Brands'; 1838 | font-weight: 400; } 1839 | 1840 | .fa.fa-product-hunt { 1841 | font-family: 'Font Awesome 5 Brands'; 1842 | font-weight: 400; } 1843 | 1844 | .fa.fa-mixcloud { 1845 | font-family: 'Font Awesome 5 Brands'; 1846 | font-weight: 400; } 1847 | 1848 | .fa.fa-scribd { 1849 | font-family: 'Font Awesome 5 Brands'; 1850 | font-weight: 400; } 1851 | 1852 | .fa.fa-pause-circle-o { 1853 | font-family: 'Font Awesome 5 Free'; 1854 | font-weight: 400; } 1855 | 1856 | .fa.fa-pause-circle-o:before { 1857 | content: "\f28b"; } 1858 | 1859 | .fa.fa-stop-circle-o { 1860 | font-family: 'Font Awesome 5 Free'; 1861 | font-weight: 400; } 1862 | 1863 | .fa.fa-stop-circle-o:before { 1864 | content: "\f28d"; } 1865 | 1866 | .fa.fa-bluetooth { 1867 | font-family: 'Font Awesome 5 Brands'; 1868 | font-weight: 400; } 1869 | 1870 | .fa.fa-bluetooth-b { 1871 | font-family: 'Font Awesome 5 Brands'; 1872 | font-weight: 400; } 1873 | 1874 | .fa.fa-gitlab { 1875 | font-family: 'Font Awesome 5 Brands'; 1876 | font-weight: 400; } 1877 | 1878 | .fa.fa-wpbeginner { 1879 | font-family: 'Font Awesome 5 Brands'; 1880 | font-weight: 400; } 1881 | 1882 | .fa.fa-wpforms { 1883 | font-family: 'Font Awesome 5 Brands'; 1884 | font-weight: 400; } 1885 | 1886 | .fa.fa-envira { 1887 | font-family: 'Font Awesome 5 Brands'; 1888 | font-weight: 400; } 1889 | 1890 | .fa.fa-wheelchair-alt { 1891 | font-family: 'Font Awesome 5 Brands'; 1892 | font-weight: 400; } 1893 | 1894 | .fa.fa-wheelchair-alt:before { 1895 | content: "\f368"; } 1896 | 1897 | .fa.fa-question-circle-o { 1898 | font-family: 'Font Awesome 5 Free'; 1899 | font-weight: 400; } 1900 | 1901 | .fa.fa-question-circle-o:before { 1902 | content: "\f059"; } 1903 | 1904 | .fa.fa-volume-control-phone:before { 1905 | content: "\f2a0"; } 1906 | 1907 | .fa.fa-asl-interpreting:before { 1908 | content: "\f2a3"; } 1909 | 1910 | .fa.fa-deafness:before { 1911 | content: "\f2a4"; } 1912 | 1913 | .fa.fa-hard-of-hearing:before { 1914 | content: "\f2a4"; } 1915 | 1916 | .fa.fa-glide { 1917 | font-family: 'Font Awesome 5 Brands'; 1918 | font-weight: 400; } 1919 | 1920 | .fa.fa-glide-g { 1921 | font-family: 'Font Awesome 5 Brands'; 1922 | font-weight: 400; } 1923 | 1924 | .fa.fa-signing:before { 1925 | content: "\f2a7"; } 1926 | 1927 | .fa.fa-viadeo { 1928 | font-family: 'Font Awesome 5 Brands'; 1929 | font-weight: 400; } 1930 | 1931 | .fa.fa-viadeo-square { 1932 | font-family: 'Font Awesome 5 Brands'; 1933 | font-weight: 400; } 1934 | 1935 | .fa.fa-snapchat { 1936 | font-family: 'Font Awesome 5 Brands'; 1937 | font-weight: 400; } 1938 | 1939 | .fa.fa-snapchat-ghost { 1940 | font-family: 'Font Awesome 5 Brands'; 1941 | font-weight: 400; } 1942 | 1943 | .fa.fa-snapchat-square { 1944 | font-family: 'Font Awesome 5 Brands'; 1945 | font-weight: 400; } 1946 | 1947 | .fa.fa-pied-piper { 1948 | font-family: 'Font Awesome 5 Brands'; 1949 | font-weight: 400; } 1950 | 1951 | .fa.fa-first-order { 1952 | font-family: 'Font Awesome 5 Brands'; 1953 | font-weight: 400; } 1954 | 1955 | .fa.fa-yoast { 1956 | font-family: 'Font Awesome 5 Brands'; 1957 | font-weight: 400; } 1958 | 1959 | .fa.fa-themeisle { 1960 | font-family: 'Font Awesome 5 Brands'; 1961 | font-weight: 400; } 1962 | 1963 | .fa.fa-google-plus-official { 1964 | font-family: 'Font Awesome 5 Brands'; 1965 | font-weight: 400; } 1966 | 1967 | .fa.fa-google-plus-official:before { 1968 | content: "\f2b3"; } 1969 | 1970 | .fa.fa-google-plus-circle { 1971 | font-family: 'Font Awesome 5 Brands'; 1972 | font-weight: 400; } 1973 | 1974 | .fa.fa-google-plus-circle:before { 1975 | content: "\f2b3"; } 1976 | 1977 | .fa.fa-font-awesome { 1978 | font-family: 'Font Awesome 5 Brands'; 1979 | font-weight: 400; } 1980 | 1981 | .fa.fa-fa { 1982 | font-family: 'Font Awesome 5 Brands'; 1983 | font-weight: 400; } 1984 | 1985 | .fa.fa-fa:before { 1986 | content: "\f2b4"; } 1987 | 1988 | .fa.fa-handshake-o { 1989 | font-family: 'Font Awesome 5 Free'; 1990 | font-weight: 400; } 1991 | 1992 | .fa.fa-handshake-o:before { 1993 | content: "\f2b5"; } 1994 | 1995 | .fa.fa-envelope-open-o { 1996 | font-family: 'Font Awesome 5 Free'; 1997 | font-weight: 400; } 1998 | 1999 | .fa.fa-envelope-open-o:before { 2000 | content: "\f2b6"; } 2001 | 2002 | .fa.fa-linode { 2003 | font-family: 'Font Awesome 5 Brands'; 2004 | font-weight: 400; } 2005 | 2006 | .fa.fa-address-book-o { 2007 | font-family: 'Font Awesome 5 Free'; 2008 | font-weight: 400; } 2009 | 2010 | .fa.fa-address-book-o:before { 2011 | content: "\f2b9"; } 2012 | 2013 | .fa.fa-vcard:before { 2014 | content: "\f2bb"; } 2015 | 2016 | .fa.fa-address-card-o { 2017 | font-family: 'Font Awesome 5 Free'; 2018 | font-weight: 400; } 2019 | 2020 | .fa.fa-address-card-o:before { 2021 | content: "\f2bb"; } 2022 | 2023 | .fa.fa-vcard-o { 2024 | font-family: 'Font Awesome 5 Free'; 2025 | font-weight: 400; } 2026 | 2027 | .fa.fa-vcard-o:before { 2028 | content: "\f2bb"; } 2029 | 2030 | .fa.fa-user-circle-o { 2031 | font-family: 'Font Awesome 5 Free'; 2032 | font-weight: 400; } 2033 | 2034 | .fa.fa-user-circle-o:before { 2035 | content: "\f2bd"; } 2036 | 2037 | .fa.fa-user-o { 2038 | font-family: 'Font Awesome 5 Free'; 2039 | font-weight: 400; } 2040 | 2041 | .fa.fa-user-o:before { 2042 | content: "\f007"; } 2043 | 2044 | .fa.fa-id-badge { 2045 | font-family: 'Font Awesome 5 Free'; 2046 | font-weight: 400; } 2047 | 2048 | .fa.fa-drivers-license:before { 2049 | content: "\f2c2"; } 2050 | 2051 | .fa.fa-id-card-o { 2052 | font-family: 'Font Awesome 5 Free'; 2053 | font-weight: 400; } 2054 | 2055 | .fa.fa-id-card-o:before { 2056 | content: "\f2c2"; } 2057 | 2058 | .fa.fa-drivers-license-o { 2059 | font-family: 'Font Awesome 5 Free'; 2060 | font-weight: 400; } 2061 | 2062 | .fa.fa-drivers-license-o:before { 2063 | content: "\f2c2"; } 2064 | 2065 | .fa.fa-quora { 2066 | font-family: 'Font Awesome 5 Brands'; 2067 | font-weight: 400; } 2068 | 2069 | .fa.fa-free-code-camp { 2070 | font-family: 'Font Awesome 5 Brands'; 2071 | font-weight: 400; } 2072 | 2073 | .fa.fa-telegram { 2074 | font-family: 'Font Awesome 5 Brands'; 2075 | font-weight: 400; } 2076 | 2077 | .fa.fa-thermometer-4:before { 2078 | content: "\f2c7"; } 2079 | 2080 | .fa.fa-thermometer:before { 2081 | content: "\f2c7"; } 2082 | 2083 | .fa.fa-thermometer-3:before { 2084 | content: "\f2c8"; } 2085 | 2086 | .fa.fa-thermometer-2:before { 2087 | content: "\f2c9"; } 2088 | 2089 | .fa.fa-thermometer-1:before { 2090 | content: "\f2ca"; } 2091 | 2092 | .fa.fa-thermometer-0:before { 2093 | content: "\f2cb"; } 2094 | 2095 | .fa.fa-bathtub:before { 2096 | content: "\f2cd"; } 2097 | 2098 | .fa.fa-s15:before { 2099 | content: "\f2cd"; } 2100 | 2101 | .fa.fa-window-maximize { 2102 | font-family: 'Font Awesome 5 Free'; 2103 | font-weight: 400; } 2104 | 2105 | .fa.fa-window-restore { 2106 | font-family: 'Font Awesome 5 Free'; 2107 | font-weight: 400; } 2108 | 2109 | .fa.fa-times-rectangle:before { 2110 | content: "\f410"; } 2111 | 2112 | .fa.fa-window-close-o { 2113 | font-family: 'Font Awesome 5 Free'; 2114 | font-weight: 400; } 2115 | 2116 | .fa.fa-window-close-o:before { 2117 | content: "\f410"; } 2118 | 2119 | .fa.fa-times-rectangle-o { 2120 | font-family: 'Font Awesome 5 Free'; 2121 | font-weight: 400; } 2122 | 2123 | .fa.fa-times-rectangle-o:before { 2124 | content: "\f410"; } 2125 | 2126 | .fa.fa-bandcamp { 2127 | font-family: 'Font Awesome 5 Brands'; 2128 | font-weight: 400; } 2129 | 2130 | .fa.fa-grav { 2131 | font-family: 'Font Awesome 5 Brands'; 2132 | font-weight: 400; } 2133 | 2134 | .fa.fa-etsy { 2135 | font-family: 'Font Awesome 5 Brands'; 2136 | font-weight: 400; } 2137 | 2138 | .fa.fa-imdb { 2139 | font-family: 'Font Awesome 5 Brands'; 2140 | font-weight: 400; } 2141 | 2142 | .fa.fa-ravelry { 2143 | font-family: 'Font Awesome 5 Brands'; 2144 | font-weight: 400; } 2145 | 2146 | .fa.fa-eercast { 2147 | font-family: 'Font Awesome 5 Brands'; 2148 | font-weight: 400; } 2149 | 2150 | .fa.fa-eercast:before { 2151 | content: "\f2da"; } 2152 | 2153 | .fa.fa-snowflake-o { 2154 | font-family: 'Font Awesome 5 Free'; 2155 | font-weight: 400; } 2156 | 2157 | .fa.fa-snowflake-o:before { 2158 | content: "\f2dc"; } 2159 | 2160 | .fa.fa-superpowers { 2161 | font-family: 'Font Awesome 5 Brands'; 2162 | font-weight: 400; } 2163 | 2164 | .fa.fa-wpexplorer { 2165 | font-family: 'Font Awesome 5 Brands'; 2166 | font-weight: 400; } 2167 | 2168 | .fa.fa-spotify { 2169 | font-family: 'Font Awesome 5 Brands'; 2170 | font-weight: 400; } 2171 | -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /index_files/font-awesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /index_files/remark-css/robot.css: -------------------------------------------------------------------------------- 1 | .title-slide, title-slide h1, .title-slide h2, .title-slide h3, 2 | .remark-slide .title-slide, 3 | .remark-slide .title-slide h1, 4 | .remark-slide .title-slide h2, 5 | .remark-slide .title-slide h3 { 6 | background-color: #fff; 7 | color: #222; 8 | } 9 | .title-slide h3, 10 | .remark-slide .title-slide h3 { 11 | font-family: 'Roboto Condensed', 'Avenir Next', 'Helvetica Neue', 'Helvetica', sans-serif; 12 | font-weight: 400; 13 | padding-top: 15px; 14 | font-size: 28px; 15 | } 16 | .title-slide h3:nth-of-type(2), 17 | .remark-slide .title-slide h3:nth-of-type(2) { 18 | margin-top: 10px; 19 | font-size: 28px; 20 | } 21 | .title-slide table, 22 | .remark-slide .title-slide table { 23 | padding-top: 35px; 24 | } 25 | .title-slide i.fa, 26 | .remark-slide .title-slide i.fa { 27 | font-size: 2em; 28 | } 29 | a, a > code { 30 | color: #0051BA; 31 | text-decoration: none; 32 | } 33 | a:hover, a:hover > code { 34 | color: #d22; 35 | text-decoration: none; 36 | } 37 | .footnote { 38 | position: absolute; 39 | bottom: 3em; 40 | padding-right: 4em; 41 | font-size: 90%; 42 | } 43 | .remark-code-line-highlighted { background-color: #ffaaff; } 44 | 45 | .inverse { 46 | background-color: #0051BA; 47 | color: #fff; 48 | } 49 | .inverse h1, .inverse h2, .inverse h3 { 50 | color: #fff; 51 | } 52 | /* Two-column layout */ 53 | .left-column { 54 | color: #777; 55 | width: 20%; 56 | height: 92%; 57 | float: left; 58 | } 59 | .left-column h2:last-of-type, .left-column h3:last-child { 60 | color: #000; 61 | } 62 | .right-column { 63 | width: 75%; 64 | float: right; 65 | padding-top: 1em; 66 | } 67 | .pull-left { 68 | float: left; 69 | width: 47%; 70 | } 71 | .pull-right { 72 | float: right; 73 | width: 47%; 74 | } 75 | .pull-right ~ * { 76 | clear: both; 77 | } 78 | img, video, iframe { 79 | max-width: 100%; 80 | } 81 | blockquote { 82 | border-left: solid 5px lightgray; 83 | padding-left: 1em; 84 | } 85 | table { 86 | margin: auto; 87 | border-top: 1px solid #222; 88 | border-bottom: 1px solid #222; 89 | } 90 | table thead th { border-bottom: 1px solid #222; } 91 | th, td { padding: 2px 5px; } 92 | thead, tfoot, tr:nth-child(even) { background: #f0f0f0 } 93 | 94 | @page { margin: 0; } 95 | @media print { 96 | .remark-slide-scaler { 97 | width: 100%; 98 | height: 100%; 99 | transform: scale(1); 100 | top: 0; 101 | left: 0; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /rtweet-workshop.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: No 4 | SaveWorkspace: No 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | 18 | BuildType: Package 19 | PackageUseDevtools: Yes 20 | PackageInstallArgs: --no-multiarch --with-keep.source 21 | PackageRoxygenize: rd,collate,namespace 22 | -------------------------------------------------------------------------------- /script.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "R Notebook" 3 | output: html_notebook 4 | --- 5 | 6 | ## Install 7 | 8 | - Install **{rtweet}** from [CRAN](https://cran.r-project/package=rtweet). 9 | 10 | ```{r} 11 | install.packages("rtweet") 12 | ``` 13 | 14 | - Or install the **development version** from [Github](https://github.com/mkearney/rtweet). 15 | 16 | ```{r} 17 | #devtools::install_github("mkearney/rtweet") 18 | ``` 19 | 20 | - Load **{rtweet}** 21 | 22 | ```{r tidy=FALSE} 23 | library(rtweet) 24 | ``` 25 | 26 | 27 | ## httpuv 28 | 29 | To authorize rtweet's embedded **rstats2twitter** app via web browser, the **{httpuv}** pakage is required 30 | 31 | ```{r} 32 | ## install httpuv for browser-based authentication 33 | install.packages("httpuv") 34 | ``` 35 | 36 | 37 | # 1. Searching for tweets 38 | 39 | ## `search_tweets()` 40 | 41 | Search for one or more keyword(s) 42 | 43 | ```{r} 44 | rds <- search_tweets("rstats data science") 45 | rds 46 | ``` 47 | 48 |
49 | 50 | > *Note*: implicit `AND` between words 51 | 52 | ## `search_tweets()` 53 | 54 | Search for exact phrase 55 | 56 | ```{r} 57 | ## single quotes around doubles 58 | ds <- search_tweets('"data science"') 59 | 60 | ## or escape the quotes 61 | ds <- search_tweets("\"data science\"") 62 | ds 63 | ``` 64 | 65 | ## `search_tweets()` 66 | 67 | Search for keyword(s) **and** phrase 68 | 69 | ```{r} 70 | rpds <- search_tweets("rstats python \"data science\"") 71 | rpds 72 | ``` 73 | 74 | ## `search_tweets()` 75 | 76 | + `search_tweets()` returns 100 most recent matching tweets by default 77 | 78 | + Increase `n` to return more (tip: use intervals of 100) 79 | 80 | ```{r} 81 | rstats <- search_tweets("rstats", n = 10000) 82 | rstats 83 | ``` 84 | 85 | > Rate limit of 18,000 per fifteen minutes 86 | 87 | ## `search_tweets()` 88 | 89 | **PRO TIP #1**: Get the firehose for free by searching for tweets by 90 | verified **or** non-verified tweets 91 | 92 | ```{r} 93 | fff <- search_tweets("filter:verified OR -filter:verified", n = 18000) 94 | fff 95 | ``` 96 | 97 | Visualize second-by-second frequency 98 | 99 | ```{r} 100 | ts_plot(fff, "secs") 101 | ``` 102 | 103 | ## `search_tweets()` 104 | 105 | **PRO TIP #2**: Use search operators provided by Twitter, e.g., 106 | 107 | + filter by language and exclude retweets and replies 108 | 109 | ```{r} 110 | rt <- search_tweets("rstats", lang = "en", 111 | include_rts = FALSE, `-filter` = "replies") 112 | ``` 113 | 114 | + filter only tweets linking to news articles 115 | 116 | ```{r} 117 | nws <- search_tweets("filter:news") 118 | ``` 119 | 120 | ## `search_tweets()` 121 | 122 | + filter only tweets that contain links 123 | 124 | ```{r} 125 | links <- search_tweets("filter:links") 126 | links 127 | ``` 128 | 129 | + filter only tweets that contain video 130 | 131 | ```{r} 132 | vids <- search_tweets("filter:video") 133 | vids 134 | ``` 135 | 136 | ## `search_tweets()` 137 | 138 | + filter only tweets sent `from:{screen_name}` or `to:{screen_name}` certain users 139 | 140 | ```{r} 141 | ## vector of screen names 142 | users <- c("cnnbrk", "AP", "nytimes", 143 | "foxnews", "msnbc", "seanhannity", "maddow") 144 | tousers <- search_tweets(paste0("from:", users, collapse = " OR ")) 145 | tousers 146 | ``` 147 | 148 | ## `search_tweets()` 149 | 150 | + filter only tweets with at least 100 favorites or 100 retweets 151 | 152 | ```{r} 153 | pop <- search_tweets( 154 | "(filter:verified OR -filter:verified) (min_faves:100 OR min_retweets:100)") 155 | ``` 156 | 157 | + filter by the type of device that posted the tweet. 158 | 159 | ```{r} 160 | rt <- search_tweets("lang:en", source = '"Twitter for iPhone"') 161 | ``` 162 | 163 | 164 | ## `search_tweets()` 165 | 166 | **PRO TIP #3**: Search by geolocation (ex: tweets within 25 miles of Columbia, MO) 167 | 168 | ```{r} 169 | como <- search_tweets( 170 | geocode = "38.9517,-92.3341,25mi", n = 100 171 | ) 172 | como 173 | ``` 174 | 175 | ## `search_tweets()` 176 | 177 | Use `lat_lng()` to convert geographical data into `lat` and `lng` variables. 178 | 179 | ```{r} 180 | como <- lat_lng(como) 181 | par(mar = c(0, 0, 0, 0)) 182 | maps::map("state", fill = TRUE, col = "#ffffff", 183 | lwd = .25, mar = c(0, 0, 0, 0), 184 | xlim = c(-96, -89), y = c(35, 41)) 185 | with(como, points(lng, lat, pch = 20, col = "red")) 186 | ``` 187 | 188 | > This code plots geotagged tweets on a map of Missouri 189 | 190 | ## `search_tweets()` 191 | 192 | **PRO TIP #4**: (for developer accounts only) Use `bearer_token()` to increase rate limit to 45,000 per 193 | fifteen minutes. 194 | 195 | ```{r} 196 | mosen <- search_tweets( 197 | "mccaskill OR hawley", 198 | n = 45000, 199 | token = bearer_token() 200 | ) 201 | ``` 202 | 203 | 204 | # 2. User timelines 205 | 206 | ## `get_timeline()` 207 | 208 | Get the most recent tweets posted by a user. 209 | 210 | ```{r} 211 | cnn <- get_timeline("cnn") 212 | ``` 213 | 214 | ## `get_timeline()` 215 | 216 | Get up to the most recent 3,200 tweets (endpoint max) posted by multiple users. 217 | 218 | ```{r} 219 | nws <- get_timeline(c("cnn", "foxnews", "msnbc"), n = 3200) 220 | ``` 221 | 222 | ## `ts_plot()` 223 | 224 | Group by `screen_name` and plot hourly frequencies of tweets. 225 | 226 | ```{r} 227 | nws %>% 228 | dplyr::group_by(screen_name) %>% 229 | ts_plot("hours") 230 | ``` 231 | 232 | 233 | # 3. User favorites 234 | 235 | ## `get_favorites()` 236 | 237 | Get up to the most recent 3,000 tweets favorited by a user. 238 | 239 | ```{r} 240 | kmw_favs <- get_favorites("kearneymw", n = 3000) 241 | ``` 242 | 243 | # 4. Lookup statuses 244 | 245 | ## `lookup_tweets()` 246 | 247 | ```{r} 248 | ## `lookup_tweets()` 249 | status_ids <- c("947235015343202304", "947592785519173637", 250 | "948359545767841792", "832945737625387008") 251 | twt <- lookup_tweets(status_ids) 252 | ``` 253 | 254 | 255 | # 5. Getting friends/followers 256 | 257 | ## Friends/followers 258 | 259 | Twitter's API documentation distinguishes between **friends** and **followers**. 260 | 261 | + **Friend** refers to an account a given user follows 262 | + **Follower** refers to an account following a given user 263 | 264 | ## `get_friends()` 265 | 266 | Get user IDs of accounts **followed by** (AKA friends) [@jack](https://twitter.com/jack), the co-founder and CEO of Twitter. 267 | 268 | ```{r} 269 | fds <- get_friends("jack") 270 | fds 271 | ``` 272 | 273 | ## `get_friends()` 274 | 275 | Get friends of **multiple** users in a single call. 276 | 277 | ```{r} 278 | fds <- get_friends( 279 | c("hadleywickham", "NateSilver538", "Nate_Cohn") 280 | ) 281 | fds 282 | ``` 283 | 284 | ## `get_followers()` 285 | 286 | Get user IDs of accounts **following** (AKA followers) [@mizzou](https://twitter.com/mizzou). 287 | 288 | ```{r} 289 | mu <- get_followers("mizzou") 290 | mu 291 | ``` 292 | 293 | ## `get_followers()` 294 | 295 | Unlike friends (limited by Twitter to 5,000), there is **no limit** on the number of followers. 296 | 297 | To get user IDs of all 55(ish) million followers of @realDonaldTrump, you need two things: 298 | 299 | 1. A stable **internet** connection 300 | 1. **Time** – approximately five and a half days 301 | 302 | ## `get_followers()` 303 | 304 | Get all of Donald Trump's followers. 305 | 306 | ```{r} 307 | ## get all of trump's followers 308 | rdt <- get_followers( 309 | "realdonaldtrump", 310 | n = 56000000, 311 | retryonratelimit = TRUE 312 | ) 313 | ``` 314 | 315 | 316 | 317 | # 6. Lookup users 318 | 319 | ## `lookup_users()` 320 | 321 | Lookup users-level (and most recent tweet) associated with vector of `user_id` or `screen_name`. 322 | 323 | ```{r} 324 | ## vector of users 325 | users <- c("hadleywickham", "NateSilver538", "Nate_Cohn") 326 | 327 | ## lookup users twitter data 328 | usr <- lookup_users(users) 329 | usr 330 | ``` 331 | 332 | ## `search_users()` 333 | 334 | It's also possible to search for users. Twitter will look for matches in user names, screen names, and profile bios. 335 | 336 | ```{r} 337 | ## search for breaking news accounts 338 | bkn <- search_users("breaking news") 339 | bkn 340 | ``` 341 | 342 | 343 | # 7. Lists 344 | 345 | ## `lists_memberships()` 346 | 347 | + Get an account's list memberships (lists that include an account) 348 | 349 | ```{r} 350 | ## lists that include Nate Silver 351 | nsl <- lists_memberships("NateSilver538") 352 | nsl 353 | ``` 354 | 355 | ## `lists_members()` 356 | 357 | + Get all list members (accounts on a list) 358 | 359 | ```{r} 360 | ## all members of congress 361 | cng <- lists_members(owner_user = "cspan", slug = "members-of-congress") 362 | cng 363 | ``` 364 | 365 | 366 | 367 | # 8. Streaming tweets 368 | 369 | ## `stream_tweets()` 370 | 371 | **Sampling**: small random sample (`~ 1%`) of all publicly available tweets 372 | 373 | ```{r} 374 | ss <- stream_tweets("") 375 | ``` 376 | 377 | **Filtering**: search-like query (up to 400 keywords) 378 | 379 | ```{r} 380 | sf <- stream_tweets("mueller,fbi,investigation,trump,realdonaldtrump") 381 | ``` 382 | 383 | ## `stream_tweets()` 384 | 385 | **Tracking**: vector of user ids (up to 5000 user_ids) 386 | 387 | ```{r} 388 | ## user IDs from congress members (lists_members ex output) 389 | st <- stream_tweets(cng$user_id) 390 | ``` 391 | 392 | **Location**: geographical coordinates (1-360 degree location boxes) 393 | 394 | ```{r} 395 | ## world-wide bounding box 396 | sl <- stream_tweets(c(-180, -90, 180, 90)) 397 | ``` 398 | 399 | ## `stream_tweets()` 400 | 401 | The default duration for streams is thirty seconds `timeout = 30` 402 | 403 | + Specify specific stream duration in seconds 404 | 405 | ```{r} 406 | ## stream for 10 minutes 407 | stm <- stream_tweets(timeout = 60 * 10) 408 | ``` 409 | 410 | ## `stream_tweets()` 411 | 412 | Stream JSON data directly to a text file 413 | 414 | ```{r} 415 | stream_tweets(timeout = 60 * 10, 416 | file_name = "random-stream-2018-11-13.json", 417 | parse = FALSE) 418 | ``` 419 | 420 | Read-in a streamed JSON file 421 | 422 | ```{r} 423 | rj <- parse_stream("random-stream-2018-11-13.json") 424 | ``` 425 | 426 | ## `stream_tweets()` 427 | 428 | Stream tweets indefinitely. 429 | 430 | ```{r} 431 | stream_tweets(timeout = Inf, 432 | file_name = "random-stream-2018-11-13.json", 433 | parse = FALSE) 434 | ``` 435 | 436 | ## `lookup_coords()` 437 | 438 | A useful convenience function–though it now requires an API key–for quickly looking up coordinates 439 | 440 | ```{r} 441 | ## stream tweets sent from london 442 | luk1 <- stream_tweets(q = lookup_coords("London, UK"), timeout = 60) 443 | 444 | ## search tweets sent from london 445 | luk2 <- search_tweets(geocode = lookup_coords("London, UK"), n = 1000) 446 | ``` 447 | 448 | 449 | 450 | # Analyzing Twitter data 451 | 452 | 453 | ## Data set 454 | 455 | For these examples, let's gather a data set of iPhone and Android users 456 | 457 | ```{r} 458 | iphone_android <- search_tweets( 459 | '(filter:verified OR -filter:verified) AND (source:"Twitter for iPhone" OR source:"Twitter for Android")', 460 | include_rts = FALSE, 461 | n = 18000 462 | ) 463 | 464 | ## view breakdown of tweet source (device) 465 | table(iphone_android$source) 466 | ``` 467 | 468 | ## Text processing 469 | 470 | Tokenize tweets [into words] 471 | 472 | ```{r} 473 | ## tokenize each tweet into words vecotr 474 | wds <- tokenizers::tokenize_tweets(iphone_android$text) 475 | 476 | ## collapse back into stirngs 477 | txt <- purrr::map_chr(wds, paste, collapse = " ") 478 | 479 | ## get sentiment using afinn dictionary 480 | iphone_android$sent <- syuzhet::get_sentiment( 481 | iphone_android$text, method = "afinn" 482 | ) 483 | ``` 484 | 485 | ## Compare groups 486 | 487 | Group by source and summarize some numeric variables 488 | 489 | ```{r} 490 | iphone_android %>% 491 | group_by(source) %>% 492 | summarise(sent = mean(sent, na.rm = TRUE), 493 | avg_rt = mean(retweet_count, na.rm = TRUE), 494 | avg_fav = mean(favorites_count, na.rm = TRUE), 495 | tweets = mean(statuses_count, na.rm = TRUE), 496 | friends = mean(retweet_count, na.rm = TRUE), 497 | followers = mean(retweet_count, na.rm = TRUE), 498 | ff_rat = (friends + 1) / (friends + followers + 1) 499 | ) 500 | ``` 501 | 502 | ## Features 503 | 504 | Easily automate feature extraction for Twitter data. 505 | 506 | ```{r} 507 | ## install package 508 | remotes::install_github("mkearney/textfeatures") 509 | 510 | ## feature extraction 511 | tf <- textfeatures::textfeatures(iphone_android) 512 | 513 | ## add dependent variable 514 | tf$y <- tweet_source_data$source == "Twitter for iPhone" 515 | ``` 516 | 517 | ## Machine learning 518 | 519 | Run a boosted model 520 | 521 | ```{r} 522 | ## load gbm and estimate model 523 | library(gbm) 524 | m1 <- gbm(y ~ ., data = tf[1:15000, -1], n.trees = 200) 525 | #summary(m1) 526 | 527 | ## generate predictions 528 | p <- predict(m1, newdata = tf[15001:nrow(tf), -1], 529 | type = "response", n.trees = 200) 530 | 531 | ## how'd we do? 532 | table(p > .50, tf$y[15001:nrow(tf)]) 533 | ``` 534 | 535 | ## Tweetbotornot 536 | 537 | A package designed to estimate the probability of an account being a bot. 538 | 539 | ```{r} 540 | ## install from Github 541 | remotes::install_github("mkearney/tweetbotornot") 542 | 543 | ## estimate some accounts 544 | bp <- tweetbotornot::tweetbotornot(c( 545 | "kearneymw", 546 | "realdonaldtrump", 547 | "netflix_bot", 548 | "tidyversetweets", 549 | "thebotlebowski") 550 | ) 551 | bp 552 | ``` 553 | 554 | 555 | 556 | --------------------------------------------------------------------------------