path: /
+category_archive:
+ type: liquid
+ path: /categories/
+tag_archive:
+ type: liquid
+ path: /tags/
+# https://github.com/jekyll/jekyll-archives
+# jekyll-archives:
+# enabled:
+# - categories
+# - tags
+# layouts:
+# category: archive-taxonomy
+# tag: archive-taxonomy
+# permalinks:
+# category: /categories/:name/
+# tag: /tags/:name/
+
+
+# HTML Compression
+# - http://jch.penibelst.de/
+compress_html:
+ clippings: all
+ ignore:
+ envs: development
+
+
+# Defaults
+defaults:
+ # _posts
+ - scope:
+ path: ""
+ type: posts
+ values:
+ layout: single
+ author_profile: # true
+ read_time: true
+ comments: # true
+ share: true
+# related: true
+
+#custom by Chuqiao
+
+theme: minimal-mistakes-jekyll
+
+
+#plugins:
+# - jekyll-remote-theme
+
+
+#remote_theme: benbalter/retlab
\ No newline at end of file
diff --git a/_data/navigation.yml b/_data/navigation.yml
new file mode 100755
index 0000000..74e6e6e
--- /dev/null
+++ b/_data/navigation.yml
@@ -0,0 +1,88 @@
+# main links
+main:
+
+ - url: /
+ title: Home
+
+ - title: About
+ url: /about
+ children:
+ - title: "Board of Directors and Management Committee"
+ url: /about/board-of-directors-trustees
+ - title: "Membership Application"
+ url: /about/membership/application
+ - title: Membership Benefits
+ url: /about/membership/benefits
+
+
+ - title: Activities
+ url: /#
+ children:
+ - title: BSPR Annual Meetings
+ url: /events
+ - title: BSPR Lecturer
+ url: /bspr-lecturer/
+ - title: Membership Renewal 2017
+ url: /membership-renewal-2017/
+ - title: BSPR Newsletters
+ url: /newsletters/
+
+
+ - title: Proteomics
+ url: /#
+ children:
+ - title: Events
+ url: /tessviewer
+ - title: Journals
+ url: /proteomics/journals
+ - title: Society links
+ url: /proteomics/society-links
+ - title: Job adverts
+ url: /proteomics/job-adverts
+
+
+ - url: /bursaries-and-fellowships/
+ title: BSPR Bursaries and Fellowships
+
+ - url: /sponsors/
+ title: Sponsors
+
+
+ - url: /contact
+ title: Contact
+
+
+
+
+
+
+docs:
+ - title: About
+ children:
+ - title: Board of Directors and Management Committee
+ url: /about/board-of-directors-trustees
+ - title: Membership Application
+ url: /about/membership/application
+ - title: "Membership Benefits"
+ url: /about/membership/benefits
+ - title: Proteomics
+ children:
+ - title: Events
+ url: /tessviewer
+ - title: Journals
+ url: /proteomics/journals
+ - title: "Society Links"
+ url: /proteomics/society-links
+ - title: Job Adverts
+ url: /proteomics/job-adverts
+
+ - title: Activities
+ children:
+ - title: BSPR Annual Meetings
+ url: /events/
+ - title: BSPR Lecturer
+ url: /bspr-lecturer/
+ - title: Membership Renewal 2017
+ url: /membership-renewal-2017/
+ - title: BSPR Newsletters
+ url: /newsletters/
\ No newline at end of file
diff --git a/_data/ui-text.yml b/_data/ui-text.yml
new file mode 100755
index 0000000..51692d8
--- /dev/null
+++ b/_data/ui-text.yml
@@ -0,0 +1,1034 @@
+# User interface text and labels
+
+# English (default)
+# -----------------
+en: &DEFAULT_EN
+ page : "Page"
+ pagination_previous : "Previous"
+ pagination_next : "Next"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label : "Toggle Menu"
+ toc_label : "On This Page"
+ ext_link_label : "Direct Link"
+ less_than : "less than"
+ minute_read : "minute read"
+ share_on_label : "Share on"
+ meta_label :
+ tags_label : "Tags:"
+ categories_label : "Categories:"
+ date_label : "Updated:"
+ comments_label : "Leave a Comment"
+ comments_title : "Comments"
+ more_label : "Learn More"
+ related_label : "You May Also Enjoy"
+ follow_label : "Follow:"
+ feed_label : "Feed"
+ powered_by : "Powered by"
+ website_label : "Website"
+ email_label : "Email"
+ recent_posts : "Recent Posts"
+ undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
+ comment_form_info : "Your email address will not be published. Required fields are marked"
+ comment_form_comment_label : "Comment"
+ comment_form_md_info : "Markdown is supported."
+ comment_form_name_label : "Name"
+ comment_form_email_label : "Email address"
+ comment_form_website_label : "Website (optional)"
+ comment_btn_submit : "Submit Comment"
+ comment_btn_submitted : "Submitted"
+ comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
+ comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
+ loading_label : "Loading..."
+ search_placeholder_text : "Enter your search term..."
+ results_found : "Result(s) found"
+ back_to_top : "Back to top"
+en-US:
+ <<: *DEFAULT_EN
+en-CA:
+ <<: *DEFAULT_EN
+en-GB:
+ <<: *DEFAULT_EN
+en-AU:
+ <<: *DEFAULT_EN
+
+# Spanish
+# -------
+es: &DEFAULT_ES
+ page : "Página"
+ pagination_previous : "Anterior"
+ pagination_next : "Siguiente"
+ breadcrumb_home_label : "Inicio"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "Contenidos"
+ ext_link_label : "Enlace"
+ less_than : "menos de"
+ minute_read : "minuto de lectura"
+ share_on_label : "Compartir"
+ meta_label :
+ tags_label : "Etiquetas:"
+ categories_label : "Categorías:"
+ date_label : "Actualizado:"
+ comments_label : "Comentar"
+ comments_title :
+ more_label : "Ver más"
+ related_label : "Podrías ver también"
+ follow_label : "Seguir:"
+ feed_label : "Feed"
+ powered_by : "Powered by"
+ website_label : "Sitio web"
+ email_label : "Email"
+ recent_posts : "Entradas recientes"
+ undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
+ comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos"
+ comment_form_comment_label : "Comentario"
+ comment_form_md_info : "Markdown está soportado."
+ comment_form_name_label : "Nombre"
+ comment_form_email_label : "Dirección de E-mail"
+ comment_form_website_label : "Sitio web (opcional)"
+ comment_btn_submit : "Enviar Commentario"
+ comment_btn_submitted : "Enviado"
+ comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado"
+ comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo"
+ loading_label : "Cargando..."
+es-ES:
+ <<: *DEFAULT_ES
+es-CO:
+ <<: *DEFAULT_ES
+
+# French
+# ------
+fr: &DEFAULT_FR
+ page : "Page"
+ pagination_previous : "Précédent"
+ pagination_next : "Suivant"
+ breadcrumb_home_label : "Accueil"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "Sur cette page"
+ ext_link_label : "Lien direct"
+ less_than : "moins de"
+ minute_read : "minute de lecture"
+ share_on_label : "Partager sur"
+ meta_label :
+ tags_label : "Tags :"
+ categories_label : "Catégories :"
+ date_label : "Mis à jour :"
+ comments_label : "Laisser un commentaire"
+ comments_title :
+ more_label : "Lire plus"
+ related_label : "Vous pourriez aimer aussi"
+ follow_label : "Contact"
+ feed_label : "Flux"
+ powered_by : "Propulsé par"
+ website_label : "Site"
+ email_label : "Email"
+ recent_posts : "Posts récents"
+ undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml"
+ comments_title : "Commentaires"
+ comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués"
+ comment_form_comment_label : "Commentaire"
+ comment_form_md_info : "Markdown est supporté."
+ comment_form_name_label : "Nom"
+ comment_form_email_label : "Adresse mail"
+ comment_form_website_label : "Site web (optionnel)"
+ comment_btn_submit : "Envoyer"
+ comment_btn_submitted : "Envoyé"
+ comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé."
+ comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
+ loading_label : "Chargement..."
+fr-FR:
+ <<: *DEFAULT_FR
+fr-BE:
+ <<: *DEFAULT_FR
+fr-CH:
+ <<: *DEFAULT_FR
+
+# Turkish
+# -------
+tr: &DEFAULT_TR
+ page : "Sayfa"
+ pagination_previous : "Önceki"
+ pagination_next : "Sonraki"
+ breadcrumb_home_label : "Ana Sayfa"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "İçindekiler"
+ ext_link_label : "Doğrudan Bağlantı"
+ less_than : "Şu süreden az: "
+ minute_read : "dakika tahmini okuma süresi"
+ share_on_label : "Paylaş"
+ meta_label :
+ tags_label : "Etiketler:"
+ categories_label : "Kategoriler:"
+ date_label : "Güncelleme tarihi:"
+ comments_label : "Yorum yapın"
+ comments_title : "Yorumlar"
+ more_label : "Daha fazlasını öğrenin"
+ related_label : "Bunlar ilginizi çekebilir:"
+ follow_label : "Takip et:"
+ feed_label : "RSS"
+ powered_by : "Emeği geçenler: "
+ website_label : "Web sayfası"
+ email_label : "E-posta"
+ recent_posts : "Son yazılar"
+ undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi"
+ comment_form_info : "Email adresiniz gösterilmeyecektir. Zorunlu alanlar işaretlenmiştir"
+ comment_form_comment_label : "Yorumunuz"
+ comment_form_md_info : "Markdown desteklenmektedir."
+ comment_form_name_label : "Adınız"
+ comment_form_email_label : "Email adresiniz"
+ comment_form_website_label : "Websiteniz (opsiyonel)"
+ comment_btn_submit : "Yorum Yap"
+ comment_btn_submitted : "Gönderildi"
+ comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir."
+ comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin."
+ loading_label : "Yükleniyor..."
+tr-TR:
+ <<: *DEFAULT_TR
+
+# Portuguese
+# ----------
+pt: &DEFAULT_PT
+ page : "Página"
+ pagination_previous : "Anterior"
+ pagination_next : "Seguinte"
+ breadcrumb_home_label : "Início"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "Nesta Página"
+ ext_link_label : "Link Direto"
+ less_than : "menos de"
+ minute_read : "minutos de leitura"
+ share_on_label : "Partilhar no"
+ meta_label :
+ tags_label : "Etiquetas:"
+ categories_label : "Categorias:"
+ date_label : "Atualizado:"
+ comments_label : "Deixe um Comentário"
+ comments_title : "Comentários"
+ more_label : "Saber mais"
+ related_label : "Também pode gostar de"
+ follow_label : "Siga:"
+ feed_label : "Feed"
+ powered_by : "Feito com"
+ website_label : "Site"
+ email_label : "Email"
+ recent_posts : "Artigos Recentes"
+ undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
+ comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados"
+ comment_form_comment_label : "Comentário"
+ comment_form_md_info : "Markdown é suportado."
+ comment_form_name_label : "Nome"
+ comment_form_email_label : "Endereço Email"
+ comment_form_website_label : "Site (opcional)"
+ comment_btn_submit : "Sumbeter Comentário"
+ comment_btn_submitted : "Submetido"
+ comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado."
+ comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente."
+ loading_label : "A carregar..."
+pt-PT:
+ <<: *DEFAULT_PT
+# Brazilian Portuguese
+pt-BR:
+ page : "Página"
+ pagination_previous : "Anterior"
+ pagination_next : "Próxima"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "Nesta página"
+ ext_link_label : "Link direto"
+ less_than : "menos que"
+ minute_read : "minuto(s) de leitura"
+ share_on_label : "Compartilhe em"
+ meta_label :
+ tags_label : "Tags:"
+ categories_label : "Categorias:"
+ date_label : "Atualizado em:"
+ comments_label : "Deixe um comentário"
+ comments_title :
+ more_label : "Aprenda mais"
+ related_label : "Talvez você goste também"
+ follow_label : "Acompanhe em"
+ feed_label : "Feed"
+ powered_by : "Feito com"
+ website_label : "Site"
+ email_label : "Email"
+ recent_posts : "Postagens recentes"
+ undefined_wpm : "Parâmetro indefinido em words_per_minute no _config.yml"
+ comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados"
+ comment_form_comment_label : "Comentário"
+ comment_form_md_info : "Markdown é suportado."
+ comment_form_name_label : "Nome"
+ comment_form_email_label : "Email"
+ comment_form_website_label : "Site (opcional)"
+ comment_btn_submit : "Enviar Comentário"
+ comment_btn_submitted : "Enviado"
+ comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado."
+ comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
+ loading_label : "Carregando..."
+
+# Italian
+# -------
+it: &DEFAULT_IT
+ page : "Pagina"
+ pagination_previous : "Precedente"
+ pagination_next : "Prossima"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label :
+ toc_label : "Indice della pagina"
+ ext_link_label : "Link"
+ less_than : "meno di"
+ minute_read : "minuto/i di lettura"
+ share_on_label : "Condividi"
+ meta_label :
+ tags_label : "Tags:"
+ categories_label : "Categorie:"
+ date_label : "Aggiornato:"
+ comments_label : "Scrivi un commento"
+ comments_title :
+ more_label : "Scopri di più"
+ related_label : "Potrebbe Piacerti Anche"
+ follow_label : "Segui:"
+ feed_label : "Feed"
+ powered_by : "Powered by"
+ website_label : "Website"
+ email_label : "Email"
+ recent_posts : "Articoli Recenti"
+ undefined_wpm : "Parametro words_per_minute non definito in _config.yml"
+ comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori"
+ comment_form_comment_label : "Commenta"
+ comment_form_md_info : "Il linguaggio Markdown è supportato"
+ comment_form_name_label : "Nome"
+ comment_form_email_label : "Indirizzo email"
+ comment_form_website_label : "Sito Web (opzionale)"
+ comment_btn_submit : "Invia commento"
+ comment_btn_submitted : "Inviato"
+ comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato."
+ comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova."
+ loading_label : "Caricamento..."
+it-IT:
+ <<: *DEFAULT_IT
+
+# Chinese (zh-CN Chinese - China)
+# --------------------------------
+zh: &DEFAULT_ZH_HANS
+ page : "页面"
+ pagination_previous : "向前"
+ pagination_next : "向后"
+ breadcrumb_home_label : "首页"
+ breadcrumb_separator : "/"
+ menu_label : "切换菜单"
+ toc_label : "在本页上"
+ ext_link_label : "直接链接"
+ less_than : "少于"
+ minute_read : "分钟读完"
+ share_on_label : "分享"
+ meta_label :
+ tags_label : "标签:"
+ categories_label : "分类:"
+ date_label : "更新时间:"
+ comments_label : "留下评论"
+ comments_title : "评论"
+ more_label : "了解更多"
+ related_label : "猜您还喜欢"
+ follow_label : "关注:"
+ feed_label : "Feed"
+ powered_by : "技术来自于"
+ website_label : "网站"
+ email_label : "电子邮箱"
+ recent_posts : "最新文章"
+ undefined_wpm : "_config.yml配置中words_per_minute字段未定义"
+ comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。"
+ comment_form_comment_label : "评论"
+ comment_form_md_info : "Markdown语法已支持。"
+ comment_form_name_label : "姓名"
+ comment_form_email_label : "电子邮箱"
+ comment_form_website_label : "网站(可选)"
+ comment_btn_submit : "提交评论"
+ comment_btn_submitted : "已提交"
+ comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。"
+ comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。"
+ loading_label : "正在加载..."
+zh-CN:
+ <<: *DEFAULT_ZH_HANS
+zh-SG:
+ <<: *DEFAULT_ZH_HANS
+# Taiwan (Traditional Chinese)
+zh-TW: &DEFAULT_ZH_HANT
+ page : "頁面"
+ pagination_previous : "較舊"
+ pagination_next : "較新"
+ breadcrumb_home_label : "首頁"
+ breadcrumb_separator : "/"
+ menu_label : "切換選單"
+ toc_label : "本頁"
+ ext_link_label : "外部連結"
+ less_than : "少於"
+ minute_read : "分鐘閱讀"
+ share_on_label : "分享到"
+ meta_label :
+ tags_label : "標籤:"
+ categories_label : "分類:"
+ date_label : "更新時間:"
+ comments_label : "留言"
+ comments_title : "留言內容"
+ more_label : "了解更多"
+ related_label : "猜您有與趣"
+ follow_label : "追蹤:"
+ feed_label : "RSS Feed"
+ powered_by : "Powered by"
+ website_label : "網站"
+ email_label : "電子信箱"
+ recent_posts : "最新文章"
+ undefined_wpm : "_config.yml 中未定義 words_per_minute"
+ comment_form_info : "您的電子信箱不會被公開. 必填部份已標記"
+ comment_form_comment_label : "留言內容"
+ comment_form_md_info : "支援Markdown語法。"
+ comment_form_name_label : "名字"
+ comment_form_email_label : "電子信箱帳號"
+ comment_form_website_label : "網頁 (可選填)"
+ comment_btn_submit : "送出留言"
+ comment_btn_submitted : "已送出"
+ comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。"
+ comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。"
+ loading_label : "載入中..."
+zh-HK:
+ <<: *DEFAULT_ZH_HANT
+
+# German / Deutsch
+# ----------------
+de: &DEFAULT_DE
+ page : "Seite"
+ pagination_previous : "Vorherige"
+ pagination_next : "Nächste"
+ breadcrumb_home_label : "Start"
+ breadcrumb_separator : "/"
+ menu_label : "Menü ein-/ausschalten"
+ toc_label : "Auf dieser Seite"
+ ext_link_label : "Direkter Link"
+ less_than : "weniger als"
+ minute_read : "Minuten zum lesen"
+ share_on_label : "Teilen auf"
+ meta_label :
+ tags_label : "Tags:"
+ categories_label : "Kategorien:"
+ date_label : "Aktualisiert:"
+ comments_label : "Hinterlassen Sie einen Kommentar"
+ comments_title : "Kommentare"
+ more_label : "Mehr anzeigen"
+ related_label : "Ihnen gefällt vielleicht auch"
+ follow_label : "Folgen:"
+ feed_label : "Feed"
+ powered_by : "Möglich durch"
+ website_label : "Webseite"
+ email_label : "E-Mail"
+ recent_posts : "Aktuelle Beiträge"
+ undefined_wpm : "Undefinierter Parameter words_per_minute in _config.yml"
+ comment_form_info : "Ihre E-Mail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert"
+ comment_form_comment_label : "Kommentar"
+ comment_form_md_info : "Markdown wird unterstützt."
+ comment_form_name_label : "Name"
+ comment_form_email_label : "E-Mail-Addresse"
+ comment_form_website_label : "Webseite (optional)"
+ comment_btn_submit : "Kommentar absenden"
+ comment_btn_submitted : "Versendet"
+ comment_success_msg : "Danke für Ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde."
+ comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen Sie alle benötigten Felder aus und versuchen Sie es erneut."
+ loading_label : "Lade..."
+ search_placeholder_text : "Suchbegriff eingeben..."
+ results_found : "Ergebnis(se) gefunden"
+de-DE:
+ <<: *DEFAULT_DE
+de-AT:
+ <<: *DEFAULT_DE
+de-CH:
+ <<: *DEFAULT_DE
+de-BE:
+ <<: *DEFAULT_DE
+de-LI:
+ <<: *DEFAULT_DE
+de-LU:
+ <<: *DEFAULT_DE
+
+# Nepali (Nepal)
+# --------------
+ne: &DEFAULT_NE
+ page : "पृष्ठ"
+ pagination_previous : "अघिल्लो"
+ pagination_next : "अर्को"
+ breadcrumb_home_label : "गृह"
+ breadcrumb_separator : "/"
+ menu_label : "टगल मेनु"
+ toc_label : "यो पृष्ठमा"
+ ext_link_label : "सिधा सम्पर्क"
+ less_than : "कम्तिमा"
+ minute_read : "मिनेट पढ्नुहोस्"
+ share_on_label : "शेयर गर्नुहोस्"
+ meta_label :
+ tags_label : "ट्यागहरू:"
+ categories_label : "वर्गहरु:"
+ date_label : "अद्यावधिक:"
+ comments_label : "टिप्पणी दिनुहोस्"
+ comments_title : "टिप्पणीहरू"
+ more_label : "अझै सिक्नुहोस्"
+ related_label : "तपाईं रुचाउन सक्नुहुन्छ "
+ follow_label : "पछ्याउनुहोस्:"
+ feed_label : "फिड"
+ powered_by : "Powered by"
+ website_label : "वेबसाइट"
+ email_label : "इमेल"
+ recent_posts : "ताजा लेखहरु"
+ undefined_wpm : "अपरिभाषित प्यारामिटर शब्दहरू_प्रति_मिनेट at _config.yml"
+ comment_form_info : "तपाइँको इमेल ठेगाना प्रकाशित गरिने छैन।आवश्यक जानकारीहरुमा चिन्ह लगाइको छ"
+ comment_form_comment_label : "टिप्पणी"
+ comment_form_md_info : "मार्कडाउन समर्थित छ।"
+ comment_form_name_label : "नाम"
+ comment_form_email_label : "इमेल ठेगाना"
+ comment_form_website_label : "वेबसाइट (वैकल्पिक)"
+ comment_btn_submit : "टिप्पणी दिनुहोस् "
+ comment_btn_submitted : "टिप्पणी भयो"
+ comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।"
+ comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।"
+ loading_label : "लोड हुँदैछ ..."
+ne-NP:
+ <<: *DEFAULT_NE
+
+# Korean
+# ------
+ko: &DEFAULT_KO
+ page : "페이지"
+ pagination_previous : "이전"
+ pagination_next : "다음"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label : "토글 메뉴"
+ toc_label : "On This Page"
+ ext_link_label : "직접 링크"
+ less_than : "최대"
+ minute_read : "분 소요"
+ share_on_label : "공유하기"
+ meta_label :
+ tags_label : "태그:"
+ categories_label : "카테고리:"
+ date_label : "업데이트:"
+ comments_label : "댓글남기기"
+ comments_title : "댓글"
+ more_label : "더 보기"
+ related_label : "참고"
+ follow_label : "팔로우:"
+ feed_label : "피드"
+ powered_by : "Powered by"
+ website_label : "웹사이트"
+ email_label : "이메일"
+ recent_posts : "최근 포스트"
+ undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
+ comment_form_info : "이메일은 공개되지 않습니다. 작성 필요 필드:"
+ comment_form_comment_label : "댓글"
+ comment_form_md_info : "마크다운을 지원합니다."
+ comment_form_name_label : "이름"
+ comment_form_email_label : "이메일"
+ comment_form_website_label : "웹사이트(선택사항)"
+ comment_btn_submit : "댓글 등록"
+ comment_btn_submitted : "등록됨"
+ comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다."
+ comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요."
+ loading_label : "로딩중..."
+ko-KR:
+ <<: *DEFAULT_KO
+
+# Russian / Русский
+# -----------------
+ru: &DEFAULT_RU
+ page : "Страница"
+ pagination_previous : "Предыдущая"
+ pagination_next : "Следующая"
+ breadcrumb_home_label : "Главная"
+ breadcrumb_separator : "/"
+ menu_label : "Выпадающее меню"
+ toc_label : "Содержание"
+ ext_link_label : "Прямая ссылка"
+ less_than : "менее"
+ minute_read : "мин на чтение"
+ share_on_label : "Поделиться"
+ meta_label :
+ tags_label : "Метки:"
+ categories_label : "Разделы:"
+ date_label : "Дата изменения:"
+ comments_label : "Оставить комментарий"
+ comments_title : "Комментарии"
+ more_label : "Читать далее"
+ related_label : "Вам также может понравиться"
+ follow_label : "Связаться со мной:"
+ feed_label : "RSS-лента"
+ powered_by : "Сайт работает на"
+ website_label : "Сайт"
+ email_label : "Электронная почта"
+ recent_posts : "Свежие записи"
+ undefined_wpm : "Не определён параметр words_per_minute в _config.yml"
+ comment_form_info : "Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены"
+ comment_form_comment_label : "Комментарий"
+ comment_form_md_info : "Поддерживается синтаксис Markdown."
+ comment_form_name_label : "Имя"
+ comment_form_email_label : "Электронная почта"
+ comment_form_website_label : "Ссылка на сайт (необязательно)"
+ comment_btn_submit : "Оставить комментарий"
+ comment_btn_submitted : "Отправлено"
+ comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки."
+ comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова."
+ loading_label : "Отправка..."
+ search_placeholder_text : "Введите поисковый запрос..."
+ results_found : "Найдено"
+ru-RU:
+ <<: *DEFAULT_RU
+
+# Lithuanian / Lietuviškai
+# ------------------------
+lt: &DEFAULT_LT
+ page : "Puslapis"
+ pagination_previous : "Ankstesnis"
+ pagination_next : "Sekantis"
+ breadcrumb_home_label : "Pagrindinis"
+ breadcrumb_separator : "/"
+ menu_label : "Meniu rodymas"
+ toc_label : "Turinys"
+ ext_link_label : "Tiesioginė nuoroda"
+ less_than : "mažiau nei"
+ minute_read : "min. skaitymo"
+ share_on_label : "Pasidalinti"
+ meta_label :
+ tags_label : "Žymės:"
+ categories_label : "Kategorijos:"
+ date_label : "Atnaujinta:"
+ comments_label : "Palikti komentarą"
+ comments_title : "Komentaras"
+ more_label : "Skaityti daugiau"
+ related_label : "Taip pat turėtų patikti"
+ follow_label : "Sekti:"
+ feed_label : "Šaltinis"
+ powered_by : "Sukurta su"
+ website_label : "Tinklapis"
+ email_label : "El. paštas"
+ recent_posts : "Naujausi įrašai"
+ undefined_wpm : "Nedeklaruotas parametras words_per_minute faile _config.yml"
+ comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti."
+ comment_form_comment_label : "Komentaras"
+ comment_form_md_info : "Markdown palaikomas."
+ comment_form_name_label : "Vardas"
+ comment_form_email_label : "El. paštas"
+ comment_form_website_label : "Tinklapis (nebūtina)"
+ comment_btn_submit : "Komentuoti"
+ comment_btn_submitted : "Įrašytas"
+ comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas."
+ comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą."
+ loading_label : "Kraunama..."
+lt-LT:
+ <<: *DEFAULT_LT
+
+# Greek
+# -----
+gr: &DEFAULT_GR
+ page : "Σελίδα"
+ pagination_previous : "Προηγούμενo"
+ pagination_next : "Επόμενo"
+ breadcrumb_home_label : "Αρχική"
+ breadcrumb_separator : "/"
+ menu_label : "Μενού"
+ toc_label : "Περιεχόμενα"
+ ext_link_label : "Εξωτερικός Σύνδεσμος"
+ less_than : "Λιγότερο από"
+ minute_read : "λεπτά ανάγνωσης"
+ share_on_label : "Μοιραστείτε το"
+ meta_label :
+ tags_label : "Ετικέτες:"
+ categories_label : "Κατηγορίες:"
+ date_label : "Ενημερώθηκε:"
+ comments_label : "Αφήστε ένα σχόλιο"
+ comments_title : "Σχόλια"
+ more_label : "Διάβαστε περισσότερα"
+ related_label : "Σχετικές αναρτήσεις"
+ follow_label : "Ακολουθήστε:"
+ feed_label : "RSS Feed"
+ powered_by : "Δημιουργήθηκε με"
+ website_label : "Ιστοσελίδα"
+ email_label : "Email"
+ recent_posts : "Τελευταίες αναρτήσεις"
+ undefined_wpm : "Δεν έχει οριστεί η παράμετρος words_per_minute στο αρχείο _config.yml"
+ comment_form_info : "Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα απαιτούμενα πεδία εμφανίζονται με αστερίσκο"
+ comment_form_comment_label : "Σχόλιο"
+ comment_form_md_info : "Το πεδίο υποστηρίζει Markdown."
+ comment_form_name_label : "Όνομα"
+ comment_form_email_label : "Διεύθυνση email"
+ comment_form_website_label : "Ιστοσελίδα (προαιρετικό)"
+ comment_btn_submit : "Υπόβαλε ένα σχόλιο"
+ comment_btn_submitted : "Έχει υποβληθεί"
+ comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί."
+ comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά."
+ loading_label : "Φόρτωση..."
+ search_placeholder_text : "Εισάγετε όρο αναζήτησης..."
+ results_found : "Αποτελέσματα"
+gr-GR:
+ <<: *DEFAULT_GR
+
+# Swedish
+# -------
+sv: &DEFAULT_SV
+ page : "Sidan"
+ pagination_previous : "Föregående"
+ pagination_next : "Nästa"
+ breadcrumb_home_label : "Hem"
+ breadcrumb_separator : "/"
+ menu_label : "Meny ridå"
+ toc_label : "På denna sida"
+ ext_link_label : "Direkt länk"
+ less_than : "mindre än"
+ minute_read : "minut läsning"
+ share_on_label : "Dela på"
+ meta_label :
+ tags_label : "Taggar:"
+ categories_label : "Kategorier:"
+ date_label : "Uppdaterades:"
+ comments_label : "Lämna en kommentar"
+ comments_title : "Kommentarer"
+ more_label : "Lär dig mer"
+ related_label : "Du kanske vill även läsa:"
+ follow_label : "Följ:"
+ feed_label : "Flöde"
+ powered_by : "Framställd med"
+ website_label : "Webbsida"
+ email_label : "E-post"
+ recent_posts : "Senaste inlägg"
+ undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml"
+ comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade."
+ comment_form_comment_label : "Kommentar"
+ comment_form_md_info : "Använd Markdown för text-formateringen."
+ comment_form_name_label : "Namn"
+ comment_form_email_label : "E-post adress"
+ comment_form_website_label : "Webdsida (valfritt)"
+ comment_btn_submit : "Skicka en kommentar"
+ comment_btn_submitted : "Kommentaren har tagits emot"
+ comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts."
+ comment_error_msg : "Tyvärr det har blivit något fel i en av fälten, se till att du fyller i alla rutor och försök igen."
+ loading_label : "Laddar..."
+sv-SE:
+ <<: *DEFAULT_SV
+sv-FI:
+ <<: *DEFAULT_SV
+
+# Dutch
+# -----
+nl: &DEFAULT_NL
+ page : "Pagina"
+ pagination_previous : "Vorige"
+ pagination_next : "Volgende"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label : "Wissel Menu"
+ toc_label : "Op deze pagina"
+ ext_link_label : "Directe Link"
+ less_than : "minder dan"
+ minute_read : "minuut gelezen"
+ share_on_label : "Deel op"
+ meta_label :
+ tags_label : "Labels:"
+ categories_label : "Categorieën:"
+ date_label : "Bijgewerkt:"
+ comments_label : "Laat een reactie achter"
+ comments_title : "Commentaren"
+ more_label : "Meer informatie"
+ related_label : "Bekijk ook eens"
+ follow_label : "Volg:"
+ feed_label : "Feed"
+ powered_by : "Aangedreven door"
+ website_label : "Website"
+ email_label : "Email"
+ recent_posts : "Recente berichten"
+ undefined_wpm : "Niet gedefinieerde parameter words_per_minute bij _config.yml"
+ comment_form_info : "Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd"
+ comment_form_comment_label : "Commentaar"
+ comment_form_md_info : "Markdown wordt ondersteund."
+ comment_form_name_label : "Naam"
+ comment_form_email_label : "E-mailadres"
+ comment_form_website_label : "Website (optioneel)"
+ comment_btn_submit : "Commentaar toevoegen"
+ comment_btn_submitted : "Toegevoegd"
+ comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd."
+ comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw."
+ loading_label : "Laden..."
+nl-BE:
+ <<: *DEFAULT_NL
+nl-NL:
+ <<: *DEFAULT_NL
+
+# Indonesian
+# ----------
+id: &DEFAULT_ID
+ page : "Halaman"
+ pagination_previous : "Kembali"
+ pagination_next : "Maju"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label : "Menu Toggle"
+ toc_label : "Pada Halaman Ini"
+ ext_link_label : "Link langsung"
+ less_than : "Kurang dari"
+ minute_read : "Waktu baca"
+ share_on_label : "Berbagi di"
+ meta_label :
+ tags_label : "Golongan:"
+ categories_label : "Kategori:"
+ date_label : "Diupdate:"
+ comments_label : "Tinggalkan komentar"
+ comments_title : "Komentar"
+ more_label : "Pelajari lagi"
+ related_label : "Anda juga akan suka"
+ follow_label : "Ikuti:"
+ feed_label : "Feed"
+ powered_by : "Didukung oleh"
+ website_label : "Website"
+ email_label : "Email"
+ recent_posts : "Posting terbaru"
+ undefined_wpm : "Parameter terdeskripsi words_per_minute di _config.yml"
+ comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai"
+ comment_form_comment_label : "Komentar"
+ comment_form_md_info : "Markdown disupport."
+ comment_form_name_label : "Nama"
+ comment_form_email_label : "Alamat email"
+ comment_form_website_label : "Website (opsional)"
+ comment_btn_submit : "Submit Komentar"
+ comment_btn_submitted : "Telah disubmit"
+ comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui."
+ comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali."
+ loading_label : "Sedang meload..."
+id-ID:
+ <<: *DEFAULT_ID
+
+# Vietnamese
+# ----------
+vi: &DEFAULT_VI
+ page : "Trang"
+ pagination_previous : "Trước"
+ pagination_next : "Sau"
+ breadcrumb_home_label : "Trang chủ"
+ breadcrumb_separator : "/"
+ menu_label : "Menu"
+ toc_label : "Tại trang này"
+ ext_link_label : "Đường dẫn trực tiếp"
+ less_than : "nhỏ hơn"
+ minute_read : "phút đọc"
+ share_on_label : "Chia sẻ tại"
+ meta_label :
+ tags_label : "Nhãn:"
+ categories_label : "Chủ đề:"
+ date_label : "Cập nhật:"
+ comments_label : "Để lại bình luận"
+ comments_title : "Bình luận"
+ more_label : "Mở rộng"
+ related_label : "Có thể bạn cũng thích"
+ follow_label : "Theo dõi:"
+ feed_label : "Feed"
+ powered_by : "Được hỗ trợ bởi"
+ website_label : "Website"
+ email_label : "Email"
+ recent_posts : "Bài viết mới"
+ undefined_wpm : "Chưa định nghĩa thông số words_per_minute tại _config.yml"
+ comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu."
+ comment_form_comment_label : "Bình luận"
+ comment_form_md_info : "Hỗ trợ Markdown."
+ comment_form_name_label : "Tên"
+ comment_form_email_label : "Địa chỉ email"
+ comment_form_website_label : "Website (không bắt buộc)"
+ comment_btn_submit : "Gửi bình luận"
+ comment_btn_submitted : "Đã được gửi"
+ comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt."
+ comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại."
+ loading_label : "Đang tải..."
+vi-VN:
+ <<: *DEFAULT_VI
+
+# Danish
+# ------
+da: &DEFAULT_DA
+ page : "Side"
+ pagination_previous : "Forrige"
+ pagination_next : "Næste"
+ breadcrumb_home_label : "Home"
+ breadcrumb_separator : "/"
+ menu_label : "Vis/skjul menu"
+ toc_label : "På denne side"
+ ext_link_label : "Direkte link"
+ less_than : "mindre end"
+ minute_read : "minutters læsning"
+ share_on_label : "Del på"
+ meta_label :
+ tags_label : "Nøgleord:"
+ categories_label : "Kategorier:"
+ date_label : "Opdateret:"
+ comments_label : "Skriv en kommentar"
+ comments_title : "Kommentarer"
+ more_label : "Lær mere"
+ related_label : "Måske kan du også lide"
+ follow_label : "Følg:"
+ feed_label : "Feed"
+ powered_by : "Drives af"
+ website_label : "Website"
+ email_label : "E-mail"
+ recent_posts : "Seneste indlæg"
+ undefined_wpm : "Parameteren words_per_minute er ikke defineret i _config.yml"
+ comment_form_info : "Din e-mail bliver ikke offentliggjort. Obligatoriske felter er markeret"
+ comment_form_comment_label : "Kommentar"
+ comment_form_md_info : "Markdown er understøttet."
+ comment_form_name_label : "Navn"
+ comment_form_email_label : "E-mail"
+ comment_form_website_label : "Website (frivillig)"
+ comment_btn_submit : "Send kommentar"
+ comment_btn_submitted : "Sendt"
+ comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt."
+ comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt."
+ loading_label : "Indlæser..."
+ search_placeholder_text : "Hvad leder du efter..."
+ results_found : "Resultat(er) fundet"
+ back_to_top : "Tilbage til toppen"
+da-DK:
+ <<: *DEFAULT_DA
+
+# Polish
+# ------
+pl: &DEFAULT_PL
+ page : "Strona"
+ pagination_previous : "Poprzednia"
+ pagination_next : "Następna"
+ breadcrumb_home_label : "Strona główna"
+ breadcrumb_separator : "/"
+ menu_label : "Przełącz menu"
+ toc_label : "Spis treści"
+ ext_link_label : "Link bezpośredni"
+ less_than : "mniej niż"
+ minute_read : "minut(y)"
+ share_on_label : "Udostępnij"
+ meta_label :
+ tags_label : "Tagi:"
+ categories_label : "Kategorie:"
+ date_label : "Ostatnia aktualizacja:"
+ comments_label : "Zostaw komentarz"
+ comments_title : "Komentarze"
+ more_label : "Dowiedz się więcej"
+ related_label : "Także może Ci się spodobać"
+ follow_label : "Śledź:"
+ feed_label : "Feed"
+ powered_by : "Powstało dzięki"
+ website_label : "Strona"
+ email_label : "Email"
+ recent_posts : "Najnowsze wpisy"
+ undefined_wpm : "Parametr words_per_minute nie został zdefiniowany w _config.yml."
+ comment_form_info : "Twój adres email nie będzie udostępiony. Wymagane pola są oznaczone."
+ comment_form_comment_label : "Skomentuj"
+ comment_form_md_info : "Markdown jest wspierany"
+ comment_form_name_label : "Imię"
+ comment_form_email_label : "Adres email"
+ comment_form_website_label : "Strona www (opcjonalna)"
+ comment_btn_submit : "Skomentuj"
+ comment_btn_submitted : "Komentarz dodany"
+ comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji."
+ comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie."
+ loading_label : "Trwa ładowanie strony..."
+pl-PL:
+ <<: *DEFAULT_PL
+
+# Japanese
+# --------
+ja: &DEFAULT_JA
+ page : "ページ"
+ pagination_previous : "前へ"
+ pagination_next : "次へ"
+ breadcrumb_home_label : "ホーム"
+ breadcrumb_separator : "/"
+ menu_label : "メニュー"
+ toc_label : "目次"
+ ext_link_label : "リンク"
+ less_than :
+ minute_read :
+ share_on_label : "共有"
+ meta_label :
+ tags_label : "タグ:"
+ categories_label : "カテゴリー:"
+ date_label : "更新日時:"
+ comments_label : "コメントする"
+ comments_title : "コメント"
+ more_label : "さらに詳しく"
+ related_label : "関連記事"
+ follow_label : "フォロー"
+ feed_label :
+ powered_by :
+ website_label :
+ email_label :
+ recent_posts : "最近の投稿"
+ undefined_wpm : "パラメータ words_per_minute が _config.yml で定義されていません"
+ comment_form_info : "メールアドレスが公開されることはありません。次の印のある項目は必ず入力してください:"
+ comment_form_comment_label : "コメント"
+ comment_form_md_info : "Markdown を使用できます"
+ comment_form_name_label : "名前"
+ comment_form_email_label : "メールアドレス"
+ comment_form_website_label : "URL (任意)"
+ comment_btn_submit : "コメントを送信する"
+ comment_btn_submitted : "送信しました"
+ comment_success_msg : "コメントありがとうございます! コメントは承認されるとページに表示されます。"
+ comment_error_msg : "送信エラーです。必須項目がすべて入力されていることを確認して再送信してください。"
+ loading_label : "読み込み中..."
+ search_placeholder_text : "検索キーワードを入力してください..."
+ results_found : "件"
+ja-JP:
+ <<: *DEFAULT_JA
+
+# Slovak
+# -----------------
+sk: &DEFAULT_SK
+ page : "Stránka"
+ pagination_previous : "Predošlá"
+ pagination_next : "Ďalšia"
+ breadcrumb_home_label : "Domov"
+ breadcrumb_separator : "/"
+ menu_label : "Menu"
+ toc_label : "Obsah"
+ ext_link_label : "Priamy odkaz"
+ less_than : "menej ako"
+ minute_read : "minút"
+ share_on_label : "Zdieľaj na"
+ meta_label :
+ tags_label : "Tagy:"
+ categories_label : "Kategórie:"
+ date_label : "Aktualizované:"
+ comments_label : "Zanechaj odkaz"
+ comments_title : "Komentáre"
+ more_label : "Dozvedieť sa viac"
+ related_label : "Podobné články"
+ follow_label : "Sleduj:"
+ feed_label : "Zoznam"
+ powered_by : "Stránka vytvorená pomocou"
+ website_label : "Web stránka"
+ email_label : "Email"
+ recent_posts : "Najnovšie príspevky"
+ undefined_wpm : "Nedefinovaný parameter words_per_minute v _config.yml"
+ comment_form_info : "Tvoja emailová adresa nebude publikovaná. Požadované polia sú označené"
+ comment_form_comment_label : "Komentár"
+ comment_form_md_info : "Markdown je podporovaný."
+ comment_form_name_label : "Meno"
+ comment_form_email_label : "Emailová adresa"
+ comment_form_website_label : "Webstránka (voliteľné)"
+ comment_btn_submit : "Vlož komentár"
+ comment_btn_submitted : "Vložený"
+ comment_success_msg : "Ďakujem za tvoj komentár! Po schválení bude zobrazený na stránke."
+ comment_error_msg : "Prepáč, pri ukladaní nastala chyba. Ubezpeč sa prosím, že si vyplnil všetky požadované polia a skús znova."
+ loading_label : "Načítava sa..."
+ search_placeholder_text : "Zadaj hľadaný výraz..."
+ results_found : "Nájdených výsledkov"
+ back_to_top : "Na začiatok stránky"
+sk-SK:
+ <<: *DEFAULT_SK
+
+# Another locale
+# --------------
+#
diff --git a/_includes/analytics-providers/custom.html b/_includes/analytics-providers/custom.html
new file mode 100755
index 0000000..c34b97a
--- /dev/null
+++ b/_includes/analytics-providers/custom.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/_includes/analytics-providers/google-gtag.html b/_includes/analytics-providers/google-gtag.html
new file mode 100755
index 0000000..16d0cf1
--- /dev/null
+++ b/_includes/analytics-providers/google-gtag.html
@@ -0,0 +1,9 @@
+
+
+
diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html
new file mode 100755
index 0000000..58d3e51
--- /dev/null
+++ b/_includes/analytics-providers/google-universal.html
@@ -0,0 +1,10 @@
+
diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html
new file mode 100755
index 0000000..99412b0
--- /dev/null
+++ b/_includes/analytics-providers/google.html
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/_includes/analytics.html b/_includes/analytics.html
new file mode 100755
index 0000000..371469f
--- /dev/null
+++ b/_includes/analytics.html
@@ -0,0 +1,14 @@
+{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %}
+
+{% case site.analytics.provider %}
+{% when "google" %}
+ {% include /analytics-providers/google.html %}
+{% when "google-universal" %}
+ {% include /analytics-providers/google-universal.html %}
+{% when "google-gtag" %}
+ {% include /analytics-providers/google-gtag.html %}
+{% when "custom" %}
+ {% include /analytics-providers/custom.html %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/archive-single.html b/_includes/archive-single.html
new file mode 100755
index 0000000..fa55025
--- /dev/null
+++ b/_includes/archive-single.html
@@ -0,0 +1,38 @@
+{% if post.header.teaser %}
+ {% capture teaser %}{{ post.header.teaser }}{% endcapture %}
+{% else %}
+ {% assign teaser = site.teaser %}
+{% endif %}
+
+{% if post.id %}
+ {% assign title = post.title | markdownify | remove: "" | remove: "
" %}
+{% else %}
+ {% assign title = post.title %}
+{% endif %}
+
+
+
+ {% if include.type == "grid" and teaser %}
+
+
+
+ {% endif %}
+
+ {% if post.read_time %}
+ {% include read-time.html %}
+ {% endif %}
+ {% if post.excerpt %}{{ post.excerpt | markdownify | strip_html | truncate: 160 }}
{% endif %}
+
+
\ No newline at end of file
diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html
new file mode 100755
index 0000000..cf86521
--- /dev/null
+++ b/_includes/author-profile-custom-links.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/_includes/author-profile.html b/_includes/author-profile.html
new file mode 100755
index 0000000..bd560f7
--- /dev/null
+++ b/_includes/author-profile.html
@@ -0,0 +1,263 @@
+{% assign author = page.author | default: page.authors[0] | default: site.author %}
+{% assign author = site.data.authors[author] | default: author %}
+
+
+
+ {% if author.avatar %}
+
+ {% if author.avatar contains "://" %}
+ {% assign author_src = author.avatar %}
+ {% else %}
+ {% assign author_src = author.avatar | relative_url %}
+ {% endif %}
+
+ {% if author.home %}
+ {% if author.home contains "://" %}
+ {% assign author_link = author.home %}
+ {% else %}
+ {% assign author_link = author.home | relative_url %}
+ {% endif %}
+
+
+
+ {% else %}
+
+ {% endif %}
+
+ {% endif %}
+
+
+ {% if author.home %}
+
{{ author.name }}
+ {% else %}
+
{{ author.name }}
+ {% endif %}
+ {% if author.bio %}
+
+ {{ author.bio }}
+
+ {% endif %}
+
+
+
+
{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}
+
+
+
diff --git a/_includes/base_path b/_includes/base_path
new file mode 100755
index 0000000..36826c4
--- /dev/null
+++ b/_includes/base_path
@@ -0,0 +1,5 @@
+{% if site.url %}
+ {% assign base_path = site.url | append: site.baseurl %}
+{% else %}
+ {% assign base_path = site.github.url %}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html
new file mode 100755
index 0000000..82fe2cc
--- /dev/null
+++ b/_includes/breadcrumbs.html
@@ -0,0 +1,39 @@
+{% case site.category_archive.type %}
+ {% when "liquid" %}
+ {% assign path_type = "#" %}
+ {% when "jekyll-archives" %}
+ {% assign path_type = nil %}
+{% endcase %}
+
+{% if page.collection != 'posts' %}
+ {% assign path_type = nil %}
+ {% assign crumb_path = '/' %}
+{% else %}
+ {% assign crumb_path = site.category_archive.path %}
+{% endif %}
+
+
+
+ {% assign crumbs = page.url | split: '/' %}
+ {% assign i = 1 %}
+ {% for crumb in crumbs offset: 1 %}
+ {% if forloop.first %}
+
+ {{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}
+
+
+ {{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}
+ {% endif %}
+ {% if forloop.last %}
+ {{ page.title }}
+ {% else %}
+ {% assign i = i | plus: 1 %}
+
+ {{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}
+
+
+ {{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}
+ {% endif %}
+ {% endfor %}
+
+
diff --git a/_includes/browser-upgrade.html b/_includes/browser-upgrade.html
new file mode 100755
index 0000000..ec6ad0a
--- /dev/null
+++ b/_includes/browser-upgrade.html
@@ -0,0 +1,3 @@
+
diff --git a/_includes/category-list.html b/_includes/category-list.html
new file mode 100755
index 0000000..7cffdb7
--- /dev/null
+++ b/_includes/category-list.html
@@ -0,0 +1,26 @@
+{% case site.category_archive.type %}
+ {% when "liquid" %}
+ {% assign path_type = "#" %}
+ {% when "jekyll-archives" %}
+ {% assign path_type = nil %}
+{% endcase %}
+
+{% if site.category_archive.path %}
+ {% comment %}
+
+
+ {% endcomment %}
+ {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
+ {% assign category_hashes = page_categories | split: ',' | sort %}
+
+
+ {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }}
+
+ {% for hash in category_hashes %}
+ {% assign keyValue = hash | split: '#' %}
+ {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
+ {{ category_word }} {% unless forloop.last %}, {% endunless %}
+ {% endfor %}
+
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/comment.html b/_includes/comment.html
new file mode 100755
index 0000000..7b33f46
--- /dev/null
+++ b/_includes/comment.html
@@ -0,0 +1,22 @@
+
diff --git a/_includes/comments-providers/custom.html b/_includes/comments-providers/custom.html
new file mode 100755
index 0000000..9099369
--- /dev/null
+++ b/_includes/comments-providers/custom.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/_includes/comments-providers/discourse.html b/_includes/comments-providers/discourse.html
new file mode 100755
index 0000000..aca62cc
--- /dev/null
+++ b/_includes/comments-providers/discourse.html
@@ -0,0 +1,13 @@
+{% if site.comments.discourse.server %}
+{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
+
+Please enable JavaScript to view the comments powered by Discourse.
+{% endif %}
diff --git a/_includes/comments-providers/disqus.html b/_includes/comments-providers/disqus.html
new file mode 100755
index 0000000..8cf7aca
--- /dev/null
+++ b/_includes/comments-providers/disqus.html
@@ -0,0 +1,15 @@
+{% if site.comments.disqus.shortname %}
+
+Please enable JavaScript to view the comments powered by Disqus.
+{% endif %}
diff --git a/_includes/comments-providers/facebook.html b/_includes/comments-providers/facebook.html
new file mode 100755
index 0000000..009dc1c
--- /dev/null
+++ b/_includes/comments-providers/facebook.html
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/_includes/comments-providers/google-plus.html b/_includes/comments-providers/google-plus.html
new file mode 100755
index 0000000..0b4ff6b
--- /dev/null
+++ b/_includes/comments-providers/google-plus.html
@@ -0,0 +1,2 @@
+
+Please enable JavaScript to view the comments powered by Google+.
\ No newline at end of file
diff --git a/_includes/comments-providers/scripts.html b/_includes/comments-providers/scripts.html
new file mode 100755
index 0000000..fb3fb79
--- /dev/null
+++ b/_includes/comments-providers/scripts.html
@@ -0,0 +1,18 @@
+{% if site.comments.provider and page.comments %}
+{% case site.comments.provider %}
+ {% when "disqus" %}
+ {% include /comments-providers/disqus.html %}
+ {% when "discourse" %}
+ {% include /comments-providers/discourse.html %}
+ {% when "facebook" %}
+ {% include /comments-providers/facebook.html %}
+ {% when "google-plus" %}
+ {% include /comments-providers/google-plus.html %}
+ {% when "staticman" %}
+ {% include /comments-providers/staticman.html %}
+ {% when "staticman_v2" %}
+ {% include /comments-providers/staticman_v2.html %}
+ {% when "custom" %}
+ {% include /comments-providers/custom.html %}
+{% endcase %}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/comments-providers/staticman.html b/_includes/comments-providers/staticman.html
new file mode 100755
index 0000000..8ff912f
--- /dev/null
+++ b/_includes/comments-providers/staticman.html
@@ -0,0 +1,42 @@
+{% if site.repository and site.staticman.branch %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/comments-providers/staticman_v2.html b/_includes/comments-providers/staticman_v2.html
new file mode 100755
index 0000000..8ff912f
--- /dev/null
+++ b/_includes/comments-providers/staticman_v2.html
@@ -0,0 +1,42 @@
+{% if site.repository and site.staticman.branch %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/comments.html b/_includes/comments.html
new file mode 100755
index 0000000..8709d69
--- /dev/null
+++ b/_includes/comments.html
@@ -0,0 +1,171 @@
+
\ No newline at end of file
diff --git a/_includes/documents-collection.html b/_includes/documents-collection.html
new file mode 100755
index 0000000..13b4006
--- /dev/null
+++ b/_includes/documents-collection.html
@@ -0,0 +1,19 @@
+{% assign entries = site[include.collection] %}
+
+{% if include.sort_by == 'title' %}
+ {% if include.sort_order == 'reverse' %}
+ {% assign entries = entries | sort: 'title' | reverse %}
+ {% else %}
+ {% assign entries = entries | sort: 'title' %}
+ {% endif %}
+{% elsif include.sort_by == 'date' %}
+ {% if include.sort_order == 'reverse' %}
+ {% assign entries = entries | sort: 'date' | reverse %}
+ {% else %}
+ {% assign entries = entries | sort: 'date' %}
+ {% endif %}
+{% endif %}
+
+{%- for post in entries -%}
+ {% include archive-single.html %}
+{%- endfor -%}
diff --git a/_includes/feature_row b/_includes/feature_row
new file mode 100755
index 0000000..89dfc1b
--- /dev/null
+++ b/_includes/feature_row
@@ -0,0 +1,53 @@
+{% if include.id %}
+ {% assign feature_row = page[include.id] %}
+{% else %}
+ {% assign feature_row = page.feature_row %}
+{% endif %}
+
+
+
+ {% for f in feature_row %}
+
+ {% if f.url contains "://" %}
+ {% capture f_url %}{{ f.url }}{% endcapture %}
+ {% else %}
+ {% capture f_url %}{{ f.url | relative_url }}{% endcapture %}
+ {% endif %}
+
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/_includes/figure b/_includes/figure
new file mode 100755
index 0000000..3fb15c0
--- /dev/null
+++ b/_includes/figure
@@ -0,0 +1,12 @@
+
+
+ {% if include.caption %}
+ {{ include.caption | markdownify | remove: "" | remove: "
" }}
+ {% endif %}
+
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100755
index 0000000..91378ca
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,25 @@
+
+
+
diff --git a/_includes/footer/custom.html b/_includes/footer/custom.html
new file mode 100755
index 0000000..d512599
--- /dev/null
+++ b/_includes/footer/custom.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/_includes/gallery b/_includes/gallery
new file mode 100755
index 0000000..ab2fd61
--- /dev/null
+++ b/_includes/gallery
@@ -0,0 +1,47 @@
+{% if include.id %}
+ {% assign gallery = page[include.id] %}
+{% else %}
+ {% assign gallery = page.gallery %}
+{% endif %}
+
+{% if gallery.size == 2 %}
+ {% assign gallery_layout = 'half' %}
+{% elsif gallery.size >= 3 %}
+ {% assign gallery_layout = 'third' %}
+{% else %}
+ {% assign gallery_layout = '' %}
+{% endif %}
+
+
+ {% for img in gallery %}
+ {% if img.url %}
+
+
+
+ {% else %}
+
+ {% endif %}
+ {% endfor %}
+ {% if include.caption %}
+ {{ include.caption | markdownify | remove: "" | remove: "
" }}
+ {% endif %}
+
\ No newline at end of file
diff --git a/_includes/group-by-array b/_includes/group-by-array
new file mode 100755
index 0000000..708de41
--- /dev/null
+++ b/_includes/group-by-array
@@ -0,0 +1,47 @@
+
+
+
+{% assign __empty_array = '' | split: ',' %}
+{% assign group_names = __empty_array %}
+{% assign group_items = __empty_array %}
+
+
+{% assign __names = include.collection | map: include.field %}
+
+
+{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
+
+
+{% assign __names = __names | sort %}
+{% for name in __names %}
+
+
+{% unless name == previous %}
+
+
+{% assign group_names = group_names | push: name %}
+{% endunless %}
+
+{% assign previous = name %}
+{% endfor %}
+
+
+
+{% for name in group_names %}
+
+
+{% assign __item = __empty_array %}
+{% for __element in include.collection %}
+{% if __element[include.field] contains name %}
+{% assign __item = __item | push: __element %}
+{% endif %}
+{% endfor %}
+
+
+{% assign group_items = group_items | push: __item %}
+{% endfor %}
\ No newline at end of file
diff --git a/_includes/head.html b/_includes/head.html
new file mode 100755
index 0000000..73f8c27
--- /dev/null
+++ b/_includes/head.html
@@ -0,0 +1,43 @@
+
+
+{% include seo.html %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% if site.head_scripts %}
+ {% for script in site.head_scripts %}
+ {% if script contains "://" %}
+ {% capture script_path %}{{ script }}{% endcapture %}
+ {% else %}
+ {% capture script_path %}{{ script | relative_url }}{% endcapture %}
+ {% endif %}
+
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/head/custom.html b/_includes/head/custom.html
new file mode 100755
index 0000000..978d84f
--- /dev/null
+++ b/_includes/head/custom.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/_includes/masthead.html b/_includes/masthead.html
new file mode 100755
index 0000000..54006f4
--- /dev/null
+++ b/_includes/masthead.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/nav_list b/_includes/nav_list
new file mode 100755
index 0000000..b1d06c3
--- /dev/null
+++ b/_includes/nav_list
@@ -0,0 +1,47 @@
+{% assign navigation = site.data.navigation[include.nav] %}
+
+
+ {% if page.sidebar.title %}{{ page.sidebar.title }} {% endif %}
+
+ {{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}
+
+ {% for nav in navigation %}
+
+ {% if nav.url %}
+ {% comment %} internal/external URL check {% endcomment %}
+ {% if nav.url contains "://" %}
+ {% assign nav_url = nav.url %}
+ {% else %}
+ {% assign nav_url = nav.url | relative_url %}
+ {% endif %}
+
+ {{ nav.title }}
+ {% else %}
+ {{ nav.title }}
+ {% endif %}
+
+ {% if nav.children != null %}
+
+ {% for child in nav.children %}
+ {% comment %} internal/external URL check {% endcomment %}
+ {% if child.url contains "://" %}
+ {% assign child_url = child.url %}
+ {% else %}
+ {% assign child_url = child.url | relative_url %}
+ {% endif %}
+
+ {% comment %} set "active" class on current page {% endcomment %}
+ {% if child.url == page.url %}
+ {% assign active = "active" %}
+ {% else %}
+ {% assign active = "" %}
+ {% endif %}
+
+ {{ child.title }}
+ {% endfor %}
+
+ {% endif %}
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/_includes/page__hero.html b/_includes/page__hero.html
new file mode 100755
index 0000000..61d4cf4
--- /dev/null
+++ b/_includes/page__hero.html
@@ -0,0 +1,61 @@
+{% if page.header.image contains "://" %}
+ {% capture img_path %}{{ page.header.image }}{% endcapture %}
+{% else %}
+ {% capture img_path %}{{ page.header.image | relative_url }}{% endcapture %}
+{% endif %}
+
+{% if page.header.cta_url contains "://" %}
+ {% capture cta_path %}{{ page.header.cta_url }}{% endcapture %}
+{% else %}
+ {% capture cta_path %}{{ page.header.cta_url | relative_url }}{% endcapture %}
+{% endif %}
+
+{% if page.header.overlay_image contains "://" %}
+ {% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %}
+{% elsif page.header.overlay_image %}
+ {% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
+{% endif %}
+
+{% if page.header.overlay_filter contains "rgba" %}
+ {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
+{% elsif page.header.overlay_filter %}
+ {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
+{% endif %}
+
+{% if page.header.image_description %}
+ {% assign image_description = page.header.image_description %}
+{% else %}
+ {% assign image_description = page.title %}
+{% endif %}
+
+{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
+
+
diff --git a/_includes/page__hero_video.html b/_includes/page__hero_video.html
new file mode 100755
index 0000000..8586a95
--- /dev/null
+++ b/_includes/page__hero_video.html
@@ -0,0 +1,4 @@
+{% capture video_id %}{{ page.header.video.id }}{% endcapture %}
+{% capture video_provider %}{{ page.header.video.provider }}{% endcapture %}
+
+{% include video id=video_id provider=video_provider %}
diff --git a/_includes/page__taxonomy.html b/_includes/page__taxonomy.html
new file mode 100755
index 0000000..75c76c8
--- /dev/null
+++ b/_includes/page__taxonomy.html
@@ -0,0 +1,7 @@
+{% if site.tag_archive.type and page.tags[0] %}
+ {% include tag-list.html %}
+{% endif %}
+
+{% if site.category_archive.type and page.categories[0] %}
+ {% include category-list.html %}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/paginator.html b/_includes/paginator.html
new file mode 100755
index 0000000..592a2cf
--- /dev/null
+++ b/_includes/paginator.html
@@ -0,0 +1,69 @@
+{% if paginator.total_pages > 1 %}
+
+{% endif %}
diff --git a/_includes/post_pagination.html b/_includes/post_pagination.html
new file mode 100755
index 0000000..a93c627
--- /dev/null
+++ b/_includes/post_pagination.html
@@ -0,0 +1,14 @@
+{% if page.previous or page.next %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/posts-category.html b/_includes/posts-category.html
new file mode 100755
index 0000000..98be3e9
--- /dev/null
+++ b/_includes/posts-category.html
@@ -0,0 +1,3 @@
+{%- for post in site.categories[include.taxonomy] -%}
+ {% include archive-single.html %}
+{%- endfor -%}
diff --git a/_includes/posts-tag.html b/_includes/posts-tag.html
new file mode 100755
index 0000000..180a2f3
--- /dev/null
+++ b/_includes/posts-tag.html
@@ -0,0 +1,3 @@
+{%- for post in site.tags[include.taxonomy] -%}
+ {% include archive-single.html %}
+{%- endfor -%}
diff --git a/_includes/read-time.html b/_includes/read-time.html
new file mode 100755
index 0000000..df88d52
--- /dev/null
+++ b/_includes/read-time.html
@@ -0,0 +1,15 @@
+{% assign words_per_minute = site.words_per_minute | default: 200 %}
+
+{% if post.read_time %}
+ {% assign words = post.content | strip_html | number_of_words %}
+{% elsif page.read_time %}
+ {% assign words = page.content | strip_html | number_of_words %}
+{% endif %}
+
+{% if words < words_per_minute %}
+ {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
+{% elsif words == words_per_minute %}
+ 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
+{% else %}
+ {{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/scripts.html b/_includes/scripts.html
new file mode 100755
index 0000000..144c38c
--- /dev/null
+++ b/_includes/scripts.html
@@ -0,0 +1,28 @@
+{% if site.footer_scripts %}
+ {% for script in site.footer_scripts %}
+ {% if script contains "://" %}
+ {% capture script_path %}{{ script }}{% endcapture %}
+ {% else %}
+ {% capture script_path %}{{ script | relative_url }}{% endcapture %}
+ {% endif %}
+
+ {% endfor %}
+{% else %}
+
+
+{% endif %}
+
+{% if site.search == true or page.layout == "search" %}
+ {%- assign search_provider = site.search_provider | default: "lunr" -%}
+ {%- case search_provider -%}
+ {%- when "lunr" -%}
+ {% include search/lunr-search-scripts.html %}
+ {%- when "google" -%}
+ {% include search/google-search-scripts.html %}
+ {%- when "algolia" -%}
+ {% include search/algolia-search-scripts.html %}
+ {%- endcase -%}
+{% endif %}
+
+{% include analytics.html %}
+{% include /comments-providers/scripts.html %}
\ No newline at end of file
diff --git a/_includes/search/algolia-search-scripts.html b/_includes/search/algolia-search-scripts.html
new file mode 100755
index 0000000..1ec021d
--- /dev/null
+++ b/_includes/search/algolia-search-scripts.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
diff --git a/_includes/search/google-search-scripts.html b/_includes/search/google-search-scripts.html
new file mode 100755
index 0000000..4af7423
--- /dev/null
+++ b/_includes/search/google-search-scripts.html
@@ -0,0 +1,30 @@
+
\ No newline at end of file
diff --git a/_includes/search/lunr-search-scripts.html b/_includes/search/lunr-search-scripts.html
new file mode 100755
index 0000000..574c390
--- /dev/null
+++ b/_includes/search/lunr-search-scripts.html
@@ -0,0 +1,10 @@
+{% assign lang = site.locale | slice: 0,2 | default: "en" %}
+{% case lang %}
+{% when "gr" %}
+ {% assign lang = "gr" %}
+{% else %}
+ {% assign lang = "en" %}
+{% endcase %}
+
+
+
\ No newline at end of file
diff --git a/_includes/search/search_form.html b/_includes/search/search_form.html
new file mode 100755
index 0000000..329c30d
--- /dev/null
+++ b/_includes/search/search_form.html
@@ -0,0 +1,18 @@
+
+{%- assign search_provider = site.search_provider | default: "lunr" -%}
+{%- case search_provider -%}
+ {%- when "lunr" -%}
+
+
+ {%- when "google" -%}
+
+
+
+
+ {%- when "algolia" -%}
+
+
+{%- endcase -%}
+
\ No newline at end of file
diff --git a/_includes/seo.html b/_includes/seo.html
new file mode 100755
index 0000000..2ac0b64
--- /dev/null
+++ b/_includes/seo.html
@@ -0,0 +1,166 @@
+
+{%- if site.url -%}
+ {%- assign seo_url = site.url | append: site.baseurl -%}
+{%- endif -%}
+{%- assign seo_url = seo_url | default: site.github.url -%}
+
+{% if site.title_separator %}
+ {% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
+{% endif %}
+
+{%- if page.title -%}
+ {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
+{%- endif -%}
+
+{%- if seo_title -%}
+ {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
+{%- endif -%}
+
+{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
+
+{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
+{%- if seo_description -%}
+ {%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%}
+{%- endif -%}
+
+{%- assign author = page.author | default: page.authors[0] | default: site:author -%}
+{%- assign author = site.data.authors[author] | default: author -%}
+
+{%- if author.twitter -%}
+ {%- assign author_twitter = author.twitter | replace: "@", "" -%}
+{%- endif -%}
+
+{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%}
+{%- unless page_large_image contains '://' -%}
+ {%- assign page_large_image = page_large_image | absolute_url -%}
+{%- endunless -%}
+{%- assign page_large_image = page_large_image | escape -%}
+
+{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%}
+{%- unless page_teaser_image contains '://' -%}
+ {%- assign page_teaser_image = page_teaser_image | absolute_url -%}
+{%- endunless -%}
+{%- assign page_teaser_image = page_teaser_image | escape -%}
+
+{%- assign site_og_image = site.og_image -%}
+{%- unless site_og_image contains '://' -%}
+ {%- assign site_og_image = site_og_image | absolute_url -%}
+{%- endunless -%}
+{%- assign site_og_image = site_og_image | escape -%}
+
+{%- if page.date -%}
+ {%- assign og_type = "article" -%}
+{%- else -%}
+ {%- assign og_type = "website" -%}
+{%- endif -%}
+
+{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}
+
+
+{% if author.name %}
+
+{% endif %}
+
+
+
+
+
+
+
+{% if page.excerpt %}
+
+{% endif %}
+
+{% if page_large_image %}
+
+{% elsif page_teaser_image %}
+
+{% endif %}
+
+{% if site.twitter.username %}
+
+
+
+
+
+ {% if page_large_image %}
+
+
+ {% else %}
+
+ {% if page_teaser_image %}
+
+ {% endif %}
+ {% endif %}
+
+ {% if author_twitter %}
+
+ {% endif %}
+{% endif %}
+
+{% if page.date %}
+
+{% endif %}
+
+{% if og_type == "article" and page.last_modified_at %}
+
+{% endif %}
+
+{% if site.facebook %}
+ {% if site.facebook.publisher %}
+
+ {% endif %}
+
+ {% if site.facebook.app_id %}
+
+ {% endif %}
+{% endif %}
+
+
+
+{% if paginator.previous_page %}
+
+{% endif %}
+{% if paginator.next_page %}
+
+{% endif %}
+
+{% if site.og_image %}
+
+{% endif %}
+
+{% if site.social %}
+
+{% endif %}
+
+{% if site.google_site_verification %}
+
+{% endif %}
+{% if site.bing_site_verification %}
+
+{% endif %}
+{% if site.alexa_site_verification %}
+
+{% endif %}
+{% if site.yandex_site_verification %}
+
+{% endif %}
+{% if site.naver-site-verification %}
+
+{% endif %}
+
diff --git a/_includes/sidebar.html b/_includes/sidebar.html
new file mode 100755
index 0000000..9dc6a3c
--- /dev/null
+++ b/_includes/sidebar.html
@@ -0,0 +1,23 @@
+{% if page.author_profile or layout.author_profile or page.sidebar %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/social-share.html b/_includes/social-share.html
new file mode 100755
index 0000000..10161aa
--- /dev/null
+++ b/_includes/social-share.html
@@ -0,0 +1,13 @@
+
+ {% if site.data.ui-text[site.locale].share_on_label %}
+ {{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}
+ {% endif %}
+
+
+
+ Facebook
+
+ Google+
+
+ LinkedIn
+
diff --git a/_includes/tag-list.html b/_includes/tag-list.html
new file mode 100755
index 0000000..73f86e2
--- /dev/null
+++ b/_includes/tag-list.html
@@ -0,0 +1,26 @@
+{% case site.tag_archive.type %}
+ {% when "liquid" %}
+ {% assign path_type = "#" %}
+ {% when "jekyll-archives" %}
+ {% assign path_type = nil %}
+{% endcase %}
+
+{% if site.tag_archive.path %}
+ {% comment %}
+
+
+ {% endcomment %}
+ {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
+ {% assign tag_hashes = page_tags | split: ',' | sort %}
+
+
+ {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }}
+
+ {% for hash in tag_hashes %}
+ {% assign keyValue = hash | split: '#' %}
+ {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
+ {{ tag_word }} {% unless forloop.last %}, {% endunless %}
+ {% endfor %}
+
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/tess.html b/_includes/tess.html
new file mode 100755
index 0000000..9f54171
--- /dev/null
+++ b/_includes/tess.html
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/toc b/_includes/toc
new file mode 100755
index 0000000..6423ccd
--- /dev/null
+++ b/_includes/toc
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/_includes/toc.html b/_includes/toc.html
new file mode 100755
index 0000000..27023f7
--- /dev/null
+++ b/_includes/toc.html
@@ -0,0 +1,75 @@
+{% capture tocWorkspace %}
+ {%- comment -%}
+ Version 1.0.2
+
+ "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
+
+ Usage:
+ {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
+
+ Parameters:
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
+
+ Optional Parameters:
+ * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
+ * class (string) : '' - a CSS class assigned to the TOC
+ * id (string) : '' - an ID to assigned to the TOC
+ * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
+ * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
+
+ Output:
+ An unordered list representing the table of contents of a markdown block. This snippet will only generate the table of contents and will NOT output the markdown given to it
+ {%- endcomment -%}
+
+ {% capture my_toc %}{% endcapture %}
+ {% assign minHeader = include.h_min | default: 1 %}
+ {% assign maxHeader = include.h_max | default: 6 %}
+ {% assign nodes = include.html | split: ' maxHeader %}
+ {% continue %}
+ {% endif %}
+
+ {% if firstHeader %}
+ {% assign firstHeader = false %}
+ {% assign minHeader = headerLevel %}
+ {% endif %}
+
+ {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %}
+ {% assign _workspace = node | split: ' ' | first }}>{% endcapture %}
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
+
+ {% assign space = '' %}
+ {% for i in (1..indentAmount) %}
+ {% assign space = space | prepend: ' ' %}
+ {% endfor %}
+
+ {% capture my_toc %}{{ my_toc }}
+{{ space }}- [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}](#{{ html_id }}){% endcapture %}
+
+ {% endfor %}
+
+ {% if include.class %}
+ {% capture my_toc %}{:.{{ include.class }}}
+{{ my_toc | lstrip }}{% endcapture %}
+ {% endif %}
+
+ {% if include.id %}
+ {% capture my_toc %}{: #{{ include.id }}}
+{{ my_toc | lstrip }}{% endcapture %}
+ {% endif %}
+{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
\ No newline at end of file
diff --git a/_includes/twitter.html b/_includes/twitter.html
new file mode 100755
index 0000000..e942b06
--- /dev/null
+++ b/_includes/twitter.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/video b/_includes/video
new file mode 100755
index 0000000..01b58dd
--- /dev/null
+++ b/_includes/video
@@ -0,0 +1,11 @@
+{% capture video_id %}{{ include.id }}{% endcapture %}
+{% capture video_provider %}{{ include.provider }}{% endcapture %}
+
+
+
+{% if video_provider == "vimeo" %}
+
+{% elsif video_provider == "youtube" %}
+ VIDEO
+{% endif %}
+
diff --git a/_layouts/archive-taxonomy.html b/_layouts/archive-taxonomy.html
new file mode 100755
index 0000000..6939122
--- /dev/null
+++ b/_layouts/archive-taxonomy.html
@@ -0,0 +1,15 @@
+---
+layout: default
+author_profile: false
+---
+
+
+ {% include sidebar.html %}
+
+
+
{{ page.title }}
+ {% for post in page.posts %}
+ {% include archive-single.html %}
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/_layouts/archive.html b/_layouts/archive.html
new file mode 100755
index 0000000..08beb89
--- /dev/null
+++ b/_layouts/archive.html
@@ -0,0 +1,26 @@
+---
+layout: default
+---
+
+{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
+ {% include page__hero.html %}
+{% elsif page.header.video.id and page.header.video.provider %}
+ {% include page__hero_video.html %}
+{% endif %}
+
+{% if page.url != "/" and site.breadcrumbs %}
+ {% unless paginator %}
+ {% include breadcrumbs.html %}
+ {% endunless %}
+{% endif %}
+
+
+ {% include sidebar.html %}
+
+
+ {% unless page.header.overlay_color or page.header.overlay_image %}
+
{{ page.title }}
+ {% endunless %}
+ {{ content }}
+
+
\ No newline at end of file
diff --git a/_layouts/categories.html b/_layouts/categories.html
new file mode 100755
index 0000000..0c7521f
--- /dev/null
+++ b/_layouts/categories.html
@@ -0,0 +1,48 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+ {% assign categories_max = 0 %}
+ {% for category in site.categories %}
+ {% if category[1].size > categories_max %}
+ {% assign categories_max = category[1].size %}
+ {% endif %}
+ {% endfor %}
+ {% for i in (1..categories_max) reversed %}
+ {% for category in site.categories %}
+ {% if category[1].size == i %}
+
+
+ {{ category[0] }} {{ i }}
+
+
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+
+
+{% assign categories_max = 0 %}
+{% for category in site.categories %}
+ {% if category[1].size > categories_max %}
+ {% assign categories_max = category[1].size %}
+ {% endif %}
+{% endfor %}
+
+{% for i in (1..categories_max) reversed %}
+ {% for category in site.categories %}
+ {% if category[1].size == i %}
+
+ {% endif %}
+ {% endfor %}
+{% endfor %}
diff --git a/_layouts/category.html b/_layouts/category.html
new file mode 100755
index 0000000..79b81ce
--- /dev/null
+++ b/_layouts/category.html
@@ -0,0 +1,9 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+ {% include posts-category.html taxonomy=page.taxonomy type=page.entries_layout %}
+
diff --git a/_layouts/collection.html b/_layouts/collection.html
new file mode 100755
index 0000000..3bcd916
--- /dev/null
+++ b/_layouts/collection.html
@@ -0,0 +1,9 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+ {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=page.entries_layout %}
+
diff --git a/_layouts/compress.html b/_layouts/compress.html
new file mode 100755
index 0000000..550fa27
--- /dev/null
+++ b/_layouts/compress.html
@@ -0,0 +1,10 @@
+---
+# Jekyll layout that compresses HTML
+# v3.0.2
+# http://jch.penibelst.de/
+# © 2014–2015 Anatol Broder
+# MIT License
+---
+
+{% capture _LINE_FEED %}
+{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains " " %}{% endif %}{% unless _pre_before contains " " and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ; ; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} Step Bytes raw {{ content | size }}{% if _profile_endings %} endings {{ _profile_endings }}{% endif %}{% if _profile_startings %} startings {{ _profile_startings }}{% endif %}{% if _profile_comments %} comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %} collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %} clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %}
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
new file mode 100755
index 0000000..b6c2e3a
--- /dev/null
+++ b/_layouts/default.html
@@ -0,0 +1,42 @@
+---
+---
+
+
+
+
+
+ {% include head.html %}
+ {% include head/custom.html %}
+
+
+
+
+ {% include browser-upgrade.html %}
+ {% include masthead.html %}
+
+
+ {{ content }}
+
+
+ {% if site.search == true %}
+
+ {% include search/search_form.html %}
+
+ {% endif %}
+
+
+
+ {% include scripts.html %}
+
+
+
\ No newline at end of file
diff --git a/_layouts/home.html b/_layouts/home.html
new file mode 100755
index 0000000..bcce92a
--- /dev/null
+++ b/_layouts/home.html
@@ -0,0 +1,11 @@
+---
+layout: archive
+---
+
+{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}
+
+{% for post in paginator.posts %}
+ {% include archive-single.html %}
+{% endfor %}
+
+{% include paginator.html %}
diff --git a/_layouts/posts.html b/_layouts/posts.html
new file mode 100755
index 0000000..76d25f9
--- /dev/null
+++ b/_layouts/posts.html
@@ -0,0 +1,29 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+
+{% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %}
+{% for year in postsByYear %}
+
+{% endfor %}
diff --git a/_layouts/search.html b/_layouts/search.html
new file mode 100755
index 0000000..c0b8c32
--- /dev/null
+++ b/_layouts/search.html
@@ -0,0 +1,42 @@
+---
+layout: default
+---
+
+{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
+ {% include page__hero.html %}
+{% endif %}
+
+{% if page.url != "/" and site.breadcrumbs %}
+ {% unless paginator %}
+ {% include breadcrumbs.html %}
+ {% endunless %}
+{% endif %}
+
+
+ {% include sidebar.html %}
+
+
+ {% unless page.header.overlay_color or page.header.overlay_image %}
+
{{ page.title }}
+ {% endunless %}
+
+ {{ content }}
+
+ {%- assign search_provider = site.search_provider | default: "lunr" -%}
+ {%- case search_provider -%}
+ {%- when "lunr" -%}
+
+
+ {%- when "google" -%}
+
+
+
+
+ {%- when "algolia" -%}
+
+
+ {%- endcase -%}
+
+
\ No newline at end of file
diff --git a/_layouts/single.html b/_layouts/single.html
new file mode 100755
index 0000000..623043e
--- /dev/null
+++ b/_layouts/single.html
@@ -0,0 +1,92 @@
+---
+layout: default
+---
+
+{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
+ {% include page__hero.html %}
+{% elsif page.header.video.id and page.header.video.provider %}
+ {% include page__hero_video.html %}
+{% endif %}
+
+{% if page.url != "/" and site.breadcrumbs %}
+ {% unless paginator %}
+ {% include breadcrumbs.html %}
+ {% endunless %}
+{% endif %}
+
+
+ {% include sidebar.html %}
+
+
+ {% if page.title %} {% endif %}
+ {% if page.excerpt %} {% endif %}
+ {% if page.date %} {% endif %}
+ {% if page.last_modified_at %} {% endif %}
+
+
+ {% unless page.header.overlay_color or page.header.overlay_image %}
+
+ {% endunless %}
+
+
+ {% if page.toc %}
+
+ {% endif %}
+ {{ content }}
+ {% if page.link %}{% endif %}
+
+
+
+ {% if site.data.ui-text[site.locale].meta_label %}
+ {{ site.data.ui-text[site.locale].meta_label }}
+ {% endif %}
+ {% include page__taxonomy.html %}
+ {% if page.last_modified_at %}
+ {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }} {{ page.last_modified_at | date: "%B %d, %Y" }}
+ {% elsif page.date %}
+ {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }} {{ page.date | date: "%B %d, %Y" }}
+ {% endif %}
+
+
+ {% if page.share %}{% include social-share.html %}{% endif %}
+
+ {% include post_pagination.html %}
+
+
+ {% if jekyll.environment == 'production' and site.comments.provider and page.comments %}
+ {% include comments.html %}
+ {% endif %}
+
+
+ {% comment %}{% endcomment %}
+ {% if page.id and page.related and site.related_posts.size > 0 %}
+
+
{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}
+
+ {% for post in site.related_posts limit:4 %}
+ {% include archive-single.html type="grid" %}
+ {% endfor %}
+
+
+ {% comment %}{% endcomment %}
+ {% elsif page.id and page.related %}
+
+
{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}
+
+ {% for post in site.posts limit:4 %}
+ {% include archive-single.html type="grid" %}
+ {% endfor %}
+
+
+ {% endif %}
+
\ No newline at end of file
diff --git a/_layouts/splash.html b/_layouts/splash.html
new file mode 100755
index 0000000..c9cc699
--- /dev/null
+++ b/_layouts/splash.html
@@ -0,0 +1,22 @@
+---
+layout: default
+---
+
+{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
+ {% include page__hero.html %}
+{% elsif page.header.video.id and page.header.video.provider %}
+ {% include page__hero_video.html %}
+{% endif %}
+
+
+
+ {% if page.title %} {% endif %}
+ {% if page.excerpt %} {% endif %}
+ {% if page.date %} {% endif %}
+ {% if page.last_modified_at %} {% endif %}
+
+
+
+
\ No newline at end of file
diff --git a/_layouts/tag.html b/_layouts/tag.html
new file mode 100755
index 0000000..5f83c2a
--- /dev/null
+++ b/_layouts/tag.html
@@ -0,0 +1,9 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+ {% include posts-tag.html taxonomy=page.taxonomy type=page.entries_layout %}
+
diff --git a/_layouts/tags.html b/_layouts/tags.html
new file mode 100755
index 0000000..1c0e702
--- /dev/null
+++ b/_layouts/tags.html
@@ -0,0 +1,48 @@
+---
+layout: archive
+---
+
+{{ content }}
+
+
+ {% assign tags_max = 0 %}
+ {% for tag in site.tags %}
+ {% if tag[1].size > tags_max %}
+ {% assign tags_max = tag[1].size %}
+ {% endif %}
+ {% endfor %}
+ {% for i in (1..tags_max) reversed %}
+ {% for tag in site.tags %}
+ {% if tag[1].size == i %}
+
+
+ {{ tag[0] }} {{ i }}
+
+
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+
+
+{% assign tags_max = 0 %}
+{% for tag in site.tags %}
+ {% if tag[1].size > tags_max %}
+ {% assign tags_max = tag[1].size %}
+ {% endif %}
+{% endfor %}
+
+{% for i in (1..tags_max) reversed %}
+ {% for tag in site.tags %}
+ {% if tag[1].size == i %}
+
+ {% endif %}
+ {% endfor %}
+{% endfor %}
diff --git a/_pages/BSPR-EBI-2011-presentations.md b/_pages/BSPR-EBI-2011-presentations.md
new file mode 100644
index 0000000..9a19772
--- /dev/null
+++ b/_pages/BSPR-EBI-2011-presentations.md
@@ -0,0 +1,80 @@
+---
+
+layout: single
+title: "BSPR-EBI 2010 presentations"
+
+permalink: /bspr-ebi-2010-presentations
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+BSPR members can have access to these presentations logging in. Request a new password if you forgot your password. If you forgot your user name please contact us. If you are logged in and you cannot access the presentations please contact us to check your user name has been properly assigned with the member status. Ben Garcia's presentation entitled "Next Generation Proteomic Tools for Understanding the Histone Code" is publicly available for everyone.
+
+Proteomics: from Qualitative to Quantitative
+
+[Report on the BSPR 2010 meeting at Hinxton]({{site.baseurl}}/BSPR_2010_meeting_and_Bioinformatics_Workshop_Reports.pdf)
+
+
+
+Adam Byron [Quantitative proteomic analysis of integrin adhesion complex dynamics]({{site.baseurl}}/assets/files/Adam Byron 13-07-10.pdf)
+
+Akhilesh Pandey [Quantitative proteomics for elucidating protein-protein interactions and pathways]({{site.baseurl}}/assets/files/Akhilesh Pandey14-07-10.pdf)
+
+Alex Jones [Moving from identification to quantification of phosphorylation events in plant-pathogen interactions]({{site.baseurl}}/assets/files/Alex Jones 14-07-10.pdf)
+
+Amos Bairoch [neXtProt: a new human-centric protein knowledge resource]({{site.baseurl}}/assets/files/Amos Bairoch 14-07-10.pdf)
+
+Daniel Rios [Interactive and computational access to proteomics data in the PRIDE database]({{site.baseurl}}/assets/files/Daniel Rios 14-07-10.pdf)
+
+Dario Di Silvestre [User-friendly bioinformatics tools for handling proteomics data in biomarker discovery and cluster analysis]({{site.baseurl}}/assets/files/Dario Di Silvestre 15-07-10.pdf)
+
+David O'Connor [Biological insights from large-scale protein copy number measurements]({{site.baseurl}}/assets/files/David O'Connor 15-07-10.pdf)
+
+Dolores Cahill [Protein Interaction studies on Protein Arrays]({{site.baseurl}}/assets/files/Dolores Cahill 14-07-10.pdf)
+
+Emoke Bendixen [Farm animal proteomics-from a Systems Biology perspective]({{site.baseurl}}/assets/files/Emoke Bendixen 13-07-10.pdf)
+
+Gavin Wright [Large-scale detection of low affinity extracellular protein interactions]({{site.baseurl}}/assets/files/Gavin Wright 14-07-10.pdf)
+
+Hanno Steen [new strategies for the identification of co-regulated proteins]({{site.baseurl}}/assets/files/new strategies for the identification of co-regulated proteins.pdf)
+
+Henning Hermjakob [A common query interface for interaction databases]({{site.baseurl}}/assets/files/Henning Hermjakob 14-07-10.pdf)
+
+
+Ingrid Miller [ANIMAL PROTEOMICS: IPG-DALT and more...]({{site.baseurl}}/assets/files/Ingrid Miller 13-07-10.pdf)
+
+
+Javier Barallobre-Barreiro [Proteomic analysis of cardiac extracellular matrix in a porcine model of ischemia-reperfusion injury]({{site.baseurl}}/assets/files/Javier Barallobre-Barreiro 13-07-10.pdf)
+
+
+Juan Antonio Vizcaino [Proteomics data repositories: PRIDE]({{site.baseurl}}/assets/files/BSPR Workshop_2010 - Juan Antonio Vizcaino.pdf)
+
+Julio Saez-Rodriguez [Comparative logical models of signaling networks in normal and transformed hepatocytes derived from phosphoproteomic data]({{site.baseurl}}/assets/files/Julio Saez-Rodriguez 13-07-10.pdf)
+
+
+Kathryn Lilley [Quantitative Proteomics]({{site.baseurl}}/assets/files/BSPR Workshop_2010 - Kathryn Lilley.pdf)
+
+Kelly McMahon [A comparison of proteins and their expression levels within different regions of multi-cellular spheroids (MCTS)]({{site.baseurl}}/assets/files/Kelly McMahon 14-07-10.pdf)
+
+Marie-Claude Djidja [MALDI-Mass Spectrometry Imaging of Hypoxia and Metastasis-associated proteins Combined with quantitative MS]({{site.baseurl}}/assets/files/Marie-Claude Djidja 15-07-10.pdf)
+
+Martin Wells [Quantitative Proteomics: A short introduction]({{site.baseurl}}/assets/files/BSPR Workshop_2010 - Martin Wells.pdf)
+
+Matthias Selbach [Genome wide analysis of protein and mRNA half lives reveals dynamic properties of mammalian gene expression]({{site.baseurl}}/assets/files/Matthias Selbach 13-07-10.pdf)
+
+Phillip Wright [Can we live with iTRAQ?]({{site.baseurl}}/assets/files/Phillip Wright 14-07-10.pdf)
+
+Richard Kay [Development of an LC-MS/MS method to quantify plasma concentrations of the wild type and Marburg I variants of Factor VII-activating protease]({{site.baseurl}}/assets/files/Richard Kay 15-07-10.pdf)
+
+
+Rob Beynon [Quantitative proteomics:what’s the point?]({{site.baseurl}}/assets/files/Rob Beynon 14-07-10.pdf)
+
+
+Sarah Martin [Quantitative Proteomics and Flux Analysis using 15N labelling: Studies of the Unicellular Alga Ostreococcus tauri]({{site.baseurl}}/assets/files/Quantitative Proteomics and Flux Analysis using 15N labelling: Studies of the Unicellular Alga Ostreococcus tauri.pdf)
+
+
+
+Waltraud Schulze [15N metabolic labeling as a tool to study nutrient induced signaling processes in plants]({{site.baseurl}}/assets/files/Waltraud Schulze 13-07-10.pdf)
\ No newline at end of file
diff --git a/_pages/Journals.md b/_pages/Journals.md
new file mode 100644
index 0000000..96868a8
--- /dev/null
+++ b/_pages/Journals.md
@@ -0,0 +1,31 @@
+---
+
+layout: single
+title: "Journals"
+
+permalink: /proteomics/journals
+
+sidebar:
+ nav: "docs"
+
+---
+
+[European Pharmaceutical Review ](http://www.europeanpharmaceuticalreview.com/)
+[Systems Biology ](http://www.theiet.org/help/404/index.cfm?referrer=/Publish/Journals/ProfJourn/Sb...)
+[Molecular BioSystems ](http://www.rsc.org/redirect/des-index.asp?path=referads.asp%3Flink%3Dhttp%3A//ww...)
+[Journal of Anatomy ](http://onlinelibrary.wiley.com/journal/10.1111/(ISSN)1469-7580)
+### Proteomics
+[Proteomics - Clinical Applications ](http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1862-8354)
+[GoProteomics website ](http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1615-9861)
+[Proteomics podcast ](http://www.wiley-vch.de/publish/dt/)
+[Proteomics ](http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1615-9861)
+[Practical Proteomics ](http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1615-9861/homepage/2120_pra...)
+[Molecular & Cellular Proteomics ](http://www.mcponline.org/)
+[Journal of Proteome Research ](http://pubs.acs.org/journal/jprobs)
+[Expert Review of Proteomics ](http://informahealthcare.com/journal/eru)
+[Electrophoresis ](http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1522-2683)
+[Current Proteomics ](http://benthamscience.com/journal/index.php?journalID=cp)
+[Clinical Proteomics ](http://www.clinicalproteomicsjournal.com/)
+[Briefings in Functional Genomics and Proteomics ](http://www.henrystewartpublications.com/journals/fgp/)
+[Biochimica et Biophysica Acta (BBA) ](http://www.journals.elsevier.com/bba-proteins-and-proteomics)
+[Applied Genomics & Proteomics ](http://openmindjournals.com/)
\ No newline at end of file
diff --git a/_pages/about.md b/_pages/about.md
new file mode 100644
index 0000000..167a27a
--- /dev/null
+++ b/_pages/about.md
@@ -0,0 +1,21 @@
+---
+
+layout: single
+title: "About"
+
+permalink: /about/
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+**The British Society for Proteome Research (BSPR)**, is a registered incorporated charity (Registered Company Number 6319769, [UK Charity Number 1121692](http://www.charitycommission.gov.uk/registeredcharities/showcharity.asp?regno=1121692&submit=Run+Search)) and aims to advance the science of proteomics, to further public education therein and to promote study and research work in proteomics and related subjects for the public benefit.
+
+The BSPR represents both the [Human Proteome Organization (HUPO)](http://www.hupo.org/) and the [European Proteomics Association (EuPA)](http://eupa.org/) in the UK and is affiliated to the [Society of Biology](http://www.societyofbiology.org/).
+
+
+## Aim
+The objectives of the British Society for Proteome Research (BSPR) are to advance the science of proteomics and to promote the study and research work in this and related areas for the benefit of all. It enables scientists working in this field to keep up-to-date with current developments both nationally and internationally and to meet and exchange ideas with other workers. Unlike many learned societies we have members from a wide range of organisations including industry and the health service, as well as research and academic institutions.
+
+[BSPR Memorandum of Association]({{site.baseurl}}/assets/files/BSPR - Memorandum of Association May - 07.pdf)
diff --git a/_pages/board-of-directors.md b/_pages/board-of-directors.md
new file mode 100644
index 0000000..fed5304
--- /dev/null
+++ b/_pages/board-of-directors.md
@@ -0,0 +1,50 @@
+---
+
+layout: single
+title: "Board of Directors (Trustees)"
+
+permalink: /about/board-of-directors-trustees
+sidebar:
+ nav: "docs"
+comments: true
+---
+
+
+
+## Elected officers
+
+
+|President | Acting Treasurer |
+|-------|--------|
+| **Steve Pennington** | **Josie Beeley** |
+| Conway Institute for Biomolecular and Biomedical Research University College Dublin, Belfield 4, Dublin D4 Ireland president@bspr.org | University of Glasgow Jarrett Building Garscube Estate Bearsden Road Glasgow G61 1QH United Kingdom treasurer@bspr.org |
+
+|Secretary |
+|-------|
+| **John Timms** |
+| University College London Cruciform Building 1.1.03 Gower Street LONDON WC1E 6BT United Kingdom secretary@bspr.org |
+
+
+## Elected members
+
+| **Chris Sutton** | **Andrew Pitt** |
+| University of Bradford Institute of Cancer Therapeutics Tumbling Hill Street Bradford BD7 1DP United Kingdom | Aston University School of Life and Health Sciences Aston Triangle Birmingham B4 7ET United Kingdom |
+| **Peter Kilby**| **Roz Jenkins**|
+| Syngenta Jealott's Hill Bracknell RG40 6EY United Kingdom|University of Liverpool Institute of Translational Medicine Crown Street Liverpool L69 3BX United Kingdom|
+| **Sara Zanivan**| **Karin Barnouin**|
+|CRUK Beatson Institute University of Glasgow Switchback Road Glasgow G61 1BD United Kingdom|72 Dunelm Grove London SE27 9JZ United Kingdom|
+| **Juan Ramon Hernández-Fernaud**|
+|University of Warwick School of Life Sciences Gibbet Hill Campus COVENTRY CV4 7AL United Kingdom|
+
+
+## Management Committee
+
+| **Kathryn Lilley**| **Rainer Cramer**|
+|University of Cambridge Cambridge Centre for Proteomics Cambridge Systems Biology Centre Department of Biochemistry, Tennis Court Road Cambridge CB2 1QT United Kingdom|University of Reading Department of Chemistry and the BioCentre Whiteknights, PO Box 221 Reading RG6 6AS United Kingdom|
+| **Paul Skipp**| **Rob Ewing**|
+|Centre for Proteomic Research Life Sciences Building 85 University of Southampton Highfield Southampton SO17 1BJ United Kingdom|Biological Sciences Life Sciences Building 85 University of Southampton Highfield Southampton SO17 1BJ United Kingdom|
+| **Juan Antonio Vizcaino**| **Phil Green**|
+|EBI Wellcome Genome Campus Hinxton Cambridgeshire CB10 1SD United Kingdom|Life Science Mass Spectrometry, UK and Ireland Chromatography and Mass Spectrometry Thermo Fisher Scientific Stafford House, Boundary Way Hemel Hempstead HP2 7GE United Kingdom|
+| **James Waddington**|
+|Molecular and Clinical Pharmacology Institute of Translational Medicine University of Liverpool Liverpool L69 3BX United Kingdom||
+
diff --git a/_pages/bspr-2015-bursaries.md b/_pages/bspr-2015-bursaries.md
new file mode 100644
index 0000000..ab2872a
--- /dev/null
+++ b/_pages/bspr-2015-bursaries.md
@@ -0,0 +1,32 @@
+---
+
+layout: single
+title: "BSPR Bursaries 2015"
+
+permalink: /bspr-bursaries-2015
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+[Emily Feneberg,]({{site.baseurl}}/assets/files/Proteomics Summer School_EF.docx) Oxford
+
+#### MJ Dunn Fellowship Awardee 2015
+
+In 2015, the Society is pleased to be able to announce that it will be offering a number of bursaries to assist members in attending conferences and similar events. These will include the M J Dunn Fellowship to attend the BSPR meeting in Reading in July, student travel awards (£250 max) for attendance and presentation of proteomics related research at scientific meetings, and an award to attend the European Proteomics Summer School in Italy in August. Further information will be posted on this website shortly or can be obtained from Stephen Pennington.
+
+
+
+[Saira Saleem]({{site.baseurl}}/assets/files/mjDunnAward2015.docx)
+
+
+
+European Summer School Bursary Awardee 2015
+In 2015 the bursary was awarded to Arran David Dokal.
+
+
+
+[Arran David Doka]({{site.baseurl}}/assets/files/BPSR Conference Report – 9th European Summer School for Advanced Proteomics (1).docx)
\ No newline at end of file
diff --git a/_pages/bspr-2016-bursaries.md b/_pages/bspr-2016-bursaries.md
new file mode 100644
index 0000000..5f097f9
--- /dev/null
+++ b/_pages/bspr-2016-bursaries.md
@@ -0,0 +1,36 @@
+---
+
+layout: single
+title: "BSPR Bursaries 2016"
+
+permalink: /bspr-bursaries-2016
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+
+
+#### 2016 European Summer School Bursary
+
+
+[Emanuele Scollo],({{site.baseurl}}/assets/files/Report School of Proteomics.docx) Reading
+
+[Hazel Hamilton]({{site.baseurl}}/assets/files/Report for attendance EMBO Workshop.docx),University of Glasgow
+
+
+#### Student Conference Bursaries
+
+
+[Hamdi Hussain]({{site.baseurl}}/assets/files/BSPR_Report_Hamdi_Hussain.docx), Warwick
+
+[Claire Tonry]({{site.baseurl}}/assets/files/Conference report - Claire Tonry BSPR2016.pdf), UCD
+
+[Noel Fitzgerald]({{site.baseurl}}/assets/files/Conference Report - NoelFitzGerald BSPR2016.pdf), UCD
+
+Hazel Hamilton, Glasgow
+
+Fernanda Kugeratski, Glasgow
\ No newline at end of file
diff --git a/_pages/bspr-2017-bursaries-and-fellowships.md b/_pages/bspr-2017-bursaries-and-fellowships.md
new file mode 100644
index 0000000..9ad0393
--- /dev/null
+++ b/_pages/bspr-2017-bursaries-and-fellowships.md
@@ -0,0 +1,40 @@
+---
+
+layout: single
+title: "BSPR 2017 Bursaries and Fellowships"
+
+permalink: /bspr-2017-bursaries-and-fellowships
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+#### 2017 European Summer School Bursary
+
+[Emily Feneberg,]({{site.baseurl}}/assets/files/Proteomics Summer School_EF.docx) Oxford
+
+
+#### Student Conference Bursaries HUPO Dublin 2017
+Arun Tailor, Liverpool
+
+Carmen Arasti M.Arasti-Rezola, Liverpool
+
+[Emily Bowler]({{site.baseurl}}/assets/files/BSPR HUPO2017 Student report_EmilyBowler) E.H.Bowler,
+
+Southhampton
+
+Fernanda Grande Kugeratski, Glasgow
+
+[James Waddington]({{site.baseurl}}/assets/files/BSPR bursary awarded for attendance of HUPO 2017.docx), Liverpool
+
+[Muhammad Zubair Israr]({{site.baseurl}}/assets/files/bspr report.docx), Leicester
+
+[Sarah Wagner]({{site.baseurl}}/assets/files/Travel Grant Report_Sarah Wagner_BSPR), Nottingham
+
+
+#### MJ Dunn Fellowship HUPO 2017
+[Harry Whitwell]({{site.baseurl}}/assets/files/HUPO 16th World Congress 2017_HarryHitwell.docx), London
+
+Alice Len, London
+
diff --git a/_pages/bspr-awards-and-fellowships-2010.md b/_pages/bspr-awards-and-fellowships-2010.md
new file mode 100644
index 0000000..b4ce8c9
--- /dev/null
+++ b/_pages/bspr-awards-and-fellowships-2010.md
@@ -0,0 +1,40 @@
+---
+
+layout: single
+title: "BSPR Awards and Fellowships 2010"
+
+permalink: /bspr-awards-and-fellowships-2010
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+The BSPR is pleased to announce the availability of several opportunities to support the attendance of young researchers at BSPR/EBI Annual Meeting.
+
+- MJ Dunn Fellowships: up to two prestigious Fellowships will be awarded to PhD students or early-stage post-doctoral researchers to enable them to attend the annual BSPR meeting to be held in Hinxton, Cambridge in July 2010. Fellowships will cover the full cost of registration, conference dinner and on-site accommodation; awardees will be expected to contribute their own travel costs. Applicants should be members of the BSPR. The deadline for applications is 19th March 2010.
+
+Awardees
+
+- Francois Griaud (University of Manchester)
+- Adam Byron (University of Manchester)
+
+- Student Bursaries: a number of bursaries to support the full cost of student registration for attendance at the annual BSPR meeting will be made. Awards will not cover accommodation or travel expenses. Applicants must be registered for a research degree but need not already be members of the BSPR. The deadline for applications is 19th March 2010.
+- Young Researcher Awards: a number of awards will be made to early-stage post-doctoral researchers to support registration at the annual BSPR meeting 2010. These awards will be either (i) up to the full cost of registration at the meeting if the applicant is a member of the BSPR (two months prior to the date of the announcement of the awards) or, (ii) a contribution towards registration fees up to a maximum of £200 if the applicant is not already a member of the Society – such applicants will be expected to join the Society. The deadline for applications is 19th March 2010.
+
+Awardees
+
+- Melanie Abonnenc (Kings College London)
+- Sarah Martin to (University of Edinburgh)
+- Marie-Claude Djidja (Institute of Cancer Research London)
+
+
+
+
+
+[MJ Dunn Application Form]({{site.baseurl}}/assets/files/MJ_Dunn_Fellowships_Application_Form_2010.doc)
+
+[Student Bursary Application Form]({{site.baseurl}}/assets/files/BSPR_Student_Bursary_Application_Form_2010.doc)
+
+[Young Researcher Application Form]({{site.baseurl}}/assets/files/BSPR_Young_Researcher_Award_Application_Form_2010.doc)
diff --git a/_pages/bspr-awards-and-fellowships-2011 .md b/_pages/bspr-awards-and-fellowships-2011 .md
new file mode 100644
index 0000000..c8a452e
--- /dev/null
+++ b/_pages/bspr-awards-and-fellowships-2011 .md
@@ -0,0 +1,44 @@
+---
+
+layout: single
+title: "BSPR Awards and Fellowships 2011"
+
+permalink: /bspr-awards-and-fellowships-2011
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+**BSPR/EBI Annual Meeting**
+
+The BSPR is pleased to announce the availability of several opportunities to support the attendance of young researchers at BSPR/EBI Annual Meeting.
+
+
+
+- MJ Dunn Fellowships: up to two prestigious Fellowships will be awarded to PhD students or early-stage post-doctoral researchers to enable them to attend the annual BSPR meeting to be held in Hinxton, Cambridge in July 2011. Fellowships will cover the full cost of registration, conference dinner and on-site accommodation; awardees will be expected to contribute their own travel costs. Applicants should be members of the BSPR. The deadline for applications has been extended to 30th April 2011.
+- Student Bursaries: a number of bursaries to support the full cost of student registration for attendance at the annual BSPR meeting will be made. Awards will not cover accommodation or travel expenses. Applicants must be registered for a research degree but need not already be members of the BSPR. The deadline for applications has been extended to 30th April 2011.
+- Young Researcher Awards: a number of awards will be made to early-stage post-doctoral researchers to support registration at the annual BSPR meeting 2011. These awards will be either (i) up to the full cost of registration at the meeting if the applicant is a member of the BSPR (two months prior to the date of the announcement of the awards) or, (ii) a contribution towards registration fees up to a maximum of £200 if the applicant is not already a member of the Society – such applicants will be expected to join the Society. The deadline for applications has been extended to 30th April 2011.
+
+News: BSPR Award Winner publishes content of presentation to BSPR Annual Meeting in Science Signaling
+
+**5th European Summer School "Proteomic Basics"**
+
+Two fellowships are being offered for Ph.D students or early-stage post-doctoral researchers to attend an intensive 5 day proteomics course, the 5th European Summer School "Proteomic Basics". This year the topic will be “From methods to clinical applications”. The course is taught by selection of internationally renowned proteomics researchers and will represent an excellent opportunity for young researchers to gain experience of Proteomics. Speakers who have already confirmed their attendance include: Matthias Mann, Albert Heck, Ole Jensen, Matthias Selbach, Thierry Rabilloud, John Cotrell, Marcus Bantscheff. Further information and can be found at: http://www.proteomic-basics.eu/ and here. At this stage the BSPR is inviting applications from suitably qualified Ph.D. students and early-stage post-doctoral researchers (i.e. first post-doc) for Fellowships to support attendance at the Summer School. The fellowships will cover the full cost of registration, accommodation (the Kloster Neustift in South Tyrol, Italy) and meals for the course. Applicants and/or their supervisors will be expected to meet the costs of travel themselves.
+
+Please complete the “Summer School Fellowships” application form and send by e-mail to stephen.pennington@ucd.ie (with “BSPR Summer School Fellowship” in the subject line) by 3RD JUNE 2011. Late applications will not be considered.
+
+Please note applicants must be paid up members of the BSPR but can become members for the purpose of applying for a Fellowship.
+
+
+[MJ Dunn Application Form]({{site.baseurl}}/assets/files/bspr-awards-and-fellowships-2011.pdf)
+
+[Young Researcher Application Form]({{site.baseurl}}/assets/files/BSPR_Young_Researcher_Award_Application_Form_2011.doc)
+
+[Student Bursary Application Form]({{site.baseurl}}/assets/files/BSPR_Student_Bursary_Application_Form_2011.doc)
+
+[Summer school Application Form]({{site.baseurl}}/assets/files/MJ_Dunn_Fellowships_Application_Form_2011.doc)
+
+
+
diff --git a/_pages/bspr-awards-and-fellowships-2013.md b/_pages/bspr-awards-and-fellowships-2013.md
new file mode 100644
index 0000000..0d3f820
--- /dev/null
+++ b/_pages/bspr-awards-and-fellowships-2013.md
@@ -0,0 +1,21 @@
+---
+
+layout: single
+title: "BSPR Awards and Fellowships 2013"
+
+permalink: /bspr-awards-and-fellowships-2013
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+#### 2013 MJ Dunn Fellowships
+
+We are delighted to publish reports of the BSPR 2013 annual meeting written by the two 'MJ Dunn Fellowship' awardees [Brian Flatley]({{site.baseurl}}/assets/files/BSPR_MJ Dunn_Fellowship_Confernece_Report_Brian Flatley.pdf) and [Lisa Staunton]({{site.baseurl}}/assets/files/BSPR_MJ Dunn_Fellowship_Confernece_Report_Brian Flatley.pdf).
+
+#### Bursaries for 7th European Summer School
+
+BSPR awarded two bursaries for attending the 7th European Summer School in 2013 and is delighted to publish here reports by the awardees [Snezhana Akpunarlieva]({{site.baseurl}}/assets/files/7th_European_Summer_School_by_Snezhana_Akpunarlieva.pdf) and [Bogusia Pesko]({{site.baseurl}}/assets/files/7th_European_Summer_School_by_Bogusia_Pesko.pdf)
\ No newline at end of file
diff --git a/_pages/bspr-brusaries-2015.md b/_pages/bspr-brusaries-2015.md
new file mode 100644
index 0000000..50202ae
--- /dev/null
+++ b/_pages/bspr-brusaries-2015.md
@@ -0,0 +1,26 @@
+---
+
+layout: single
+title: "BSPR BURSARIES 2015"
+
+permalink: /bspr-bursaries-2015
+
+sidebar:
+ nav: "docs"
+
+---
+
+## MJ Dunn Fellowship Awardee 2015
+In 2015, the Society is pleased to be able to announce that it will be offering a number of bursaries to assist members in attending conferences and similar events. These will include the M J Dunn Fellowship to attend the BSPR meeting in Reading in July, student travel awards (£250 max) for attendance and presentation of proteomics related research at scientific meetings, and an award to attend the European Proteomics Summer School in Italy in August. Further information will be posted on this website shortly or can be obtained from [Stephen Pennington].(mailto:Stephen.pennington@ucd.ie)
+
+
+
+[Saira Saleem]({{site.baseurl}}/assets/files/mjDunnAward2015.docs)
+
+
+
+## European Summer School Bursary Awardee 2015
+In 2015 the bursary was awarded to Arran David Dokal.
+
+
+[Arran David Doka]({{site.baseurl}}/assets/files/BPSR Conference Report – 9th European Summer School for Advanced Proteomics.docx)
\ No newline at end of file
diff --git a/_pages/bspr-lecturer.md b/_pages/bspr-lecturer.md
new file mode 100644
index 0000000..d42d974
--- /dev/null
+++ b/_pages/bspr-lecturer.md
@@ -0,0 +1,36 @@
+---
+
+layout: single
+title: "BSPR Lecturer"
+
+permalink: /bspr-lecturer/
+
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+ We are pleased to have **Prof Kathryn Lilley** from the University of Cambridge as our BSPR Lecturer.
+Kathryn’s main areas of research are in spatial proteomics and why proteins get to the correct place in the cell to allow them to function. She is also interested in how this is related to the steady state location of corresponding transcripts. Finally, she is fascinated by the fact that a, as yet unknown, portion of the proteome ‘moonlights’ with proteins having different context specific functions. Her research is using a variety of mass spectrometry, NGS, cellular fractionation and machine learning tools to delve deeper into the above. Kathryn is Director of the Cambridge Centre Proteomics as well as the Cambridge Systems Biology Centre. She is also the European Proteomics Association Juan Pablo Albar Proteomics Pioneer of 2017 awardee.
+
+
+In her role as BSPR Lecturer, Kathryn will be presenting a series of lectures over the coming year focused on the application of proteomics in biological sciences – her two offered lectures are entitled ‘Proteomics: design and quantitation’ - a talk that describes the protocols and workflows typically used in quantitative proteomics and the importance of experimental design and analysis in achieving robust data. Her second talk, ‘Proteomics approaches to map the three dimensional cell’, shows how it is possible to apply proteomics to give high resolution spatial maps of the cell and how these can be used to map protein relocalisation upon perturbation. The first lecture is intended for biologists who have less experience with the application of advanced proteomics, the second talk is intended for cell biologists with some knowledge of proteomics.
+
+
+To invite Kathryn to give a lecture please contact [secretary@bspr.org](mailto: secretary@bspr.org)
+
+
+
+
+Kathryn gave her first BSPR lecture on Friday 27th October to the MRC London Institute of Medical Sciences at Hammersmith as the keynote speaker at the end of their annual student symposium. The audience was PhD students from a variety of different backgrounds and some staff members. She spent half of her time explaining what the proteome is and how we measure it and the other half about how she uses these methods to define spatial maps of cells.
+
+**Further BSPR Lectures:**
+
+26th February 2018 - University of Liverpool
+
+13th April 2018 - University of Bradford
+
+23rd May 2018 - University of Southampton
+
+25th May 2018 - University of Warwick
\ No newline at end of file
diff --git a/_pages/bspr-lectureship-2010.md b/_pages/bspr-lectureship-2010.md
new file mode 100644
index 0000000..76dcdf4
--- /dev/null
+++ b/_pages/bspr-lectureship-2010.md
@@ -0,0 +1,55 @@
+---
+
+layout: single
+title: "BSPR Lectureship 2010"
+
+permalink: /bspr-lectureship-2010
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+The BSPR is pleased to announce a call for its newly established BSPR lectureship for experienced scientists in proteome research.
+
+The lecturer will educate in and promote proteome research and the activities of the BSPR to the wider scientific community to develop a greater understanding of proteomics and greater interest in the subject amongst researchers, students and the general public.
+
+This objective will be achieved by the presentation of a series of high-impact, research-based lectures, describing the lecturer’s particular field of expertise and interest. As the BSPR lectureship is seen as an excellent opportunity to increase the profile of the BSPR and proteomics, the lecturer must be committed to promoting both.
+
+Chosen from the UK-based scientists who employ or advance proteomic technologies, the recipient of the lectureship must be currently active in the field and have a good reputation for the communication of science.
+
+**Lecturer Profile**
+
+- UK-based scientist who employs or advances proteomic technologies and is currently active in the field.
+- The lecturer must have a good reputation for communicating science, and be committed to promoting and raising the profile of both proteome research and the BSPR.
+
+**Lecturer Role**
+
+- The lecturer will be sponsored to give up to 6 lectures per year. The final number will be dependent on demand and will be decided by mutual agreement.
+- Hosts will be able to choose from a selection of 2 lectures describing the lecturer’s area of research.
+- The lecturer, by agreement with the BSPR, will be sponsored when giving lectures at appropriate international conferences. The lecturer will recognize the support of BSPR and the goals of the lectureship as part of the presentation.
+
+**Funding**
+
+The BSPR will meet the following expenses directly incurred by carrying out the activities required by the lectureship:
+
+- Hotel accommodation (one night per lecture; bed and breakfast). Guide room rate of <£100.
+- Transport (standard class train fare, economy class air fare, car mileage).
+- Lunch (£15 max) and evening meal (£30 max).
+- If the lecturer is representing BSPR at a conference, lecture expenses will include Registration Fee for the meeting.
+- Expenses over and above these will need to be met by the lecturer.
+
+**Venues**
+
+The lectureship will be advertised on the BSPR website and by using other appropriate channels.
+
+- Institutions and not-for-profit organisations, preferably within the UK, can apply for the lecturer to visit. This could be as part of a prominent programme such as a departmental seminar series.
+- Final selection of venues will be made by mutual agreement between the lecturer and the BSPR committee.
+
+**Application procedure**
+
+- Applicants are asked to provide a two page CV, a list of publications and a two-page description of the proposed two lectures (incl. titles).
+- Submit the application to: Rainer Cramer (r.k.cramer@reading.ac.uk)
+- Deadline: 31. June 2010
+- The successful candidate will be chosen by a panel of expert proteomic researchers nominated by the BSPR committee.
+- The award will be announced at the annual BSPR meeting in July 2010.
\ No newline at end of file
diff --git a/_pages/bspr-lectureship-2011.md b/_pages/bspr-lectureship-2011.md
new file mode 100644
index 0000000..d0dc3e8
--- /dev/null
+++ b/_pages/bspr-lectureship-2011.md
@@ -0,0 +1,54 @@
+---
+
+layout: single
+title: "BSPR Lectureship 2011"
+
+permalink: /bspr-lectureship-2011
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+The BSPR has established a Lectureship Scheme for experienced scientists in proteome research. The Lecturer will promote proteome research and the activities of the BSPR to the wider scientific community, with the aim of increasing the understanding of proteomics and achieving a greater interest in the subject among researchers, students and the public. This objective will be achieved through a series of high-impact, research-based lectures, describing the lecturer’s particular field of expertise and interest. The BSPR Lectureship is an excellent opportunity to increase the profile of the BSPR and proteomics while also helping the individual and his or her institution.
+
+Candidates will be selected from scientists based in the British Isles who employ or advance proteomics. The recipient of the Lectureship must be active in the field and have a good reputation for communicating science.
+
+
+**Lecturer Profile**
+
+- A Scientist based in the British Isles, who employs or advances proteomics and is currently active in the field.
+
+- The Lecturer must have a good reputation for communicating science, and be committed to promoting and raising the profile of both proteome research and the BSPR.
+
+**Lecturer Role**
+
+- The Lecturer will be sponsored to give up to six lectures in a year. The final number will be dependent on demand and will be decided by mutual agreement.
+- Hosts will be able to choose from a selection of two lectures describing the lecturer’s area of research.
+- The Lecturer, by agreement with the BSPR, will be sponsored when giving lectures at appropriate international conferences. The Lecturer will recognize the support of BSPR and the goals of the lectureship, as part of the presentation.
+
+
+**Funding**
+
+The BSPR will meet the following expenses within the British Isles directly incurred by carrying out the activities required by the lectureship:
+
+- Hotel accommodation (one night per lecture; bed and breakfast). Guide room rate of <£100.
+- Transport (standard class train fare, economy class air fare, car mileage).
+- Lunch (£15 max) and evening meal (£30 max).
+- If the lecturer is representing BSPR at a conference, lecture expenses will include Registration Fee for the meeting.
+- Expenses over and above these will need to be met by the lecturer.
+
+**Venues**
+
+- The lectureship will be advertised on the BSPR website and by using other appropriate channels.
+- Institutions and not-for-profit organisations, preferably within the British Isles, can apply for the lecturer to visit. This could be as part of a prominent programme such as a departmental seminar series.
+- Final selection of venues will be made by mutual agreement between the lecturer and the BSPR committee.
+
+**Application procedure**
+
+- Applicants are asked to provide a two page CV, a list of publications and a two-page description of the proposed two lectures (incl. titles).
+- Please submit the application to: Rainer Cramer (r.k.cramer@reading.ac.uk)
+- Deadline: 30. June 2011
+- The successful candidate will be chosen by a panel of expert proteomic researchers nominated by the BSPR committee.
+- The award will be announced at the annual BSPR meeting.
diff --git a/_pages/bursaries.md b/_pages/bursaries.md
new file mode 100644
index 0000000..26138e6
--- /dev/null
+++ b/_pages/bursaries.md
@@ -0,0 +1,60 @@
+---
+
+layout: single
+title: "Bursaries and fellowships"
+
+permalink: /bursaries-and-fellowships/
+
+comments: true
+sidebar:
+ nav: "docs"
+---
+
+
+
+Several bursaries and fellowships are awarded to student and post-doc BSPR members each year. For 2018 we will offer ten student travel bursaries and two MJ Dunn Fellowships to attend the BSPR 2018 conference in Bradford (9-11 July 2018).
+
+
+
+**Student Bursaries**
+
+Students (MSc and Ph.D.) awarded a bursary will receive £250 to help cover meeting registration, accommodation and travel expenses for the BSPR 2018 conference. To apply, please send a brief CV, a statement saying why you wish to attend the meeting and an abstract of the work that you plan to present to Karin Barnouin (kbarnouin@gmail.com) and John Timms (john.timms@ucl.ac.uk) no later than Monday 7th May 2018 (the abstract submission deadline for the meeting). Students must be paid-up members of the BSPR to apply. By accepting the award, the Society will expect to receive a report on the meeting for inclusion in the Society’s newsletter and webpages.
+
+
+
+**MJ Dunn Fellowships**
+
+MJ Dunn Fellowship awards will be given to cover registration, accommodation and travel expenses for the BSPR 2018 conference. To apply, please send a brief CV together with a statement saying why you wish to attend the meeting, including an abstract of the work that you plan to present to Karin Barnouin (kbarnouin@gmail.com) and John Timms (john.timms@ucl.ac.uk) no later than 7th May 2018 (the abstract submission deadline for BSPR). Applicants must be within six years of completing their Ph.D. and be paid-up members of the BSPR. By accepting the award, the Society will expect to receive a report on the meeting for inclusion in the Society’s Newsletter and webpages.
+
+
+
+**Scientific Mission Program**
+
+The Scientific Mission Program in collaboration with EuPA will support exchange programs of young researchers. This program is dedicated to developing collaborative networks among the different EuPA member communities. A minimum of two EuPA member Societies must support the proposal. The BSPR will support applicants resident in the UK and Ireland. New collaborations, dedicated brief experimental sessions, and training activities will be prioritized. Congress participation is not an eligible activity.
+
+
+
+To be considered for this program, you should send a synopsis of the research proposal together with a short CV to Karin Barnouin (kbarnouin@gmail.com ) and John Timms (john.timms@ucl.ac.uk). Successful applicants will receive a presentation letter stating the amount allocated (€500 maximum) signed by the legal representative from BSPR.
+
+
+
+The full application to the Scientific Mission Program must be sent to the EuPA Secretary, Christian Kleinhammer (c.kleinhammer@aon.at ), no later than one month before the scheduled mission. The applicant must produce two letters of presentation from two EuPA societies (signed by the respective legal representatives) stating the allocated amount and a research proposal synopsis (1 side A4 paper). Funds will be transferred to the successful applicant upon acknowledgment of the receiving institution with a letter stating the completion of the proposed activities. EuPA will subsidize this exchange program by matching the amount of the fellowship awarded to the young researcher by supporting EuPA member Societies up to €1000.
+
+
+
+Applicants must meet the following requirements:
+
+Be within seven years of being awarded a Ph.D. (for post-doctoral applicants) or Master/Bachelor degree (for Ph.D. student applicants)
+Be a BSPR member
+
+
+
+
+- [BSPR 2017 Bursaries and Fellowships]({{site.baseurl}}/bspr-2017-bursaries-and-fellowships)
+- [BSPR Bursaries 2016]({{site.baseurl}}/bspr-bursaries-2016)
+- [BSPR Bursaries 2015]({{site.baseurl}}/bspr-bursaries-2015)
+- [BSPR Awards and Fellowships 2013]({{site.baseurl}}/sbspr-awards-and-fellowships-2013 )
+- [BSPR Awards and Fellowships 2011]({{site.baseurl}}//bspr-awards-and-fellowships-2011 )
+- [BSPR Lectureship 2011]({{site.baseurl}}/bspr-lectureship-2011 )
+- [BSPR Awards and Fellowships 2010]({{site.baseurl}}/bspr-awards-and-fellowships-2010 )
+- [BSPR Lectureship 2010]({{site.baseurl}}/bspr-lectureship-2010 )
diff --git a/_pages/contact.md b/_pages/contact.md
new file mode 100644
index 0000000..d2b0f5b
--- /dev/null
+++ b/_pages/contact.md
@@ -0,0 +1,20 @@
+---
+
+layout: single
+title: "Contact us"
+
+permalink: /contact/
+comments: true
+sidebar:
+ nav: "docs"
+---
+
+
+
+
\ No newline at end of file
diff --git a/_pages/early-stage-career-investigator-award.md b/_pages/early-stage-career-investigator-award.md
new file mode 100644
index 0000000..32f305a
--- /dev/null
+++ b/_pages/early-stage-career-investigator-award.md
@@ -0,0 +1,42 @@
+---
+
+layout: single
+title: "Early Stage Career Investigator Award"
+
+permalink: /early-stage-career-investigator-award
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+Abstracts are invited for the Early Stage Investigator Award which is being sponsored
+
+Early stage researchers are those who are in their first or (exceptionally) their second post-doctoral post. 'Independent' investigators will not be included.
+
+
+The six best Abstracts as selected by the judging panel (Chaired by John Timms) will be scheduled for oral presentation (10 minutes + 5 minutes for discussion) in a relevant Session of the meeting.
+
+Those who are not selected as finalists for oral presentation for the Early Stage Career Investigator Award will be invited to present a poster at the meeting.
+
+
+Abstracts for the Early Stage Investigator Award must be submitted on-line. The deadline for submissions is now Friday 17th June 2011. Remember to select ‘Apply for Early Stage Career Investigator Award’ as the type of presentation
+
+
+Before submitting please take into consideration:
+
+- Abstracts should be submitted ideally in Times New Roman or Arial font size 12.
+- The abstracts should be no longer than 2000 characters and should clearly state the authors with the name of the presenting author underlined, the affiliation of the authors, the aims of the work to be presented, methods employed and results obtained.
+- The limit of 2000 characters refers to manually typed text.
+- Please enter your co authors correctly via the system by adding accounts with their institution and DO NOT copy them into the body of the abstract text.
+- If you copy paste the text, hidden formatting might still be included and you will be informed that your text exceeds the limit of 2000 characters.
+- We recommend copy-pasting it into Notepad and then onto the website.
+- Some symbols are not recognized by the tool if they are copy-pasted. Make sure to use the website’s editing tool to include the special characters.
+- If errors still occur try using a different web browser.
+
+Please note that you must be registered for the meeting before you can submit an abstract.
+
+You will need your user name and password from the registration process to access the abstract submission page.
+BSPR menu:
+Meeting 2011
diff --git a/_pages/event-lists.md b/_pages/event-lists.md
new file mode 100644
index 0000000..8c17faa
--- /dev/null
+++ b/_pages/event-lists.md
@@ -0,0 +1,70 @@
+---
+
+layout: single
+title: "BSPR Annual Meetings"
+
+permalink: /events/
+comments: true
+sidebar:
+ nav: "docs"
+---
+
+
+
+
+
+
+
+
+### 2016
+
+- [BSPR 2016]({{site.baseurl}}/event/bspr-meeting-2016)
+
+
+### 2015
+
+- [BSPR 2015]({{site.baseurl}}/event/bspr-meeting-2015)
+
+### 2014
+
+- As the 2013 meeting took place in December, the 2014 meeting was skipped. We are looking forward to the 2015 meeting in Reading!
+
+### 2013
+
+- [BSPR 2013]({{site.baseurl}}/event/bspr-meeting-2013)
+
+
+### 2012
+- [EuPA/BSPR 2012 Abstracts]({{site.baseurl}}/assets/files/EUPA2012Abstracts_final.pdf)
+- [EuPA/BSPR 2012 Photos]()
+
+### 2011
+- [BSPR-EBI 2011 programme]({{site.baseurl}}/event/bspr-ebi-2011-programme)
+- [BSPR-EBI 2011 presentations]({{site.baseurl}}/bspr-ebi-2011-presentations)
+- [BSPR Lectureship 2011]({{site.baseurl}}/bspr-lectureship-2011)
+- [BSPR Awards and Fellowships 2011]({{site.baseurl}}/bspr-awards-and-fellowships-2011)
+
+### 2010
+- [BSPR-EBI 2010 programme]({{site.baseurl}}/event/bspr-ebi-2010-programme)
+- [[BSPR-EBI 2010 presentations]({{site.baseurl}}/bspr-ebi-2010-presentations)
+- [BSPR Lectureship 2010]({{site.baseurl}}/bspr-lectureship-2010)
+- [BSPR Fellowships and Awards]({{site.baseurl}}/bspr-awards-and-fellowships-2010)
+- [BSPR-EBI 2010 Meeting flyer]({{site.baseurl}}/assets/files/bspr-awards-and-fellowships-2010.pdf)
+
+### 2009
+- [BSPR_EBI_2009.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2009.pdf)
+
+### 2008
+- [BSPR_EBI_2008.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2008.pdf)
+
+### 2007
+- [BSPR_EBI_2007.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2007.pdf)
+
+### 2006
+- [BSPR_EBI_2006.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2006.pdf)
+
+### 2005
+- [BSPR_EBI_2005.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2005.pdf)
+
+### 2004
+- [BSPR_EBI_2004.pdf]({{site.baseurl}}/assets/files/BSPR_EBI_2004.pdf)
\ No newline at end of file
diff --git a/_pages/general-information.md b/_pages/general-information.md
new file mode 100644
index 0000000..3506f0f
--- /dev/null
+++ b/_pages/general-information.md
@@ -0,0 +1,84 @@
+---
+
+layout: single
+title: "General information"
+permalink: /general-information
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+
+
+
+
+We are pleased to announce that, following yet another very successful year at Hinxton, the 8th annual scientific meeting of the British Society for Proteome Research will again be organized in collaboration with the European Bioinformatics Institute (EBI) and held in the popular Wellcome Trust Conference Centre from 12-14 July 2011.
+The meeting will be preceded by a workshop 'New Frontiers in Proteomic Technology' and will be immediately followed by the joint EBI-Wellcome Trust course on Proteomics Bioinformatics.
+
+- [Registration]({{site.baseurl}}/registration-information) for the meeting is now open.
+- [Poster Abstract]({{site.baseurl}}/poster-abstract-submission) Submission is now also open, [Oral Communications]({{site.baseurl}}/oral-communication-abstract-submission) and the [Early Stage Career]({{site.baseurl}}/early-stage-career-investigator-award) Investigator Award.
+- [Browse the Provisional Programme]({{site.baseurl}}/assets/files/BSPR_2011_Programme.pdf)
+
+**Meeting Focus**
+
+Defining and quantifying all the proteins in a cell/tissue or organism is one of the current grand challenges in proteomics. The resulting 'proteome maps' would have critical applications in many arenas and would support a completely new view of the protein world. Recent developments in technology have allowed increasingly rapid progress towards this goal of whole 'proteome maps' but much more remains to be done if we are to characterise those proteins that are, so far, recalcitrant to analysis - the 'hidden proteome'.
+
+The meeting will bring together international researchers working in disciplines integral to uncovering the 'hidden proteome' to review progress, consider biological insights gained from such studies, and to prioritize future challenges. The program of the meeting places emphasis on clinical applications including the identification of disease biomarkers and opportunities in current large scale studies such as the Human Proteome Project.
+
+Sessions and Topics:
+
+- Session 1: The Dynamic Proteome
+- Session 2: Quantitative proteomics: To label or not to label
+- Session 3: The Deep Proteome: Discovery and Quantification
+- Session 4: Tackling the Serum/Plasma Proteome
+- Session 5: Plant, Fungal and Microbial Proteomics
+- Session 6: Advances in Bioinformatics
+- Session 7: Exploring the Post-Translational Space
+- Session 8: Novel Methodologies and Techniques
+- Session 9: Clinical Proteomics
+- Panel discussion: the Human Proteome Project and future priorities
+- Early Stage Career Investigator Award
+- Oral Communications
+- Posters
+
+
+Keynote and Plenary Lecturers
+
+- Tim Hunt
+- Fuchu He
+
+Invited Speakers
+
+- Jürgen Cox
+- Kris Gevaert
+- Claus Jorgensen
+- Peter Jungblut
+- Martin Larsen
+- Karl Mechtler
+- Gil Omenn
+- Paola Picotti
+- Eric Schirmer
+- Kai Stühler
+- Marius Ueffing
+- Christian von Mering
+- Anthony Whetton
+
+**Pre-Conference Workshop**
+
+[New Frontiers in Proteomic Technology]({{site.baseurl}}/pre-meeting-bspr-workshop) James Watson Pavilion, Wellcome Trust Conference Centre, Hinxton, Cambridge, UK 11 July 2011
+
+**Post-Conference Workshop**
+
+[Joint EBI-Wellcome Trust Course on Proteomics Bioinformatics]({{site.baseurl}}/joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics)
EBI, Hinxton, Cambridge, UK 15-19 July 2011
+
+
+**Bursaries**
+
+The BSPR is pleased to announce the availability of several opportunities to support the attendance of young researchers at the 2011 BSPR/EBI meeting. [Read more]({{site.baseurl}}/bspr-awards-and-fellowships-2011) ...
+
+**Trade Exhibition**
+
+A high quality Trade Exhibition involving many of the leading companies will be held during the meeting.
diff --git a/_pages/help-to-promote-this-meeting.md b/_pages/help-to-promote-this-meeting.md
new file mode 100644
index 0000000..065ddfc
--- /dev/null
+++ b/_pages/help-to-promote-this-meeting.md
@@ -0,0 +1,32 @@
+---
+
+layout: single
+title: "Help to Promote this Meeting"
+
+permalink: /help-to-promote-this-meeting
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+If you would like to help with promoting this meeting to your colleagues you are welcome to download, print out and display this meeting flyer, or add a link to this website from your local website. This will help enormously with advertising this event more widely and is most appreciated.
+
+
+[Flyer]({{site.baseurl}}/assets/files/Final_BSPR_A3_flyerVs4.pdf)
+
+Banner
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_pages/job-adverts.md b/_pages/job-adverts.md
new file mode 100644
index 0000000..5fa2168
--- /dev/null
+++ b/_pages/job-adverts.md
@@ -0,0 +1,13 @@
+---
+
+layout: single
+title: "Job advert"
+
+permalink: /proteomics/job-adverts
+
+sidebar:
+ nav: "docs"
+
+---
+
+TBA
\ No newline at end of file
diff --git a/_pages/joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics.md b/_pages/joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics.md
new file mode 100644
index 0000000..1d514e8
--- /dev/null
+++ b/_pages/joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics.md
@@ -0,0 +1,18 @@
+---
+
+layout: single
+title: "Joint EBI-Wellcome Trust Course on Proteomics Bioinformatics"
+
+permalink: /joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+15-19 July 2011. EBI, Hinxton, Cambridge, UK
+
+
+This joint EBI-Wellcome Trust workshop provides hands-on training in the basics of mass spectrometry and proteomics bioinformatics, search engines, quantitative approaches including SRM/MRM, MS data repositories, the use of public databases for protein analysis, annotation of subsequent protein lists and incorporation of information from molecular interaction and pathway databases. Further information can be obtained from the EBI website.
+
+[Read more](http://www.ebi.ac.uk/training/handson/course_110715_proteomics.html)
\ No newline at end of file
diff --git a/_pages/membership-application.md b/_pages/membership-application.md
new file mode 100644
index 0000000..f8f8939
--- /dev/null
+++ b/_pages/membership-application.md
@@ -0,0 +1,21 @@
+---
+
+layout: single
+title: "Membership Application"
+
+permalink: /about/membership/application
+
+sidebar:
+ nav: "docs"
+
+---
+
+The subscription year is from January through to December and no pro rata rates are offered. **Membership application is now open.** £15 annual subscription for full membership (by standing order).Please read the [Guidnce notes on applying for membership]({{site.baseurl}}/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf). You will also need to print a copy of either the Membership Application Form or, if you are already a member, the Membership Renewal Form together with the [Standing Order Authority]({{site.baseurl}}/assets/files/BSPR standing order form.pdf), unless paying by cheque. BSPR looks forward to receiving your application. Please direct all membership related enquiries to the BSPR membership secretary via email to membership@bspr.org
+
+
+- [BSPR_Guidance_notes_on_applying_for_membership.pdf]({{site.baseurl}}/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf)
+- [BSPR membership application form.pdf]({{site.baseurl}}/assets/files/BSPR membership application form.pdf)
+- [BSPR standing order form.pdf]({{site.baseurl}}/assets/files/BSPR standing order form.pdf)
+- [BSPR corporate membership application form.pdf]({{site.baseurl}}/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf)
+
+
diff --git a/_pages/membership-benefits.md b/_pages/membership-benefits.md
new file mode 100644
index 0000000..95c1a24
--- /dev/null
+++ b/_pages/membership-benefits.md
@@ -0,0 +1,26 @@
+---
+
+layout: single
+title: "Membership Benefits"
+
+permalink: /about/membership/benefits
+
+sidebar:
+ nav: "docs"
+
+---
+
+
+- Annual high-profile BSPR conference
+- Training workshops
+- Reduced registration fees at BSPR meetings
+- Travel bursaries
+ - [MJ Dunn Fellowship Awardee 2015]({{site.baseurl}}/bspr-bursaries-2015)
+- Young investigator awards
+- Lectureship scheme
+- Regional meetings - typically 2 per year
+- Regularly updated website to keep members informed of recent developments, forthcoming meetings of the BSPR, other conferences and workshops in the UK and overseas
+- Advanced notification of grant initiatives, new technologies etc.
+- Networking opportunities/ access to expertise
+- Members-only section with access to presentations and abstracts from previous meetings
+- Up-to-date information on the activities of the Human Proteome Organization (HUPO) and the European Proteomics Association (EuPA) and other national proteomic societies.
\ No newline at end of file
diff --git a/_pages/membership-renewal-2017.md b/_pages/membership-renewal-2017.md
new file mode 100644
index 0000000..3e70d85
--- /dev/null
+++ b/_pages/membership-renewal-2017.md
@@ -0,0 +1,12 @@
+---
+
+layout: single
+title: "Membership Renewal 2017"
+
+permalink: /membership-renewal-2017/
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+2017 subscriptions were due on 1st January. £15 annual subscription for full membership (by standing order).Those that have been paid by standing order will shortly be acknowledged and reminders will be sent to those who pay by cheque / cash. Enquiries should be sent to our membership secretary, [Roz Jenkins.](mailto:R.Jenkins@liverpool.ac.uk)
\ No newline at end of file
diff --git a/_pages/news-lists.html b/_pages/news-lists.html
new file mode 100644
index 0000000..2112119
--- /dev/null
+++ b/_pages/news-lists.html
@@ -0,0 +1,28 @@
+---
+
+layout: single
+title: "News"
+
+permalink: /news/
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+{%for post in site.categories.News%}
+
+
+ {{post.title}}
+
+{% endfor %}
+
+
+
+
+
+
+
+
diff --git a/_pages/newsletter-lists.html b/_pages/newsletter-lists.html
new file mode 100644
index 0000000..0433b12
--- /dev/null
+++ b/_pages/newsletter-lists.html
@@ -0,0 +1,28 @@
+---
+
+layout: single
+title: "Newsletter"
+
+permalink: /newsletters/
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+{%for post in site.categories.Newsletters%}
+
+
+ {{post.title}}
+
+{% endfor %}
+
+
+
+
+
+
+
+
diff --git a/_pages/oral-communication-abstract-submission.md b/_pages/oral-communication-abstract-submission.md
new file mode 100644
index 0000000..32e0cf6
--- /dev/null
+++ b/_pages/oral-communication-abstract-submission.md
@@ -0,0 +1,37 @@
+---
+
+layout: single
+title: "Oral Communication Abstract Submission"
+
+permalink: /oral-communication-abstract-submission
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+There is an opportunity to submit Abstracts for Oral Communications on topics relevant to the theme of the meeting.
+
+The Abstracts as selected by the Programme Committee will be scheduled for oral presentation (10 minutes + 5 minutes for discussion) during the meeting.
+
+Those Abstracts which are not selected for oral presentation can be presented as posters at the meeting.
+
+Abstracts for Oral Communications must be submitted on-line. The deadline is now Friday 17th June 2011 – remember to select ‘Apply for Oral Communication’ as the type of presentation
+
+Registration
+
+Before submitting please take into consideration:
+
+- Abstracts should be submitted ideally in Times New Roman or Arial font size 12.
+- The abstracts should be no longer than 2000 characters and should clearly state the authors with the name of the presenting author underlined, the affiliation of the authors, the aims of the work to be presented, methods employed and results obtained.
+- The limit of 2000 characters refers to manually typed text.
+- Please enter your co authors correctly via the system by adding accounts with their institution and DO NOT copy them into the body of the abstract text.
+- If you copy paste the text, hidden formatting might still be included and you will be informed that your text exceeds the limit of 2000 characters.
+- We recommend copy-pasting it into Notepad and then onto the website.
+- Some symbols are not recognized by the tool if they are copy-pasted. Make sure to use the website’s editing tool to include the special characters.
+
+If errors still occur try using a different web browser.
+
+Please note that you must be registered for the meeting before you can submit an abstract.
+
+You will need your user name and password from the registration process to access the abstract submission page.
diff --git a/_pages/poster-abstract-submission-page-2010.md b/_pages/poster-abstract-submission-page-2010.md
new file mode 100644
index 0000000..e7ee16b
--- /dev/null
+++ b/_pages/poster-abstract-submission-page-2010.md
@@ -0,0 +1,39 @@
+---
+
+layout: single
+title: "Poster Abstract Submission 2010"
+
+permalink: /poster-abstract-submission-2010
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+A prize, sponsored by the Royal Society of Chemistry journal Molecular BioSystems, will be awarded for the best poster at the Meeting
+
+
+
+
+
+
+
+
+
+
+Registration is closed!
+
+Abstracts must be submitted on-line (see details below) Before submitting please take into consideration:
+
+- Abstracts should be submitted ideally in Times New Roman or Arial font size 12.
+- The abstracts should be no longer than 2000 characters and should clearly state the authors with the name of the presenting author underlined, the affiliation of the authors, the aims of the work to be presented, methods employed and results obtained.
+- The limit of 2000 characters refers to manually typed text.
+- Please enter your co authors correctly via the system by adding accounts with their institution and DO NOT copy them into the body of the abstract text.
+- If you copy paste the text, hidden formatting might still be included and you will be informed that your text exceeds the limit of 2000 characters.
+- We recommend copy-pasting it into Notepad and then onto the website.
+- Some symbols are not recognized by the tool if they are copy-pasted. Make sure to use the website’s editing tool to include the special characters
+- If errors still occur try using a different web browser.
+
+Please note that you must be registered for the meeting before you can submit an abstract.
+
+You will need your user name and password from the registration process to access the abstract submission page.
\ No newline at end of file
diff --git a/_pages/poster-abstract-submission-page-2011.md b/_pages/poster-abstract-submission-page-2011.md
new file mode 100644
index 0000000..dcdfe65
--- /dev/null
+++ b/_pages/poster-abstract-submission-page-2011.md
@@ -0,0 +1,30 @@
+---
+
+layout: single
+title: "Poster Abstract Submission"
+
+permalink: /poster-abstract-submission
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+The deadline for submission of poster abstracts is now Friday 17th June 2011. Abstracts must be submitted on-line after registration
+Registration
+
+Before submitting please take into consideration:
+
+- Abstracts should be submitted ideally in Times New Roman or Arial font size 12.
+- The abstracts should be no longer than 2000 characters and should clearly state the authors with the name of the presenting author underlined, the affiliation of the authors, the aims of the work to be presented, methods employed and results obtained.
+- The limit of 2000 characters refers to manually typed text.
+- Please enter your co authors correctly via the system by adding accounts with their institution and DO NOT copy them into the body of the abstract text.
+- If you copy paste the text, hidden formatting might still be included and you will be informed that your text exceeds the limit of 2000 characters.
+- We recommend copy-pasting it into Notepad and then onto the website.
+- Some symbols are not recognized by the tool if they are copy-pasted. Make sure to use the website’s editing tool to include the special characters
+- If errors still occur try using a different web browser.
+
+Please note that you must be registered for the meeting before you can submit an abstract.
+
+You will need your user name and password from the registration process to access the abstract submission page.
diff --git a/_pages/pre-meeting-bspr-workshop .md b/_pages/pre-meeting-bspr-workshop .md
new file mode 100644
index 0000000..4ff6d94
--- /dev/null
+++ b/_pages/pre-meeting-bspr-workshop .md
@@ -0,0 +1,15 @@
+---
+
+layout: single
+title: "Pre-meeting BSPR Workshop"
+
+permalink: /pre-meeting-bspr-workshop
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+New Frontiers in Proteomic Technology Organisers: Chris Sutton, John Timms EBI, Hinxton, Cambridge, UK, 11 July 2011 Progress in proteomics is largely driven by technology and recently there have been a number of major innovations that are radically improving our ability to detect, characterise and quantify components of the proteome. This workshop draws together researchers and technology developers working at the cutting edge to review current advances in equipment and instrumentation as well as in software and reagents. The workshop, which complements the main meeting, will comprise an “A Beginners Guide to Quantitative Proteomics: technologies and data analysis methods” by Dr Kathryn Lilley (Cambridge), for those new to the field, followed by a series of lectures, by scientists from proteomics companies or their guest speakers, which will provide insights into the novel and innovative that are emerging solutions from industry. The workshop fee is now free. Registration page.
+
+[BSPR 2011 Workshop Programme.pdf]({{site.baseurl}}/assets/files/BSPR_2011_Programme.pdf)
\ No newline at end of file
diff --git a/_pages/registration-information-2011.md b/_pages/registration-information-2011.md
new file mode 100644
index 0000000..a494e32
--- /dev/null
+++ b/_pages/registration-information-2011.md
@@ -0,0 +1,65 @@
+---
+
+layout: single
+title: "Registration information"
+
+permalink: /registration-information
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+**BSPR Member Registration fee:**
+
+£320.00
+
+**Non-BSPR Member Registration fee:**
+
+£460.00
+
+**Student Registration fee:**
+
+£200
+
+Please note these fees do not include accommodation. *Please note that the BSPR Member Registration fee is also available to members of National Proteomics Societies associated with the European Proteomics Association (EuPA). **Please note that Student registrants will be limited to 100, on a first-come, first-served basis. This offer is available to UK and Irish PhD students (who do not have to be existing BSPR members), and is also available to student members of National Proteomics Societies associated with EuPA. Non-resident includes: Tuesday 12th July - buffet lunch, tea/coffee, drinks reception; Wednesday 13th July - buffet lunch, tea/coffee, drinks reception; Thursday 14th July - buffet lunch, tea/coffee.
+
+**Accommodation Packages**
+
+We have a limited number of rooms available onsite at the Wellcome Trust Conference Centre. Please Note: For participants that are unable to get a room onsite, there will be buses running to Cambridge City centre each morning and afternoon, which will stop near the Travelodge by Cambridge train station and also the Holiday Inn in Whittlesford (opposite Whittlesford train station)
+
+**On-site accommodation package (WTCC)**
+
+**WTCC DB&B accommodation: 11 July 2011 (inc Dinner)**
+
+£92.00
+
+**WTCC DB&B accommodation package: 12 - 13 July (inc conference dinner)**
+
+£189.00
+
+**WTCC B&B accommodation: 14 July 2011 (no Dinner)**
+
+£60.00
+
+**Conference Dinner, Wednesday 13th July**
+
+£37
+
+**BSPR 11th July Workshop**
+
+New Frontiers in Proteomic Technology
+
+Now Free
+
+**Access to the registration site:**
+
+Please select here to register
+
+Payment can be made through the registration system only via a debit or credit card. We cannot accept balance transfers or cheques. Please send any enquiries relating to registration and abstract submission via email to registration@bspr.org
+
+**Travel Information**
+
+Please use the [document]({{site.baseurl}}/assets/files/Visitor_travel_Information_2010.pdf) to find out further information including how to get to the Genome Campus by bus, train and car. The document includes a map of the area as well as a campus map showing Hinxton Hall and the conference centre.
+
diff --git a/_pages/society-links.md b/_pages/society-links.md
new file mode 100644
index 0000000..38d72a0
--- /dev/null
+++ b/_pages/society-links.md
@@ -0,0 +1,73 @@
+---
+
+layout: single
+title: "Society links"
+
+permalink: /proteomics/society-links
+
+sidebar:
+ nav: "docs"
+
+---
+
+
+### Mass spectrometry societies
+[Japanese Mass Spectrometry Society ](http://www.mssj.jp/)
+[Norwegian Mass Spectrometry Society ](http://www.nsms.no/index.php)
+[Polish Mass Spectrometry Society ](http://ptsm.ibch.poznan.pl/index.php?option=com_content&view=article&id=105&Item...=)
+[South African Mass Spectrometry Society ](http://www.up.ac.za/academic/acadorgs/saams/)
+[Spanish Mass Spectrometry Society ](http://www.e-seem.org/)
+[Swedish Mass Spectrometry Society ](http://www.smss.se/)
+[Swiss Mass Spectrometry Society ](http://www.sgms.ch/)
+[Swiss Mass Spectrometry Society ](http://www.sgms.ch/)
+[American Mass Spectrometry Society ](http://www.asms.org/)
+[Australian and New Zealand Mass Spectrometry Society ](http://www.anzsms24.org/)
+[Belgian Mass Spectrometry Society ](http://bsms.be/)
+[British Mass Spectrometry Society ](http://www.bmss.org.uk/)
+[Protein and Peptide Science Group ](http://www.rsc.org/Membership/Networking/InterestGroups/ProteinPeptideScience/)
+[Canadian Mass Spectrometry Society ](http://www.csms-scsm.ca/)
+[Danish Mass Spectrometry Society ](http://www.dsms.dk/)
+[Dutch Mass Spectrometry Society ](http://denvms.nl/)
+[European Mass Spectrometry Society ](http://www.bmb.leeds.ac.uk/esms/)
+[French Mass Spectrometry Society ](http://www.sfsm.fr/)
+[German Mass Spectrometry Society ](http://www.dgms-online.de/)
+[International Mass Spectrometry Society ](International Mass Spectrometry Society)
+[Irish Mass Spectrometry Society ](http://www.imss.ie/)
+[Italian Mass Spectrometry Society ](http://www.cineca.it/hosted/mass_spectrom/)
+
+### Proteomics and electrophoresis societies
+
+[Proteome Society ](http://www.proteome.org/)
+[Réseau Protéomique de Montréal - Montreal Proteomics Network ](http://www.rpmpn.mcgill.ca/)
+[American Electrophoresis Society ](http://www.aesociety.org/)
+[Russian Human Proteome Organisation ](http://www.rhupo.ru/)
+[Australasian Proteomics Society ](http://www.australasianproteomics.org/)
+[Sociedad Española de Proteómica ](http://www2.cbm.uam.es/seprot/)
+[Austrian Proteomics Society ](http://proteomics.or.at/)
+[Swedish Proteomics Society ](http://www.sps.se/sven/organisation/organisation.htm)
+[California Separation Science Society ](http://www.casss.org/)
+[Swiss Electrophoresis Society ](http://www.electrophoresis.org/)
+[European Proteomics Association ](http://www.eupa.org/)
+[Swiss Proteomics Society ](http://www.swissproteomicsociety.org/)
+[Finnish Proteomics Society ](http://www.finnprot.org/)
+[US HUPO ](http://www.ushupo.org/)
+[La Société Française d'Electrophorése et d'Analyse Protéomique ](http://www.sfeap.fr/)
+German Electrophoresis Society
+[German Society for Proteomics ](http://www.dgpf.org/)
+[Hellenic Proteomics Society ](http://www.hellenicproteomicssociety.gr/)
+[Human Proteome Organization ](http://www.hupo.org/)
+[International Council of Electrophoresis Societies (ICES) ](http://www.aesociety.org/ICES.html)
+[Iranian Proteomics Society ](http://www.proteomics.ir/PlantStress.aspx)
+[Italian Proteomic Association ](http://www.itpa.it/)
+[The Japanese Electrophoresis Society ](http://www.jes1950.jp/english/)
+[The Japanese Human Proteome Organization ](http://www.jhupo.org/)
+[The Korean Human Proteome Organization ](http://www.hupo.org/khupo/)
+[Nordic Society for Separation Science ](http://advancedsearch2.virginmedia.com/main?InterceptSource=0&ClientLocation=uk&...=)
+[Portuguese Proteomics Society ](http://www.procura-portugal.org/)
+[Proteomics and Metabolomics Victoria ](http://www.pmv.org.au/)
+[European Society for Biomedical Research on Alcoholism ](http://www.esbra.com/)
+[Institute of Biomedical Science ](https://www.ibms.org/)
+[National Endowment for Science, Technology and the Arts ](http://www.nesta.org.uk/)
+[The National Centre for the Replacement, Refinement and Reduction of Animals in Research ](http://www.nc3rs.org.uk/)
+[Society of Biology ](http://www.societyofbiology.org/)
+[UK mirror of ABRF ](http://www.abrf.org/)
diff --git a/_pages/sponsors.md b/_pages/sponsors.md
new file mode 100644
index 0000000..0b03989
--- /dev/null
+++ b/_pages/sponsors.md
@@ -0,0 +1,75 @@
+---
+
+layout: single
+title: "Sponsors"
+
+permalink: /sponsors/
+
+sidebar:
+ nav: "docs"
+comments: true
+gallery:
+ - url: https://www.agilent.com/
+ image_path: /assets/sponsors/ANAQUANT_1.jpg
+ alt: "placeholder image 1"
+ - url: http://www.anaquant.com/
+ image_path: /assets/sponsors/agilent.jpg
+ alt: "placeholder image 2"
+ - url: http://biopharma.co.uk/
+ image_path: /assets/sponsors/LOGO-BiopharmaGroup.jpg
+ alt: "placeholder image 3"
+ - url: http://www.ckisotopes.com/
+ image_path: /assets/sponsors/CK_Isotopes_Logo_2016.jpg
+ alt: "placeholder image 3"
+ - url: http://www.bruker.com/
+ image_path: /assets/sponsors/Bruker_logo_rgb_300dpi.png
+ alt: "placeholder image 3"
+ - url: http://www.ionbench.com/
+ image_path: /assets/sponsors/IONBENCH_300.png
+ alt: "placeholder image 3"
+ - url: http://www.kranalytical.co.uk/
+ image_path: /assets/sponsors/kra.jpg
+ alt: "placeholder image 3"
+ - url: http://www.merckgroup.com/en/index.html
+ image_path: /assets/sponsors/Matrix_Science.png
+ alt: "placeholder image 3"
+ - url: http://www.merckgroup.com/en/index.html
+ image_path: /assets/sponsors/MERCK_RPurple.jpg
+ alt: "placeholder image 3"
+ - url: https://www.olink.com/
+ image_path: /assets/sponsors/olink logo 2017-full.jpg
+ alt: "placeholder image 3"
+ - url: https://www.pharmafluidics.com/
+ image_path: /assets/sponsors/PharmaFluidics.jpg
+ alt: "placeholder image 3"
+ - url: https://www.promega.co.uk/?cs=y%20
+ image_path: /assets/sponsors/2017_PromegaLogo.jpg
+ alt: "placeholder image 3"
+ - url: http://www.mdpi.com/journal/proteomes
+ image_path: /assets/sponsors/Proteomes1.jpg
+ alt: "placeholder image 3"
+ - url: https://www.sarstedt.com/en/home/
+ image_path: /assets/sponsors/SARSTEDT Logo.jpg
+ alt: "placeholder image 3"
+ - url: http://sciex.com/
+ image_path: /assets/sponsors/SCIEX_LOGO_RGB.jpg
+ alt: "placeholder image 3"
+ - url: http://www.strettonscientific.co.uk/
+ image_path: /assets/sponsors/stretton-logo-large.jpg
+ alt: "placeholder image 3"
+ - url: http://www.thermoscientific.com/en/home.html
+ image_path: /assets/sponsors/Thermo Fisher Scientific_logo.jpg
+ alt: "placeholder image 3"
+ - url: https://www.pharmafluidics.com/
+ image_path: /assets/sponsors/Waters_logo_K_web2.jpg
+ alt: "placeholder image 3"
+
+
+---
+
+
+
+
+{% include gallery %}
+
+
diff --git a/_pages/tess.html b/_pages/tess.html
new file mode 100644
index 0000000..c33c734
--- /dev/null
+++ b/_pages/tess.html
@@ -0,0 +1,37 @@
+---
+
+layout: single
+title: "Proteomics Events"
+
+permalink: /tessviewer/
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_pages/test.md b/_pages/test.md
new file mode 100644
index 0000000..f7ebb1c
--- /dev/null
+++ b/_pages/test.md
@@ -0,0 +1,33 @@
+---
+
+layout: single
+title: "test"
+
+permalink: /test/
+
+feature_row:
+ - image_path: /assets/images/bspr_logo_100.jpg
+ alt: "customizable"
+ title: "Super Customizable"
+ excerpt: "Everything from the menus, sidebars, comments, and more can be configured or set with YAML Front Matter."
+ url: "/docs/configuration/"
+ btn_class: "btn--primary"
+ btn_label: "Learn More"
+ - image_path: /assets/images/bspr_logo_100.jpg
+ alt: "fully responsive"
+ title: "Responsive Layouts"
+ excerpt: "Built on HTML5 + CSS3. All layouts are fully responsive with helpers to augment your content."
+ url: "/docs/layouts/"
+ btn_class: "btn--primary"
+ btn_label: "Learn More"
+ - image_path: /assets/images/bspr_logo_100.jpg
+ alt: "100% free"
+ title: "100% Free"
+ excerpt: "Free to use however you want under the MIT License. Clone it, fork it, customize it, whatever!"
+ url: "/docs/license/"
+ btn_class: "btn--primary"
+ btn_label: "Learn More"
+
+---
+
+
diff --git a/_pages/travel-information-and-bus-timetable.md b/_pages/travel-information-and-bus-timetable.md
new file mode 100644
index 0000000..dcab164
--- /dev/null
+++ b/_pages/travel-information-and-bus-timetable.md
@@ -0,0 +1,105 @@
+---
+
+layout: single
+title: "Travel Information and Bus Timetable"
+
+permalink: /travel-information-and-bus-timetable
+comments: true
+sidebar:
+ nav: "docs"
+
+---
+
+
+**Conference buses**
+
+Conference buses will be provided to transport delegates to and from Cambridge during the meeting as well as to London Stansted Airport on the last day of the meeting. Please see the timetable below:-
+
+Tuesday 12th July
+
+08:00 Cambridge Train station
+
+08:10 Travelodge Hotel Cambridge Leisure Park
+
+08:40 Holiday Inn Whittlesford
+
+08:50 Wellcome Trust Conference Centre
+
+20:15 Wellcome Trust Conference Centre
+
+20:25 Holiday Inn Whittlesford
+
+20:55 Travelodge Hotel, Cambridge Leisure Park
+
+21:05 Cambridge Train Station
+
+Wednesday 13th July
+
+08:00 Cambridge Train station
+
+08:10 Travelodge Hotel Cambridge Leisure Park
+
+08:40 Holiday Inn Whittlesford
+
+08:50 Wellcome Trust Conference Centre
+
+20:15 Wellcome Trust Conference Centre
+ 20:25 Holiday Inn Whittlesford
+20:55 Travelodge Hotel, Cambridge Leisure Park
+ 21:05 Cambridge Train Station
+
+22:45 Wellcome Trust Conference Centre
+
+22:55 Holiday Inn Whittlesford
+
+23:25 Travelodge Hotel, Cambridge Leisure Park
+
+23:35 Cambridge Train Station
+
+Thursday 14th July
+
+08:00 Cambridge Train station
+
+08:10 Travelodge Hotel Cambridge Leisure Park
+
+08:40 Holiday Inn Whittlesford
+
+08:50 Wellcome Trust Conference Centre
+
+15:30 Wellcome Trust Conference Centre
+
+15:40 Holiday Inn Whittlesford
+
+16:10 Travelodge Hotel, Cambridge Leisure Park
+
+16:20 Cambridge Train Station
+
+15:30 Wellcome Trust Conference Centre
+
+Stansted Airport
+
+Trains
+
+From Cambridge Station you can get direct trains to London Liverpool Street, London King's Cross and Stansted Airport. For train timetables please see: www.nationalrail.co.uk
+
+From Whittlesford Parkway Station (5 minutes drive from campus – but beware there is no taxi bay so you need to pre-order a taxi) and Great Chesterford Station (10 minutes drive from campus) you can get direct trains to London Liverpool Street.
+
+Public bus between Hinxton and Cambridge
+
+There is a public bus (Citi 7) that operates daily. You can obtain a bus timetable from
+http://www.cambridgeshire.gov.uk/transport/around/buses/Bustimetabbusno.htm
+Look for Citi 7 route - Cottenham - Cambridge - Sawston - Duxford/Pampisford/Saffron Walden
+
+Airports
+
+The closest airports are in order: London Stansted (approx. half an hour’s drive), London City (approx. one hour’s drive), London Luton (approx. 50 minutes’ drive), London Heathrow (allow up to 2 hours’ drive) and London Gatwick (allow up to 2.5 hours’ drive).
+
+Taxis
+
+If you require a taxi, please ensure that you book this sufficiently in advance as it can take time for a taxi to reach Hinxton. A taxi from Cambridge to Hinxton costs approximately £25.00 - £30.00.
+
+Contact numbers for some local taxi companies are:
+
+- Mid-Anglia: 01223 836000
+- Mastercab: 01223 566654
+- Kenway Cars: 01223 832515
\ No newline at end of file
diff --git a/_posts/2010-05-30-BSPR-2010.md b/_posts/2010-05-30-BSPR-2010.md
new file mode 100644
index 0000000..cb88442
--- /dev/null
+++ b/_posts/2010-05-30-BSPR-2010.md
@@ -0,0 +1,84 @@
+---
+layout: single
+title: "BSPR-EBI 2010 programme"
+date: 2018-05-30
+permalink: /event/bspr-ebi-2010-programme
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+
+
+
+
+
+
+We are pleased to announce that, following yet another very successful year at Hinxton, the 7th annual scientific meeting of the British Society for Proteome Research will again be organized in collaboration with the European Bioinformatics Institute (EBI) and held in the popular Wellcome Trust Conference Centre from 13-15 July 2010.
+
+- Registration is closed!
+- [Poster Abstract Submission]({{site.baseurl}}/poster-abstract-submission-2010) is closed!
+
+For enquiries relating to either registration or abstract submission please contact via email to registration@bspr.org For all other enquiries relating to the conference please contact via email to meetings@bspr.org
+
+The [Final Programme]({{site.baseurl}}/assets/files/BSPR_2010_Programme (final).pdf) for the meeting is now available for download.
+
+**Meeting Focus**
+
+Protein identification and characterisation was the major thrust of the initial phase of proteomics. Quantitation, however, is pivotal to understanding the differences between cells and organisms under different physiological and pathophysiological conditions, and is an essential prerequisite for a true systems-level understanding of biological processes. The major focus of this meeting is recent strategies for qualitative description and quantitation of proteomes, and the novel informatic tools enabling their application to the discovery of new biomarkers, the elucidation of biological function, and the construction of cellular signalling and interaction networks. Sessions will cover the application of these technologies to proteomic research from prokaryotes to plants, animals, human and clinical studies.
+
+**Sessions and Topics**:
+
+- Quantitation by Labelling
+- Label-free Quantitation
+- Modern Array Technology
+- Advances in Bioinformatics
+- Animal Proteomics
+- Clinical Proteomics
+- Plant Proteomics
+- Protein Dynamics
+- Protein Interactions
+- Early Stage Career Investigator Award
+- Oral Communications
+- Posters
+
+**Keynote and Plenary Lecturers**
+*To be confirmed
+
+- Ruedi Aebersold (ETH Zurich, Switzerland)
+- John Yates III (Scripps Research Institute, USA)
+- Don Hunt (University of Virginia, USA)*
+
+**Honorary Membership Lecturer**
+
+- Angelika Goerg (Technical University Munich, Germany)
+
+**Invited Speakers**
+*To be confirmed
+
+- Amos Bairoch (Swiss Institute of Bioinformatics, Switzerland)
+- Rob Beynon (University of Liverpool, UK)
+- Dolores Cahill (University College Dublin, Ireland)
+- Ed Marcotte (University of Texas Austin, USA)*
+- Ingrid Miller (University of Veterinary Medicine Vienna, Austria)
+- Eckhard Nordhoff (Medical Proteome Center, Germany)
+- David O’Connor (University of Southampton, UK)*
+- Waltraud Schulze (Max-Planck-Institute for Plant Physiology, Germany)*
+- Markus Selbach (Max Delbrück Centre for Molecular Medicine, Germany)
+- John Semmes (Eastern Virginia Medical School, USA)
+- Hanno Steen (Children’s Hospital Boston, USA)
+- Jay Thelen (University of Missouri, USA)*
+- Phillip Wright (University of Sheffield, UK)
+- Michel Zivy (UMR de Génétique Végétale, France)*
+
+**Post-Conference Workshop**
+
+BSPR/EBI Educational Workshop
Quantitative Proteomics
EBI, Hinxton, Cambridge, UK 15-16 July 2010
+
+**Bursaries**
+
+The BSPR is pleased to announce the availability of several opportunities [BSPR Fellowships and Awards 2010]({{site.baseurl}}/bspr-awards-and-fellowships-2010) to support the attendance of young researchers at the 2010 BSPR/EBI meeting.
+
+**Trade Exhibition**
+
+A high quality Trade Exhibition involving many of the leading companies will be held during the meeting.
\ No newline at end of file
diff --git a/_posts/2011-05-30-BSPR-2011.md b/_posts/2011-05-30-BSPR-2011.md
new file mode 100644
index 0000000..18b01b9
--- /dev/null
+++ b/_posts/2011-05-30-BSPR-2011.md
@@ -0,0 +1,84 @@
+---
+layout: single
+title: "BSPR-EBI 2011 programme"
+date: 2018-05-30
+permalink: /event/bspr-ebi-2011-programme
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+
+
+
+
+
+
+
+
+### [BSPR Panel Discussion]({{site.baseurl}}/assets/files/BSPR2011Panel_Update_9Aug.pdf)
+
+
+
+**Registration Extended**: Midnight - Wednesday 29th June 2011
+
+Early Stage Career Investigator Award abstracts: 17th June 2011
+
+Oral Communication abstracts: 17th June 2011
+
+Poster abstracts: 17th June 2011
+
+- [General information]({{site.baseurl}}/general-information)
+- [Pre-meeting BSPR Workshop]({{site.baseurl}}/pre-meeting-bspr-workshop)
+- [Joint EBI-Wellcome Trust Course on Proteomics]({{site.baseurl}}/joint-ebi-wellcome-trust-course-on-proteomics-bioinformatics)
+- [Final Programme]({{site.baseurl}}/assets/files/BSPR_2011_Programme.pdf)
+- [Registration information]({{site.baseurl}}/registration-information)
+- [Bursaries]({{site.baseurl}}/bspr-awards-and-fellowships-2011)
+- [Poster Abstract Submission]({{site.baseurl}}//poster-abstract-submission)
+- [Oral Communication Abstract Submission]({{site.baseurl}}/oral-communication-abstract-submission)
+- [Early Stage Career Investigator Award]({{site.baseurl}}/early-stage-career-investigator-award)
+- [Travel Information and Bus Timetable]({{site.baseurl}}/travel-information-and-bus-timetable)
+- [Help to Promote this Meeting]({{site.baseurl}}/help-to-promote-this-meeting)
+
+
+**Organisers**
+
+Organising Committee
+
+- Rainer Cramer
+- Mike Dunn
+- Henning Hermjakob
+- Kathryn Lilley
+- David O’Connor
+- Chris Sutton
+
+
+Programme Committee
+
+- Rainer Cramer
+- Steve Pennington
+- Rolf Apweiler
+- Rob Beynon
+- John Timms
+
+
+**Key dates**
+
+Deadlines
+
+- Registration Extended: Midnight - Wednesday 29th June 2011
+- Submission of poster abstracts: CLOSED
+- Submission of Early Stage Career Investigator Award abstracts: CLOSED
+- Submission of oral communication abstracts: CLOSED
+
+Please send any enquiries relating to registration and abstract submission via e-mail to: registration@bspr.org
+
+**Venue**
+The conference will take place at the Wellcome Trust Conference Centre (http://www.wtconference.org.uk/), located on the Wellcome Trust Genome Campus at Hinxton, near Cambridge, UK, which houses the European Bioinformatics Institute (http://www.ebi.ac.uk/), and the Wellcome Trust Sanger Institute (http://www.sanger.ac.uk/).
+
+
+**Accommodation**
+
+There is a limited amount of accommodation on-site at the WTCC, so early registration for the meeting is advised. If this accommodation package is not suitable, then a list of alternative accommodation either close to Hinxton or in the Cambridge area can be obtained from Frank O’Donnell (frank@ebi.ac.uk) at the EBI. This accommodation has to be reserved directly by delegates. Read more in the registration page.
+
+For enquiries relating to either registration or abstract submission please contact via email to registration@bspr.org. For all other enquiries relating to the conference please contact via email to meetings@bspr.org
diff --git a/_posts/2012-01-01-Newsletter-january-2012.md b/_posts/2012-01-01-Newsletter-january-2012.md
new file mode 100644
index 0000000..cbd088d
--- /dev/null
+++ b/_posts/2012-01-01-Newsletter-january-2012.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - january 2012"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - January 2012]({{site.baseurl}}/assets/files/BSPR_Newsletter-January_2012.pdf)
diff --git a/_posts/2012-03-01-Newsletter-March-2012.md b/_posts/2012-03-01-Newsletter-March-2012.md
new file mode 100644
index 0000000..b24e82f
--- /dev/null
+++ b/_posts/2012-03-01-Newsletter-March-2012.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - March 2012"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - March 2012]({{site.baseurl}}/assets/files/BSPR_Newsletter-March_2012.pdf)
diff --git a/_posts/2012-05-01-Newsletter-May-2012.md b/_posts/2012-05-01-Newsletter-May-2012.md
new file mode 100644
index 0000000..b65aeab
--- /dev/null
+++ b/_posts/2012-05-01-Newsletter-May-2012.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - May 2012"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - May 2012]({{site.baseurl}}/assets/files/BSPR_Newsletter-May_2012.pdf)
diff --git a/_posts/2012-05-30-BSPR-2012.md b/_posts/2012-05-30-BSPR-2012.md
new file mode 100644
index 0000000..e8d28bf
--- /dev/null
+++ b/_posts/2012-05-30-BSPR-2012.md
@@ -0,0 +1,118 @@
+---
+layout: single
+title: "BSPR meeting 2011"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2012
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+**Data:**Monday, July 9, 2018 to Wednesday, July 11, 2018
+**Location:**Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom
+
+**Programme for BSPR 2018**
+
+Please click [here]({{site.baseurl}}/assets/files/BSPR 2018 programme final 15-06-18.pdf).
+
+| Plenary speakers | |
+|---------------------|---------------------------------------|
+| Daniel Chan | Johns Hopkins School of Medicine, USA |
+| Chuna Ram Choudhary | University of Copenhagen, Denmark |
+| Julia Chamot-Rooke | Institut Pasteur, France |
+| Angus Lamond | University of Dundee, UK |
+
+
+
+| Keynote Speakers | |
+|-------------------|-------------------------------|
+| Claire Eyers | University of Liverpool, UK |
+| Paul Skipp | University of Southampton, UK |
+| Kathryn Lilley | University of Cambridge, UK |
+| Ben Collins | ETH, Zurich, Switzerland |
+| Emøke Bendixen | University of Aarhus, Denmark |
+| Stephen Gordon | UCD Conway Institute, Ireland |
+| Henning Hermjakob | EMBL-EBI, Cambridge, UK |
+| Paul Cutler | UCB Pharma, UK |
+
+
+
+
+
+**[Data Research Workshop]({{site.baseurl}}/assets/files/BSPR 2018 data science workshop v 2.pdf)**
+
+The BSPR will be running a Data Research Workshop designed to introduce researchers to software and statistical methods to support proteomics data interpretation. The Workshop will be on Sunday 8th July from 14.00 to 18.00 in Forster Suite, The Midland Hotel, Bradford and run by Dr Ben Collins (ETH Zurich) and Dr Alistair Bailey (University of Southampton). The workshop is financed by BSPR as part of an initiative to provide training resources for its members. A nominal fee of £10 is required to cover refreshments.
+
+
+
+[Registration](http://estore.bradford.ac.uk/product-catalogue/faculty-of-life-sciences/conferencesworkshops/the-british-society-for-proteome-research-annual-scientific-meeting-2018) for BSPR 2018
+
+
+
+**Registration deadline – 6th July 2018**
+
+ - Student BSPR member £80
+ - Student non-member £140
+ - Non-Student (Other) BSPR member £180
+ - Non-Student, Non-Member £240
+ - Wine Reception at Cartwright Hall (optional) £10
+ - Conference Dinner at Midland Hotel (optional) £40
+ - Data Research Workshop (optional) £10
+
+
+**Please note for registration**: You can only add one item to your basket at a time. Therefore, to add the Wine Reception and Conference Dinner to the shopping basket use the following instruction:
+
+1. Select the item, and click on add to basket.
+
+2. Complete the questionnaire and then click next.
+
+3. **Click on Continue shopping**, this will return you to the home page.
+
+4. Type in **“BSPR”** in the search field, click on the link that pops up and it will return you to the BSPR store.
+
+5. You will now be able to add another item to your basket.
+
+
+
+**Evening events**
+
+Wine Reception at [Cartwright Hall Art Gallery](http://www.bradfordmuseums.org/venues/cartwright-hall-art-gallery). Cartwright Hall Art Gallery is located in Lister Park, which was voted Britain’s Best Park in 2006. Cartwright Hall hosts an exhibition of art work and prints from local artists, including a gallery dedicated to Bradford-born, internationally renowned David Hockney. The charge of £10 covers transport to and from Cartwright Hall, back to the University, access to the Art Gallery, snacks and drinks.
+
+
+
+Conference Dinner at [The Midland Hotel](http://www.peelhotels.co.uk/hotels/midland-hotel-bradford-yorkshire-england/). The Midland Hotel is one of the oldest hotels in Bradford, with elegant ballrooms suitable for hosting our Conference Dinner. The charge of £40 will cover a 3 course meal and wine. This is a fantastic opportunity to network in an informal environment and to participate in the not-to-be-missed, world famous Professor Lilley trivial pursuit quiz. The Midland Hotel is also one of the main hotels for accommodation for the BSPR 2018 meeting offering a discounted price of £65, including B&B, single occupancy (see Accommodation).
+
+
+
+**Abstract Submission**
+
+Abstract submission deadline – 1st July 2018
+
+Please click [here](https://docs.google.com/forms/d/e/1FAIpQLSfvLqcHIxJFTK2tfVd1JEz0cq8TqWoT0CD3lzznFPQqBmHjrA/viewform?c=0&w=1).
+
+
+
+**Accommodation**
+
+Please click here.
+
+
+
+
+**Travel Grants, Bursaries and Fellowships**
+
+Please click here.
+
+
+
+
+
+**[Sponsors]({{site.baseurl}}/sponsors/)**
+
+The BSPR Annual Scientific meeting would not be a success without the dedicated support of our sponsors and exhibitors, who play an essential role in dissemination of state-of-the-art proteomics research.
+
+
+
+[BSPR 2018 poster]({{site.baseurl}}/assets/files/BSPR 2018 poster invited speakers Apr.pdf)
+
+
diff --git a/_posts/2013-01-01-Newsletter-January-2013.md b/_posts/2013-01-01-Newsletter-January-2013.md
new file mode 100644
index 0000000..a35189d
--- /dev/null
+++ b/_posts/2013-01-01-Newsletter-January-2013.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - January 2013"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - January 2013]({{site.baseurl}}/assets/files/BSPR_Newsletter-Jan_2013.pdf)
diff --git a/_posts/2013-05-01-Newsletter-May-2013.md b/_posts/2013-05-01-Newsletter-May-2013.md
new file mode 100644
index 0000000..d994c40
--- /dev/null
+++ b/_posts/2013-05-01-Newsletter-May-2013.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - May 2013"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - May 2013]({{site.baseurl}}/assets/files/BSPR_Newsletter-May_2013.pdf)
diff --git a/_posts/2013-05-30-BSPR-2013.md b/_posts/2013-05-30-BSPR-2013.md
new file mode 100644
index 0000000..8f05005
--- /dev/null
+++ b/_posts/2013-05-30-BSPR-2013.md
@@ -0,0 +1,263 @@
+---
+layout: single
+title: "BSPR meeting 2013"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2013
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+
+
+
+
+
+
+
+
+**Late-breaking abstracts now invited!**
+
+**Keynote speaker**
+
+Identifying sites where post-translational modifications regulate the interactome from proteomics and structural data - Rob Russell (Heidelberg)
+
+**Invited speakers**
+
+A mass spectrometry based framework to determine protein structure -- Perdita Barran (Manchester)
+
+Mechanisms of signalling plasticity and heterogeneity that contribute to cancer drug resistance -- Pedro Cutillas (London)
+
+Mass spectrometry tissue imaging and profiling: Finding the right roles within pharmaceutical R&D -- Richard Goodwin (Manchester)
+
+Challenges in the analysis of dynamic signaling complexes -- Matthias Gstaiger (Zurich)
+
+Labeling and enrichment strategies for the analysis of protein synthesis and secretion -- Jeroen Krijgsveld (Heidelberg)
+
+Struggling towards a comprehensive characterization of phosphoproteomes -- Shabaz Mohammed (Oxford)
+
+Conformational changes of multi-protein complexes determined by mass spectrometry -- Juri Rappsilber (Edinburgh)
+
+Direct mass spectrometric profiling of biological tissues - from histological sections to endoscopy -- Zoltan Takats (London)
+
+Quantitative analysis of protein complexes over space and time -- Marius Ueffing (Tubingen)
+
+Quantitative interaction proteomics for epigenetics -- Michiel Vermeulen (Utrecht)
+
+
+**[Programme]({{site.baseurl}}/assets/files/BSPR 2013 Meeting Programme.pdf)**
+
+
+We are pleased to announce that the BSPR 2013 Scientific Meeting will be held over two full days from Tuesday 3rd to Wednesday 4th December 2013 at the East Midlands Conference Centre, University Park Campus, Nottingham.
+
+The programme includes world class speakers, free communications, poster presentations and a trade exhibition. Topics include protein function, (structure, interactions, and temporal analysis), post translational modifications, protein function in space (sub-cellular analysis), tissues and organisms, as well as a vendors' session.
+
+In recognition of the outstanding success of EuPA 2012, special registration rates are being offered and include teas, coffees, lunches, a buffet dinner at the end of the sessions on Tuesday evening. Students members can register for £130 and BSPR members for £200.
+
+**Table of contents**
+
+- [Key dates](#key-dates)
+- [Venue](#venue)
+- [Conference programme](#conference-programme)
+- [Organising committees](#organising-committees)
+- [Scientific programme](#scientific-programme)
+- [Trade sponsors and trade exhibition](#trade-sponsors-and-trade-exhibition)
+- [Social programme](#social-programme)
+- [Accommodation](#accommodation)
+- [Registration](#registration)
+- [Abstract submission - late-breaking abstracts now invited](#abstract-submission---late-breaking-abstracts-now-invited)
+- [MJ Dunn Fellowships](#mj-dunn-fellowships)
+- [Transport to venue](#transport-to-venue)
+- [Sponsors](#sponsors)
+
+
+
+
+## Key dates
+
+
+
+- Registration and Abstract Submission opened 12 July 2013
+- Abstract Submission deadline extended to Monday 16 September 2013
+- Abstract acceptance notification Wednesday 9 October 2013
+- Late-breaking Abstract Submission deadline 1 November 2013 - after this date inclusion in the abstract book cannot be guaranteed
+Back to TOC
+
+## Venue
+
+
+
+
+East Midlands Conference Centre & Orchard Hotel,
+University Park,
+The University of Nottingham,
+Nottingham, Nottinghamshire
+NG7 2RJ
+Telephone: 0871 222 4836
+
+
+The EMCC is based within University Park which is on a major bus route and therefore easily accessible. The nearest train station to University Park is Beeston Station however the main station, Nottingham Station, is only a short taxi ride away and has taxi ranks located outside the station. Nottingham Station is approximately a two hour train ride from both London and Manchester or an hour and a half from Birmingham.
+
+Visit the [EMCC](http://www.nottinghamconferences.co.uk/emcc/) website for further information.
+
+
+## Conference programme
+The Conference is scheduled to open on the morning of 3 December with Registration at 8:00 followed by the Welcome address at 9:30, and will close on 4 December at 16:00. Please note times are provisional and may change.
+
+Download the Conference [Programme]({{site.baseurl}}/assets/files/BSPR 2013 Meeting Programme.pdf) here.
+
+
+
+## Organising committees
+Local Organising Committee:
+ Josie Beeley (Convener)
+ Claire Agnew (MCI)
+ Lynn Samson (MCI)
+ Sara Zanivan (Conference programme)
+ Richard Burchmore
+ Bob Amess (website)
+ Chris Sutton (Trade Exhibition)
+ Robert Layfield (on site representative)
+
+Scientific Committee
+ Sara Zanivan (Convener)
+ Richard Burchmore
+ Walter Kolch
+ Steve Pennington
+ Juri Rappsilber
+
+
+## Scientific programme
+**Sessions**
+
+- Protein structure
+- Protein function in time and space
+- Post-translational modifications
+- Protein interactions
+- Protein function in tissues and organisms
+- Vendors session (by commercial delegates)
+**Keynote speaker**
+
+- Rob Russell - Heidelberg - Identifying sites where post-translational modifications regulate the interactome from proteomics and structural data
+
+**Invited speakers:**
+
+- Perdita Barran - Manchester - A mass spectrometry based framework to determine protein structure
+- Pedro Cutillas - London - Mechanisms of signalling plasticity and heterogeneity that contribute to cancer drug resistance
+- Richard Goodwin - Manchester - Mass spectrometry tissue imaging and profiling: Finding the right roles within pharmaceutical R&D
+- Matthias Gstaiger - Zurich - Challenges in the analysis of dynamic signaling complexes
+- Jeroen Krijgsveld - Heidelberg - Labeling and enrichment strategies for the analysis of protein synthesis and secretion
+- Shabaz Mohammed - Oxford - Struggling towards a comprehensive characterization of phosphoproteomes
+- Juri Rappsilber - Edinburgh - Conformational changes of multi-protein complexes determined by mass spectrometry
+- Zoltan Takats - London - Direct mass spectrometric profiling of biological tissues - from histological sections to endoscopy
+- Marius Ueffing - Tubingen - Quantitative analysis of protein complexes over space and time
+- Michiel Vermeulen - Utrecht - Quantitative interaction proteomics for epigenetics
+
+(Titles of presentations will be posted as soon as they become available; the detailed scientific programme will not be available until abstract acceptances are known.)
+
+
+## Trade sponsors and trade exhibition
+The Conference will include a Trade Exhibition and there will also be exciting sponsorship opportunities to choose from starting at only £100+ VAT ranging upwards to Platinum sponsor.
+
+The Trade Exhibition will take place within the Exhibition and Banqueting Suite of the Conference Centre where the posters will be displayed as well as where tea, coffee and lunch will be served. On the Tuesday evening there will be a chance to network informally over food and drinks while viewing the posters and Trade Exhibition.
+
+Adequate time has been scheduled in the programme for poster and Trade Exhibition viewing only. Oral sessions will be strictly kept to time using a light/audible timer system to ensure that speakers keep to time and that the oral sessions do not encroach on Trade Exhibition viewing times and coffee and lunch breaks.
+
+For full information about Sponsorship and Trade Exhibition Opportunities - please click [here]({{site.baseurl}}/assets/files/13BSPNOT - Sponsorship and Trade Opportunities version 5.pdf)
+
+
+
+## Social programme
+The main social event of the conference will be the 'Informal networking session' to be held in the Trade Exhibition area (Banqueting Suite) of the East Midlands Conference Centre. This will be held at the end of the scientific session on the first day.
+
+
+
+Afterwards, delegates may wish to proceed to the adjacent Orchard Hotel where accommodation is available, to meet colleagues informally in the bar or other meeting areas.
+
+Nottingham, in the heart of England, is also a compact and diverse city which is easy to reach and easy to get around. The EMCC is only a few miles from Nottingham city centre which offers over 300 restaurants in the city centre alone with continental style dining bars and entertainment, and a Christmas Market. Other attractions include Ye Olde Trip to Jerusalem (England's Oldest Inn), City of Caves, and Nottingham Castle. With an early finish to the evening meal, there will be adequate opportunity to explore this vibrant city.
+
+
+## Accommodation
+Accommodation is available at the adjacent De Vere Orchard Hotel. Please quote the code "BSPRB" when making the bedroom booking online. Bedrooms are not guaranteed and rates will be the best available depending on availability at the time of booking. Bedrooms are bed and breakfast and will be fully pre-payable direct to the hotel and are non-refundable. For further information, please click [here](http://www.deverevenues.co.uk/en/venues/east-midlands-conference-centre-orchard-hotel/).
+
+
+
+
+Budget hotel accommodation is available at the [Travelodge Nottingham Wollaton Park Hotel](http://www.travelodge.co.uk/hotels/474/) which is located just outside the campus where the conference is being held. Delegates staying at the Travelodge will still be able to take part in the social and networking evenings at the Orchard Hotel.
+
+
+
+## Registration
+Registration rates:
+
+BSPR Member (except student) £200.00
+
+Non-Member (delegate from academic and/or not-for-profit organization) £300
+
+Non-Member (delegate from industry) £400
+
+Student (BSPR Member) £130.00
+
+To qualify for the BSPR Member rates, including the Student rate, members must be in good standing on 21st October 2013.
+
+Registration includes: teas, coffees, lunches, a buffet dinner at the end of the sessions on Tuesday evening. Accommodation is not included, and delegates are advised to arrange their own accommodation - please see the Accommodation section for further information.
+
+Registration is now open! Please click [here](https://b-com.mci-group.com/Registration/13BSPNOT.aspx) to register
+
+
+## Abstract submission - late-breaking abstracts now invited
+Delegates are invited to submit abstracts for both oral and poster presentations at the conference.
+
+Contribute to the success of the meeting by submitting your abstract now for poster or oral presentation!
+
+Late-breaking abstracts will be accepted until 1 November 2013 (after this date inclusion in the abstract book cannot be guaranteed) and should be sent by e-mail to bspr2013@mci-group.com. Please see the [abstract submission guidelines]({{site.baseurl}}/assets/files/BSPR_2013_Meeting_Late-Breaking_Abstracts_Guide.pdf) for details on how to format your abstract.
+
+Abstract acceptance notification for abstracts submitted by 16 September will be Wednesday 9 October 2013. Notification for late-breaking abstracts will be made as soon as possible after submission, but not before Wednesday 9 October
+
+There will be an oral session dedicated to research presentations by industry - scientific suppliers, pharma or biotech; poster presentations from this group are also welcome.
+
+There will also be an 'Early Career Investigator Award' (Eligibility: PhD obtained after the 30th November 2007). To apply send a short CV, including publications, to bspr2013@mci-group.com
+
+Please indicate on the abstract submission form if you wish your abstract to be included in either of the above.
+
+
+
+## MJ Dunn Fellowships
+The British Society for Proteome Research is pleased to announce that it will be offering two “MJ Dunn Fellowships” for Ph.D students and early-stage post-doctoral researchers to attend the Society’s annual meeting in Nottingham on 3-4 December 2013. The deadline for applications is Tuesday 1 October 2013. Please see the [annoucement]({{site.baseurl}}/assets/files/MJ Dunn Fellowships Announcement 2013.pdf) for further details and the [application]({{site.baseurl}}/assets/files/MJ Dunn Fellowships Application Form 2013.pdf) form
+
+
+
+Transport to venue
+By Bus
+University Park is located on a major bus route. For timetables visit www.trentbarton.co.uk/ or phone 01773 712265 or visit www.nctx.co.uk or phone 0115 9506070 for further information.
+
+By Car
+Leave the M1 motorway at junction 25 and follow the A52 signposted to Nottingham. After approximately 4.4 miles turn right at the roundabout (Toby Carvery) onto the A6464 Woodside Road. Turn left at the next roundabout to enter the University of Nottingham's West Entrance. The EMCC is situated on Beeston Road, which is the main loop road through the campus.
+
+By Rail
+The nearest stations to the East Midlands Conference Centre are Beeston Station and Nottingham Station. There are over 30 direct trains that travel between St Pancras and Nottingham on a daily basis. Visit www.nationalrail.co.uk or phone 08457 484950 for further information. Please note that Beeston Station does not have a taxi rank. Nottingham Station is only a short taxi ride away and has a taxi rank located outside the station.
+
+By Air
+From East Midlands Airport, the EMCC is just 14 miles away via the M1 North leaving at junction 25 and following the A52. There is also the regular Skylink Nottingham bus, leaving [directly from the airport](https://awardbird.com/frequent-flyer-programs/flying-blue-air-france) directed to Broad Marsh Bus Station. Alight at Beeston, which is the stop for the main University campus, a few minutes walk from the entrance to the East Midlands Conference Centre.
+
+
+
+## Sponsors
+
+
+## Contact us
+For further information, please contact Claire Agnew:
+
+BSPR 2013 Meeting c/o Conference Secretariat MCI UK Ltd
+272 Bath Street
+Glasgow
+G2 4JR
+
+Tel: +44 (0) 141 354 1660
+Fax: +44 (0) 141 354 1661
+
+Email:
+
+General / Abstract Submission - bspr2013@mci-group.com
+Trade Exhibition / Sponsorship - bspr2013industry@mci-group.com
+Registration - bspr2013reg@mci-group.com
diff --git a/_posts/2013-08-01-Newsletter-August-2013.md b/_posts/2013-08-01-Newsletter-August-2013.md
new file mode 100644
index 0000000..657e547
--- /dev/null
+++ b/_posts/2013-08-01-Newsletter-August-2013.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - August 2013"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - August 2013]({{site.baseurl}}/assets/files/BSPR_Newsletter_August_2013.pdf)
diff --git a/_posts/2013-10-01-Newsletter-October-2013.md b/_posts/2013-10-01-Newsletter-October-2013.md
new file mode 100644
index 0000000..469a1f7
--- /dev/null
+++ b/_posts/2013-10-01-Newsletter-October-2013.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - October 2013"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - October 2013]({{site.baseurl}}/assets/files/BSPR_Newsletter_October_2013.pdf)
diff --git a/_posts/2014-01-01-Newsletter-January-2014.md b/_posts/2014-01-01-Newsletter-January-2014.md
new file mode 100644
index 0000000..fcc312b
--- /dev/null
+++ b/_posts/2014-01-01-Newsletter-January-2014.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - January 2014"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - january 2014]({{site.baseurl}}/assets/files/BSPR_Newsletter_January_2014.pdf)
diff --git a/_posts/2014-02-01-Newsletter-February-2014.md b/_posts/2014-02-01-Newsletter-February-2014.md
new file mode 100644
index 0000000..c310711
--- /dev/null
+++ b/_posts/2014-02-01-Newsletter-February-2014.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - February 2014"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - February 2014]({{site.baseurl}}/assets/files/BBSPR_Newsletter_February_2014.pdf)
diff --git a/_posts/2014-05-30-BSPR-2014.md b/_posts/2014-05-30-BSPR-2014.md
new file mode 100644
index 0000000..9a777a5
--- /dev/null
+++ b/_posts/2014-05-30-BSPR-2014.md
@@ -0,0 +1,118 @@
+---
+layout: single
+title: "BSPR meeting 2014"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2014
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+**Data:**Monday, July 9, 2018 to Wednesday, July 11, 2018
+**Location:**Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom
+
+**Programme for BSPR 2018**
+
+Please click [here]({{site.baseurl}}/assets/files/BSPR 2018 programme final 15-06-18.pdf).
+
+| Plenary speakers | |
+|---------------------|---------------------------------------|
+| Daniel Chan | Johns Hopkins School of Medicine, USA |
+| Chuna Ram Choudhary | University of Copenhagen, Denmark |
+| Julia Chamot-Rooke | Institut Pasteur, France |
+| Angus Lamond | University of Dundee, UK |
+
+
+
+| Keynote Speakers | |
+|-------------------|-------------------------------|
+| Claire Eyers | University of Liverpool, UK |
+| Paul Skipp | University of Southampton, UK |
+| Kathryn Lilley | University of Cambridge, UK |
+| Ben Collins | ETH, Zurich, Switzerland |
+| Emøke Bendixen | University of Aarhus, Denmark |
+| Stephen Gordon | UCD Conway Institute, Ireland |
+| Henning Hermjakob | EMBL-EBI, Cambridge, UK |
+| Paul Cutler | UCB Pharma, UK |
+
+
+
+
+
+**[Data Research Workshop]({{site.baseurl}}/assets/files/BSPR 2018 data science workshop v 2.pdf)**
+
+The BSPR will be running a Data Research Workshop designed to introduce researchers to software and statistical methods to support proteomics data interpretation. The Workshop will be on Sunday 8th July from 14.00 to 18.00 in Forster Suite, The Midland Hotel, Bradford and run by Dr Ben Collins (ETH Zurich) and Dr Alistair Bailey (University of Southampton). The workshop is financed by BSPR as part of an initiative to provide training resources for its members. A nominal fee of £10 is required to cover refreshments.
+
+
+
+[Registration](http://estore.bradford.ac.uk/product-catalogue/faculty-of-life-sciences/conferencesworkshops/the-british-society-for-proteome-research-annual-scientific-meeting-2018) for BSPR 2018
+
+
+
+**Registration deadline – 6th July 2018**
+
+ - Student BSPR member £80
+ - Student non-member £140
+ - Non-Student (Other) BSPR member £180
+ - Non-Student, Non-Member £240
+ - Wine Reception at Cartwright Hall (optional) £10
+ - Conference Dinner at Midland Hotel (optional) £40
+ - Data Research Workshop (optional) £10
+
+
+**Please note for registration**: You can only add one item to your basket at a time. Therefore, to add the Wine Reception and Conference Dinner to the shopping basket use the following instruction:
+
+1. Select the item, and click on add to basket.
+
+2. Complete the questionnaire and then click next.
+
+3. **Click on Continue shopping**, this will return you to the home page.
+
+4. Type in **“BSPR”** in the search field, click on the link that pops up and it will return you to the BSPR store.
+
+5. You will now be able to add another item to your basket.
+
+
+
+**Evening events**
+
+Wine Reception at [Cartwright Hall Art Gallery](http://www.bradfordmuseums.org/venues/cartwright-hall-art-gallery). Cartwright Hall Art Gallery is located in Lister Park, which was voted Britain’s Best Park in 2006. Cartwright Hall hosts an exhibition of art work and prints from local artists, including a gallery dedicated to Bradford-born, internationally renowned David Hockney. The charge of £10 covers transport to and from Cartwright Hall, back to the University, access to the Art Gallery, snacks and drinks.
+
+
+
+Conference Dinner at [The Midland Hotel](http://www.peelhotels.co.uk/hotels/midland-hotel-bradford-yorkshire-england/). The Midland Hotel is one of the oldest hotels in Bradford, with elegant ballrooms suitable for hosting our Conference Dinner. The charge of £40 will cover a 3 course meal and wine. This is a fantastic opportunity to network in an informal environment and to participate in the not-to-be-missed, world famous Professor Lilley trivial pursuit quiz. The Midland Hotel is also one of the main hotels for accommodation for the BSPR 2018 meeting offering a discounted price of £65, including B&B, single occupancy (see Accommodation).
+
+
+
+**Abstract Submission**
+
+Abstract submission deadline – 1st July 2018
+
+Please click [here](https://docs.google.com/forms/d/e/1FAIpQLSfvLqcHIxJFTK2tfVd1JEz0cq8TqWoT0CD3lzznFPQqBmHjrA/viewform?c=0&w=1).
+
+
+
+**Accommodation**
+
+Please click here.
+
+
+
+
+**Travel Grants, Bursaries and Fellowships**
+
+Please click here.
+
+
+
+
+
+**[Sponsors]({{site.baseurl}}/sponsors/)**
+
+The BSPR Annual Scientific meeting would not be a success without the dedicated support of our sponsors and exhibitors, who play an essential role in dissemination of state-of-the-art proteomics research.
+
+
+
+[BSPR 2018 poster]({{site.baseurl}}/assets/files/BSPR 2018 poster invited speakers Apr.pdf)
+
+
diff --git a/_posts/2014-12-01-Newsletter-December-2014.md b/_posts/2014-12-01-Newsletter-December-2014.md
new file mode 100644
index 0000000..a0f4928
--- /dev/null
+++ b/_posts/2014-12-01-Newsletter-December-2014.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - December 2014"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - December 2014]({{site.baseurl}}/assets/files/BSPR Newsletter - December 2014.pdf)
diff --git a/_posts/2015-03-01-Newsletter-March-2015.md b/_posts/2015-03-01-Newsletter-March-2015.md
new file mode 100644
index 0000000..312f669
--- /dev/null
+++ b/_posts/2015-03-01-Newsletter-March-2015.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - March 2015"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - March 2015]({{site.baseurl}}/assets/files/BSPR Newsletter - March 2015.pdf)
diff --git a/_posts/2015-05-01-Newsletter-May-2015.md b/_posts/2015-05-01-Newsletter-May-2015.md
new file mode 100644
index 0000000..5438b57
--- /dev/null
+++ b/_posts/2015-05-01-Newsletter-May-2015.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - May 2015"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - May 2015]({{site.baseurl}}/assets/files/BSPR Newsletter - May 2015.doc)
diff --git a/_posts/2015-05-30-BSPR-2015.md b/_posts/2015-05-30-BSPR-2015.md
new file mode 100644
index 0000000..cf687e4
--- /dev/null
+++ b/_posts/2015-05-30-BSPR-2015.md
@@ -0,0 +1,56 @@
+---
+layout: single
+title: "BSPR meeting 2015"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2015
+categories: Events
+sidebar:
+ nav: "docs"
+
+gallery:
+ - url: http://bspr.org/bruker-uk-limited
+ image_path: /assets/sponsors/Bruker_logo_rgb_300dpi.png
+ - url: http://bspr.org/waters
+ image_path: /assets/sponsors/Waters_logo_K_web2.jpg
+ - url: http://bspr.org/sponsor/sciex
+ image_path: /assets/sponsors/SCIEX_LOGO_RGB.jpg
+ - url: http://bspr.org/software4labs
+ image_path: /assets/sponsors/Software4Lbs Ltd2.png
+ - url: hhttp://bspr.org/proteinsimple
+ image_path: /assets/sponsors/ProteinSimple_BT_logo_2015_0.png
+ - url: http://bspr.org/somalogic
+ image_path: /assets/sponsors/somalogic.gif
+ - url: http://bspr.org/matrix-science
+ image_path: /assets/sponsors/peak.gif
+ - url: http://bspr.org/agilent-technologies-uk
+ image_path: /assets/sponsors/agilent.jpg
+ - url: http://bspr.org/sponsor/proteomics
+ image_path: /assets/sponsors/Proteomics logo_2.jpg
+ - url: http://bspr.org/sponsor/cell-singaling
+ image_path: /assets/sponsors/CST_Logo_54152.jpg
+ - url: http://bspr.org/sponsor/ms-noise
+ image_path: /assets/sponsors/MS_NOISE_LOGO2.jpg
+
+
+---
+
+**Data:**Monday, July 20, 2015
+**Location:**United Kingdom
+
+**Programme for BSPR 2018**
+
+
+
+
+
+
+
+
+Thank you! With 150 attendees and 38 speakers from 12 countries, the BSPR 2015 meeting was a resounding success. Thanks to all attendees, the scientific committee (Kathryn Lilley (chair), Rainer Cramer, Juri Rappsilber, Andy Pitt, Matthias Trost, Steve Pennington, Paul Skipp) and the organising committee (Rainer Cramer (chair), Andy Pitt, John Timms, Kathryn Lilley, Chris Sutton, Richard Burchmore). And a big thank you to our sponsors, listed below! See you all in 2016 in Glasgow!
+
+**[Overview]({{site.baseurl}}/assets/files/BSPR 2015 flyer4-1.pdf)**
+
+**[Programme]({{site.baseurl}}/assets/files/BSPR 2015 Programme draft 16-06.pdf)**
+
+
+{% include gallery %}
\ No newline at end of file
diff --git a/_posts/2016-01-01-Newsletter-January-2016.md b/_posts/2016-01-01-Newsletter-January-2016.md
new file mode 100644
index 0000000..e19af24
--- /dev/null
+++ b/_posts/2016-01-01-Newsletter-January-2016.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - January 2016"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - January 2016]({{site.baseurl}}/assets/files/BSPR Newsletter - January 2016)
diff --git a/_posts/2016-03-01-Newsletter-March-2016.md b/_posts/2016-03-01-Newsletter-March-2016.md
new file mode 100644
index 0000000..dace1f9
--- /dev/null
+++ b/_posts/2016-03-01-Newsletter-March-2016.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - March 2016"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - March 2016]({{site.baseurl}}/assets/files/BSPR Newsletter - March 2016.pdf)
diff --git a/_posts/2016-05-30-BSPR-2016.md b/_posts/2016-05-30-BSPR-2016.md
new file mode 100644
index 0000000..a219fea
--- /dev/null
+++ b/_posts/2016-05-30-BSPR-2016.md
@@ -0,0 +1,164 @@
+---
+layout: single
+title: "BSPR meeting 2016"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2016
+categories: Events
+sidebar:
+ nav: "docs"
+
+
+gallery:
+ - url: http://bspr.org/matrix-science
+ image_path: /assets/sponsors/Matrix_Science.png
+ - url: http://bspr.org/waters
+ image_path: /assets/sponsors/Waters_logo_K_web2.jpg
+ alt: "placeholder image 2"
+ title: "Image 2 title caption"
+ - url: http://bspr.org/sponsor/sciex
+ image_path: /assets/sponsors/SCIEX_LOGO_RGB.jpg
+ - url: http://bspr.org/sponsor/merck-group
+ image_path: /assets/sponsors/MERCK_RPurple.jpg
+ - url: http://bspr.org/proteinsimple
+ image_path: /assets/sponsors/ProteinSimple_BT_logo_2015_0.png
+ - url: http://bspr.org/peak-scientific
+ image_path: /assets/sponsors/peak.gif
+ - url: http://bspr.org/cancer-research-uk
+ image_path: /assets/sponsors/CRUK logo.png
+ - url: http://bspr.org/sponsor/zinsser-analytics
+ image_path: /assets/sponsors/Zinsser_Logo_300dpi.jpg
+ - url: http://bspr.org/sponsor/bmg-labtech
+ image_path: /assets/sponsors/BMG.png
+ - url: http://bspr.org/sponsor/fluidx
+ image_path: /assets/sponsors/FluidXLogo.jpg
+ - url: http://bspr.org/sponsor/vwr
+ image_path: /assets/sponsors/VWR.jpg
+---
+
+**Data:**Monday, July 25, 2016 to Wednesday, July 27, 2016
+**Location:**University of Glasgow, Glasgow, United Kingdom
+
+
+
+
+
+
+
+
+The 2016 meeting of the Society will be held in the Western Infirmary Lecture Theatre building at the University of Glasgow from Monday 25th – Wednesday 27th July 2016.
+
+The conference will aim to bring together people who are using and developing proteomics approaches in the fields of health and disease. The conference will host speakers who have applied proteomics to make significant contributions to medical, biological, veterinary and microbiological research. It will be a unique opportunity for the participants to update themselves on current research and state-of-the-art techniques as well as to discuss their research in an informal and friendly atmosphere.
+
+
+**Plenary Speakers**
+
+Matthias Mann, Max-Planck for Biochemistry (GER)
+
+David James, University of Sydney (AUS)
+
+Rob Beynon, University of Liverpool (UK)
+
+**Keynote Speakers**
+
+Advances in Proteomic Technologies: Matthias Hentze, EMBL (GER)
+
+Cancer Proteomics: Judit Villen, UW Genome Sciences (US)
+
+Bioinformatics: Maria Martin, EMBL-EBI (UK)
+
+Infectious disease and Microbiome: Frank Schmidt, University of Greifswald (GER)
+
+Nutrition/Lifestyle & Food security: David Eckersall, Glasgow University (UK)
+
+Translational Proteomics: Chris Sander, DFCI & HMS (US)
+
+Development and ageing: Xavier Druart, INRA (FRA)
+
+Integration Omics: David Matthews, Bristol (UK)
+
+Metabolic, Neurological and Vascular disease: Harald Mischak, Glasgow University (UK)
+
+
+
+The meeting will also include free oral communications, posters, young investigator session, trade exhibition and social events.
+
+**Abstract Submission**
+
+Abstract submission has been extended on line to Wednesday 22 June. Delegates will be informed of abstract acceptances and mode of presentation shortly thereafter.
+
+
+
+**Venue**
+
+The Conference will be held in the Western Infirmary Lecture Theatre Building (WILT) on the Gilmore Hill campus of the University of Glasgow, Glasgow G12 8QQ where there are excellent facilities. Lunch, tea/coffee will also be served here.
+
+
+
+**Accommodation**
+
+Accommodation is available in Queen Margaret Halls of Residence of the University of Glasgow, Bellshaugh Court, Glasgow, G12 0PR, at a cost of £45.00 per night. A light breakfast, will be served at the Conference venue and transfers will be arranged. Accommodation can be reserved at the time of registration on the conference website.Alternatively delegates may wish to reserve their own accommodation, in which case breakfast will also be available at the venue.
+
+
+
+**Trade Exhibition**
+
+A Trade Exhibition and Brochure is available from Chris Sutton (C.W.Sutton@bradford.ac.uk). The trade exhibition will be held adjacent to the lecture theatre together with the posters, and where tea/coffee and lunches will be served.
+
+
+**Social Events**
+
+- Sunday 24th July – informal get together at Curlers’ Rest, Byres Road.
+
+- Monday 25th July – Wine Reception at WILT Building (Sponsored by Matrix Sciences). Delegates may wish to make their own arrangements for a meal afterwards or may wish to join a group from the conference for a meal in adjacent Byers Road (cost not included in registration fee).
+
+- Tuesday 26th July – Conference Dinner and Ceilidh at the iconic Oran Mor Restaurant, Great Western Road, beneath the celestial ceiling mural by Alasdair Gray, one of Scotland’s largest pieces of public art (included in registration fee).
+
+
+
+**Registration**
+
+Registration Rates: non-residential, including the Conference Dinner and Ceilidh, are:
+
+- Ordinary delegate (BSPR non-member) £400
+- Delegate - BSPR member * £350
+- Student (verification required) £195
+* BSPR members must be in good standing by 30 June 2016.
+
+
+**Bursaries**
+
+BSPR is offering bursaries and awards for attendance at this meeting.
+
+- MJ Dunn Fellowship
+
+Applications are invited for the M J Dunn Fellowship to attend the BSPR 2016. The award covers registration fee and accommodation and is open to postdoctoral and early career researchers in the field of proteomics. Applicants must be paid up members of the BSPR. To apply, submit a brief cv together with a statement saying why you wish to attend the meeting (see below). By accepting the award, the Society will expect to receive a report on the meeting for inclusion in the Society’s Newsletter and Webpages.
+
+
+
+- Student Conference Bursaries
+
+Applications are open for the award of £250 bursaries to support BSPR student members in attending the BSPR 2016 meeting. The award can be used towards the registration fee, travel and subsistence at the meeting, where the student must plan to present a communication. Applicants should send a brief cv together with a statement as to why they wish to attend the meeting together with an abstract of the work to be presented.
+
+Applications should be sent to Karin Barnouin (kbarnouin@gmail.com) not later than 31st March 2016.
+
+
+**[Advertising flyers]({{site.baseurl}}/assets/files/BSPR 2016 flyer_01b.pdf)**
+
+
+Further information: karl.burgess@glasgow.ac.uk
+
+Trade and sponsorship: C.W.Sutton@bradford.ac.uk
+
+
+**[Programme]({{site.baseurl}}/assets/files/bspr-final-programme.pdf)**
+
+
+
+
+
+
+
+
+
+**Exhibitors and Sponsors**
+{% include gallery %}
\ No newline at end of file
diff --git a/_posts/2017-01-01-Newsletter-January-2017.md b/_posts/2017-01-01-Newsletter-January-2017.md
new file mode 100644
index 0000000..a02396c
--- /dev/null
+++ b/_posts/2017-01-01-Newsletter-January-2017.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - January 2017"
+date: 2018-05-30
+categories: Newsletters
+
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - January 2017]({{site.baseurl}}/assets/files/BSPR Newsletter - January 2017.pdf)
diff --git a/_posts/2017-03-01-Newsletter-March-2017.md b/_posts/2017-03-01-Newsletter-March-2017.md
new file mode 100644
index 0000000..483a2b6
--- /dev/null
+++ b/_posts/2017-03-01-Newsletter-March-2017.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - March 2017"
+date: 2018-05-30
+categories: Newsletters
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - March 2017]({{site.baseurl}}/assets/files/BSPR Newsletter - March 2017.pdf)
+
diff --git a/_posts/2017-04-01-Newsletter-April-2017.md b/_posts/2017-04-01-Newsletter-April-2017.md
new file mode 100644
index 0000000..db0e16d
--- /dev/null
+++ b/_posts/2017-04-01-Newsletter-April-2017.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "NEWSLETTER - Aprill 2017"
+date: 2018-05-30
+categories: Newsletters
+sidebar:
+ nav: "docs"
+---
+
+
+[NEWSLETTER - Aprill 2017]({{site.baseurl}}/assets/files/BSPR Newsletter - April 2017.docx)
\ No newline at end of file
diff --git a/_posts/2017-08-01-Newsletter-August-2017.md b/_posts/2017-08-01-Newsletter-August-2017.md
new file mode 100644
index 0000000..7613460
--- /dev/null
+++ b/_posts/2017-08-01-Newsletter-August-2017.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "NEWSLETTER - August 2018"
+date: 2018-05-30
+categories: Newsletters
+sidebar:
+ nav: "docs"
+---
+
+[NEWSLETTER - August 2018]({{site.baseurl}}/assets/files/BSPR Newsletter - August 2017.docx)
\ No newline at end of file
diff --git a/_posts/2018-02-01-Newsletter-February-2018.md b/_posts/2018-02-01-Newsletter-February-2018.md
new file mode 100644
index 0000000..7a005ae
--- /dev/null
+++ b/_posts/2018-02-01-Newsletter-February-2018.md
@@ -0,0 +1,12 @@
+---
+layout: single
+title: "NEWSLETTER - February 2018"
+date: 2018-05-30
+categories: Newsletters
+sidebar:
+ nav: "docs"
+---
+
+
+
+[NEWSLETTER - February 2018]({{site.baseurl}}/assets/files/BSPR Newsletter-Feb 2018.pdf)
\ No newline at end of file
diff --git a/_posts/2018-05-27-membership-renewal-2017.md b/_posts/2018-05-27-membership-renewal-2017.md
new file mode 100644
index 0000000..3bb8b8c
--- /dev/null
+++ b/_posts/2018-05-27-membership-renewal-2017.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "Membership Renewal 2017"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
diff --git a/_posts/2018-05-27-pmf-2017.md b/_posts/2018-05-27-pmf-2017.md
new file mode 100644
index 0000000..e5846d9
--- /dev/null
+++ b/_posts/2018-05-27-pmf-2017.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "PMF 2017"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
diff --git a/_posts/2018-05-28-bspr-lecturer.md b/_posts/2018-05-28-bspr-lecturer.md
new file mode 100644
index 0000000..d2e6eef
--- /dev/null
+++ b/_posts/2018-05-28-bspr-lecturer.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "BSPR Lecturer"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
diff --git a/_posts/2018-05-29-membership-renewal-2016.md b/_posts/2018-05-29-membership-renewal-2016.md
new file mode 100644
index 0000000..ec547a6
--- /dev/null
+++ b/_posts/2018-05-29-membership-renewal-2016.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "Membership renewal 2017"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
diff --git a/_posts/2018-05-30-BSPR-2018.md b/_posts/2018-05-30-BSPR-2018.md
new file mode 100644
index 0000000..bd98f2c
--- /dev/null
+++ b/_posts/2018-05-30-BSPR-2018.md
@@ -0,0 +1,118 @@
+---
+layout: single
+title: "BSPR meeting 2018"
+date: 2018-05-30
+permalink: /event/bspr-meeting-2018
+categories: Events
+sidebar:
+ nav: "docs"
+---
+
+**Data:**Monday, July 9, 2018 to Wednesday, July 11, 2018
+**Location:**Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom
+
+**Programme for BSPR 2018**
+
+Please click [here]({{site.baseurl}}/assets/files/BSPR 2018 programme final 15-06-18.pdf).
+
+| Plenary speakers | |
+|---------------------|---------------------------------------|
+| Daniel Chan | Johns Hopkins School of Medicine, USA |
+| Chuna Ram Choudhary | University of Copenhagen, Denmark |
+| Julia Chamot-Rooke | Institut Pasteur, France |
+| Angus Lamond | University of Dundee, UK |
+
+
+
+| Keynote Speakers | |
+|-------------------|-------------------------------|
+| Claire Eyers | University of Liverpool, UK |
+| Paul Skipp | University of Southampton, UK |
+| Kathryn Lilley | University of Cambridge, UK |
+| Ben Collins | ETH, Zurich, Switzerland |
+| Emøke Bendixen | University of Aarhus, Denmark |
+| Stephen Gordon | UCD Conway Institute, Ireland |
+| Henning Hermjakob | EMBL-EBI, Cambridge, UK |
+| Paul Cutler | UCB Pharma, UK |
+
+
+
+
+
+**[Data Research Workshop]({{site.baseurl}}/assets/files/BSPR 2018 data science workshop v 2.pdf)**
+
+The BSPR will be running a Data Research Workshop designed to introduce researchers to software and statistical methods to support proteomics data interpretation. The Workshop will be on Sunday 8th July from 14.00 to 18.00 in Forster Suite, The Midland Hotel, Bradford and run by Dr Ben Collins (ETH Zurich) and Dr Alistair Bailey (University of Southampton). The workshop is financed by BSPR as part of an initiative to provide training resources for its members. A nominal fee of £10 is required to cover refreshments.
+
+
+
+[Registration](http://estore.bradford.ac.uk/product-catalogue/faculty-of-life-sciences/conferencesworkshops/the-british-society-for-proteome-research-annual-scientific-meeting-2018) for BSPR 2018
+
+
+
+**Registration deadline – 6th July 2018**
+
+ - Student BSPR member £80
+ - Student non-member £140
+ - Non-Student (Other) BSPR member £180
+ - Non-Student, Non-Member £240
+ - Wine Reception at Cartwright Hall (optional) £10
+ - Conference Dinner at Midland Hotel (optional) £40
+ - Data Research Workshop (optional) £10
+
+
+**Please note for registration**: You can only add one item to your basket at a time. Therefore, to add the Wine Reception and Conference Dinner to the shopping basket use the following instruction:
+
+1. Select the item, and click on add to basket.
+
+2. Complete the questionnaire and then click next.
+
+3. **Click on Continue shopping**, this will return you to the home page.
+
+4. Type in **“BSPR”** in the search field, click on the link that pops up and it will return you to the BSPR store.
+
+5. You will now be able to add another item to your basket.
+
+
+
+**Evening events**
+
+Wine Reception at [Cartwright Hall Art Gallery](http://www.bradfordmuseums.org/venues/cartwright-hall-art-gallery). Cartwright Hall Art Gallery is located in Lister Park, which was voted Britain’s Best Park in 2006. Cartwright Hall hosts an exhibition of art work and prints from local artists, including a gallery dedicated to Bradford-born, internationally renowned David Hockney. The charge of £10 covers transport to and from Cartwright Hall, back to the University, access to the Art Gallery, snacks and drinks.
+
+
+
+Conference Dinner at [The Midland Hotel](http://www.peelhotels.co.uk/hotels/midland-hotel-bradford-yorkshire-england/). The Midland Hotel is one of the oldest hotels in Bradford, with elegant ballrooms suitable for hosting our Conference Dinner. The charge of £40 will cover a 3 course meal and wine. This is a fantastic opportunity to network in an informal environment and to participate in the not-to-be-missed, world famous Professor Lilley trivial pursuit quiz. The Midland Hotel is also one of the main hotels for accommodation for the BSPR 2018 meeting offering a discounted price of £65, including B&B, single occupancy (see Accommodation).
+
+
+
+**Abstract Submission**
+
+Abstract submission deadline – 1st July 2018
+
+Please click [here](https://docs.google.com/forms/d/e/1FAIpQLSfvLqcHIxJFTK2tfVd1JEz0cq8TqWoT0CD3lzznFPQqBmHjrA/viewform?c=0&w=1).
+
+
+
+**Accommodation**
+
+Please click here.
+
+
+
+
+**Travel Grants, Bursaries and Fellowships**
+
+Please click here.
+
+
+
+
+
+**[Sponsors]({{site.baseurl}}/sponsors/)**
+
+The BSPR Annual Scientific meeting would not be a success without the dedicated support of our sponsors and exhibitors, who play an essential role in dissemination of state-of-the-art proteomics research.
+
+
+
+[BSPR 2018 poster]({{site.baseurl}}/assets/files/BSPR 2018 poster invited speakers Apr.pdf)
+
+
diff --git a/_posts/2018-05-31-hupo-2017.md b/_posts/2018-05-31-hupo-2017.md
new file mode 100644
index 0000000..6171646
--- /dev/null
+++ b/_posts/2018-05-31-hupo-2017.md
@@ -0,0 +1,10 @@
+---
+layout: single
+title: "HUPO 2017"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
diff --git a/_posts/2018-06-26-bmss-2018.md b/_posts/2018-06-26-bmss-2018.md
new file mode 100644
index 0000000..847e16d
--- /dev/null
+++ b/_posts/2018-06-26-bmss-2018.md
@@ -0,0 +1,11 @@
+---
+layout: single
+title: "BMSS 2018"
+date: 2018-05-30
+categories: News
+sidebar:
+ nav: "docs"
+---
+
+
+
\ No newline at end of file
diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss
new file mode 100755
index 0000000..6522b96
--- /dev/null
+++ b/_sass/minimal-mistakes.scss
@@ -0,0 +1,40 @@
+/*!
+ * Minimal Mistakes Jekyll Theme 4.11.2 by Michael Rose
+ * Copyright 2013-2018 Michael Rose - mademistakes.com | @mmistakes
+ * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt)
+*/
+
+/* Variables */
+@import "minimal-mistakes/variables";
+
+/* Mixins and functions */
+@import "minimal-mistakes/vendor/breakpoint/breakpoint";
+@include breakpoint-set("to ems", true);
+@import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup
+@import "minimal-mistakes/vendor/susy/susy";
+@import "minimal-mistakes/mixins";
+
+/* Core CSS */
+@import "minimal-mistakes/reset";
+@import "minimal-mistakes/base";
+@import "minimal-mistakes/forms";
+@import "minimal-mistakes/tables";
+@import "minimal-mistakes/animations";
+
+/* Components */
+@import "minimal-mistakes/buttons";
+@import "minimal-mistakes/notices";
+@import "minimal-mistakes/masthead";
+@import "minimal-mistakes/navigation";
+@import "minimal-mistakes/footer";
+@import "minimal-mistakes/search";
+@import "minimal-mistakes/syntax";
+
+/* Utility classes */
+@import "minimal-mistakes/utilities";
+
+/* Layout specific */
+@import "minimal-mistakes/page";
+@import "minimal-mistakes/archive";
+@import "minimal-mistakes/sidebar";
+@import "minimal-mistakes/print";
diff --git a/_sass/minimal-mistakes/_animations.scss b/_sass/minimal-mistakes/_animations.scss
new file mode 100755
index 0000000..25ef77f
--- /dev/null
+++ b/_sass/minimal-mistakes/_animations.scss
@@ -0,0 +1,21 @@
+/* ==========================================================================
+ ANIMATIONS
+ ========================================================================== */
+
+@-webkit-keyframes intro {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes intro {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_archive.scss b/_sass/minimal-mistakes/_archive.scss
new file mode 100755
index 0000000..40d156e
--- /dev/null
+++ b/_sass/minimal-mistakes/_archive.scss
@@ -0,0 +1,362 @@
+/* ==========================================================================
+ ARCHIVE
+ ========================================================================== */
+
+.archive {
+ margin-bottom: 2em;
+
+ @include breakpoint($large) {
+ float: right;
+ width: calc(100% - #{$right-sidebar-width-narrow});
+ padding-right: $right-sidebar-width-narrow;
+ }
+
+ @include breakpoint($x-large) {
+ width: calc(100% - #{$right-sidebar-width});
+ padding-right: $right-sidebar-width;
+ }
+}
+
+.archive__subtitle {
+ margin: 1.414em 0 0;
+ padding-bottom: 0.5em;
+ font-size: $type-size-5;
+ color: $muted-text-color;
+ border-bottom: 1px solid $border-color;
+
+ + .list__item .archive__item-title {
+ margin-top: 0.5em;
+ }
+}
+
+.archive__item-title {
+ margin-bottom: 0.25em;
+ font-family: $sans-serif-narrow;
+ line-height: initial;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ a {
+ color: inherit;
+ }
+
+ a + a {
+ opacity: 0.5;
+ }
+}
+
+/* remove border*/
+.page__content {
+ .archive__item-title {
+ margin-top: 1em;
+ border-bottom: none;
+ }
+}
+
+.archive__item-excerpt {
+ margin-top: 0;
+ font-size: $type-size-6;
+
+ & + p {
+ text-indent: 0;
+ }
+}
+
+.archive__item-teaser {
+ position: relative;
+ border-radius: $border-radius;
+ overflow: hidden;
+
+ img {
+ width: 100%;
+ }
+}
+
+.archive__item-caption {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ margin: 0 auto;
+ padding: 2px 5px;
+ color: #fff;
+ font-family: $caption-font-family;
+ font-size: $type-size-8;
+ background: #000;
+ text-align: right;
+ z-index: 5;
+ opacity: 0.5;
+ border-radius: $border-radius 0 0 0;
+
+ @include breakpoint($large) {
+ padding: 5px 10px;
+ }
+
+ a {
+ color: #fff;
+ text-decoration: none;
+ }
+}
+
+/*
+ List view
+ ========================================================================== */
+
+.list__item {
+ .page__meta {
+ margin: 0 0 4px;
+ font-size: 0.6em;
+ }
+}
+
+/*
+ Grid view
+ ========================================================================== */
+
+.archive {
+ .grid__wrapper {
+ /* extend grid elements to the right */
+
+ @include breakpoint($large) {
+ margin-right: -1 * $right-sidebar-width-narrow;
+ }
+
+ @include breakpoint($x-large) {
+ margin-right: -1 * $right-sidebar-width;
+ }
+ }
+}
+
+.grid__item {
+ margin-bottom: 2em;
+
+ @include breakpoint($small) {
+ float: left;
+ width: span(5 of 10);
+
+ &:nth-child(2n + 1) {
+ clear: both;
+ margin-left: 0;
+ }
+
+ &:nth-child(2n + 2) {
+ clear: none;
+ margin-left: gutter(of 10);
+ }
+ }
+
+ @include breakpoint($medium) {
+ margin-left: 0; /* override margin*/
+ margin-right: 0; /* override margin*/
+ width: span(3 of 12);
+
+ &:nth-child(2n + 1) {
+ clear: none;
+ }
+
+ &:nth-child(4n + 1) {
+ clear: both;
+ }
+
+ &:nth-child(4n + 2) {
+ clear: none;
+ margin-left: gutter(1 of 12);
+ }
+
+ &:nth-child(4n + 3) {
+ clear: none;
+ margin-left: gutter(1 of 12);
+ }
+
+ &:nth-child(4n + 4) {
+ clear: none;
+ margin-left: gutter(1 of 12);
+ }
+ }
+
+ .page__meta {
+ margin: 0 0 4px;
+ font-size: 0.6em;
+ }
+
+ .archive__item-title {
+ margin-top: 0.5em;
+ font-size: $type-size-5;
+ }
+
+ .archive__item-excerpt {
+ display: none;
+
+ @include breakpoint($medium) {
+ display: block;
+ font-size: $type-size-6;
+ }
+ }
+
+ .archive__item-teaser {
+ @include breakpoint($small) {
+ max-height: 200px;
+ }
+
+ @include breakpoint($medium) {
+ max-height: 120px;
+ }
+ }
+}
+
+/*
+ Features
+ ========================================================================== */
+
+.feature__wrapper {
+ @include clearfix();
+ margin-bottom: 2em;
+ border-bottom: 1px solid $border-color;
+}
+
+.feature__item {
+ margin-bottom: 2em;
+ font-size: 1.25rem;
+
+ @include breakpoint($small) {
+ float: left;
+ margin-bottom: 0;
+ width: span(4 of 12);
+
+ &:nth-child(3n + 1) {
+ clear: both;
+ margin-left: 0;
+ }
+
+ &:nth-child(3n + 2) {
+ clear: none;
+ margin-left: gutter(of 12);
+ }
+
+ &:nth-child(3n + 3) {
+ clear: none;
+ margin-left: gutter(of 12);
+ }
+
+ .feature__item-teaser {
+ max-height: 200px;
+ overflow: hidden;
+ }
+ }
+
+ &--left {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+ font-size: 1.25rem;
+
+ .archive__item-teaser {
+ margin-bottom: 2em;
+ }
+
+ @include breakpoint($small) {
+ .archive__item-teaser {
+ float: left;
+ width: span(5 of 12);
+ }
+
+ .archive__item-body {
+ float: right;
+ padding-left: gutter(0.5 of 12);
+ padding-right: gutter(1 of 12);
+ width: span(7 of 12);
+ }
+ }
+ }
+
+ &--right {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+ font-size: 1.25rem;
+
+ .archive__item-teaser {
+ margin-bottom: 2em;
+ }
+
+ @include breakpoint($small) {
+ text-align: right;
+
+ .archive__item-teaser {
+ float: right;
+ width: span(5 of 12);
+ }
+
+ .archive__item-body {
+ float: right;
+ width: span(7 of 12);
+ padding-left: gutter(0.5 of 12);
+ padding-right: gutter(1 of 12);
+ }
+ }
+ }
+
+ &--center {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+ font-size: 1.25rem;
+
+ .archive__item-teaser {
+ margin-bottom: 2em;
+ }
+
+ @include breakpoint($small) {
+ text-align: center;
+
+ .archive__item-teaser {
+ margin: 0 auto;
+ width: span(5 of 12);
+ }
+
+ .archive__item-body {
+ margin: 0 auto;
+ width: span(7 of 12);
+ }
+ }
+ }
+}
+
+/* Place inside an archive layout */
+
+.archive {
+ .feature__wrapper {
+ .archive__item-title {
+ margin-top: 0.25em;
+ font-size: 1em;
+ }
+ }
+
+ .feature__item,
+ .feature__item--left,
+ .feature__item--center,
+ .feature__item--right {
+ font-size: 1em;
+ }
+}
+
+/*
+ Wide Pages
+ ========================================================================== */
+
+ .wide {
+ .archive {
+ @include breakpoint($large) {
+ padding-right: 0;
+ }
+
+ @include breakpoint($x-large) {
+ padding-right: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_base.scss b/_sass/minimal-mistakes/_base.scss
new file mode 100755
index 0000000..82d5e63
--- /dev/null
+++ b/_sass/minimal-mistakes/_base.scss
@@ -0,0 +1,358 @@
+/* ==========================================================================
+ BASE ELEMENTS
+ ========================================================================== */
+
+html {
+ /* sticky footer fix */
+ position: relative;
+ min-height: 100%;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ color: $text-color;
+ font-family: $global-font-family;
+ line-height: 1.5;
+
+ &.overflow--hidden {
+ /* when primary navigation is visible, the content in the background won't scroll */
+ overflow: hidden;
+ }
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 2em 0 0.5em;
+ line-height: 1.2;
+ font-family: $header-font-family;
+ font-weight: bold;
+}
+
+h1 {
+ margin-top: 0;
+ font-size: $type-size-3;
+}
+
+h2 {
+ font-size: $type-size-4;
+}
+
+h3 {
+ font-size: $type-size-5;
+}
+
+h4 {
+ font-size: $type-size-6;
+}
+
+h5 {
+ font-size: $type-size-6;
+}
+
+h6 {
+ font-size: $type-size-6;
+}
+
+small,
+.small {
+ font-size: $type-size-6;
+}
+
+p {
+ margin-bottom: 1.3em;
+}
+
+u,
+ins {
+ text-decoration: none;
+ border-bottom: 1px solid $text-color;
+ a {
+ color: inherit;
+ }
+}
+
+del a {
+ color: inherit;
+}
+
+/* reduce orphans and widows when printing */
+
+p,
+pre,
+blockquote,
+ul,
+ol,
+dl,
+figure,
+table,
+fieldset {
+ orphans: 3;
+ widows: 3;
+}
+
+/* abbreviations */
+
+abbr[title],
+abbr[data-original-title] {
+ text-decoration: none;
+ cursor: help;
+ border-bottom: 1px dotted $text-color;
+}
+
+/* blockquotes */
+
+blockquote {
+ margin: 2em 1em 2em 0;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-style: italic;
+ border-left: 0.25em solid $primary-color;
+
+ cite {
+ font-style: italic;
+
+ &:before {
+ content: "\2014";
+ padding-right: 5px;
+ }
+ }
+}
+
+/* links */
+
+a {
+ &:focus {
+ @extend %tab-focus;
+ }
+
+ &:hover,
+ &:active {
+ color: $link-color-hover;
+ outline: 0;
+ }
+
+ &:visited {
+ color: $link-color-visited;
+ }
+}
+
+/* buttons */
+
+button:focus {
+ @extend %tab-focus;
+}
+
+/* code */
+
+tt,
+code,
+kbd,
+samp,
+pre {
+ font-family: $monospace;
+}
+
+pre {
+ overflow-x: auto; /* add scrollbars to wide code blocks*/
+}
+
+p > code,
+a > code,
+li > code,
+figcaption > code,
+td > code {
+ padding-top: 0.1rem;
+ padding-bottom: 0.1rem;
+ font-size: $type-size-6;
+ background: $code-background-color;
+ border-radius: $border-radius;
+
+ &:before,
+ &:after {
+ letter-spacing: -0.2em;
+ content: "\00a0"; /* non-breaking space*/
+ }
+}
+
+/* horizontal rule */
+
+hr {
+ display: block;
+ margin: 1em 0;
+ border: 0;
+ border-top: 1px solid $border-color;
+}
+
+/* lists */
+
+ul li,
+ol li {
+ margin-bottom: 0.5em;
+}
+
+li ul,
+li ol {
+ margin-top: 0.5em;
+}
+
+/*
+ Media and embeds
+ ========================================================================== */
+
+/* Figures and images */
+
+figure {
+ display: -webkit-box;
+ display: flex;
+ -webkit-box-pack: justify;
+ justify-content: space-between;
+ -webkit-box-align: start;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ margin: 2em 0;
+
+ img,
+ iframe,
+ .fluid-width-video-wrapper {
+ margin-bottom: 1em;
+ }
+
+ img {
+ width: 100%;
+ border-radius: $border-radius;
+ -webkit-transition: $global-transition;
+ transition: $global-transition;
+ }
+
+ > a {
+ display: block;
+ }
+
+ &.half {
+ > a,
+ > img {
+ @include breakpoint($small) {
+ width: calc(50% - 0.5em);
+ }
+ }
+
+ figcaption {
+ width: 100%;
+ }
+ }
+
+ &.third {
+ > a,
+ > img {
+ @include breakpoint($small) {
+ width: calc(33.3333% - 0.5em);
+ }
+ }
+
+ figcaption {
+ width: 100%;
+ }
+ }
+}
+
+/* Figure captions */
+
+figcaption {
+ margin-bottom: 0.5em;
+ color: $muted-text-color;
+ font-family: $caption-font-family;
+ font-size: $type-size-6;
+
+ a {
+ -webkit-transition: $global-transition;
+ transition: $global-transition;
+
+ &:hover {
+ color: $link-color-hover;
+ }
+ }
+}
+
+/* Fix IE9 SVG bug */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/*
+ Navigation lists
+ ========================================================================== */
+
+/**
+ * Removes margins, padding, and bullet points from navigation lists
+ *
+ * Example usage:
+ *
+ *
+ *
+ */
+
+nav {
+ ul {
+ margin: 0;
+ padding: 0;
+ }
+
+ li {
+ list-style: none;
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ /* override white-space for nested lists */
+ ul li,
+ ol li {
+ margin-bottom: 0;
+ }
+
+ li ul,
+ li ol {
+ margin-top: 0;
+ }
+}
+
+/*
+ Global animation transition
+ ========================================================================== */
+
+b,
+i,
+strong,
+em,
+blockquote,
+p,
+q,
+span,
+figure,
+img,
+h1,
+h2,
+header,
+input,
+a,
+tr,
+td,
+form button,
+input[type="submit"],
+.btn,
+.highlight,
+.archive__item-teaser {
+ -webkit-transition: $global-transition;
+ transition: $global-transition;
+}
diff --git a/_sass/minimal-mistakes/_buttons.scss b/_sass/minimal-mistakes/_buttons.scss
new file mode 100755
index 0000000..6027eac
--- /dev/null
+++ b/_sass/minimal-mistakes/_buttons.scss
@@ -0,0 +1,98 @@
+/* ==========================================================================
+ BUTTONS
+ ========================================================================== */
+
+/*
+ Default button
+ ========================================================================== */
+
+.btn {
+ /* default */
+ display: inline-block;
+ margin-bottom: 0.25em;
+ padding: 0.5em 1em;
+ font-family: $sans-serif;
+ font-size: $type-size-6;
+ font-weight: bold;
+ text-align: center;
+ text-decoration: none;
+ border-width: 0;
+ border-radius: $border-radius;
+ cursor: pointer;
+
+ .icon {
+ margin-right: 0.5em;
+ }
+
+ .icon + .hidden {
+ margin-left: -0.5em; /* override for hidden text*/
+ }
+
+ /* button colors */
+ $buttoncolors:
+ (primary, $primary-color),
+ (inverse, #fff),
+ (light-outline, transparent),
+ (success, $success-color),
+ (warning, $warning-color),
+ (danger, $danger-color),
+ (info, $info-color),
+ (facebook, $facebook-color),
+ (twitter, $twitter-color),
+ (google-plus, $google-plus-color),
+ (linkedin, $linkedin-color);
+
+ @each $buttoncolor, $color in $buttoncolors {
+ &--#{$buttoncolor} {
+ @include yiq-contrasted($color);
+ @if ($buttoncolor == inverse) {
+ border: 1px solid $border-color;
+ }
+ @if ($buttoncolor == light-outline) {
+ border: 1px solid #fff;
+ }
+
+ &:hover {
+ @include yiq-contrasted(mix(#000, $color, 20%));
+ }
+
+ &:visited {
+ @include yiq-contrasted($color);
+ }
+ }
+ }
+
+ /* fills width of parent container */
+ &--block {
+ display: block;
+ width: 100%;
+
+ + .btn--block {
+ margin-top: 0.25em;
+ }
+ }
+
+ /* disabled */
+ &--disabled {
+ pointer-events: none;
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ box-shadow: none;
+ opacity: 0.65;
+ }
+
+ /* extra large button */
+ &--x-large {
+ font-size: $type-size-4;
+ }
+
+ /* large button */
+ &--large {
+ font-size: $type-size-5;
+ }
+
+ /* small button */
+ &--small {
+ font-size: $type-size-7;
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_footer.scss b/_sass/minimal-mistakes/_footer.scss
new file mode 100755
index 0000000..766c6c7
--- /dev/null
+++ b/_sass/minimal-mistakes/_footer.scss
@@ -0,0 +1,91 @@
+/* ==========================================================================
+ FOOTER
+ ========================================================================== */
+
+.page__footer {
+ @include clearfix;
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+ /* sticky footer fix start */
+ position: absolute;
+ bottom: 0;
+ height: auto;
+ /* sticky footer fix end */
+ margin-top: 3em;
+ color: $muted-text-color;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.45s;
+ animation-delay: 0.45s;
+ background-color: $footer-background-color;
+
+ footer {
+ @include clearfix;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 2em;
+ max-width: 100%;
+ padding: 0 1em 2em;
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+ }
+
+ a {
+ color: inherit;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+
+ .fas,
+ .fab,
+ .far,
+ .fal {
+ color: $muted-text-color;
+ }
+}
+
+.page__footer-copyright {
+ font-family: $global-font-family;
+ font-size: $type-size-7;
+}
+
+.page__footer-follow {
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ }
+
+ li {
+ display: inline-block;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ font-family: $sans-serif-narrow;
+ font-size: $type-size-6;
+ text-transform: uppercase;
+ }
+
+ li + li:before {
+ content: "";
+ padding-right: 5px;
+ }
+
+ a {
+ padding-right: 10px;
+ font-weight: bold;
+ }
+
+ .social-icons {
+ a {
+ white-space: nowrap;
+ }
+ }
+}
diff --git a/_sass/minimal-mistakes/_forms.scss b/_sass/minimal-mistakes/_forms.scss
new file mode 100755
index 0000000..f937216
--- /dev/null
+++ b/_sass/minimal-mistakes/_forms.scss
@@ -0,0 +1,393 @@
+/* ==========================================================================
+ Forms
+ ========================================================================== */
+
+form {
+ margin: 0 0 5px 0;
+ padding: 1em;
+ background-color: $form-background-color;
+
+ fieldset {
+ margin-bottom: 5px;
+ padding: 0;
+ border-width: 0;
+ }
+
+ legend {
+ display: block;
+ width: 100%;
+ margin-bottom: 5px * 2;
+ *margin-left: -7px;
+ padding: 0;
+ color: $text-color;
+ border: 0;
+ white-space: normal;
+ }
+
+ p {
+ margin-bottom: 5px / 2;
+ }
+
+ ul {
+ list-style-type: none;
+ margin: 0 0 5px 0;
+ padding: 0;
+ }
+
+ br {
+ display: none;
+ }
+}
+
+label,
+input,
+button,
+select,
+textarea {
+ vertical-align: baseline;
+ *vertical-align: middle;
+}
+
+input,
+button,
+select,
+textarea {
+ box-sizing: border-box;
+ font-family: $sans-serif;
+}
+
+label {
+ display: block;
+ margin-bottom: 0.25em;
+ color: $text-color;
+ cursor: pointer;
+
+ small {
+ font-size: $type-size-6;
+ }
+
+ input,
+ textarea,
+ select {
+ display: block;
+ }
+}
+
+input,
+textarea,
+select {
+ display: inline-block;
+ width: 100%;
+ padding: 0.25em;
+ margin-bottom: 0.5em;
+ color: $text-color;
+ background-color: $background-color;
+ border: $border-color;
+ border-radius: $border-radius;
+ box-shadow: $box-shadow;
+}
+
+.input-mini {
+ width: 60px;
+}
+
+.input-small {
+ width: 90px;
+}
+
+input[type="image"],
+input[type="checkbox"],
+input[type="radio"] {
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 3px 0;
+ *margin-top: 0;
+ line-height: normal;
+ cursor: pointer;
+ border-radius: 0;
+ border: 0 \9;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+ *width: 13px;
+ *height: 13px;
+}
+
+input[type="image"] {
+ border: 0;
+ box-shadow: none;
+}
+
+input[type="file"] {
+ width: auto;
+ padding: initial;
+ line-height: initial;
+ border: initial;
+ background-color: transparent;
+ background-color: initial;
+ box-shadow: none;
+}
+
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ width: auto;
+ height: auto;
+ cursor: pointer;
+ *overflow: visible;
+}
+
+select,
+input[type="file"] {
+ *margin-top: 4px;
+}
+
+select {
+ width: auto;
+ background-color: #fff;
+}
+
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+textarea {
+ resize: vertical;
+ height: auto;
+ overflow: auto;
+ vertical-align: top;
+}
+
+input[type="hidden"] {
+ display: none;
+}
+
+.form {
+ position: relative;
+}
+
+.radio,
+.checkbox {
+ padding-left: 18px;
+ font-weight: normal;
+}
+
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -18px;
+}
+
+.radio.inline,
+.checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+
+/*
+ Disabled state
+ ========================================================================== */
+
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+/*
+ Focus & active state
+ ========================================================================== */
+
+input:focus,
+textarea:focus {
+ border-color: $primary-color;
+ outline: 0;
+ outline: thin dotted \9;
+ box-shadow: inset 0 1px 3px rgba($text-color, 0.06),
+ 0 0 5px rgba($primary-color, 0.7);
+}
+
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus,
+select:focus {
+ box-shadow: none;
+}
+
+/*
+ Help text
+ ========================================================================== */
+
+.help-block,
+.help-inline {
+ color: $muted-text-color;
+}
+
+.help-block {
+ display: block;
+ margin-bottom: 1em;
+ line-height: 1em;
+}
+
+.help-inline {
+ display: inline-block;
+ vertical-align: middle;
+ padding-left: 5px;
+}
+
+/*
+ .form-group
+ ========================================================================== */
+
+.form-group {
+ margin-bottom: 5px;
+ padding: 0;
+ border-width: 0;
+}
+
+/*
+ .form-inline
+ ========================================================================== */
+
+.form-inline input,
+.form-inline textarea,
+.form-inline select {
+ display: inline-block;
+ margin-bottom: 0;
+}
+
+.form-inline label {
+ display: inline-block;
+}
+
+.form-inline .radio,
+.form-inline .checkbox,
+.form-inline .radio {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: 0;
+ margin-right: 3px;
+}
+
+/*
+ .form-search
+ ========================================================================== */
+
+.form-search input,
+.form-search textarea,
+.form-search select {
+ display: inline-block;
+ margin-bottom: 0;
+}
+
+.form-search .search-query {
+ padding-left: 14px;
+ padding-right: 14px;
+ margin-bottom: 0;
+ border-radius: 14px;
+}
+
+.form-search label {
+ display: inline-block;
+}
+
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: 0;
+ margin-right: 3px;
+}
+
+/*
+ .form--loading
+ ========================================================================== */
+
+.form--loading:before {
+ content: "";
+}
+
+.form--loading .form__spinner {
+ display: block;
+}
+
+.form:before {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 10;
+}
+
+.form__spinner {
+ display: none;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ z-index: 11;
+}
+
+/*
+ Google search form
+ ========================================================================== */
+
+#goog-fixurl {
+ ul {
+ list-style: none;
+ margin-left: 0;
+ padding-left: 0;
+ li {
+ list-style-type: none;
+ }
+ }
+}
+
+#goog-wm-qt {
+ width: auto;
+ margin-right: 10px;
+ margin-bottom: 20px;
+ padding: 8px 20px;
+ display: inline-block;
+ font-size: $type-size-6;
+ background-color: #fff;
+ color: #000;
+ border-width: 2px !important;
+ border-style: solid !important;
+ border-color: $border-color;
+ border-radius: $border-radius;
+}
+
+#goog-wm-sb {
+ @extend .btn;
+}
diff --git a/_sass/minimal-mistakes/_masthead.scss b/_sass/minimal-mistakes/_masthead.scss
new file mode 100755
index 0000000..3317c7f
--- /dev/null
+++ b/_sass/minimal-mistakes/_masthead.scss
@@ -0,0 +1,83 @@
+/* ==========================================================================
+ MASTHEAD
+ ========================================================================== */
+
+.masthead {
+ position: relative;
+ border-bottom: 1px solid $border-color;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.15s;
+ animation-delay: 0.15s;
+ z-index: 20;
+
+ &__inner-wrap {
+ @include clearfix;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 1em;
+ max-width: 100%;
+ display: -webkit-box;
+ display: flex;
+ -webkit-box-pack: justify;
+ justify-content: space-between;
+ font-family: $sans-serif-narrow;
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+
+ nav {
+ z-index: 10;
+ }
+
+ a {
+ text-decoration: none;
+ }
+ }
+}
+
+.site-title {
+ display: -webkit-box;
+ display: flex;
+ padding: 0.5rem 0;
+ align-self: stretch;
+ -webkit-box-align: center;
+ align-items: center;
+ font-weight: bold;
+ z-index: 20;
+}
+
+.masthead__menu {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+
+ .site-nav {
+ margin-left: 0;
+
+ @include breakpoint($small) {
+ float: right;
+ }
+ }
+
+ ul {
+ margin: 0;
+ padding: 0;
+ clear: both;
+ list-style-type: none;
+ }
+}
+
+.masthead__menu-item {
+ display: block;
+ list-style-type: none;
+ white-space: nowrap;
+
+ &--lg {
+ padding-right: 2em;
+ font-weight: 700;
+ }
+}
diff --git a/_sass/minimal-mistakes/_mixins.scss b/_sass/minimal-mistakes/_mixins.scss
new file mode 100755
index 0000000..1d221fc
--- /dev/null
+++ b/_sass/minimal-mistakes/_mixins.scss
@@ -0,0 +1,92 @@
+/* ==========================================================================
+ MIXINS
+ ========================================================================== */
+
+%tab-focus {
+ /* Default*/
+ outline: thin dotted $warning-color;
+ /* Webkit*/
+ outline: 5px auto $warning-color;
+ outline-offset: -2px;
+}
+
+/*
+ em function
+ ========================================================================== */
+
+@function em($target, $context: $doc-font-size) {
+ @return ($target / $context) * 1em;
+}
+
+
+/*
+ Bourbon clearfix
+ ========================================================================== */
+
+/*
+ * Provides an easy way to include a clearfix for containing floats.
+ * link http://cssmojo.com/latest_new_clearfix_so_far/
+ *
+ * example scss - Usage
+ *
+ * .element {
+ * @include clearfix;
+ * }
+ *
+ * example css - CSS Output
+ *
+ * .element::after {
+ * clear: both;
+ * content: "";
+ * display: table;
+ * }
+*/
+
+@mixin clearfix {
+ clear: both;
+
+ &::after {
+ clear: both;
+ content: "";
+ display: table;
+ }
+}
+
+/*
+ Compass YIQ Color Contrast
+ https://github.com/easy-designs/yiq-color-contrast
+ ========================================================================== */
+
+@function yiq-is-light(
+ $color,
+ $threshold: $yiq-contrasted-threshold
+) {
+ $red: red($color);
+ $green: green($color);
+ $blue: blue($color);
+
+ $yiq: (($red*299)+($green*587)+($blue*114))/1000;
+
+ @if $yiq-debug { @debug $yiq, $threshold; }
+
+ @return if($yiq >= $threshold, true, false);
+}
+
+@function yiq-contrast-color(
+ $color,
+ $dark: $yiq-contrasted-dark-default,
+ $light: $yiq-contrasted-light-default,
+ $threshold: $yiq-contrasted-threshold
+) {
+ @return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default);
+}
+
+@mixin yiq-contrasted(
+ $background-color,
+ $dark: $yiq-contrasted-dark-default,
+ $light: $yiq-contrasted-light-default,
+ $threshold: $yiq-contrasted-threshold
+) {
+ background-color: $background-color;
+ color: yiq-contrast-color($background-color, $dark, $light, $threshold);
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss
new file mode 100755
index 0000000..b6606e6
--- /dev/null
+++ b/_sass/minimal-mistakes/_navigation.scss
@@ -0,0 +1,544 @@
+/* ==========================================================================
+ NAVIGATION
+ ========================================================================== */
+
+/*
+ Breadcrumb navigation links
+ ========================================================================== */
+
+.breadcrumbs {
+ @include clearfix;
+ margin: 0 auto;
+ max-width: 100%;
+ padding-left: 2em;
+ padding-right: 2em;
+ font-family: $sans-serif;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s;
+
+ @include breakpoint($large) {
+ padding-left: 1em;
+ padding-right: 1em;
+ }
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+
+ ol {
+ padding: 0;
+ list-style: none;
+ font-size: $type-size-6;
+
+ @include breakpoint($large) {
+ float: right;
+ width: span(10 of 12);
+ }
+
+ @include breakpoint($x-large) {
+ padding-left: gutter(0.5 of 12);
+ }
+ }
+
+ li {
+ display: inline;
+ }
+
+ .current {
+ font-weight: bold;
+ }
+}
+
+/*
+ Post pagination navigation links
+ ========================================================================== */
+
+.pagination {
+ @include clearfix();
+ float: left;
+ margin-top: 1em;
+ padding-top: 1em;
+ width: 100%;
+
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ font-family: $sans-serif;
+ }
+
+ li {
+ display: block;
+ float: left;
+ margin-left: -1px;
+
+ a {
+ display: block;
+ margin-bottom: 0.25em;
+ padding: 0.5em 1em;
+ font-family: $sans-serif;
+ font-size: 14px;
+ font-weight: bold;
+ line-height: 1.5;
+ text-align: center;
+ text-decoration: none;
+ color: $muted-text-color;
+ border: 1px solid mix(#000, $border-color, 25%);
+ border-radius: 0;
+
+ &:hover {
+ color: $link-color-hover;
+ }
+
+ &.current,
+ &.current.disabled {
+ color: #fff;
+ background: $primary-color;
+ }
+
+ &.disabled {
+ color: rgba($muted-text-color, 0.5);
+ pointer-events: none;
+ cursor: not-allowed;
+ }
+ }
+
+ &:first-child {
+ margin-left: 0;
+
+ a {
+ border-top-left-radius: $border-radius;
+ border-bottom-left-radius: $border-radius;
+ }
+ }
+
+ &:last-child {
+ a {
+ border-top-right-radius: $border-radius;
+ border-bottom-right-radius: $border-radius;
+ }
+ }
+ }
+
+ /* next/previous buttons */
+ &--pager {
+ display: block;
+ padding: 1em 2em;
+ float: left;
+ width: 50%;
+ font-family: $sans-serif;
+ font-size: $type-size-5;
+ font-weight: bold;
+ text-align: center;
+ text-decoration: none;
+ color: $muted-text-color;
+ border: 1px solid mix(#000, $border-color, 25%);
+ border-radius: $border-radius;
+
+ &:hover {
+ @include yiq-contrasted($muted-text-color);
+ }
+
+ &:first-child {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+
+ &:last-child {
+ margin-left: -1px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+
+ &.disabled {
+ color: rgba($muted-text-color, 0.5);
+ pointer-events: none;
+ cursor: not-allowed;
+ }
+ }
+}
+
+.page__content + .pagination,
+.page__meta + .pagination,
+.page__share + .pagination,
+.page__comments + .pagination {
+ margin-top: 2em;
+ padding-top: 2em;
+ border-top: 1px solid $border-color;
+}
+
+/*
+ Priority plus navigation
+ ========================================================================== */
+
+.greedy-nav {
+ position: relative;
+ display: -webkit-box;
+ display: flex;
+ -webkit-box-align: center;
+ align-items: center;
+ background: $background-color;
+
+ a {
+ display: block;
+ margin: 0 1rem;
+ padding: 0.5rem 0;
+ color: $masthead-link-color;
+ text-decoration: none;
+
+ &:hover {
+ color: $masthead-link-color-hover;
+ }
+
+ &.site-title {
+ margin-left: 0;
+ }
+ }
+
+ &__toggle {
+ padding: 0 0.5rem;
+ align-self: stretch;
+ border: 0;
+ outline: none;
+ color: #fff;
+ background-color: $primary-color;
+ cursor: pointer;
+ }
+
+ .visible-links {
+ display: -webkit-box;
+ display: flex;
+ -webkit-box-pack: end;
+ justify-content: flex-end;
+ -webkit-box-flex: 1;
+ flex: 1;
+ overflow: hidden;
+
+ li {
+ -webkit-box-flex: 0;
+ flex: none;
+ }
+
+ a {
+ position: relative;
+
+ &:before {
+ content: "";
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ height: 4px;
+ background: $primary-color;
+ width: 100%;
+ -webkit-transition: $global-transition;
+ transition: $global-transition;
+ -webkit-transform: scaleX(0) translate3d(0, 0, 0);
+ transform: scaleX(0) translate3d(0, 0, 0); /* hide*/
+ }
+
+ &:hover:before {
+ -webkit-transform: scaleX(1);
+ -ms-transform: scaleX(1);
+ transform: scaleX(1); /* reveal*/
+ }
+ }
+ }
+
+ .hidden-links {
+ position: absolute;
+ top: 100%;
+ right: 0;
+ margin-top: 15px;
+ padding: 5px;
+ border: 1px solid $border-color;
+ border-radius: $border-radius;
+ background: $background-color;
+ box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
+
+ &.hidden {
+ display: none;
+ }
+
+ a {
+ margin: 0;
+ padding: 10px 20px;
+ font-size: $type-size-5;
+
+ &:hover {
+ color: $masthead-link-color-hover;
+ background: $navicon-link-color-hover;
+ }
+ }
+
+ &:before {
+ content: "";
+ position: absolute;
+ top: -11px;
+ right: 10px;
+ width: 0;
+ border-style: solid;
+ border-width: 0 10px 10px;
+ border-color: $border-color transparent;
+ display: block;
+ z-index: 0;
+ }
+
+ &:after {
+ content: "";
+ position: absolute;
+ top: -10px;
+ right: 10px;
+ width: 0;
+ border-style: solid;
+ border-width: 0 10px 10px;
+ border-color: $background-color transparent;
+ display: block;
+ z-index: 1;
+ }
+
+ li {
+ display: block;
+ border-bottom: 1px solid $border-color;
+
+ &:last-child {
+ border-bottom: none;
+ }
+ }
+ }
+}
+
+.no-js {
+ .greedy-nav {
+ .visible-links {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ overflow: visible;
+ }
+ }
+}
+
+/*
+ Navigation list
+ ========================================================================== */
+
+.nav__list {
+ margin-bottom: 1.5em;
+
+ input[type="checkbox"],
+ label {
+ display: none;
+ }
+
+ @include breakpoint(max-width ($large - 1px)) {
+ label {
+ position: relative;
+ display: inline-block;
+ padding: 0.5em 2.5em 0.5em 1em;
+ color: $gray;
+ font-size: $type-size-6;
+ font-weight: bold;
+ border: 1px solid $light-gray;
+ border-radius: $border-radius;
+ z-index: 20;
+ -webkit-transition: 0.2s ease-out;
+ transition: 0.2s ease-out;
+ cursor: pointer;
+
+ &:before,
+ &:after {
+ content: "";
+ position: absolute;
+ right: 1em;
+ top: 1.25em;
+ width: 0.75em;
+ height: 0.125em;
+ line-height: 1;
+ background-color: $gray;
+ -webkit-transition: 0.2s ease-out;
+ transition: 0.2s ease-out;
+ }
+
+ &:after {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ }
+
+ &:hover {
+ color: #fff;
+ border-color: $gray;
+ background-color: mix(white, #000, 20%);
+
+ &:before,
+ &:after {
+ background-color: #fff;
+ }
+ }
+ }
+
+ /* selected*/
+ input:checked + label {
+ color: white;
+ background-color: mix(white, #000, 20%);
+
+ &:before,
+ &:after {
+ background-color: #fff;
+ }
+ }
+
+ /* on hover show expand*/
+ label:hover:after {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ }
+
+ input:checked + label:hover:after {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ }
+
+ ul {
+ margin-bottom: 1em;
+ }
+
+ a {
+ display: block;
+ padding: 0.25em 0;
+
+ @include breakpoint($large) {
+ padding-top: 0.125em;
+ padding-bottom: 0.125em;
+ }
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
+
+.nav__list .nav__items {
+ margin: 0;
+ font-size: 1.25rem;
+
+ a {
+ color: inherit;
+ }
+
+ .active {
+ margin-left: -0.5em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ font-weight: bold;
+ }
+
+ @include breakpoint(max-width ($large - 1px)) {
+ position: relative;
+ max-height: 0;
+ opacity: 0%;
+ overflow: hidden;
+ z-index: 10;
+ -webkit-transition: 0.3s ease-in-out;
+ transition: 0.3s ease-in-out;
+ -webkit-transform: translate(0, 10%);
+ -ms-transform: translate(0, 10%);
+ transform: translate(0, 10%);
+ }
+}
+
+@include breakpoint(max-width ($large - 1px)) {
+ .nav__list input:checked ~ .nav__items {
+ -webkit-transition: 0.5s ease-in-out;
+ transition: 0.5s ease-in-out;
+ max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/
+ overflow: visible;
+ opacity: 1;
+ margin-top: 1em;
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+.nav__title {
+ margin: 0;
+ padding: 0.5rem 1rem;
+ font-family: $sans-serif-narrow;
+ font-size: $type-size-5;
+ font-weight: bold;
+}
+
+.nav__sub-title {
+ display: block;
+ margin: 0.5rem 0;
+ padding: 0.5rem 0;
+ font-family: $sans-serif-narrow;
+ font-size: $type-size-6;
+ font-weight: bold;
+ text-transform: uppercase;
+ border-bottom: 1px solid $border-color;
+}
+
+/*
+ Table of contents navigation
+ ========================================================================== */
+
+.toc {
+ font-family: $sans-serif-narrow;
+ color: $gray;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ background-color: $background-color;
+ border: 1px solid $border-color;
+ border-radius: $border-radius;
+ box-shadow: $box-shadow;
+
+ .nav__title {
+ color: #fff;
+ font-size: $type-size-6;
+ background: $primary-color;
+ border-top-left-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ }
+}
+
+.toc__menu {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ list-style: none;
+ font-size: 0.8rem;
+
+ a {
+ display: block;
+ padding: 0.5rem 1rem;
+ color: $muted-text-color;
+ font-size: $type-size-7;
+ font-weight: bold;
+ line-height: 1.5;
+ border-bottom: 1px solid $border-color;
+
+ &:hover {
+ color: $text-color;
+ }
+ }
+
+ li ul > li a {
+ padding-left: 1.75rem;
+ font-weight: normal;
+ }
+
+ /* hide sub sub links on small screens*/
+ li > ul li {
+ display: none;
+
+ @include breakpoint($medium) {
+ display: block;
+ }
+ }
+}
diff --git a/_sass/minimal-mistakes/_notices.scss b/_sass/minimal-mistakes/_notices.scss
new file mode 100755
index 0000000..7f9b733
--- /dev/null
+++ b/_sass/minimal-mistakes/_notices.scss
@@ -0,0 +1,100 @@
+/* ==========================================================================
+ NOTICE TEXT BLOCKS
+ ========================================================================== */
+
+/**
+ * Default Kramdown usage (no indents!):
+ *
+ * #### Headline for the Notice
+ * Text for the notice
+ *
+ */
+
+@mixin notice($notice-color) {
+ margin: 2em 0 !important; /* override*/
+ padding: 1em;
+ color: $dark-gray;
+ font-family: $global-font-family;
+ font-size: $type-size-6 !important;
+ text-indent: initial; /* override*/
+ background-color: mix(#fff, $notice-color, 90%);
+ border-radius: $border-radius;
+ box-shadow: 0 1px 1px rgba($notice-color, 0.25);
+
+ h4 {
+ margin-top: 0 !important; /* override*/
+ margin-bottom: 0.75em;
+ }
+
+ @at-root .page__content #{&} h4 {
+ /* using at-root to override .page-content h4 font size*/
+ margin-bottom: 0;
+ font-size: 1em;
+ }
+
+ p {
+ &:last-child {
+ margin-bottom: 0 !important; /* override*/
+ }
+ }
+
+ h4 + p {
+ /* remove space above paragraphs that appear directly after notice headline*/
+ margin-top: 0;
+ padding-top: 0;
+ }
+
+ a {
+ color: $notice-color;
+
+ &:hover {
+ color: mix(#000, $notice-color, 40%);
+ }
+ }
+
+ code {
+ background-color: mix(#fff, $notice-color, 95%)
+ }
+
+ ul {
+ &:last-child {
+ margin-bottom: 0; /* override*/
+ }
+ }
+}
+
+/* Default notice */
+
+.notice {
+ @include notice($light-gray);
+}
+
+/* Primary notice */
+
+.notice--primary {
+ @include notice($primary-color);
+}
+
+/* Info notice */
+
+.notice--info {
+ @include notice($info-color);
+}
+
+/* Warning notice */
+
+.notice--warning {
+ @include notice($warning-color);
+}
+
+/* Success notice */
+
+.notice--success {
+ @include notice($success-color);
+}
+
+/* Danger notice */
+
+.notice--danger {
+ @include notice($danger-color);
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_page.scss b/_sass/minimal-mistakes/_page.scss
new file mode 100755
index 0000000..78fc9bd
--- /dev/null
+++ b/_sass/minimal-mistakes/_page.scss
@@ -0,0 +1,520 @@
+/* ==========================================================================
+ SINGLE PAGE/POST
+ ========================================================================== */
+
+#main {
+ @include clearfix;
+ margin-left: auto;
+ margin-top: 2em;
+ margin-right: auto;
+ padding-left: 1em;
+ padding-right: 1em;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ max-width: 100%;
+ -webkit-animation-delay: 0.15s;
+ animation-delay: 0.15s;
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+}
+
+.page {
+ @include breakpoint($large) {
+ float: right;
+ width: calc(100% - #{$right-sidebar-width-narrow});
+ padding-right: $right-sidebar-width-narrow;
+ }
+
+ @include breakpoint($x-large) {
+ width: calc(100% - #{$right-sidebar-width});
+ padding-right: $right-sidebar-width;
+ }
+
+ .page__inner-wrap {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+
+ .page__content,
+ .page__meta,
+ .page__share {
+ position: relative;
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+ }
+ }
+}
+
+.page__title {
+ margin-top: 0;
+ line-height: 1;
+
+ & + .page__meta {
+ margin-top: -0.5em;
+ }
+}
+
+.page__lead {
+ font-family: $global-font-family;
+ font-size: $type-size-4;
+}
+
+.page__content {
+ h2 {
+ padding-bottom: 0.5em;
+ border-bottom: 1px solid $border-color;
+ }
+
+ p,
+ li,
+ dl {
+ font-size: 1em;
+ }
+
+ /* paragraph indents */
+ p {
+ margin: 0 0 $indent-var;
+
+ /* sibling indentation*/
+ @if $paragraph-indent == true {
+ & + p {
+ text-indent: $indent-var;
+ margin-top: -($indent-var);
+ }
+ }
+ }
+
+ a:not(.btn) {
+ &:hover {
+ text-decoration: underline;
+
+ img {
+ box-shadow: 0 0 10px rgba(#000, 0.25);
+ }
+ }
+ }
+
+ dt {
+ margin-top: 1em;
+ font-family: $sans-serif;
+ font-weight: bold;
+ }
+
+ dd {
+ margin-left: 1em;
+ font-family: $sans-serif;
+ font-size: $type-size-6;
+ }
+
+ .small {
+ font-size: $type-size-6;
+ }
+
+ /* blockquote citations */
+ blockquote + .small {
+ margin-top: -1.5em;
+ padding-left: 1.25rem;
+ }
+}
+
+.page__hero {
+ position: relative;
+ margin-bottom: 2em;
+ @include clearfix;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.25s;
+ animation-delay: 0.25s;
+
+ &--overlay {
+ position: relative;
+ margin-bottom: 2em;
+ padding: 3em 0;
+ @include clearfix;
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: center;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.25s;
+ animation-delay: 0.25s;
+
+ a {
+ color: #fff;
+ }
+
+ .wrapper {
+ padding-left: 1em;
+ padding-right: 1em;
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+ }
+
+ .page__title,
+ .page__meta,
+ .page__lead,
+ .btn {
+ color: #fff;
+ text-shadow: 1px 1px 4px rgba(#000, 0.5);
+ }
+
+ .page__lead {
+ max-width: $medium;
+ }
+
+ .page__title {
+ font-size: $type-size-2;
+
+ @include breakpoint($small) {
+ font-size: $type-size-1;
+ }
+ }
+ }
+}
+
+.page__hero-image {
+ width: 100%;
+ height: auto;
+ -ms-interpolation-mode: bicubic;
+}
+
+.page__hero-caption {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ margin: 0 auto;
+ padding: 2px 5px;
+ color: #fff;
+ font-family: $caption-font-family;
+ font-size: $type-size-7;
+ background: #000;
+ text-align: right;
+ z-index: 5;
+ opacity: 0.5;
+ border-radius: $border-radius 0 0 0;
+
+ @include breakpoint($large) {
+ padding: 5px 10px;
+ }
+
+ a {
+ color: #fff;
+ text-decoration: none;
+ }
+}
+
+/*
+ Social sharing
+ ========================================================================== */
+
+.page__share {
+ margin-top: 2em;
+ padding-top: 1em;
+ border-top: 1px solid $border-color;
+
+ @include breakpoint(max-width $small) {
+ .btn span {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+ }
+ }
+}
+
+.page__share-title {
+ margin-bottom: 10px;
+ font-size: $type-size-6;
+ text-transform: uppercase;
+}
+
+/*
+ Page meta
+ ========================================================================== */
+
+.page__meta {
+ margin-top: 2em;
+ color: $muted-text-color;
+ font-family: $sans-serif;
+ font-size: $type-size-6;
+
+ p {
+ margin: 0;
+ }
+
+ a {
+ color: inherit;
+ }
+}
+
+.page__meta-title {
+ margin-bottom: 10px;
+ font-size: $type-size-6;
+ text-transform: uppercase;
+}
+
+/*
+ Page taxonomy
+ ========================================================================== */
+
+.page__taxonomy {
+ .sep {
+ display: none;
+ }
+
+ strong {
+ margin-right: 10px;
+ }
+}
+
+.page__taxonomy-item {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 8px;
+ padding: 5px 10px;
+ text-decoration: none;
+ border: 1px solid mix(#000, $border-color, 25%);
+ border-radius: $border-radius;
+
+ &:hover {
+ text-decoration: none;
+ color: $link-color-hover;
+ }
+}
+
+.taxonomy__section {
+ margin-bottom: 2em;
+ padding-bottom: 1em;
+
+ &:not(:last-child) {
+ border-bottom: solid 1px $border-color;
+ }
+
+ .archive__item-title {
+ margin-top: 0;
+ }
+
+ .archive__subtitle {
+ clear: both;
+ border: 0;
+ }
+
+ + .taxonomy__section {
+ margin-top: 2em;
+ }
+}
+
+.taxonomy__title {
+ margin-bottom: 0.5em;
+ color: lighten($text-color, 60%);
+}
+
+.taxonomy__count {
+ color: lighten($text-color, 50%);
+}
+
+.taxonomy__index {
+ display: grid;
+ grid-column-gap: 2em;
+ grid-template-columns: repeat(2, 1fr);
+ margin: 1.414em 0;
+ padding: 0;
+ font-size: 0.75em;
+ list-style: none;
+
+ @include breakpoint($large) {
+ grid-template-columns: repeat(3, 1fr);
+ }
+
+ a {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0.25em 0;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ color: inherit;
+ text-decoration: none;
+ border-bottom: 1px solid $border-color;
+ }
+}
+
+.back-to-top {
+ display: block;
+ clear: both;
+ color: lighten($text-color, 50%);
+ font-size: 0.6em;
+ text-transform: uppercase;
+ text-align: right;
+ text-decoration: none;
+}
+
+/*
+ Comments
+ ========================================================================== */
+
+.page__comments {
+ float: left;
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ clear: both;
+}
+
+.page__comments-title {
+ margin-top: 2rem;
+ margin-bottom: 10px;
+ padding-top: 2rem;
+ font-size: $type-size-6;
+ border-top: 1px solid $border-color;
+ text-transform: uppercase;
+}
+
+.page__comments-form {
+ -webkit-transition: $global-transition;
+ transition: $global-transition;
+
+ &.disabled {
+ input,
+ button,
+ textarea,
+ label {
+ pointer-events: none;
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ box-shadow: none;
+ opacity: 0.65;
+ }
+ }
+}
+
+.comment {
+ @include clearfix();
+ margin: 1em 0;
+
+ &:not(:last-child) {
+ border-bottom: 1px solid $border-color;
+ }
+}
+
+.comment__avatar-wrapper {
+ float: left;
+ width: 60px;
+ height: 60px;
+
+ @include breakpoint($large) {
+ width: 100px;
+ height: 100px;
+ }
+}
+
+.comment__avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+
+ @include breakpoint($large) {
+ width: 80px;
+ height: 80px;
+ padding: 5px;
+ border: 1px solid $border-color;
+ }
+}
+
+.comment__content-wrapper {
+ float: right;
+ width: calc(100% - 60px);
+
+ @include breakpoint($large) {
+ width: calc(100% - 100px);
+ }
+}
+
+.comment__author {
+ margin: 0;
+
+ a {
+ text-decoration: none;
+ }
+}
+
+.comment__date {
+ @extend .page__meta;
+ margin: 0;
+
+ a {
+ text-decoration: none;
+ }
+}
+
+/*
+ Related
+ ========================================================================== */
+
+.page__related {
+ @include clearfix();
+ float: left;
+ margin-top: 2em;
+ padding-top: 1em;
+ border-top: 1px solid $border-color;
+
+ @include breakpoint($large) {
+ float: right;
+ width: calc(100% - #{$right-sidebar-width-narrow});
+ }
+
+ @include breakpoint($x-large) {
+ width: calc(100% - #{$right-sidebar-width});
+ }
+
+ a {
+ color: inherit;
+ text-decoration: none;
+ }
+}
+
+.page__related-title {
+ margin-bottom: 10px;
+ font-size: $type-size-6;
+ text-transform: uppercase;
+}
+
+/*
+ Wide Pages
+ ========================================================================== */
+
+.wide {
+ .page {
+ @include breakpoint($large) {
+ padding-right: 0;
+ }
+
+ @include breakpoint($x-large) {
+ padding-right: 0;
+ }
+ }
+
+ .page__related {
+ @include breakpoint($large) {
+ padding-right: 0;
+ }
+
+ @include breakpoint($x-large) {
+ padding-right: 0;
+ }
+ }
+}
diff --git a/_sass/minimal-mistakes/_print.scss b/_sass/minimal-mistakes/_print.scss
new file mode 100755
index 0000000..b93f1d4
--- /dev/null
+++ b/_sass/minimal-mistakes/_print.scss
@@ -0,0 +1,252 @@
+/* ==========================================================================
+ PRINT STYLES
+ ========================================================================== */
+
+@media print {
+
+ [hidden] {
+ display: none;
+ }
+
+ * {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+
+ html {
+ margin: 0;
+ padding: 0;
+ min-height: auto !important;
+ font-size: 16px;
+ }
+
+ body {
+ margin: 0 auto;
+ background: #fff !important;
+ color: #000 !important;
+ font-size: 1rem;
+ line-height: 1.5;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ color: #000;
+ line-height: 1.2;
+ margin-bottom: 0.75rem;
+ margin-top: 0;
+ }
+
+ h1 {
+ font-size: 2.5rem;
+ }
+
+ h2 {
+ font-size: 2rem;
+ }
+
+ h3 {
+ font-size: 1.75rem;
+ }
+
+ h4 {
+ font-size: 1.5rem;
+ }
+
+ h5 {
+ font-size: 1.25rem;
+ }
+
+ h6 {
+ font-size: 1rem;
+ }
+
+ a,
+ a:visited {
+ color: #000;
+ text-decoration: underline;
+ word-wrap: break-word;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ thead {
+ display: table-header-group;
+ }
+
+ table,
+ th,
+ td {
+ border-bottom: 1px solid #000;
+ }
+
+ td,
+ th {
+ padding: 8px 16px;
+ }
+
+ img {
+ border: 0;
+ display: block;
+ max-width: 100% !important;
+ vertical-align: middle;
+ }
+
+ hr {
+ border: 0;
+ border-bottom: 2px solid #bbb;
+ height: 0;
+ margin: 2.25rem 0;
+ padding: 0;
+ }
+
+ dt {
+ font-weight: bold;
+ }
+
+ dd {
+ margin: 0;
+ margin-bottom: 0.75rem;
+ }
+
+ abbr[title],
+ acronym[title] {
+ border: 0;
+ text-decoration: none;
+ }
+
+ table,
+ blockquote,
+ pre,
+ code,
+ figure,
+ li,
+ hr,
+ ul,
+ ol,
+ a,
+ tr {
+ page-break-inside: avoid;
+ }
+
+ h2,
+ h3,
+ h4,
+ p,
+ a {
+ orphans: 3;
+ widows: 3;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ page-break-after: avoid;
+ page-break-inside: avoid;
+ }
+
+ h1 + p,
+ h2 + p,
+ h3 + p {
+ page-break-before: avoid;
+ }
+
+ img {
+ page-break-after: auto;
+ page-break-before: auto;
+ page-break-inside: avoid;
+ }
+
+ pre {
+ white-space: pre-wrap !important;
+ word-wrap: break-word;
+ }
+
+ a[href^='http://']:after,
+ a[href^='https://']:after,
+ a[href^='ftp://']:after {
+ content: " (" attr(href) ")";
+ font-size: 80%;
+ }
+
+ abbr[title]:after,
+ acronym[title]:after {
+ content: " (" attr(title) ")";
+ }
+
+ #main {
+ max-width: 100%;
+ }
+
+ .page {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ }
+
+ .page-break,
+ .page-break-before {
+ page-break-before: always;
+ }
+
+ .page-break-after {
+ page-break-after: always;
+ }
+
+ .no-print {
+ display: none;
+ }
+
+ a.no-reformat:after {
+ content: '';
+ }
+
+ abbr[title].no-reformat:after,
+ acronym[title].no-reformat:after {
+ content: '';
+ }
+
+ .page__hero-caption {
+ color: #000 !important;
+ background: #fff !important;
+ opacity: 1;
+
+ a {
+ color: #000 !important;
+ }
+ }
+
+/*
+ Hide the following elements on print
+ ========================================================================== */
+
+ .masthead,
+ .toc,
+ .page__share,
+ .page__related,
+ .pagination,
+ .ads,
+ .page__footer,
+ .page__comments-form,
+ .author__avatar,
+ .author__content,
+ .author__urls-wrapper,
+ .nav__list,
+ .sidebar,
+ .adsbygoogle {
+ display: none !important;
+ height: 1px !important;
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_reset.scss b/_sass/minimal-mistakes/_reset.scss
new file mode 100755
index 0000000..2259fd0
--- /dev/null
+++ b/_sass/minimal-mistakes/_reset.scss
@@ -0,0 +1,187 @@
+/* ==========================================================================
+ STYLE RESETS
+ ========================================================================== */
+
+* { box-sizing: border-box; }
+
+html {
+ /* apply a natural box layout model to all elements */
+ box-sizing: border-box;
+ background-color: $background-color;
+ font-size: 16px;
+
+ @include breakpoint($medium) {
+ font-size: 18px;
+ }
+
+ @include breakpoint($large) {
+ font-size: 20px;
+ }
+
+ @include breakpoint($x-large) {
+ font-size: 22px;
+ }
+
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+/* Remove margin */
+
+body { margin: 0; }
+
+/* Selected elements */
+
+::-moz-selection {
+ color: #fff;
+ background: #000;
+}
+
+::selection {
+ color: #fff;
+ background: #000;
+}
+
+/* Display HTML5 elements in IE6-9 and FF3 */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section {
+ display: block;
+}
+
+/* Display block in IE6-9 and FF3 */
+
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+/* Prevents modern browsers from displaying 'audio' without controls */
+
+audio:not([controls]) {
+ display: none;
+}
+
+a {
+ color: $link-color;
+}
+
+/* Apply focus state */
+
+a:focus {
+ @extend %tab-focus;
+}
+
+/* Remove outline from links */
+
+a:hover,
+a:active {
+ outline: 0;
+}
+
+/* Prevent sub and sup affecting line-height in all browsers */
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* img border in anchor's and image quality */
+
+img {
+ /* Responsive images (ensure images don't scale beyond their parents) */
+ max-width: 100%; /* part 1: Set a maximum relative to the parent*/
+ width: auto\9; /* IE7-8 need help adjusting responsive images*/
+ height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/
+
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+}
+
+/* Prevent max-width from affecting Google Maps */
+
+#map_canvas img,
+.google-maps img {
+ max-width: none;
+}
+
+/* Consistent form font size in all browsers, margin changes, misc */
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+
+button,
+input {
+ *overflow: visible; /* inner spacing ie IE6/7*/
+ line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/
+ padding: 0;
+ border: 0;
+}
+
+button,
+html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/
+ cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
+}
+
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+ cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
+}
+
+input[type="search"] { /* Appearance in Safari/Chrome*/
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/
+}
+
+textarea {
+ overflow: auto; /* remove vertical scrollbar in IE6-9*/
+ vertical-align: top; /* readability and alignment cross-browser*/
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_search.scss b/_sass/minimal-mistakes/_search.scss
new file mode 100755
index 0000000..fe3c436
--- /dev/null
+++ b/_sass/minimal-mistakes/_search.scss
@@ -0,0 +1,125 @@
+/* ==========================================================================
+ SEARCH
+ ========================================================================== */
+
+.layout--search {
+ .archive__item-teaser {
+ margin-bottom: 0.25em;
+ }
+}
+
+.search__toggle {
+ margin-left: 1rem;
+ margin-right: 1rem;
+ border: 0;
+ outline: none;
+ color: $muted-text-color;
+ background-color: transparent;
+ cursor: pointer;
+ -webkit-transition: 0.2s;
+ transition: 0.2s;
+
+ &:hover {
+ color: $text-color;
+ }
+}
+
+.search-icon {
+ width: 100%;
+ height: 100%;
+}
+
+.search-content {
+ display: none;
+ visibility: hidden;
+ padding-top: 1em;
+ padding-bottom: 1em;
+
+ &__inner-wrap {
+ width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 1em;
+ padding-right: 1em;
+ -webkit-animation: $intro-transition;
+ animation: $intro-transition;
+ -webkit-animation-delay: 0.15s;
+ animation-delay: 0.15s;
+
+ @include breakpoint($x-large) {
+ max-width: $x-large;
+ }
+ }
+
+ .search-input {
+ display: block;
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+ outline: none;
+ box-shadow: none;
+ background-color: transparent;
+ font-size: $type-size-3;
+
+ @include breakpoint($large) {
+ font-size: $type-size-2;
+ }
+
+ @include breakpoint($x-large) {
+ font-size: $type-size-1;
+ }
+ }
+
+ &.is--visible {
+ display: block;
+ visibility: visible;
+
+ &::after {
+ content: "";
+ display: block;
+ }
+ }
+
+ .results__found {
+ margin-top: 0.5em;
+ font-size: $type-size-6;
+ }
+
+ .archive__item {
+ margin-bottom: 2em;
+
+ @include breakpoint($large) {
+ width: 75%;
+ }
+
+ @include breakpoint($x-large) {
+ width: 50%;
+ }
+ }
+
+ .archive__item-title {
+ margin-top: 0;
+ }
+
+ .archive__item-excerpt {
+ margin-bottom: 0;
+ }
+}
+
+/* Algolia search */
+
+.ais-search-box {
+ max-width: 100% !important;
+ margin-bottom: 2em;
+}
+
+.archive__item-title .ais-Highlight {
+ color: $link-color;
+ font-style: normal;
+ text-decoration: underline;
+}
+.archive__item-excerpt .ais-Highlight {
+ color: $link-color;
+ font-style: normal;
+ font-weight: bold;
+}
diff --git a/_sass/minimal-mistakes/_sidebar.scss b/_sass/minimal-mistakes/_sidebar.scss
new file mode 100755
index 0000000..808324c
--- /dev/null
+++ b/_sass/minimal-mistakes/_sidebar.scss
@@ -0,0 +1,297 @@
+/* ==========================================================================
+ SIDEBAR
+ ========================================================================== */
+
+/*
+ Default
+ ========================================================================== */
+
+.sidebar {
+ @include clearfix();
+ margin-bottom: 1em;
+
+ @include breakpoint(max-width $large) {
+ /* fix z-index order of follow links */
+ position: relative;
+ z-index: 10;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ @include breakpoint($large) {
+ float: left;
+ width: calc(#{$right-sidebar-width-narrow} - 1em);
+ opacity: 0.75;
+ -webkit-transition: opacity 0.2s ease-in-out;
+ transition: opacity 0.2s ease-in-out;
+
+ &:hover {
+ opacity: 1;
+ }
+
+ &.sticky {
+ overflow-y: auto;
+ /* calculate height of nav list */
+ height: calc(
+ 100vh - 90px - 2em
+ ); // viewport height - approx. masthead height - main content top margin
+ }
+ }
+
+ @include breakpoint($x-large) {
+ width: calc(#{$right-sidebar-width} - 1em);
+ }
+
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ margin-bottom: 0;
+ font-family: $sans-serif-narrow;
+ }
+
+ p,
+ li {
+ font-family: $sans-serif;
+ font-size: $type-size-6;
+ line-height: 1.5;
+ }
+
+ img {
+ width: 100%;
+ }
+}
+
+.sidebar__right {
+ margin-bottom: 1em;
+
+ @include breakpoint($large) {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: $right-sidebar-width-narrow;
+ margin-right: -1 * $right-sidebar-width-narrow;
+ padding-left: 1em;
+ z-index: 10;
+ }
+
+ @include breakpoint($x-large) {
+ width: $right-sidebar-width;
+ margin-right: -1 * $right-sidebar-width;
+ }
+}
+
+.splash .sidebar__right {
+ @include breakpoint($large) {
+ position: relative;
+ float: right;
+ margin-right: 0;
+ }
+
+ @include breakpoint($x-large) {
+ margin-right: 0;
+ }
+}
+
+/*
+ Author profile and links
+ ========================================================================== */
+
+.author__avatar {
+ display: table-cell;
+ vertical-align: top;
+ width: 36px;
+ height: 36px;
+
+ @include breakpoint($large) {
+ display: block;
+ width: auto;
+ height: auto;
+ }
+
+ img {
+ max-width: 110px;
+ border-radius: 50%;
+
+ @include breakpoint($large) {
+ padding: 5px;
+ border: 1px solid $border-color;
+ }
+ }
+}
+
+.author__content {
+ display: table-cell;
+ vertical-align: top;
+ padding-left: 15px;
+ padding-right: 25px;
+ line-height: 1;
+
+ @include breakpoint($large) {
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ a {
+ color: inherit;
+ text-decoration: none;
+ }
+}
+
+.author__name {
+ margin: 0;
+
+ @include breakpoint($large) {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ }
+}
+.sidebar .author__name {
+ font-family: $sans-serif;
+ font-size: $type-size-5;
+}
+
+.author__bio {
+ margin: 0;
+
+ @include breakpoint($large) {
+ margin-top: 10px;
+ margin-bottom: 20px;
+ }
+}
+
+.author__urls-wrapper {
+ position: relative;
+ display: table-cell;
+ vertical-align: middle;
+ font-family: $sans-serif;
+ z-index: 10;
+ position: relative;
+ cursor: pointer;
+
+ li:last-child {
+ a {
+ margin-bottom: 0;
+ }
+ }
+
+ @include breakpoint($large) {
+ display: block;
+ }
+
+ button {
+ margin-bottom: 0;
+
+ @include breakpoint($large) {
+ display: none;
+ }
+ }
+}
+
+.author__urls {
+ display: none;
+ position: absolute;
+ right: 0;
+ margin-top: 15px;
+ padding: 10px;
+ list-style-type: none;
+ border: 1px solid $border-color;
+ border-radius: $border-radius;
+ background: $background-color;
+ z-index: -1;
+ box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
+ cursor: default;
+
+ &.is--visible {
+ display: block;
+ }
+
+ @include breakpoint($large) {
+ display: block;
+ position: relative;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background: transparent;
+ box-shadow: none;
+ }
+
+ &:before {
+ display: block;
+ content: "";
+ position: absolute;
+ top: -11px;
+ left: calc(50% - 10px);
+ width: 0;
+ border-style: solid;
+ border-width: 0 10px 10px;
+ border-color: $border-color transparent;
+ z-index: 0;
+
+ @include breakpoint($large) {
+ display: none;
+ }
+ }
+
+ &:after {
+ display: block;
+ content: "";
+ position: absolute;
+ top: -10px;
+ left: calc(50% - 10px);
+ width: 0;
+ border-style: solid;
+ border-width: 0 10px 10px;
+ border-color: $background-color transparent;
+ z-index: 1;
+
+ @include breakpoint($large) {
+ display: none;
+ }
+ }
+
+ li {
+ white-space: nowrap;
+ }
+
+ a {
+ display: block;
+ margin-bottom: 5px;
+ padding-right: 5px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ color: inherit;
+ font-size: $type-size-5;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+}
+
+/*
+ Wide Pages
+ ========================================================================== */
+
+.wide .sidebar__right {
+ margin-bottom: 1em;
+ @include breakpoint($large) {
+ position: initial;
+ top: initial;
+ right: initial;
+ width: initial;
+ margin-right: initial;
+ padding-left: initial;
+ z-index: initial;
+ }
+
+ @include breakpoint($x-large) {
+ width: initial;
+ margin-right: initial;
+ }
+}
+
diff --git a/_sass/minimal-mistakes/_syntax.scss b/_sass/minimal-mistakes/_syntax.scss
new file mode 100755
index 0000000..7265202
--- /dev/null
+++ b/_sass/minimal-mistakes/_syntax.scss
@@ -0,0 +1,324 @@
+/* ==========================================================================
+ Syntax highlighting
+ ========================================================================== */
+
+div.highlighter-rouge,
+figure.highlight {
+ position: relative;
+ margin-bottom: 1em;
+ background: $base00;
+ color: $base05;
+ font-family: $monospace;
+ font-size: $type-size-6;
+ line-height: 1.8;
+ border-radius: $border-radius;
+
+ > pre,
+ pre.highlight {
+ margin: 0;
+ padding: 1em;
+ }
+}
+
+.highlight table {
+ margin-bottom: 0;
+ font-size: 1em;
+ border: 0;
+
+ td {
+ padding: 0;
+ width: calc(100% - 1em);
+ border: 0;
+
+ /* line numbers*/
+ &.gutter,
+ &.rouge-gutter {
+ padding-right: 1em;
+ width: 1em;
+ color: $base04;
+ border-right: 1px solid $base04;
+ text-align: right;
+ }
+
+ /* code */
+ &.code,
+ &.rouge-code {
+ padding-left: 1em;
+ }
+ }
+
+ pre {
+ margin: 0;
+ }
+}
+
+.highlight pre {
+ width: 100%;
+}
+
+.highlight .hll {
+ background-color: $base06;
+}
+.highlight {
+ .c {
+ /* Comment */
+ color: $base04;
+ }
+ .err {
+ /* Error */
+ color: $base08;
+ }
+ .k {
+ /* Keyword */
+ color: $base0e;
+ }
+ .l {
+ /* Literal */
+ color: $base09;
+ }
+ .n {
+ /* Name */
+ color: $base05;
+ }
+ .o {
+ /* Operator */
+ color: $base0c;
+ }
+ .p {
+ /* Punctuation */
+ color: $base05;
+ }
+ .cm {
+ /* Comment.Multiline */
+ color: $base04;
+ }
+ .cp {
+ /* Comment.Preproc */
+ color: $base04;
+ }
+ .c1 {
+ /* Comment.Single */
+ color: $base04;
+ }
+ .cs {
+ /* Comment.Special */
+ color: $base04;
+ }
+ .gd {
+ /* Generic.Deleted */
+ color: $base08;
+ }
+ .ge {
+ /* Generic.Emph */
+ font-style: italic;
+ }
+ .gh {
+ /* Generic.Heading */
+ color: $base05;
+ font-weight: bold;
+ }
+ .gi {
+ /* Generic.Inserted */
+ color: $base0b;
+ }
+ .gp {
+ /* Generic.Prompt */
+ color: $base04;
+ font-weight: bold;
+ }
+ .gs {
+ /* Generic.Strong */
+ font-weight: bold;
+ }
+ .gu {
+ /* Generic.Subheading */
+ color: $base0c;
+ font-weight: bold;
+ }
+ .kc {
+ /* Keyword.Constant */
+ color: $base0e;
+ }
+ .kd {
+ /* Keyword.Declaration */
+ color: $base0e;
+ }
+ .kn {
+ /* Keyword.Namespace */
+ color: $base0c;
+ }
+ .kp {
+ /* Keyword.Pseudo */
+ color: $base0e;
+ }
+ .kr {
+ /* Keyword.Reserved */
+ color: $base0e;
+ }
+ .kt {
+ /* Keyword.Type */
+ color: $base0a;
+ }
+ .ld {
+ /* Literal.Date */
+ color: $base0b;
+ }
+ .m {
+ /* Literal.Number */
+ color: $base09;
+ }
+ .s {
+ /* Literal.String */
+ color: $base0b;
+ }
+ .na {
+ /* Name.Attribute */
+ color: $base0d;
+ }
+ .nb {
+ /* Name.Builtin */
+ color: $base05;
+ }
+ .nc {
+ /* Name.Class */
+ color: $base0a;
+ }
+ .no {
+ /* Name.Constant */
+ color: $base08;
+ }
+ .nd {
+ /* Name.Decorator */
+ color: $base0c;
+ }
+ .ni {
+ /* Name.Entity */
+ color: $base05;
+ }
+ .ne {
+ /* Name.Exception */
+ color: $base08;
+ }
+ .nf {
+ /* Name.Function */
+ color: $base0d;
+ }
+ .nl {
+ /* Name.Label */
+ color: $base05;
+ }
+ .nn {
+ /* Name.Namespace */
+ color: $base0a;
+ }
+ .nx {
+ /* Name.Other */
+ color: $base0d;
+ }
+ .py {
+ /* Name.Property */
+ color: $base05;
+ }
+ .nt {
+ /* Name.Tag */
+ color: $base0c;
+ }
+ .nv {
+ /* Name.Variable */
+ color: $base08;
+ }
+ .ow {
+ /* Operator.Word */
+ color: $base0c;
+ }
+ .w {
+ /* Text.Whitespace */
+ color: $base05;
+ }
+ .mf {
+ /* Literal.Number.Float */
+ color: $base09;
+ }
+ .mh {
+ /* Literal.Number.Hex */
+ color: $base09;
+ }
+ .mi {
+ /* Literal.Number.Integer */
+ color: $base09;
+ }
+ .mo {
+ /* Literal.Number.Oct */
+ color: $base09;
+ }
+ .sb {
+ /* Literal.String.Backtick */
+ color: $base0b;
+ }
+ .sc {
+ /* Literal.String.Char */
+ color: $base05;
+ }
+ .sd {
+ /* Literal.String.Doc */
+ color: $base04;
+ }
+ .s2 {
+ /* Literal.String.Double */
+ color: $base0b;
+ }
+ .se {
+ /* Literal.String.Escape */
+ color: $base09;
+ }
+ .sh {
+ /* Literal.String.Heredoc */
+ color: $base0b;
+ }
+ .si {
+ /* Literal.String.Interpol */
+ color: $base09;
+ }
+ .sx {
+ /* Literal.String.Other */
+ color: $base0b;
+ }
+ .sr {
+ /* Literal.String.Regex */
+ color: $base0b;
+ }
+ .s1 {
+ /* Literal.String.Single */
+ color: $base0b;
+ }
+ .ss {
+ /* Literal.String.Symbol */
+ color: $base0b;
+ }
+ .bp {
+ /* Name.Builtin.Pseudo */
+ color: $base05;
+ }
+ .vc {
+ /* Name.Variable.Class */
+ color: $base08;
+ }
+ .vg {
+ /* Name.Variable.Global */
+ color: $base08;
+ }
+ .vi {
+ /* Name.Variable.Instance */
+ color: $base08;
+ }
+ .il {
+ /* Literal.Number.Integer.Long */
+ color: $base09;
+ }
+}
+
+.gist {
+ th, td {
+ border-bottom: 0;
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_tables.scss b/_sass/minimal-mistakes/_tables.scss
new file mode 100755
index 0000000..05211df
--- /dev/null
+++ b/_sass/minimal-mistakes/_tables.scss
@@ -0,0 +1,37 @@
+/* ==========================================================================
+ TABLES
+ ========================================================================== */
+
+table {
+ margin-bottom: 1em;
+ width: 100%;
+ font-family: $global-font-family;
+ font-size: $type-size-6;
+ border-collapse: collapse;
+
+ & + table {
+ margin-top: 1em;
+ }
+}
+
+thead {
+ background-color: $border-color;
+ border-bottom: 2px solid mix(#000, $border-color, 25%);
+}
+
+th {
+ padding: 0.5em;
+ font-weight: bold;
+ text-align: left;
+}
+
+td {
+ padding: 0.5em;
+ border-bottom: 1px solid mix(#000, $border-color, 25%);
+}
+
+tr,
+td,
+th {
+ vertical-align: middle;
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/_utilities.scss b/_sass/minimal-mistakes/_utilities.scss
new file mode 100755
index 0000000..d539dd1
--- /dev/null
+++ b/_sass/minimal-mistakes/_utilities.scss
@@ -0,0 +1,524 @@
+/* ==========================================================================
+ UTILITY CLASSES
+ ========================================================================== */
+
+/*
+ Visibility
+ ========================================================================== */
+
+/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */
+
+.hidden,
+.is--hidden {
+ display: none;
+ visibility: hidden;
+}
+
+/* for preloading images */
+
+.load {
+ display: none;
+}
+
+.transparent {
+ opacity: 0;
+}
+
+/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */
+
+.visually-hidden,
+.screen-reader-text,
+.screen-reader-text span,
+.screen-reader-shortcut {
+ position: absolute !important;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px !important;
+ width: 1px !important;
+ border: 0 !important;
+ overflow: hidden;
+}
+
+body:hover .visually-hidden a,
+body:hover .visually-hidden input,
+body:hover .visually-hidden button {
+ display: none !important;
+}
+
+/* screen readers */
+
+.screen-reader-text:focus,
+.screen-reader-shortcut:focus {
+ clip: auto !important;
+ height: auto !important;
+ width: auto !important;
+ display: block;
+ font-size: 1em;
+ font-weight: bold;
+ padding: 15px 23px 14px;
+ background: #fff;
+ z-index: 100000;
+ text-decoration: none;
+ box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
+}
+
+/*
+ Skip links
+ ========================================================================== */
+
+.skip-link {
+ position: fixed;
+ z-index: 20;
+ margin: 0;
+ font-family: $sans-serif;
+ white-space: nowrap;
+}
+
+.skip-link li {
+ height: 0;
+ width: 0;
+ list-style: none;
+}
+
+/*
+ Type
+ ========================================================================== */
+
+.text-left {
+ text-align: left;
+}
+
+.text-center {
+ text-align: center;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-justify {
+ text-align: justify;
+}
+
+.text-nowrap {
+ white-space: nowrap;
+}
+
+/*
+ Alignment
+ ========================================================================== */
+
+/* clearfix */
+
+.cf {
+ clear: both;
+}
+
+.wrapper {
+ margin-left: auto;
+ margin-right: auto;
+ width: 100%;
+}
+
+/*
+ Images
+ ========================================================================== */
+
+/* image align left */
+
+.align-left {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+
+ @include breakpoint($small) {
+ float: left;
+ margin-right: 1em;
+ }
+}
+
+/* image align right */
+
+.align-right {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+
+ @include breakpoint($small) {
+ float: right;
+ margin-left: 1em;
+ }
+}
+
+/* image align center */
+
+.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* file page content container */
+
+.full {
+ @include breakpoint($large) {
+ margin-right: -1 * span(2.5 of 12) !important;
+ }
+}
+
+/*
+ Icons
+ ========================================================================== */
+
+.icon {
+ display: inline-block;
+ fill: currentColor;
+ width: 1em;
+ height: 1.1em;
+ line-height: 1;
+ position: relative;
+ top: -0.1em;
+ vertical-align: middle;
+}
+
+/* social icons*/
+
+.social-icons {
+ .fas,
+ .fab,
+ .far,
+ .fal {
+ color: $text-color;
+ }
+
+ .fa-behance,
+ .fa-behance-square {
+ color: $behance-color;
+ }
+
+ .fa-bitbucket {
+ color: $bitbucket-color;
+ }
+
+ .fa-dribbble,
+ .fa-dribble-square {
+ color: $dribbble-color;
+ }
+
+ .fa-facebook,
+ .fa-facebook-square,
+ .fa-facebook-f {
+ color: $facebook-color;
+ }
+
+ .fa-flickr {
+ color: $flickr-color;
+ }
+
+ .fa-foursquare {
+ color: $foursquare-color;
+ }
+
+ .fa-github,
+ .fa-github-alt,
+ .fa-github-square {
+ color: $github-color;
+ }
+
+ .fa-gitlab {
+ color: $gitlab-color;
+ }
+
+ .fa-google-plus,
+ .fa-google-plus-square,
+ .fa-google-plus-g {
+ color: $google-plus-color;
+ }
+
+ .fa-instagram {
+ color: $instagram-color;
+ }
+
+ .fa-lastfm,
+ .fa-lastfm-square {
+ color: $lastfm-color;
+ }
+
+ .fa-linkedin,
+ .fa-linkedin-in {
+ color: $linkedin-color;
+ }
+
+ .fa-pinterest,
+ .fa-pinterest-p,
+ .fa-pinterest-square {
+ color: $pinterest-color;
+ }
+
+ .fa-rss,
+ .fa-rss-square {
+ color: $rss-color;
+ }
+
+ .fa-soundcloud {
+ color: $soundcloud-color;
+ }
+
+ .fa-stack-exchange,
+ .fa-stack-overflow {
+ color: $stackoverflow-color;
+ }
+
+ .fa-tumblr,
+ .fa-tumblr-square {
+ color: $tumblr-color;
+ }
+
+ .fa-twitter,
+ .fa-twitter-square {
+ color: $twitter-color;
+ }
+
+ .fa-vimeo,
+ .fa-vimeo-square,
+ .fa-vimeo-v {
+ color: $vimeo-color;
+ }
+
+ .fa-vine {
+ color: $vine-color;
+ }
+
+ .fa-youtube {
+ color: $youtube-color;
+ }
+
+ .fa-xing,
+ .fa-xing-square {
+ color: $xing-color;
+ }
+}
+
+/*
+ Navicons
+ ========================================================================== */
+
+.navicon {
+ position: relative;
+ width: $navicon-width;
+ height: $navicon-height;
+ background: #fff;
+ margin: auto;
+ -webkit-transition: 0.3s;
+ transition: 0.3s;
+
+ &:before,
+ &:after {
+ content: "";
+ position: absolute;
+ left: 0;
+ width: $navicon-width;
+ height: $navicon-height;
+ background: #fff;
+ -webkit-transition: 0.3s;
+ transition: 0.3s;
+ }
+
+ &:before {
+ top: (-2 * $navicon-height);
+ }
+
+ &:after {
+ bottom: (-2 * $navicon-height);
+ }
+}
+
+.close .navicon {
+ /* hide the middle line*/
+ background: transparent;
+
+ /* overlay the lines by setting both their top values to 0*/
+ &:before,
+ &:after {
+ -webkit-transform-origin: 50% 50%;
+ -ms-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ top: 0;
+ width: $navicon-width;
+ }
+
+ /* rotate the lines to form the x shape*/
+ &:before {
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ }
+ &:after {
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ }
+}
+
+/*
+ Sticky, fixed to top content
+ ========================================================================== */
+
+.sticky {
+ @include breakpoint($large) {
+ @include clearfix();
+ position: -webkit-sticky;
+ position: sticky;
+ top: 2em;
+
+ > * {
+ display: block;
+ }
+ }
+}
+
+/*
+ Wells
+ ========================================================================== */
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: $border-radius;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+/*
+ Modals
+ ========================================================================== */
+
+.show-modal {
+ overflow: hidden;
+ position: relative;
+
+ &:before {
+ position: absolute;
+ content: "";
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 999;
+ background-color: rgba(255, 255, 255, 0.85);
+ }
+
+ .modal {
+ display: block;
+ }
+}
+
+.modal {
+ display: none;
+ position: fixed;
+ width: 300px;
+ top: 50%;
+ left: 50%;
+ margin-left: -150px;
+ margin-top: -150px;
+ min-height: 0;
+ z-index: 9999;
+ background: #fff;
+ border: 1px solid $border-color;
+ border-radius: $border-radius;
+ box-shadow: $box-shadow;
+
+ &__title {
+ margin: 0;
+ padding: 0.5em 1em;
+ }
+
+ &__supporting-text {
+ padding: 0 1em 0.5em 1em;
+ }
+
+ &__actions {
+ padding: 0.5em 1em;
+ border-top: 1px solid $border-color;
+ }
+}
+
+/*
+ Footnotes
+ ========================================================================== */
+
+.footnote {
+ color: mix(#fff, $gray, 25%);
+ text-decoration: none;
+}
+
+.footnotes {
+ color: mix(#fff, $gray, 25%);
+
+ ol,
+ li,
+ p {
+ margin-bottom: 0;
+ font-size: $type-size-6;
+ }
+}
+
+a.reversefootnote {
+ color: $gray;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
+/*
+ Required
+ ========================================================================== */
+
+.required {
+ color: $danger-color;
+ font-weight: bold;
+}
+
+/*
+ Google Custom Search Engine
+ ========================================================================== */
+
+.gsc-control-cse {
+ table,
+ tr,
+ td {
+ border: 0; /* remove table borders widget */
+ }
+}
+
+/*
+ Responsive Video Embed
+ ========================================================================== */
+
+.responsive-video-container {
+ position: relative;
+ margin-bottom: 1em;
+ padding-bottom: 56.25%;
+ height: 0;
+ overflow: hidden;
+ max-width: 100%;
+
+ iframe,
+ object,
+ embed {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+}
+
+// full screen video fixes
+:-webkit-full-screen-ancestor {
+ .masthead,
+ .page__footer {
+ position: static;
+ }
+}
diff --git a/_sass/minimal-mistakes/_variables.scss b/_sass/minimal-mistakes/_variables.scss
new file mode 100755
index 0000000..8eec6b3
--- /dev/null
+++ b/_sass/minimal-mistakes/_variables.scss
@@ -0,0 +1,154 @@
+/* ==========================================================================
+ Variables
+ ========================================================================== */
+
+/*
+ Typography
+ ========================================================================== */
+
+$doc-font-size: 16 !default;
+
+/* paragraph indention */
+$paragraph-indent: false !default; // true, false (default)
+$indent-var: 1.3em !default;
+
+/* system typefaces */
+$serif: Georgia, Times, serif !default;
+$sans-serif: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI",
+ "Helvetica Neue", "Lucida Grande", Arial, sans-serif !default;
+$monospace: Monaco, Consolas, "Lucida Console", monospace !default;
+
+/* sans serif typefaces */
+$sans-serif-narrow: $sans-serif !default;
+$helvetica: Helvetica, "Helvetica Neue", Arial, sans-serif !default;
+
+/* serif typefaces */
+$georgia: Georgia, serif !default;
+$times: Times, serif !default;
+$bodoni: "Bodoni MT", serif !default;
+$calisto: "Calisto MT", serif !default;
+$garamond: Garamond, serif !default;
+
+$global-font-family: $sans-serif !default;
+$header-font-family: $sans-serif !default;
+$caption-font-family: $serif !default;
+
+/* type scale */
+$type-size-1: 2.441em !default; // ~39.056px
+$type-size-2: 1.953em !default; // ~31.248px
+$type-size-3: 1.563em !default; // ~25.008px
+$type-size-4: 1.25em !default; // ~20px
+$type-size-5: 1em !default; // ~16px
+$type-size-6: 0.75em !default; // ~12px
+$type-size-7: 0.6875em !default; // ~11px
+$type-size-8: 0.625em !default; // ~10px
+
+/*
+ Colors
+ ========================================================================== */
+
+$gray: #7a8288 !default;
+$dark-gray: mix(#000, $gray, 40%) !default;
+$darker-gray: mix(#000, $gray, 60%) !default;
+$light-gray: mix(#fff, $gray, 50%) !default;
+$lighter-gray: mix(#fff, $gray, 90%) !default;
+
+$background-color: #fff !default;
+$code-background-color: #fafafa !default;
+$code-background-color-dark: $light-gray !default;
+$text-color: $dark-gray !default;
+$muted-text-color: mix(#fff, $text-color, 35%) !default;
+$border-color: $lighter-gray !default;
+$form-background-color: $lighter-gray !default;
+$footer-background-color: $lighter-gray !default;
+
+$primary-color: #7a8288 !default;
+$success-color: #62c462 !default;
+$warning-color: #f89406 !default;
+$danger-color: #ee5f5b !default;
+$info-color: #52adc8 !default;
+
+/* YIQ color contrast */
+$yiq-contrasted-dark-default: $dark-gray !default;
+$yiq-contrasted-light-default: #fff !default;
+$yiq-contrasted-threshold: 175 !default;
+$yiq-debug: false !default;
+
+/* brands */
+$behance-color: #1769ff !default;
+$bitbucket-color: #205081 !default;
+$dribbble-color: #ea4c89 !default;
+$facebook-color: #3b5998 !default;
+$flickr-color: #ff0084 !default;
+$foursquare-color: #0072b1 !default;
+$github-color: #171516 !default;
+$gitlab-color: #e24329 !default;
+$google-plus-color: #dd4b39 !default;
+$instagram-color: #517fa4 !default;
+$lastfm-color: #d51007 !default;
+$linkedin-color: #007bb6 !default;
+$pinterest-color: #cb2027 !default;
+$rss-color: #fa9b39 !default;
+$soundcloud-color: #ff3300 !default;
+$stackoverflow-color: #fe7a15 !default;
+$tumblr-color: #32506d !default;
+$twitter-color: #55acee !default;
+$vimeo-color: #1ab7ea !default;
+$vine-color: #00bf8f !default;
+$youtube-color: #bb0000 !default;
+$xing-color: #006567 !default;
+
+/* links */
+$link-color: $info-color !default;
+$link-color-hover: mix(#000, $link-color, 25%) !default;
+$link-color-visited: mix(#fff, $link-color, 25%) !default;
+$masthead-link-color: $primary-color !default;
+$masthead-link-color-hover: mix(#000, $primary-color, 25%) !default;
+$navicon-link-color-hover: mix(#fff, $primary-color, 75%) !default;
+
+/* syntax highlighting (base16) */
+$base00: #263238 !default;
+$base01: #2e3c43 !default;
+$base02: #314549 !default;
+$base03: #546e7a !default;
+$base04: #b2ccd6 !default;
+$base05: #eeffff !default;
+$base06: #eeffff !default;
+$base07: #ffffff !default;
+$base08: #f07178 !default;
+$base09: #f78c6c !default;
+$base0a: #ffcb6b !default;
+$base0b: #c3e88d !default;
+$base0c: #89ddff !default;
+$base0d: #82aaff !default;
+$base0e: #c792ea !default;
+$base0f: #ff5370 !default;
+
+/*
+ Breakpoints
+ ========================================================================== */
+
+$small: 600px !default;
+$medium: 768px !default;
+$medium-wide: 900px !default;
+$large: 1024px !default;
+$x-large: 1280px !default;
+
+/*
+ Grid
+ ========================================================================== */
+
+$right-sidebar-width-narrow: 200px !default;
+$right-sidebar-width: 300px !default;
+$right-sidebar-width-wide: 400px !default;
+
+/*
+ Other
+ ========================================================================== */
+
+$border-radius: 4px !default;
+$box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125) !default;
+$navicon-width: 1.5rem !default;
+$navicon-height: 0.25rem !default;
+$global-transition: all 0.2s ease-in-out !default;
+$intro-transition: intro 0.3s both !default;
diff --git a/_sass/minimal-mistakes/skins/_air.scss b/_sass/minimal-mistakes/skins/_air.scss
new file mode 100755
index 0000000..0e5360c
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_air.scss
@@ -0,0 +1,23 @@
+/* ==========================================================================
+ Air skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #eeeeee !default;
+$text-color: #222831 !default;
+$muted-text-color: #393e46 !default;
+$primary-color: #0092ca !default;
+$border-color: mix(#fff, #393e46, 75%) !default;
+$footer-background-color: $primary-color !default;
+$link-color: #393e46 !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: $text-color !default;
+$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
+
+.page__footer {
+ color: #fff !important; // override
+}
+
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
diff --git a/_sass/minimal-mistakes/skins/_aqua.scss b/_sass/minimal-mistakes/skins/_aqua.scss
new file mode 100755
index 0000000..f5a69af
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_aqua.scss
@@ -0,0 +1,30 @@
+/* ==========================================================================
+ Aqua skin
+ ========================================================================== */
+
+/* Colors */
+$gray : #1976d2 !default;
+$dark-gray : mix(#000, $gray, 40%) !default;
+$darker-gray : mix(#000, $gray, 60%) !default;
+$light-gray : mix(#fff, $gray, 50%) !default;
+$lighter-gray : mix(#fff, $gray, 90%) !default;
+
+$body-color : #fff !default;
+$background-color : #f0fff0 !default;
+$code-background-color : $lighter-gray !default;
+$code-background-color-dark : $light-gray !default;
+$text-color : $dark-gray !default;
+$border-color : $lighter-gray !default;
+
+$primary-color : $gray !default;
+$success-color : #27ae60 !default;
+$warning-color : #e67e22 !default;
+$danger-color : #c0392b !default;
+$info-color : #03a9f4 !default;
+
+/* links */
+$link-color : $info-color !default;
+$link-color-hover : mix(#000, $link-color, 25%) !default;
+$link-color-visited : mix(#fff, $link-color, 25%) !default;
+$masthead-link-color : $primary-color !default;
+$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/skins/_contrast.scss b/_sass/minimal-mistakes/skins/_contrast.scss
new file mode 100755
index 0000000..4635e53
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_contrast.scss
@@ -0,0 +1,51 @@
+/* ==========================================================================
+ Contrast skin
+ ========================================================================== */
+
+/* Colors */
+$text-color: #000 !default;
+$muted-text-color: $text-color !default;
+$primary-color: #ff0000 !default;
+$border-color: mix(#fff, $text-color, 75%) !default;
+$footer-background-color: #000 !default;
+$link-color: #0000ff !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: $text-color !default;
+$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
+
+/* contrast syntax highlighting (base16) */
+$base00: #000000 !default;
+$base01: #242422 !default;
+$base02: #484844 !default;
+$base03: #6c6c66 !default;
+$base04: #918f88 !default;
+$base05: #b5b3aa !default;
+$base06: #d9d7cc !default;
+$base07: #fdfbee !default;
+$base08: #ff6c60 !default;
+$base09: #e9c062 !default;
+$base0a: #ffffb6 !default;
+$base0b: #a8ff60 !default;
+$base0c: #c6c5fe !default;
+$base0d: #96cbfe !default;
+$base0e: #ff73fd !default;
+$base0f: #b18a3d !default;
+
+.page__content {
+ .notice,
+ .notice--primary,
+ .notice--info,
+ .notice--warning,
+ .notice--success,
+ .notice--danger {
+ color: $text-color;
+ }
+}
+
+.page__footer {
+ color: #fff !important; // override
+}
+
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
diff --git a/_sass/minimal-mistakes/skins/_dark.scss b/_sass/minimal-mistakes/skins/_dark.scss
new file mode 100755
index 0000000..4f0a77e
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_dark.scss
@@ -0,0 +1,42 @@
+/* ==========================================================================
+ Dark skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #252a34 !default;
+$text-color: #eaeaea !default;
+$primary-color: #00adb5 !default;
+$border-color: mix(#fff, $background-color, 20%) !default;
+$code-background-color: mix(#000, $background-color, 15%) !default;
+$code-background-color-dark: mix(#000, $background-color, 20%) !default;
+$form-background-color: mix(#000, $background-color, 15%) !default;
+$footer-background-color: mix(#000, $background-color, 30%) !default;
+$link-color: mix($primary-color, $text-color, 40%) !default;
+$link-color-hover: mix(#fff, $link-color, 25%) !default;
+$link-color-visited: mix(#000, $link-color, 25%) !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
+$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
+
+/* dark syntax highlighting (base16) */
+$base00: #ffffff !default;
+$base01: #e0e0e0 !default;
+$base02: #d0d0d0 !default;
+$base03: #b0b0b0 !default;
+$base04: #000000 !default;
+$base05: #101010 !default;
+$base06: #151515 !default;
+$base07: #202020 !default;
+$base08: #ff0086 !default;
+$base09: #fd8900 !default;
+$base0a: #aba800 !default;
+$base0b: #00c918 !default;
+$base0c: #1faaaa !default;
+$base0d: #3777e6 !default;
+$base0e: #ad00a1 !default;
+$base0f: #cc6633 !default;
+
+.author__urls.social-icons .svg-inline--fa,
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
diff --git a/_sass/minimal-mistakes/skins/_default.scss b/_sass/minimal-mistakes/skins/_default.scss
new file mode 100755
index 0000000..7489b58
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_default.scss
@@ -0,0 +1,5 @@
+/* ==========================================================================
+ Default skin
+ ========================================================================== */
+
+// Intentionally left blank
diff --git a/_sass/minimal-mistakes/skins/_dirt.scss b/_sass/minimal-mistakes/skins/_dirt.scss
new file mode 100755
index 0000000..5090f55
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_dirt.scss
@@ -0,0 +1,33 @@
+/* ==========================================================================
+ Dirt skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #f3f3f3 !default;
+$text-color: #343434 !default;
+$muted-text-color: #8e8b82 !default;
+$primary-color: #343434 !default;
+$border-color: #e9dcbe !default;
+$footer-background-color: #e9dcbe !default;
+$link-color: #343434 !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: $text-color !default;
+$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
+
+/* dirt syntax highlighting (base16) */
+$base00: #231e18 !default;
+$base01: #302b25 !default;
+$base02: #48413a !default;
+$base03: #9d8b70 !default;
+$base04: #b4a490 !default;
+$base05: #cabcb1 !default;
+$base06: #d7c8bc !default;
+$base07: #e4d4c8 !default;
+$base08: #d35c5c !default;
+$base09: #ca7f32 !default;
+$base0a: #e0ac16 !default;
+$base0b: #b7ba53 !default;
+$base0c: #6eb958 !default;
+$base0d: #88a4d3 !default;
+$base0e: #bb90e2 !default;
+$base0f: #b49368 !default;
diff --git a/_sass/minimal-mistakes/skins/_mint.scss b/_sass/minimal-mistakes/skins/_mint.scss
new file mode 100755
index 0000000..575e977
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_mint.scss
@@ -0,0 +1,23 @@
+/* ==========================================================================
+ Mint skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #f3f6f6 !default;
+$text-color: #40514e !default;
+$muted-text-color: #40514e !default;
+$primary-color: #11999e !default;
+$border-color: mix(#fff, #40514e, 75%) !default;
+$footer-background-color: #30e3ca !default;
+$link-color: #11999e !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: $text-color !default;
+$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
+
+.page__footer {
+ color: #fff !important; // override
+}
+
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
diff --git a/_sass/minimal-mistakes/skins/_neon.scss b/_sass/minimal-mistakes/skins/_neon.scss
new file mode 100755
index 0000000..5da3688
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_neon.scss
@@ -0,0 +1,53 @@
+/* ==========================================================================
+ Neon skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #141010 !default;
+$text-color: #fff6fb !default;
+$primary-color: #f21368 !default;
+$border-color: mix(#fff, $background-color, 20%) !default;
+$code-background-color: mix(#000, $background-color, 15%) !default;
+$code-background-color-dark: mix(#000, $background-color, 20%) !default;
+$form-background-color: mix(#000, $background-color, 15%) !default;
+$footer-background-color: mix($primary-color, #000, 10%) !default;
+$link-color: $primary-color !default;
+$link-color-hover: mix(#fff, $link-color, 25%) !default;
+$link-color-visited: mix(#000, $link-color, 25%) !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
+$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
+
+/* neon syntax highlighting (base16) */
+$base00: #ffffff !default;
+$base01: #e0e0e0 !default;
+$base02: #d0d0d0 !default;
+$base03: #b0b0b0 !default;
+$base04: #000000 !default;
+$base05: #101010 !default;
+$base06: #151515 !default;
+$base07: #202020 !default;
+$base08: #ff0086 !default;
+$base09: #fd8900 !default;
+$base0a: #aba800 !default;
+$base0b: #00c918 !default;
+$base0c: #1faaaa !default;
+$base0d: #3777e6 !default;
+$base0e: #ad00a1 !default;
+$base0f: #cc6633 !default;
+
+.author__urls.social-icons .svg-inline--fa,
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
+
+/* next/previous buttons */
+.pagination--pager {
+ color: $text-color;
+ background-color: $primary-color;
+ border-color: transparent;
+
+ &:visited {
+ color: $text-color;
+ }
+}
diff --git a/_sass/minimal-mistakes/skins/_plum.scss b/_sass/minimal-mistakes/skins/_plum.scss
new file mode 100755
index 0000000..b777a8e
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_plum.scss
@@ -0,0 +1,60 @@
+/* ==========================================================================
+ Plum skin
+ ========================================================================== */
+
+/* Colors */
+$background-color: #521477 !default;
+$text-color: #fffd86 !default;
+$primary-color: #c327ab !default;
+$border-color: mix(#fff, $background-color, 20%) !default;
+$code-background-color: mix(#000, $background-color, 15%) !default;
+$code-background-color-dark: mix(#000, $background-color, 20%) !default;
+$form-background-color: mix(#000, $background-color, 15%) !default;
+$footer-background-color: mix(#000, $background-color, 25%) !default;
+$link-color: $primary-color !default;
+$link-color-hover: mix(#fff, $link-color, 25%) !default;
+$link-color-visited: mix(#000, $link-color, 25%) !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
+$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
+
+/* plum syntax highlighting (base16) */
+$base00: #ffffff !default;
+$base01: #e0e0e0 !default;
+$base02: #d0d0d0 !default;
+$base03: #b0b0b0 !default;
+$base04: #000000 !default;
+$base05: #101010 !default;
+$base06: #151515 !default;
+$base07: #202020 !default;
+$base08: #ff0086 !default;
+$base09: #fd8900 !default;
+$base0a: #aba800 !default;
+$base0b: #00c918 !default;
+$base0c: #1faaaa !default;
+$base0d: #3777e6 !default;
+$base0e: #ad00a1 !default;
+$base0f: #cc6633 !default;
+
+.author__urls.social-icons .svg-inline--fa,
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
+
+.page__content {
+ a,
+ a:visited {
+ color: inherit;
+ }
+}
+
+/* next/previous buttons */
+.pagination--pager {
+ color: $text-color;
+ background-color: $primary-color;
+ border-color: transparent;
+
+ &:visited {
+ color: $text-color;
+ }
+}
diff --git a/_sass/minimal-mistakes/skins/_sunrise.scss b/_sass/minimal-mistakes/skins/_sunrise.scss
new file mode 100755
index 0000000..1f0dca3
--- /dev/null
+++ b/_sass/minimal-mistakes/skins/_sunrise.scss
@@ -0,0 +1,44 @@
+/* ==========================================================================
+ Sunrise skin
+ ========================================================================== */
+
+/* Colors */
+$dark-gray: #0e2431 !default;
+$background-color: #e8d5b7 !default;
+$text-color: #000 !default;
+$muted-text-color: $dark-gray !default;
+$primary-color: #fc3a52 !default;
+$border-color: mix(#000, $background-color, 20%) !default;
+$code-background-color: mix(#fff, $background-color, 20%) !default;
+$code-background-color-dark: mix(#000, $background-color, 10%) !default;
+$form-background-color: mix(#fff, $background-color, 15%) !default;
+$footer-background-color: #f9b248 !default;
+$link-color: mix(#000, $primary-color, 10%) !default;
+$link-color-hover: mix(#fff, $link-color, 25%) !default;
+$link-color-visited: mix(#000, $link-color, 25%) !default;
+$masthead-link-color: $text-color !default;
+$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
+$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
+
+/* sunrise syntax highlighting (base16) */
+$base00: #1d1f21 !default;
+$base01: #282a2e !default;
+$base02: #373b41 !default;
+$base03: #969896 !default;
+$base04: #b4b7b4 !default;
+$base05: #c5c8c6 !default;
+$base06: #e0e0e0 !default;
+$base07: #ffffff !default;
+$base08: #cc6666 !default;
+$base09: #de935f !default;
+$base0a: #f0c674 !default;
+$base0b: #b5bd68 !default;
+$base0c: #8abeb7 !default;
+$base0d: #81a2be !default;
+$base0e: #b294bb !default;
+$base0f: #a3685a !default;
+
+.author__urls.social-icons .fa,
+.page__footer-follow .social-icons .svg-inline--fa {
+ color: inherit;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss b/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss
new file mode 100755
index 0000000..a0528eb
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss
@@ -0,0 +1,114 @@
+//////////////////////////////
+// Default Variables
+//////////////////////////////
+$Breakpoint-Settings: (
+ 'default media': all,
+ 'default feature': min-width,
+ 'default pair': width,
+
+ 'force all media type': false,
+ 'to ems': false,
+ 'transform resolutions': true,
+
+ 'no queries': false,
+ 'no query fallbacks': false,
+
+ 'base font size': 16px,
+
+ 'legacy syntax': false
+);
+
+$breakpoint: () !default;
+
+//////////////////////////////
+// Imports
+//////////////////////////////
+@import "settings";
+@import "context";
+@import "helpers";
+@import "parsers";
+@import "no-query";
+
+@import "respond-to";
+
+@import "legacy-settings";
+
+//////////////////////////////
+// Breakpoint Mixin
+//////////////////////////////
+
+@mixin breakpoint($query, $no-query: false) {
+ @include legacy-settings-warning;
+
+ // Reset contexts
+ @include private-breakpoint-reset-contexts();
+
+ $breakpoint: breakpoint($query, false);
+
+ $query-string: map-get($breakpoint, 'query');
+ $query-fallback: map-get($breakpoint, 'fallback');
+
+ $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global;
+ $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global;
+
+ // Allow for an as-needed override or usage of no query fallback.
+ @if $no-query != false {
+ $query-fallback: $no-query;
+ }
+
+ @if $query-fallback != false {
+ $context-setter: private-breakpoint-set-context('no-query', $query-fallback);
+ }
+
+ // Print Out Query String
+ @if not breakpoint-get('no queries') {
+ @media #{$query-string} {
+ @content;
+ }
+ }
+
+ @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true {
+
+ $type: type-of(breakpoint-get('no query fallbacks'));
+ $print: false;
+
+ @if ($type == 'bool') {
+ $print: true;
+ }
+ @else if ($type == 'string') {
+ @if $query-fallback == breakpoint-get('no query fallbacks') {
+ $print: true;
+ }
+ }
+ @else if ($type == 'list') {
+ @each $wrapper in breakpoint-get('no query fallbacks') {
+ @if $query-fallback == $wrapper {
+ $print: true;
+ }
+ }
+ }
+
+ // Write Fallback
+ @if ($query-fallback != false) and ($print == true) {
+ $type-fallback: type-of($query-fallback);
+
+ @if ($type-fallback != 'bool') {
+ #{$query-fallback} & {
+ @content;
+ }
+ }
+ @else {
+ @content;
+ }
+ }
+ }
+
+ @include private-breakpoint-reset-contexts();
+}
+
+
+@mixin mq($query, $no-query: false) {
+ @include breakpoint($query, $no-query) {
+ @content;
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_context.scss b/_sass/minimal-mistakes/vendor/breakpoint/_context.scss
new file mode 100755
index 0000000..57947f5
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_context.scss
@@ -0,0 +1,95 @@
+//////////////////////////////
+// Private Breakpoint Variables
+//////////////////////////////
+$private-breakpoint-context-holder: ();
+$private-breakpoint-query-count: 0 !default;
+
+//////////////////////////////
+// Breakpoint Has Context
+// Returns whether or not you are inside a Breakpoint query
+//////////////////////////////
+@function breakpoint-has-context() {
+ @if length($private-breakpoint-query-count) {
+ @return true;
+ }
+ @else {
+ @return false;
+ }
+}
+
+//////////////////////////////
+// Breakpoint Get Context
+// $feature: Input feature to get it's current MQ context. Returns false if no context
+//////////////////////////////
+@function breakpoint-get-context($feature) {
+ @if map-has-key($private-breakpoint-context-holder, $feature) {
+ $get: map-get($private-breakpoint-context-holder, $feature);
+ // Special handling of no-query from get side so /false/ prepends aren't returned
+ @if $feature == 'no-query' {
+ @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {
+ $get: nth($get, length($get));
+ }
+ }
+ @return $get;
+ }
+ @else {
+ @if breakpoint-has-context() and $feature == 'media' {
+ @return breakpoint-get('default media');
+ }
+ @else {
+ @return false;
+ }
+ }
+}
+
+//////////////////////////////
+// Private function to set context
+//////////////////////////////
+@function private-breakpoint-set-context($feature, $value) {
+ @if $value == 'monochrome' {
+ $feature: 'monochrome';
+ }
+
+ $current: map-get($private-breakpoint-context-holder, $feature);
+ @if $current and length($current) == $private-breakpoint-query-count {
+ @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`";
+ }
+
+ @if not map-has-key($private-breakpoint-context-holder, $feature) {
+ $v-holder: ();
+ @for $i from 1 to $private-breakpoint-query-count {
+ @if $feature == 'media' {
+ $v-holder: append($v-holder, breakpoint-get('default media'));
+ }
+ @else {
+ $v-holder: append($v-holder, false);
+ }
+ }
+ $v-holder: append($v-holder, $value);
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
+ }
+ @else {
+ $v-holder: map-get($private-breakpoint-context-holder, $feature);
+ $length: length($v-holder);
+ @for $i from $length to $private-breakpoint-query-count - 1 {
+ @if $feature == 'media' {
+ $v-holder: append($v-holder, breakpoint-get('default media'));
+ }
+ @else {
+ $v-holder: append($v-holder, false);
+ }
+ }
+ $v-holder: append($v-holder, $value);
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
+ }
+
+ @return true;
+}
+
+//////////////////////////////
+// Private function to reset context
+//////////////////////////////
+@mixin private-breakpoint-reset-contexts {
+ $private-breakpoint-context-holder: () !global;
+ $private-breakpoint-query-count: 0 !global;
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss b/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss
new file mode 100755
index 0000000..97e522d
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss
@@ -0,0 +1,151 @@
+//////////////////////////////
+// Converts the input value to Base EMs
+//////////////////////////////
+@function breakpoint-to-base-em($value) {
+ $value-unit: unit($value);
+
+ // Will convert relative EMs into root EMs.
+ @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {
+ $base-unit: unit(breakpoint-get('base font size'));
+
+ @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
+ @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;
+ }
+ @else {
+ @warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!';
+ @return false;
+ }
+ }
+ @else {
+ @return base-conversion($value);
+ }
+}
+
+@function base-conversion($value) {
+ $unit: unit($value);
+
+ @if $unit == 'px' {
+ @return $value / 16px * 1em;
+ }
+ @else if $unit == '%' {
+ @return $value / 100% * 1em;
+ }
+ @else if $unit == 'em' {
+ @return $value;
+ }
+ @else if $unit == 'pt' {
+ @return $value / 12pt * 1em;
+ }
+ @else {
+ @return $value;
+// @warn 'Everything is terrible! What have you done?!';
+ }
+}
+
+//////////////////////////////
+// Returns whether the feature can have a min/max pair
+//////////////////////////////
+$breakpoint-min-max-features: 'color',
+ 'color-index',
+ 'aspect-ratio',
+ 'device-aspect-ratio',
+ 'device-height',
+ 'device-width',
+ 'height',
+ 'monochrome',
+ 'resolution',
+ 'width';
+
+@function breakpoint-min-max($feature) {
+ @each $item in $breakpoint-min-max-features {
+ @if $feature == $item {
+ @return true;
+ }
+ }
+ @return false;
+}
+
+//////////////////////////////
+// Returns whether the feature can have a string value
+//////////////////////////////
+$breakpoint-string-features: 'orientation',
+ 'scan',
+ 'color',
+ 'aspect-ratio',
+ 'device-aspect-ratio',
+ 'pointer',
+ 'luminosity';
+
+@function breakpoint-string-value($feature) {
+ @each $item in $breakpoint-string-features {
+ @if breakpoint-min-max($item) {
+ @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
+ @return true;
+ }
+ }
+ @else if $feature == $item {
+ @return true;
+ }
+ }
+ @return false;
+}
+
+//////////////////////////////
+// Returns whether the feature is a media type
+//////////////////////////////
+$breakpoint-media-types: 'all',
+ 'braille',
+ 'embossed',
+ 'handheld',
+ 'print',
+ 'projection',
+ 'screen',
+ 'speech',
+ 'tty',
+ 'tv';
+
+@function breakpoint-is-media($feature) {
+ @each $media in $breakpoint-media-types {
+ @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
+ @return true;
+ }
+ }
+
+ @return false;
+}
+
+//////////////////////////////
+// Returns whether the feature can stand alone
+//////////////////////////////
+$breakpoint-single-string-features: 'color',
+ 'color-index',
+ 'grid',
+ 'monochrome';
+
+@function breakpoint-single-string($feature) {
+ @each $item in $breakpoint-single-string-features {
+ @if $feature == $item {
+ @return true;
+ }
+ }
+ @return false;
+}
+
+//////////////////////////////
+// Returns whether the feature
+//////////////////////////////
+@function breakpoint-is-resolution($feature) {
+ $resolutions: 'device-pixel-ratio', 'dpr';
+
+ @if breakpoint-get('transform resolutions') {
+ $resolutions: append($resolutions, 'resolution');
+ }
+
+ @each $reso in $resolutions {
+ @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
+ @return true;
+ }
+ }
+
+ @return false;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss b/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss
new file mode 100755
index 0000000..e060ebe
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss
@@ -0,0 +1,50 @@
+@mixin legacy-settings-warning {
+ $legacyVars: (
+ 'default-media': 'default media',
+ 'default-feature': 'default feature',
+ 'force-media-all': 'force all media type',
+ 'to-ems': 'to ems',
+ 'resolutions': 'transform resolutions',
+ 'no-queries': 'no queries',
+ 'no-query-fallbacks': 'no query fallbacks',
+ 'base-font-size': 'base font size',
+ 'legacy-syntax': 'legacy syntax'
+ );
+
+ @each $legacy, $new in $legacyVars {
+ @if global-variable-exists('breakpoint-' + $legacy) {
+ @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release."
+ }
+ };
+
+ //////////////////////////////
+ // Hand correct each setting
+ //////////////////////////////
+ @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
+ @include breakpoint-set('default media', $breakpoint-default-media);
+ }
+ @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
+ @include breakpoint-set('default feature', $breakpoint-default-feature);
+ }
+ @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
+ @include breakpoint-set('force all media type', $breakpoint-force-media-all);
+ }
+ @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
+ @include breakpoint-set('to ems', $breakpoint-to-ems);
+ }
+ @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
+ @include breakpoint-set('transform resolutions', $breakpoint-resolutions);
+ }
+ @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
+ @include breakpoint-set('no queries', $breakpoint-no-queries);
+ }
+ @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
+ @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
+ }
+ @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
+ @include breakpoint-set('base font size', $breakpoint-base-font-size);
+ }
+ @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
+ @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
+ }
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss b/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss
new file mode 100755
index 0000000..0b5a81f
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss
@@ -0,0 +1,15 @@
+@function breakpoint-no-query($query) {
+ @if type-of($query) == 'list' {
+ $keyword: nth($query, 1);
+
+ @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
+ @return nth($query, 2);
+ }
+ @else {
+ @return false;
+ }
+ }
+ @else {
+ @return false;
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_parsers.scss b/_sass/minimal-mistakes/vendor/breakpoint/_parsers.scss
new file mode 100755
index 0000000..f0b053f
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_parsers.scss
@@ -0,0 +1,215 @@
+//////////////////////////////
+// Import Parser Pieces
+//////////////////////////////
+@import "parsers/query";
+@import "parsers/single";
+@import "parsers/double";
+@import "parsers/triple";
+@import "parsers/resolution";
+
+$Memo-Exists: function-exists(memo-get) and function-exists(memo-set);
+
+//////////////////////////////
+// Breakpoint Function
+//////////////////////////////
+@function breakpoint($query, $contexts...) {
+ $run: true;
+ $return: ();
+
+ // Grab the Memo Output if Memoization can be a thing
+ @if $Memo-Exists {
+ $return: memo-get(breakpoint, breakpoint $query $contexts);
+
+ @if $return != null {
+ $run: false;
+ }
+ }
+
+ @if not $Memo-Exists or $run {
+ // Internal Variables
+ $query-string: '';
+ $query-fallback: false;
+ $return: ();
+
+ // Reserve Global Private Breakpoint Context
+ $holder-context: $private-breakpoint-context-holder;
+ $holder-query-count: $private-breakpoint-query-count;
+
+ // Reset Global Private Breakpoint Context
+ $private-breakpoint-context-holder: () !global;
+ $private-breakpoint-query-count: 0 !global;
+
+
+ // Test to see if it's a comma-separated list
+ $or-list: if(list-separator($query) == 'comma', true, false);
+
+
+ @if ($or-list == false and breakpoint-get('legacy syntax') == false) {
+ $query-string: breakpoint-parse($query);
+ }
+ @else {
+ $length: length($query);
+
+ $last: nth($query, $length);
+ $query-fallback: breakpoint-no-query($last);
+
+ @if ($query-fallback != false) {
+ $length: $length - 1;
+ }
+
+ @if (breakpoint-get('legacy syntax') == true) {
+ $mq: ();
+
+ @for $i from 1 through $length {
+ $mq: append($mq, nth($query, $i), comma);
+ }
+
+ $query-string: breakpoint-parse($mq);
+ }
+ @else {
+ $query-string: '';
+ @for $i from 1 through $length {
+ $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));
+ }
+ }
+ }
+
+ $return: ('query': $query-string,
+ 'fallback': $query-fallback,
+ 'context holder': $private-breakpoint-context-holder,
+ 'query count': $private-breakpoint-query-count
+ );
+ @if length($contexts) > 0 and nth($contexts, 1) != false {
+ @if $query-fallback != false {
+ $context-setter: private-breakpoint-set-context('no-query', $query-fallback);
+ }
+ $context-map: ();
+ @each $context in $contexts {
+ $context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));
+ }
+ $return: map-merge($return, (context: $context-map));
+ }
+
+ // Reset Global Private Breakpoint Context
+ $private-breakpoint-context-holder: () !global;
+ $private-breakpoint-query-count: 0 !global;
+
+ @if $Memo-Exists {
+ $holder: memo-set(breakpoint, breakpoint $query $contexts, $return);
+ }
+ }
+
+ @return $return;
+}
+
+//////////////////////////////
+// General Breakpoint Parser
+//////////////////////////////
+@function breakpoint-parse($query) {
+ // Increase number of 'and' queries
+ $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;
+
+ // Set up Media Type
+ $query-print: '';
+
+ $force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));
+ $empty-media: true;
+ @if ($force-all == true) or (breakpoint-get('default media') != 'all') {
+ // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
+ $query-print: breakpoint-get('default media');
+ $empty-media: false;
+ }
+
+
+ $query-resolution: false;
+
+ $query-holder: breakpoint-parse-query($query);
+
+
+
+ // Loop over each parsed out query and write it to $query-print
+ $first: true;
+
+ @each $feature in $query-holder {
+ $length: length($feature);
+
+ // Parse a single feature
+ @if ($length == 1) {
+ // Feature is currently a list, grab the actual value
+ $feature: nth($feature, 1);
+
+ // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
+ @if (breakpoint-is-media($feature)) {
+ @if ($force-all == true) or ($feature != 'all') {
+ // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
+ $query-print: $feature;
+ $empty-media: false;
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context(media, $query-print);
+ }
+ }
+ @else {
+ $parsed: breakpoint-parse-single($feature, $empty-media, $first);
+ $query-print: '#{$query-print} #{$parsed}';
+ $first: false;
+ }
+ }
+ // Parse a double feature
+ @else if ($length == 2) {
+ @if (breakpoint-is-resolution($feature) != false) {
+ $query-resolution: $feature;
+ }
+ @else {
+ $parsed: null;
+ // If it's a string/number pair,
+ // we check to see if one is a single-string value,
+ // then we parse it as a normal double
+ $alpha: nth($feature, 1);
+ $beta: nth($feature, 2);
+ @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
+ $parsed: breakpoint-parse-single($alpha, $empty-media, $first);
+ $query-print: '#{$query-print} #{$parsed}';
+ $first: false;
+ $parsed: breakpoint-parse-single($beta, $empty-media, $first);
+ $query-print: '#{$query-print} #{$parsed}';
+ }
+ @else {
+ $parsed: breakpoint-parse-double($feature, $empty-media, $first);
+ $query-print: '#{$query-print} #{$parsed}';
+ $first: false;
+ }
+ }
+ }
+ // Parse a triple feature
+ @else if ($length == 3) {
+ $parsed: breakpoint-parse-triple($feature, $empty-media, $first);
+ $query-print: '#{$query-print} #{$parsed}';
+ $first: false;
+ }
+
+ }
+
+ @if ($query-resolution != false) {
+ $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
+ }
+
+ // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters
+ @each $f, $v in $private-breakpoint-context-holder {
+ $v-holder: $v;
+ $length: length($v-holder);
+ @if length($v-holder) < $private-breakpoint-query-count {
+ @for $i from $length to $private-breakpoint-query-count {
+ @if $f == 'media' {
+ $v-holder: append($v-holder, breakpoint-get('default media'));
+ }
+ @else {
+ $v-holder: append($v-holder, false);
+ }
+ }
+ }
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;
+ }
+
+ @return $query-print;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss b/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss
new file mode 100755
index 0000000..e2462c5
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss
@@ -0,0 +1,82 @@
+////////////////////////
+// Default the Breakpoints variable
+////////////////////////
+$breakpoints: () !default;
+$BREAKPOINTS: () !default;
+
+////////////////////////
+// Respond-to API Mixin
+////////////////////////
+@mixin respond-to($context, $no-query: false) {
+ @if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 {
+ @warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release.";
+ $BREAKPOINTS: $breakpoints !global;
+ $breakpoints: () !global;
+ }
+
+ @if type-of($BREAKPOINTS) != 'map' {
+ // Just in case someone writes gibberish to the $breakpoints variable.
+ @warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable.";
+ @content;
+ }
+ @else if map-has-key($BREAKPOINTS, $context) {
+ @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) {
+ @content;
+ }
+ }
+ @else if not map-has-key($BREAKPOINTS, $context) {
+ @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`";
+ @content;
+ }
+ @else {
+ @warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`";
+ @content;
+ }
+}
+
+//////////////////////////////
+// Add Breakpoint to Breakpoints
+// TODO: Remove function in next release
+//////////////////////////////
+@function add-breakpoint($name, $bkpt, $overwrite: false) {
+ $output: ($name: $bkpt);
+
+ @if length($breakpoints) == 0 {
+ @return $output;
+ }
+ @else {
+ @if map-has-key($breakpoints, $name) and $overwrite != true {
+ @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
+ @return $breakpoints;
+ }
+ @else if not map-has-key($breakpoints, $name) or $overwrite == true {
+ @return map-merge($breakpoints, $output);
+ }
+ }
+}
+
+@mixin add-breakpoint($name, $bkpt, $overwrite: false) {
+ $output: ($name: $bkpt);
+
+ @if length($BREAKPOINTS) == 0 {
+ $BREAKPOINTS: $output !global;
+ }
+ @else {
+ @if map-has-key($BREAKPOINTS, $name) and $overwrite != true {
+ @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
+ $BREAKPOINTS: $BREAKPOINTS !global;
+ }
+ @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true {
+ $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global;
+ }
+ }
+}
+
+@function get-breakpoint($name: false) {
+ @if $name == false {
+ @return $BREAKPOINTS;
+ }
+ @else {
+ @return map-get($BREAKPOINTS, $name);
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss b/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss
new file mode 100755
index 0000000..05ee689
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss
@@ -0,0 +1,71 @@
+//////////////////////////////
+// Has Setting
+//////////////////////////////
+@function breakpoint-has($setting) {
+ @if map-has-key($breakpoint, $setting) {
+ @return true;
+ }
+ @else {
+ @return false;
+ }
+}
+
+//////////////////////////////
+// Get Settings
+//////////////////////////////
+@function breakpoint-get($setting) {
+ @if breakpoint-has($setting) {
+ @return map-get($breakpoint, $setting);
+ }
+ @else {
+ @return map-get($Breakpoint-Settings, $setting);
+ }
+}
+
+//////////////////////////////
+// Set Settings
+//////////////////////////////
+@function breakpoint-set($setting, $value) {
+ @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null {
+ @warn "Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed.";
+ }
+ $breakpoint: map-merge($breakpoint, ($setting: $value)) !global;
+ @return true;
+}
+
+@mixin breakpoint-change($setting, $value) {
+ $breakpoint-change: breakpoint-set($setting, $value);
+}
+
+@mixin breakpoint-set($setting, $value) {
+ @include breakpoint-change($setting, $value);
+}
+
+@mixin bkpt-change($setting, $value) {
+ @include breakpoint-change($setting, $value);
+}
+@mixin bkpt-set($setting, $value) {
+ @include breakpoint-change($setting, $value);
+}
+
+//////////////////////////////
+// Remove Setting
+//////////////////////////////
+@function breakpoint-reset($settings...) {
+ @if length($settings) == 1 {
+ $settings: nth($settings, 1);
+ }
+
+ @each $setting in $settings {
+ $breakpoint: map-remove($breakpoint, $setting) !global;
+ }
+ @return true;
+}
+
+@mixin breakpoint-reset($settings...) {
+ $breakpoint-reset: breakpoint-reset($settings);
+}
+
+@mixin bkpt-reset($settings...) {
+ $breakpoint-reset: breakpoint-reset($settings);
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss
new file mode 100755
index 0000000..24580c1
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss
@@ -0,0 +1,33 @@
+//////////////////////////////
+// Import Pieces
+//////////////////////////////
+@import "double/default-pair";
+@import "double/double-string";
+@import "double/default";
+
+@function breakpoint-parse-double($feature, $empty-media, $first) {
+ $parsed: '';
+ $leader: '';
+ // If we're forcing
+ @if not ($empty-media) or not ($first) {
+ $leader: 'and ';
+ }
+
+ $first: nth($feature, 1);
+ $second: nth($feature, 2);
+
+ // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number
+ @if type-of($first) == 'number' and type-of($second) == 'number' {
+ $parsed: breakpoint-parse-default-pair($first, $second);
+ }
+ // If they are both strings, we send it through the string parser
+ @else if type-of($first) == 'string' and type-of($second) == 'string' {
+ $parsed: breakpoint-parse-double-string($first, $second);
+ }
+ // If it's a string/number pair, we parse it as a normal double
+ @else {
+ $parsed: breakpoint-parse-double-default($first, $second);
+ }
+
+ @return $leader + $parsed;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss
new file mode 100755
index 0000000..b138b39
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss
@@ -0,0 +1,82 @@
+@function breakpoint-parse-query($query) {
+ // Parse features out of an individual query
+ $feature-holder: ();
+ $query-holder: ();
+ $length: length($query);
+
+ @if $length == 2 {
+ // If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles
+ @if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') {
+
+ $number: '';
+ $value: '';
+
+ @if type-of(nth($query, 1)) == 'string' {
+ $number: nth($query, 2);
+ $value: nth($query, 1);
+ }
+ @else {
+ $number: nth($query, 1);
+ $value: nth($query, 2);
+ }
+
+ // If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy.
+ @if breakpoint-single-string($value) {
+ @if unitless($number) {
+ $feature-holder: append($value, $number, space);
+ $query-holder: append($query-holder, $feature-holder, comma);
+ @return $query-holder;
+ }
+ }
+ // If the string is a media type, split the query
+ @if breakpoint-is-media($value) {
+ $query-holder: append($query-holder, nth($query, 1));
+ $query-holder: append($query-holder, nth($query, 2));
+ @return $query-holder;
+ }
+ // If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it.
+ @else {
+ $feature-holder: append($value, $number, space);
+ $query-holder: append($query-holder, $feature-holder, comma);
+ @return $query-holder;
+ }
+
+ }
+ // If they're both numbers, we assume it's a double and roll with that
+ @else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') {
+ $feature-holder: append(nth($query, 1), nth($query, 2), space);
+ $query-holder: append($query-holder, $feature-holder, comma);
+ @return $query-holder;
+ }
+ // If they're both strings and neither are singles, we roll with that.
+ @else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') {
+ @if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) {
+ $feature-holder: append(nth($query, 1), nth($query, 2), space);
+ $query-holder: append($query-holder, $feature-holder, comma);
+ @return $query-holder;
+ }
+ }
+ }
+ @else if $length == 3 {
+ // If we've got three items and none is a list, we check to see
+ @if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' {
+ // If none of the items are single string values and none of the values are media values, we're good.
+ @if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) {
+ $feature-holder: append(nth($query, 1), nth($query, 2), space);
+ $feature-holder: append($feature-holder, nth($query, 3), space);
+ $query-holder: append($query-holder, $feature-holder, comma);
+ @return $query-holder;
+ }
+ // let's check to see if the first item is a media type
+ @else if breakpoint-is-media(nth($query, 1)) {
+ $query-holder: append($query-holder, nth($query, 1));
+ $feature-holder: append(nth($query, 2), nth($query, 3), space);
+ $query-holder: append($query-holder, $feature-holder);
+ @return $query-holder;
+ }
+ }
+ }
+
+ // If it's a single item, or if it's not a special case double or triple, we can simply return the query.
+ @return $query;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss
new file mode 100755
index 0000000..19769ad
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss
@@ -0,0 +1,31 @@
+@import "resolution/resolution";
+
+@function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) {
+ $leader: '';
+ // If we're forcing
+ @if not ($empty-media) or not ($first) {
+ $leader: 'and ';
+ }
+
+ @if breakpoint-get('transform resolutions') and $query-resolution {
+ $resolutions: breakpoint-make-resolutions($query-resolution);
+ $length: length($resolutions);
+ $query-holder: '';
+
+ @for $i from 1 through $length {
+ $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}';
+ @if $i == 1 {
+ $query-holder: $query;
+ }
+ @else {
+ $query-holder: '#{$query-holder}, #{$query}';
+ }
+ }
+
+ @return $query-holder;
+ }
+ @else {
+ // Return with attached resolution
+ @return $query-print;
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss
new file mode 100755
index 0000000..d9fd764
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss
@@ -0,0 +1,26 @@
+//////////////////////////////
+// Import Pieces
+//////////////////////////////
+@import "single/default";
+
+@function breakpoint-parse-single($feature, $empty-media, $first) {
+ $parsed: '';
+ $leader: '';
+ // If we're forcing
+ @if not ($empty-media) or not ($first) {
+ $leader: 'and ';
+ }
+
+ // If it's a single feature that can stand alone, we let it
+ @if (breakpoint-single-string($feature)) {
+ $parsed: $feature;
+ // Set Context
+ $context-setter: private-breakpoint-set-context($feature, $feature);
+ }
+ // If it's not a stand alone feature, we pass it off to the default handler.
+ @else {
+ $parsed: breakpoint-parse-default($feature);
+ }
+
+ @return $leader + '(' + $parsed + ')';
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss
new file mode 100755
index 0000000..e273206
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss
@@ -0,0 +1,36 @@
+//////////////////////////////
+// Import Pieces
+//////////////////////////////
+@import "triple/default";
+
+@function breakpoint-parse-triple($feature, $empty-media, $first) {
+ $parsed: '';
+ $leader: '';
+
+ // If we're forcing
+ @if not ($empty-media) or not ($first) {
+ $leader: 'and ';
+ }
+
+ // separate the string features from the value numbers
+ $string: null;
+ $numbers: null;
+ @each $val in $feature {
+ @if type-of($val) == string {
+ $string: $val;
+ }
+ @else {
+ @if type-of($numbers) == 'null' {
+ $numbers: $val;
+ }
+ @else {
+ $numbers: append($numbers, $val);
+ }
+ }
+ }
+
+ $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2));
+
+ @return $leader + $parsed;
+
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss
new file mode 100755
index 0000000..f88432c
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss
@@ -0,0 +1,21 @@
+@function breakpoint-parse-default-pair($first, $second) {
+ $default: breakpoint-get('default pair');
+ $min: '';
+ $max: '';
+
+ // Sort into min and max
+ $min: min($first, $second);
+ $max: max($first, $second);
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context(min-#{$default}, $min);
+ $context-setter: private-breakpoint-set-context(max-#{$default}, $max);
+
+ // Make them EMs if need be
+ @if (breakpoint-get('to ems') == true) {
+ $min: breakpoint-to-base-em($min);
+ $max: breakpoint-to-base-em($max);
+ }
+
+ @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})';
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss
new file mode 100755
index 0000000..73190ed
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss
@@ -0,0 +1,22 @@
+@function breakpoint-parse-double-default($first, $second) {
+ $feature: '';
+ $value: '';
+
+ @if type-of($first) == 'string' {
+ $feature: $first;
+ $value: $second;
+ }
+ @else {
+ $feature: $second;
+ $value: $first;
+ }
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context($feature, $value);
+
+ @if (breakpoint-get('to ems') == true) {
+ $value: breakpoint-to-base-em($value);
+ }
+
+ @return '(#{$feature}: #{$value})'
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss
new file mode 100755
index 0000000..c6fd0cb
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss
@@ -0,0 +1,22 @@
+@function breakpoint-parse-double-string($first, $second) {
+ $feature: '';
+ $value: '';
+
+ // Test to see which is the feature and which is the value
+ @if (breakpoint-string-value($first) == true) {
+ $feature: $first;
+ $value: $second;
+ }
+ @else if (breakpoint-string-value($second) == true) {
+ $feature: $second;
+ $value: $first;
+ }
+ @else {
+ @warn "Neither #{$first} nor #{$second} is a valid media query name.";
+ }
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context($feature, $value);
+
+ @return '(#{$feature}: #{$value})';
+}
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss
new file mode 100755
index 0000000..3680421
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss
@@ -0,0 +1,60 @@
+@function breakpoint-make-resolutions($resolution) {
+ $length: length($resolution);
+
+ $output: ();
+
+ @if $length == 2 {
+ $feature: '';
+ $value: '';
+
+ // Find which is number
+ @if type-of(nth($resolution, 1)) == 'number' {
+ $value: nth($resolution, 1);
+ }
+ @else {
+ $value: nth($resolution, 2);
+ }
+
+ // Determine min/max/standard
+ @if index($resolution, 'min-resolution') {
+ $feature: 'min-';
+ }
+ @else if index($resolution, 'max-resolution') {
+ $feature: 'max-';
+ }
+
+ $standard: '(#{$feature}resolution: #{$value})';
+
+ // If we're not dealing with dppx,
+ @if unit($value) != 'dppx' {
+ $base: 96dpi;
+ @if unit($value) == 'dpcm' {
+ $base: 243.84dpcm;
+ }
+ // Write out feature tests
+ $webkit: '';
+ $moz: '';
+ $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})';
+ $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})';
+ // Append to output
+ $output: append($output, $standard, space);
+ $output: append($output, $webkit, space);
+ $output: append($output, $moz, space);
+ }
+ @else {
+ $webkit: '';
+ $moz: '';
+ $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})';
+ $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})';
+ $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})';
+ // Append to output
+ $output: append($output, $standard, space);
+ $output: append($output, $webkit, space);
+ $output: append($output, $moz, space);
+ $output: append($output, $fallback, space);
+ }
+
+ }
+
+ @return $output;
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss
new file mode 100755
index 0000000..503ef42
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss
@@ -0,0 +1,13 @@
+@function breakpoint-parse-default($feature) {
+ $default: breakpoint-get('default feature');
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context($default, $feature);
+
+ @if (breakpoint-get('to ems') == true) and (type-of($feature) == 'number') {
+ @return '#{$default}: #{breakpoint-to-base-em($feature)}';
+ }
+ @else {
+ @return '#{$default}: #{$feature}';
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss
new file mode 100755
index 0000000..7fa418d
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss
@@ -0,0 +1,18 @@
+@function breakpoint-parse-triple-default($feature, $first, $second) {
+
+ // Sort into min and max
+ $min: min($first, $second);
+ $max: max($first, $second);
+
+ // Set Context
+ $context-setter: private-breakpoint-set-context(min-#{$feature}, $min);
+ $context-setter: private-breakpoint-set-context(max-#{$feature}, $max);
+
+ // Make them EMs if need be
+ @if (breakpoint-get('to ems') == true) {
+ $min: breakpoint-to-base-em($min);
+ $max: breakpoint-to-base-em($max);
+ }
+
+ @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})';
+}
diff --git a/_sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss b/_sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss
new file mode 100755
index 0000000..27b27bc
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss
@@ -0,0 +1,649 @@
+/* Magnific Popup CSS */
+
+@import "settings";
+
+////////////////////////
+//
+// Contents:
+//
+// 1. Default Settings
+// 2. General styles
+// - Transluscent overlay
+// - Containers, wrappers
+// - Cursors
+// - Helper classes
+// 3. Appearance
+// - Preloader & text that displays error messages
+// - CSS reset for buttons
+// - Close icon
+// - "1 of X" counter
+// - Navigation (left/right) arrows
+// - Iframe content type styles
+// - Image content type styles
+// - Media query where size of arrows is reduced
+// - IE7 support
+//
+////////////////////////
+
+
+
+////////////////////////
+// 1. Default Settings
+////////////////////////
+
+$mfp-overlay-color: #0b0b0b !default;
+$mfp-overlay-opacity: 0.8 !default;
+$mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6) !default; // shadow on image or iframe
+$mfp-popup-padding-left: 8px !default; // Padding from left and from right side
+$mfp-popup-padding-left-mobile: 6px !default; // Same as above, but is applied when width of window is less than 800px
+
+$mfp-z-index-base: 1040 !default; // Base z-index of popup
+$mfp-include-arrows: true !default; // include styles for nav arrows
+$mfp-controls-opacity: 0.65 !default;
+$mfp-controls-color: #FFF !default;
+$mfp-controls-border-color: #3F3F3F !default;
+$mfp-inner-close-icon-color: #333 !default;
+$mfp-controls-text-color: #CCC !default; // Color of preloader and "1 of X" indicator
+$mfp-controls-text-color-hover: #FFF !default;
+$mfp-IE7support: true !default; // Very basic IE7 support
+
+// Iframe-type options
+$mfp-include-iframe-type: true !default;
+$mfp-iframe-padding-top: 40px !default;
+$mfp-iframe-background: #000 !default;
+$mfp-iframe-max-width: 900px !default;
+$mfp-iframe-ratio: 9/16 !default;
+
+// Image-type options
+$mfp-include-image-type: true !default;
+$mfp-image-background: #444 !default;
+$mfp-image-padding-top: 40px !default;
+$mfp-image-padding-bottom: 40px !default;
+$mfp-include-mobile-layout-for-image: true !default; // Removes paddings from top and bottom
+
+// Image caption options
+$mfp-caption-title-color: #F3F3F3 !default;
+$mfp-caption-subtitle-color: #BDBDBD !default;
+
+// A11y
+$mfp-use-visuallyhidden: false !default; // Hide content from browsers, but make it available for screen readers
+
+
+
+////////////////////////
+// 2. General styles
+////////////////////////
+
+// Transluscent overlay
+.mfp-bg {
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: $mfp-z-index-base + 2;
+ overflow: hidden;
+ position: fixed;
+
+ background: $mfp-overlay-color;
+ opacity: $mfp-overlay-opacity;
+ @if $mfp-IE7support {
+ filter: unquote("alpha(opacity=#{$mfp-overlay-opacity*100})");
+ }
+}
+
+// Wrapper for popup
+.mfp-wrap {
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: $mfp-z-index-base + 3;
+ position: fixed;
+ outline: none !important;
+ -webkit-backface-visibility: hidden; // fixes webkit bug that can cause "false" scrollbar
+}
+
+// Root container
+.mfp-container {
+ text-align: center;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ padding: 0 $mfp-popup-padding-left;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+// Vertical centerer helper
+.mfp-container {
+ &:before {
+ content: '';
+ display: inline-block;
+ height: 100%;
+ vertical-align: middle;
+ }
+}
+
+// Remove vertical centering when popup has class `mfp-align-top`
+.mfp-align-top {
+ .mfp-container {
+ &:before {
+ display: none;
+ }
+ }
+}
+
+// Popup content holder
+.mfp-content {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0 auto;
+ text-align: left;
+ z-index: $mfp-z-index-base + 5;
+}
+.mfp-inline-holder,
+.mfp-ajax-holder {
+ .mfp-content {
+ width: 100%;
+ cursor: auto;
+ }
+}
+
+// Cursors
+.mfp-ajax-cur {
+ cursor: progress;
+}
+.mfp-zoom-out-cur {
+ &, .mfp-image-holder .mfp-close {
+ cursor: -moz-zoom-out;
+ cursor: -webkit-zoom-out;
+ cursor: zoom-out;
+ }
+}
+.mfp-zoom {
+ cursor: pointer;
+ cursor: -webkit-zoom-in;
+ cursor: -moz-zoom-in;
+ cursor: zoom-in;
+}
+.mfp-auto-cursor {
+ .mfp-content {
+ cursor: auto;
+ }
+}
+
+.mfp-close,
+.mfp-arrow,
+.mfp-preloader,
+.mfp-counter {
+ -webkit-user-select:none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+// Hide the image during the loading
+.mfp-loading {
+ &.mfp-figure {
+ display: none;
+ }
+}
+
+// Helper class that hides stuff
+@if $mfp-use-visuallyhidden {
+ // From HTML5 Boilerplate https://github.com/h5bp/html5-boilerplate/blob/v4.2.0/doc/css.md#visuallyhidden
+ .mfp-hide {
+ border: 0 !important;
+ clip: rect(0 0 0 0) !important;
+ height: 1px !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ padding: 0 !important;
+ position: absolute !important;
+ width: 1px !important;
+ }
+} @else {
+ .mfp-hide {
+ display: none !important;
+ }
+}
+
+
+////////////////////////
+// 3. Appearance
+////////////////////////
+
+// Preloader and text that displays error messages
+.mfp-preloader {
+ color: $mfp-controls-text-color;
+ position: absolute;
+ top: 50%;
+ width: auto;
+ text-align: center;
+ margin-top: -0.8em;
+ left: 8px;
+ right: 8px;
+ z-index: $mfp-z-index-base + 4;
+ a {
+ color: $mfp-controls-text-color;
+ &:hover {
+ color: $mfp-controls-text-color-hover;
+ }
+ }
+}
+
+// Hide preloader when content successfully loaded
+.mfp-s-ready {
+ .mfp-preloader {
+ display: none;
+ }
+}
+
+// Hide content when it was not loaded
+.mfp-s-error {
+ .mfp-content {
+ display: none;
+ }
+}
+
+// CSS-reset for buttons
+button {
+ &.mfp-close,
+ &.mfp-arrow {
+ overflow: visible;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+ display: block;
+ outline: none;
+ padding: 0;
+ z-index: $mfp-z-index-base + 6;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ &::-moz-focus-inner {
+ padding: 0;
+ border: 0
+ }
+}
+
+
+// Close icon
+.mfp-close {
+ width: 44px;
+ height: 44px;
+ line-height: 44px;
+
+ position: absolute;
+ right: 0;
+ top: 0;
+ text-decoration: none;
+ text-align: center;
+ opacity: $mfp-controls-opacity;
+ @if $mfp-IE7support {
+ filter: unquote("alpha(opacity=#{$mfp-controls-opacity*100})");
+ }
+ padding: 0 0 18px 10px;
+ color: $mfp-controls-color;
+
+ font-style: normal;
+ font-size: 28px;
+ font-family: $serif;
+
+ &:hover,
+ &:focus {
+ opacity: 1;
+ @if $mfp-IE7support {
+ filter: unquote("alpha(opacity=#{1*100})");
+ }
+ }
+
+ &:active {
+ top: 1px;
+ }
+}
+.mfp-close-btn-in {
+ .mfp-close {
+ color: $mfp-inner-close-icon-color;
+ }
+}
+.mfp-image-holder,
+.mfp-iframe-holder {
+ .mfp-close {
+ color: $mfp-controls-color;
+ right: -6px;
+ text-align: right;
+ padding-right: 6px;
+ width: 100%;
+ }
+}
+
+// "1 of X" counter
+.mfp-counter {
+ position: absolute;
+ top: 0;
+ right: 0;
+ color: $mfp-controls-text-color;
+ font-size: 12px;
+ line-height: 18px;
+}
+
+// Navigation arrows
+@if $mfp-include-arrows {
+ .mfp-arrow {
+ position: absolute;
+ opacity: $mfp-controls-opacity;
+ @if $mfp-IE7support {
+ filter: unquote("alpha(opacity=#{$mfp-controls-opacity*100})");
+ }
+ margin: 0;
+ top: 50%;
+ margin-top: -55px;
+ padding: 0;
+ width: 90px;
+ height: 110px;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ &:active {
+ margin-top: -54px;
+ }
+ &:hover,
+ &:focus {
+ opacity: 1;
+ @if $mfp-IE7support {
+ filter: unquote("alpha(opacity=#{1*100})");
+ }
+ }
+ &:before,
+ &:after,
+ .mfp-b,
+ .mfp-a {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ position: absolute;
+ left: 0;
+ top: 0;
+ margin-top: 35px;
+ margin-left: 35px;
+ border: medium inset transparent;
+ }
+
+ &:after,
+ .mfp-a {
+
+ border-top-width: 13px;
+ border-bottom-width: 13px;
+ top:8px;
+ }
+
+ &:before,
+ .mfp-b {
+ border-top-width: 21px;
+ border-bottom-width: 21px;
+ opacity: 0.7;
+ }
+
+ }
+
+ .mfp-arrow-left {
+ left: 0;
+
+ &:after,
+ .mfp-a {
+ border-right: 17px solid $mfp-controls-color;
+ margin-left: 31px;
+ }
+ &:before,
+ .mfp-b {
+ margin-left: 25px;
+ border-right: 27px solid $mfp-controls-border-color;
+ }
+ }
+
+ .mfp-arrow-right {
+ right: 0;
+ &:after,
+ .mfp-a {
+ border-left: 17px solid $mfp-controls-color;
+ margin-left: 39px
+ }
+ &:before,
+ .mfp-b {
+ border-left: 27px solid $mfp-controls-border-color;
+ }
+ }
+}
+
+
+
+// Iframe content type
+@if $mfp-include-iframe-type {
+ .mfp-iframe-holder {
+ padding-top: $mfp-iframe-padding-top;
+ padding-bottom: $mfp-iframe-padding-top;
+ .mfp-content {
+ line-height: 0;
+ width: 100%;
+ max-width: $mfp-iframe-max-width;
+ }
+ .mfp-close {
+ top: -40px;
+ }
+ }
+ .mfp-iframe-scaler {
+ width: 100%;
+ height: 0;
+ overflow: hidden;
+ padding-top: $mfp-iframe-ratio * 100%;
+ iframe {
+ position: absolute;
+ display: block;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ box-shadow: $mfp-shadow;
+ background: $mfp-iframe-background;
+ }
+ }
+}
+
+
+
+// Image content type
+@if $mfp-include-image-type {
+
+ /* Main image in popup */
+ img {
+ &.mfp-img {
+ width: auto;
+ max-width: 100%;
+ height: auto;
+ display: block;
+ line-height: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: $mfp-image-padding-top 0 $mfp-image-padding-bottom;
+ margin: 0 auto;
+ }
+ }
+
+ /* The shadow behind the image */
+ .mfp-figure {
+ line-height: 0;
+ &:after {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: $mfp-image-padding-top;
+ bottom: $mfp-image-padding-bottom;
+ display: block;
+ right: 0;
+ width: auto;
+ height: auto;
+ z-index: -1;
+ box-shadow: $mfp-shadow;
+ background: $mfp-image-background;
+ }
+ small {
+ color: $mfp-caption-subtitle-color;
+ display: block;
+ font-size: 12px;
+ line-height: 14px;
+ }
+ figure {
+ margin: 0;
+ }
+ figcaption {
+ margin-top: 0;
+ margin-bottom: 0; // reset for bottom spacing
+ }
+ }
+ .mfp-bottom-bar {
+ margin-top: -$mfp-image-padding-bottom + 4;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ width: 100%;
+ cursor: auto;
+ }
+ .mfp-title {
+ text-align: left;
+ line-height: 18px;
+ color: $mfp-caption-title-color;
+ word-wrap: break-word;
+ padding-right: 36px; // leave some space for counter at right side
+ }
+
+ .mfp-image-holder {
+ .mfp-content {
+ max-width: 100%;
+ }
+ }
+
+ .mfp-gallery {
+ .mfp-image-holder {
+ .mfp-figure {
+ cursor: pointer;
+ }
+ }
+ }
+
+
+ @if $mfp-include-mobile-layout-for-image {
+ @media screen and (max-width: 800px) and (orientation:landscape), screen and (max-height: 300px) {
+ /**
+ * Remove all paddings around the image on small screen
+ */
+ .mfp-img-mobile {
+ .mfp-image-holder {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ img {
+ &.mfp-img {
+ padding: 0;
+ }
+ }
+ .mfp-figure {
+ // The shadow behind the image
+ &:after {
+ top: 0;
+ bottom: 0;
+ }
+ small {
+ display: inline;
+ margin-left: 5px;
+ }
+ }
+ .mfp-bottom-bar {
+ background: rgba(0,0,0,0.6);
+ bottom: 0;
+ margin: 0;
+ top: auto;
+ padding: 3px 5px;
+ position: fixed;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ &:empty {
+ padding: 0;
+ }
+ }
+ .mfp-counter {
+ right: 5px;
+ top: 3px;
+ }
+ .mfp-close {
+ top: 0;
+ right: 0;
+ width: 35px;
+ height: 35px;
+ line-height: 35px;
+ background: rgba(0, 0, 0, 0.6);
+ position: fixed;
+ text-align: center;
+ padding: 0;
+ }
+ }
+ }
+ }
+}
+
+
+
+// Scale navigation arrows and reduce padding from sides
+@media all and (max-width: 900px) {
+ .mfp-arrow {
+ -webkit-transform: scale(0.75);
+ transform: scale(0.75);
+ }
+ .mfp-arrow-left {
+ -webkit-transform-origin: 0;
+ transform-origin: 0;
+ }
+ .mfp-arrow-right {
+ -webkit-transform-origin: 100%;
+ transform-origin: 100%;
+ }
+ .mfp-container {
+ padding-left: $mfp-popup-padding-left-mobile;
+ padding-right: $mfp-popup-padding-left-mobile;
+ }
+}
+
+
+
+// IE7 support
+// Styles that make popup look nicier in old IE
+@if $mfp-IE7support {
+ .mfp-ie7 {
+ .mfp-img {
+ padding: 0;
+ }
+ .mfp-bottom-bar {
+ width: 600px;
+ left: 50%;
+ margin-left: -300px;
+ margin-top: 5px;
+ padding-bottom: 5px;
+ }
+ .mfp-container {
+ padding: 0;
+ }
+ .mfp-content {
+ padding-top: 44px;
+ }
+ .mfp-close {
+ top: 0;
+ right: 0;
+ padding-top: 0;
+ }
+ }
+}
diff --git a/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss b/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss
new file mode 100755
index 0000000..e7866b3
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss
@@ -0,0 +1,46 @@
+////////////////////////
+// Settings //
+////////////////////////
+
+// overlay
+$mfp-overlay-color: #000; // Color of overlay screen
+$mfp-overlay-opacity: 0.8; // Opacity of overlay screen
+$mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6); // Shadow on image or iframe
+
+// spacing
+$mfp-popup-padding-left: 8px; // Padding from left and from right side
+$mfp-popup-padding-left-mobile: 6px; // Same as above, but is applied when width of window is less than 800px
+
+$mfp-z-index-base: 1040; // Base z-index of popup
+
+// controls
+$mfp-include-arrows: true; // Include styles for nav arrows
+$mfp-controls-opacity: 1; // Opacity of controls
+$mfp-controls-color: #fff; // Color of controls
+$mfp-controls-border-color: #fff; // Border color of controls
+$mfp-inner-close-icon-color: #fff; // Color of close button when inside
+$mfp-controls-text-color: #ccc; // Color of preloader and "1 of X" indicator
+$mfp-controls-text-color-hover: #fff; // Hover color of preloader and "1 of X" indicator
+$mfp-IE7support: true; // Very basic IE7 support
+
+// Iframe-type options
+$mfp-include-iframe-type: true; // Enable Iframe-type popups
+$mfp-iframe-padding-top: 40px; // Iframe padding top
+$mfp-iframe-background: #000; // Background color of iframes
+$mfp-iframe-max-width: 900px; // Maximum width of iframes
+$mfp-iframe-ratio: 9/16; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.)
+
+// Image-type options
+$mfp-include-image-type: true; // Enable Image-type popups
+$mfp-image-background: #444 !default;
+$mfp-image-padding-top: 40px; // Image padding top
+$mfp-image-padding-bottom: 40px; // Image padding bottom
+$mfp-include-mobile-layout-for-image: true; // Removes paddings from top and bottom
+
+// Image caption options
+$mfp-caption-title-color: #f3f3f3; // Caption title color
+$mfp-caption-subtitle-color: #bdbdbd; // Caption subtitle color
+.mfp-counter { font-family: $serif; } // Caption font family
+
+// A11y
+$mfp-use-visuallyhidden: false;
\ No newline at end of file
diff --git a/_sass/minimal-mistakes/vendor/susy/_su.scss b/_sass/minimal-mistakes/vendor/susy/_su.scss
new file mode 100755
index 0000000..83386ad
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/_su.scss
@@ -0,0 +1,4 @@
+// Su
+// ==
+
+@import 'susy/su';
diff --git a/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss b/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss
new file mode 100755
index 0000000..185b356
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss
@@ -0,0 +1,13 @@
+// Susy (Prefixed)
+// ===============
+
+$susy-version: 3;
+
+@import 'susy/utilities';
+@import 'susy/su-validate';
+@import 'susy/su-math';
+@import 'susy/settings';
+@import 'susy/normalize';
+@import 'susy/parse';
+@import 'susy/syntax-helpers';
+@import 'susy/api';
diff --git a/_sass/minimal-mistakes/vendor/susy/_susy.scss b/_sass/minimal-mistakes/vendor/susy/_susy.scss
new file mode 100755
index 0000000..bfda3d0
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/_susy.scss
@@ -0,0 +1,5 @@
+// Susy (Un-Prefixed)
+// ==================
+
+@import 'susy-prefix';
+@import 'susy/unprefix';
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss b/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss
new file mode 100755
index 0000000..99db8d1
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss
@@ -0,0 +1,5 @@
+// SVG Grid Background
+// ===================
+
+@import 'svg-grid/prefix';
+@import 'svg-grid/svg-unprefix';
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss
new file mode 100755
index 0000000..21fb45f
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss
@@ -0,0 +1,7 @@
+// Prefixed SVG Plugin
+// ===================
+
+@import 'svg-settings';
+@import 'svg-utilities';
+@import 'svg-grid-math';
+@import 'svg-api';
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss
new file mode 100755
index 0000000..7d880e3
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss
@@ -0,0 +1,114 @@
+/// Plugin: SVG Grid Image
+/// ======================
+/// @group plugin_svg-grid
+/// @see susy-svg-grid
+
+
+
+/// ## Overview
+/// If you want to generate svg-backgrounds
+/// for help visualizing and debugging your grids,
+/// import the SVG Grid Plugin.
+///
+/// The plugin adds `svg-grid-colors` setting
+/// to your global defaults,
+/// which you can override in `$susy`.
+/// It also provides you with a new function,
+/// `susy-svg-grid()`,
+/// which will return inline svg for use in
+/// backgrounds or generated content.
+///
+/// This function come with an unprefixed alias by default,
+/// using the `svg-grid` import.
+/// If you only only want prefixed versions of the API,
+/// import the `svg-grid/prefix` partial instead.
+///
+/// @group plugin_svg-grid
+///
+/// @example scss - importing the plugin
+/// // The full path to import Susy will depend on your setup…
+///
+/// // unprefixed
+/// @import 'plugins/svg-grid';
+///
+/// // prefixed
+/// @import 'plugins/svg-grid/prefix';
+///
+/// @example scss - generating background grids
+/// .grid {
+/// background: susy-svg-grid() no-repeat scroll;
+/// }
+
+
+
+// SVG Grid
+// --------
+/// Return inline svg-data in to display the grid.
+///
+/// @group plugin_svg-grid
+///
+/// @param {Map | List} $grid [$susy] -
+/// Map or shorthand defining the current grid
+/// @param {Color | List | null} $colors [null] -
+/// Column color, or list of colors for column-gradient,
+/// used to override the global `svg-grid-colors` setting
+/// @param {Length | null} $offset [null] -
+/// Manually override the default grid-image offset,
+/// to account for grid edges
+///
+/// @return {String} -
+/// CSS inline-data SVG string, in `url()` format,
+/// for use in image or content properties
+/// @example scss
+/// .grid {
+/// background: susy-svg-grid() no-repeat scroll;
+/// }
+@function susy-svg-grid(
+ $grid: $susy,
+ $colors: null,
+ $offset: null
+) {
+ // Grid parsing & normalizing
+ $grid: susy-compile($grid, $context-only: true);
+
+ // Color and gradient handling
+ $gradient: '';
+
+ @if (not $colors) {
+ $colors: susy-get('svg-grid-colors');
+ }
+
+ @if length($colors) > 1 {
+ $gradient: _susy-svg-gradient($colors);
+ $colors: 'url(%23susy-svg-gradient)';
+ } @else {
+ $colors: _susy-svg-color($colors);
+ }
+
+ // Get a default image-width
+ $span: (
+ 'span': map-get($grid, 'columns'),
+ 'spread': map-get($grid, 'container-spread'),
+ );
+ $span: map-merge($grid, $span);
+ $image-width: su-call('su-span', $span);
+ $image-width: if((type-of($image-width) == 'number'), $image-width, 100%);
+
+ // SVG construction
+ $columns: map-get($grid, 'columns');
+ $offset: $offset or _susy-svg-offset($grid);
+
+ $attrs: 'fill="#{$colors}" width="#{$image-width}"';
+ $svg: 'data:image/svg+xml,';
+ $svg: $svg + '%3Csvg xmlns="http://www.w3.org/2000/svg" #{$attrs} %3E';
+ $svg: $svg + $gradient;
+
+ @for $column from 1 through length($columns) {
+ $width: susy-span(1 narrow at $column, $grid);
+ $x: _susy-svg-column-position($column, $grid);
+
+ $svg: $svg + _susy-svg-rect($x, $width, $offset);
+ }
+
+ @return url('#{$svg}%3C/svg%3E');
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss
new file mode 100755
index 0000000..044801a
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss
@@ -0,0 +1,67 @@
+// SVG Grid Math
+// =============
+
+
+
+// SVG Column Position
+// -------------------
+/// Determine the proper horizontal position
+/// for a column rectangle
+///
+/// @access private
+///
+/// @param {Integer} $column -
+/// 1-indexed column location on the grid
+/// @param {Map} $grid -
+/// Normalized settings map representing the current grid
+///
+/// @return {Length} -
+/// Horizontal position of svg column rectangle,
+/// as distance from the grid edge
+@function _susy-svg-column-position(
+ $column,
+ $grid
+) {
+ $x: $column - 1;
+
+ @if ($x > 0) {
+ $x: susy-span(first $x wide, $grid);
+ }
+
+ @return $x;
+}
+
+
+
+// SVG Offset
+// ----------
+/// Determine if a grid image needs to be offset,
+/// to account for edge gutters.
+///
+/// @access private
+///
+/// @param {Map} $grid -
+/// Normalized settings map representing the current grid
+///
+/// @return {Length | null} -
+/// Expected distance from container edge to first column,
+/// based on spread values and gutter-widths
+@function _susy-svg-offset(
+ $grid
+) {
+ $columns: su-valid-columns(map-get($grid, 'columns'));
+ $gutters: su-valid-gutters(map-get($grid, 'gutters'));
+ $container: su-valid-spread(map-get($grid, 'container-spread')) + 1;
+
+ @if ($container == 0) {
+ @return null;
+ }
+
+ $gutter: su-call('su-gutter', $grid);
+
+ @if (type-of($gutter) == 'string') {
+ @return 'calc(#{$container} * #{$gutter} / 2)';
+ }
+
+ @return $container * $gutter / 2;
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss
new file mode 100755
index 0000000..3fcc91f
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss
@@ -0,0 +1,14 @@
+// SVG Settings
+// ============
+
+
+// Susy SVG Defaults
+// =================
+/// This plugin adds the `svg-grid-colors` property
+/// and default value to `$_susy-defaults` —
+/// you can override that value in `$susy`
+/// or any other grid settings map.
+/// @group plugin_svg-grid
+$_susy-defaults: map-merge((
+ 'svg-grid-colors': hsla(120, 50%, 50%, 0.5) hsla(120, 50%, 75%, 0.5),
+ ), $_susy-defaults);
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss
new file mode 100755
index 0000000..187157c
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss
@@ -0,0 +1,18 @@
+// Unprefix Susy SVG Grid
+// ======================
+
+
+
+// SVG Grid
+// --------
+/// Un-prefixed alias for `susy-svg-grid`
+///
+/// @group plugin_svg-grid
+/// @alias susy-svg-grid
+@function svg-grid(
+ $grid: $susy,
+ $colors: susy-get('svg-grid-colors'),
+ $offset: null
+) {
+ @return susy-svg-grid($grid, $colors, $offset);
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss
new file mode 100755
index 0000000..e4bf18f
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss
@@ -0,0 +1,133 @@
+// SVG Utilities
+// =============
+
+
+
+// SVG Validate Units
+// ------------------
+/// Make sure a length is supported in svg
+///
+/// @access private
+///
+/// @param {Length} $length -
+/// The length to validate
+/// @param {String} $name [null] -
+/// Optional name of length origin,
+/// for error reporting
+///
+/// @return {Length} -
+/// An svg-validated length, or comparable valid length
+@function _susy-svg-validate-units(
+ $length,
+ $name: null
+) {
+ $_svg-units: ('em', 'ex', 'px', 'pt', 'pc', 'cm', 'mm', 'in', '%');
+ $string: type-of($length) == 'string';
+
+ @if ($length == 0) or ($string) or index($_svg-units, unit($length)) {
+ @return $length;
+ }
+
+ @return _susy-error(
+ '`#{unit($length)}` #{$name} units are not supported in SVG',
+ '_susy-svg-validate-units');
+}
+
+
+
+// SVG Rect
+// --------
+/// Build a single svg rectangle
+///
+/// @access private
+///
+/// @param {Length} $x -
+/// Horizontal position for the rectangle
+/// @param {Length} $width -
+/// Width of the rectangle
+/// @param {Length} $offset [null] -
+/// Offset the rectangle, to account for edge gutters
+///
+/// @return {String} -
+/// Escaped string representing one svg rectangle
+@function _susy-svg-rect(
+ $x,
+ $width,
+ $offset: null
+) {
+ $x: _susy-svg-validate-units($x);
+ $width: _susy-svg-validate-units($width);
+ $offset: if($offset == 0, null, $offset);
+
+ @if (type-of($offset) == 'number') and (type-of($x) == 'number') {
+ @if comparable($x, $offset) {
+ $x: $x + $offset;
+ } @else {
+ $x: 'calc(#{$x} + #{$offset})';
+ }
+ } @else if $offset and ($x != 0) {
+ $x: 'calc(#{$x} + #{$offset})';
+ } @else if $offset {
+ $x: $offset;
+ }
+
+ @return '%3Crect x="#{$x}" width="#{$width}" height="100%"/%3E';
+}
+
+
+
+// SVG Color
+// ---------
+/// Stringify colors, and escape hex symbol
+///
+/// @access private
+///
+/// @param {Color} $color -
+/// Color to stringify and escape
+///
+/// @return {String} -
+/// Escaped string value of color
+@function _susy-svg-color(
+ $color
+) {
+ $color: inspect($color); // convert to string
+
+ @if (str-index($color, '#') == 1) {
+ $color: '%23' + str-slice($color, 2);
+ }
+
+ @return $color;
+}
+
+
+
+// SVG Gradient
+// ------------
+/// Create a multi-color svg gradient
+///
+/// @access private
+///
+/// @param {List} $colors -
+/// List of colors to be equally spaced from `0%` to `100%`
+/// in each column rectangle
+///
+/// @return {String} -
+/// Escaped string representing one svg gradient
+/// (`id="susy-svg-gradient"`)
+@function _susy-svg-gradient(
+ $colors
+) {
+ $gradient: '%3Cdefs%3E%3ClinearGradient spreadMethod="pad"';
+ $gradient: '#{$gradient} id="susy-svg-gradient"';
+ $gradient: '#{$gradient} x1="0%" y1="0%" x2="100%" y2="0%"%3E';
+
+ @for $i from 1 through length($colors) {
+ $color: _susy-svg-color(nth($colors, $i));
+ $offset: percentage(($i - 1) / (length($colors) - 1));
+ $stop: '%3Cstop offset="#{$offset}" style="stop-color:#{$color};" /%3E';
+
+ $gradient: $gradient + $stop;
+ }
+
+ @return $gradient + '%3C/linearGradient%3E%3C/defs%3E';
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_api.scss b/_sass/minimal-mistakes/vendor/susy/susy/_api.scss
new file mode 100755
index 0000000..de8c9bd
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_api.scss
@@ -0,0 +1,318 @@
+/// Susy3 API Functions
+/// ===================
+/// These three functions form the core of Susy's
+/// layout-building grid API.
+///
+/// - Use `span()` and `gutter()` to return any grid-width,
+/// and apply the results wherever you need them:
+/// CSS `width`, `margin`, `padding`, `flex-basis`, `transform`, etc.
+/// - For asymmetrical-fluid grids,
+/// `slice()` can help manage your nesting context.
+///
+/// All three functions come with an unprefixed alias by default,
+/// using the `susy` import.
+/// Import the `susy-prefix` partial instead,
+/// if you only only want prefixed versions of the API.
+///
+/// This is a thin syntax-sugar shell around
+/// the "Su" core-math functions: `su-span`, `su-gutter`, and `su-slice`.
+/// If you prefer the more constrained syntax of the math engine,
+/// you are welcome to use those functions instead.
+///
+/// @group b-api
+/// @see susy-span
+/// @see susy-gutter
+/// @see susy-slice
+/// @see su-span
+/// @see su-gutter
+/// @see su-slice
+
+
+
+/// ## Shorthand
+///
+/// All functions draw on the same shorthand syntax in two parts,
+/// seperated by the word `of`.
+///
+/// ### Span Syntax: `` [`` ``]
+/// The first part describes the
+/// **span** width, location, and spread in any order.
+/// Only the width is required:
+///
+/// - `span(2)` will return the width of 2 columns.
+/// - `span(3 wide)` will return 3-columns, with an additional gutter.
+/// - location is only needed with asymmetrical grids,
+/// where `span(3 at 2)` will return the width of
+/// specific columns on the grid.
+/// Since these are functions, they will not handle placement for you.
+///
+/// ### Context Syntax: `[of ]`
+/// The second half of Susy's shorthand
+/// describes the grid-**context** –
+/// available columns, container-spread, and optional gutter override –
+/// in any order.
+/// All of these settings have globally-defined defaults:
+///
+/// - `span(2 of 6)` will set the context to
+/// a slice of 6 columns from the global grid.
+/// More details below.
+/// - `span(2 of 12 wide)` changes the container-spread
+/// as well as the column-context.
+/// - `span(2 of 12 set-gutters 0.5em)`
+/// will override the global gutters setting
+/// for this one calculation.
+///
+/// A single unitless number for `columns`
+/// will be treated as a slice of the parent grid.
+/// On a grid with `columns: susy-repeat(12, 120px)`,
+/// the shorthand `of 4` will use the parent `120px` column-width.
+/// You can also be more explicit,
+/// and say `of susy-repeat(4, 100px)`.
+/// If you are using asymmetrical grids,
+/// like `columns: (1 1 2 3 5 8)`,
+/// Susy can't slice it for you without knowing which columns you want.
+/// The `slice` function accepts exactly the same syntax as `span`,
+/// but returns a list of columns rather than a width.
+/// Use it in your context like `of slice(first 3)`.
+///
+/// @group b-api
+
+
+
+// Susy Span
+// ---------
+/// This is the primary function in Susy —
+/// used to return the width of a span across one or more columns,
+/// and any relevant gutters along the way.
+/// With the default settings,
+/// `span(3)` will return the width of 3 columns,
+/// and the 2 intermediate gutters.
+/// This can be used to set the `width` property of grid elements,
+/// or `margin` and `padding`
+/// to push, pull, and pad your elements.
+///
+/// - This is a thin syntax-sugar shell around
+/// the core-math `su-span()` function.
+/// - The un-prefixed alias `span()` is available by default.
+///
+/// @group b-api
+/// @see su-span
+/// @see $susy
+///
+/// @param {list} $span -
+/// Shorthand expression to define the width of the span,
+/// optionally containing:
+/// - a count, length, or column-list span.
+/// - `at $n`, `first`, or `last` location on asymmetrical grids,
+/// where `at 1 == first`,
+/// and `last` will calculate the proper location
+/// based on columns and span.
+/// - `narrow`, `wide`, or `wider` for optionally spreading
+/// across adjacent gutters.
+/// - `of $n ` for available grid columns
+/// and spread of the container.
+/// Span counts like `of 6` are valid
+/// in the context of symmetrical grids,
+/// where Susy can safely infer a slice of the parent columns.
+/// - and `set-gutters $n` to override global gutter settings.
+///
+/// @param {map} $config [()] -
+/// Optional map of Susy grid configuration settings.
+/// See `$susy` documentation for details.
+///
+/// @return {length} -
+/// Calculated length value, using the units given,
+/// or converting to `%` for fraction-based grids,
+/// or a full `calc` function when units/fractions
+/// are not comparable outside the browser.
+///
+/// @example scss - span half the grid
+/// .foo {
+/// // the result is a bit under 50% to account for gutters
+/// width: susy-span(6 of 12);
+/// }
+///
+/// @example scss - span a specific segment of asymmetrical grid
+/// .foo {
+/// width: susy-span(3 at 3 of (1 2 3 5 8));
+/// }
+@function susy-span(
+ $span,
+ $config: ()
+) {
+ $output: susy-compile($span, $config);
+
+ @if map-get($output, 'span') {
+ @return su-call('su-span', $output);
+ }
+
+ $actual: '[#{type-of($span)}] `#{inspect($span)}`';
+ @return _susy-error(
+ 'Unable to determine span value from #{$actual}.',
+ 'susy-span');
+}
+
+
+
+// Susy Gutter
+// -----------
+/// The gutter function returns
+/// the width of a single gutter on your grid,
+/// to be applied where you see fit –
+/// on `margins`, `padding`, `transform`, or element `width`.
+///
+/// - This is a thin syntax-sugar shell around
+/// the core-math `su-gutter()` function.
+/// - The un-prefixed alias `gutter()` is available by default.
+///
+/// @group b-api
+/// @see su-gutter
+/// @see $susy
+///
+/// @param {list | number} $context [null] -
+/// Optional context for nested gutters,
+/// including shorthand for
+/// `columns`, `gutters`, and `container-spread`
+/// (additional shorthand will be ignored)
+///
+/// @param {map} $config [()] -
+/// Optional map of Susy grid configuration settings.
+/// See `$susy` documentation for details.
+///
+/// @return {length} -
+/// Width of a gutter as `%` of current context,
+/// or in the units defined by `column-width` when available
+///
+/// @example scss - add gutters before or after an element
+/// .floats {
+/// float: left;
+/// width: span(3 of 6);
+/// margin-left: gutter(of 6);
+/// }
+///
+/// @example scss - add gutters to padding
+/// .flexbox {
+/// flex: 1 1 span(3 wide of 6 wide);
+/// padding: gutter(of 6) / 2;
+/// }
+///
+@function susy-gutter(
+ $context: susy-get('columns'),
+ $config: ()
+) {
+ $context: susy-compile($context, $config, 'context-only');
+
+ @return su-call('su-gutter', $context);
+}
+
+
+
+// Susy Slice
+// ----------
+/// Working with asymmetrical grids (un-equal column widths)
+/// can be challenging –
+/// expecially when they involve fluid/fractional elements.
+/// Describing a context `of (15em 6em 6em 6em 15em)` is a lot
+/// to put inside the span or gutter function shorthand.
+/// This slice function returns a sub-slice of asymmetrical columns to use
+/// for a nested context.
+/// `slice(3 at 2)` will give you a subset of the global grid,
+/// spanning 3 columns, starting with the second.
+///
+/// - This is a thin syntax-sugar shell around
+/// the core-math `su-slice()` function.
+/// - The un-prefixed alias `slice()` is available by default.
+///
+/// @group b-api
+/// @see su-slice
+/// @see $susy
+///
+/// @param {list} $span -
+/// Shorthand expression to define the subset span, optionally containing:
+/// - `at $n`, `first`, or `last` location on asymmetrical grids;
+/// - `of $n ` for available grid columns
+/// and spread of the container
+/// - Span-counts like `of 6` are only valid
+/// in the context of symmetrical grids
+/// - Valid spreads include `narrow`, `wide`, or `wider`
+///
+/// @param {map} $config [()] -
+/// Optional map of Susy grid configuration settings.
+/// See `$susy` documentation for details.
+///
+/// @return {list} -
+/// Subset list of columns for use for a nested context
+///
+/// @example scss - Return a nested segment of asymmetrical grid
+/// $context: susy-slice(3 at 3 of (1 2 3 5 8));
+/// /* $context: #{$context}; */
+@function susy-slice(
+ $span,
+ $config: ()
+) {
+ $span: susy-compile($span, $config);
+
+ @return su-call('su-slice', $span);
+}
+
+
+
+/// ## Building Grids
+/// The web has come a long way
+/// since the days of double-margin-hacks
+/// and inconsistent subpixel rounding.
+/// In addition to floats and tables,
+/// we can now use much more powerful tools,
+/// like flexbox and CSS grid,
+/// to build more interesting and responsive layouts.
+///
+/// With Susy3, we hope you'll start moving in that direction.
+/// You can still build classic 12-column Grid Systems,
+/// and we'll help you get there,
+/// but Susy3 is primarily designed for a grid-math-on-demand
+/// approach to layout:
+/// applying our functions only where you really need grid math.
+/// Read the [intro article by OddBird][welcome] for more details.
+///
+/// [welcome]: http://oddbird.net/2017/06/28/susy3/
+///
+/// @group b-api
+/// @link http://oddbird.net/2017/06/28/susy3/ Article: Welcome to Susy3
+///
+/// @example scss - floats
+/// .float {
+/// width: span(3);
+/// margin-right: gutter();
+/// }
+///
+/// @example scss - flexbox
+/// .flexbox {
+/// flex: 1 1 span(3);
+/// // half a gutter on either side…
+/// padding: 0 gutter() / 2;
+/// }
+///
+/// @example scss - pushing and pulling
+/// .push-3 {
+/// margin-left: span(3 wide);
+/// }
+///
+/// .pull-3 {
+/// margin-left: 0 - span(3 wide);
+/// }
+///
+/// @example scss - building an attribute system
+/// // markup example:
+/// [data-span] {
+/// float: left;
+///
+/// &:not([data-span*='last']) {
+/// margin-right: gutter();
+/// }
+/// }
+///
+/// @for $span from 1 through length(susy-get('columns')) {
+/// [data-span*='#{$span}'] {
+/// width: span($span);
+/// }
+/// }
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss b/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss
new file mode 100755
index 0000000..a988504
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss
@@ -0,0 +1,261 @@
+/// Syntax Normalization
+/// ====================
+/// Susy is divided into two layers:
+/// "Su" provides the core math functions with a stripped-down syntax,
+/// while "Susy" adds global settings, shorthand syntax,
+/// and other helpers.
+/// Each setting (e.g. span, location, columns, spread, etc.)
+/// has a single canonical syntax in Su.
+///
+/// This normalization module helps translate between those layers,
+/// transforming parsed Susy input into
+/// values that Su will understand.
+///
+/// @group x-normal
+///
+/// @see susy-normalize
+/// @see susy-normalize-span
+/// @see susy-normalize-columns
+/// @see susy-normalize-spread
+/// @see susy-normalize-location
+
+
+
+// Susy Normalize
+// --------------
+/// Normalize the values in a configuration map.
+/// In addition to the global `$susy` properties,
+/// this map can include local span-related imformation,
+/// like `span` and `location`.
+///
+/// Normalization does not check that values are valid,
+/// which will happen in the Su math layer.
+/// These functions merely look for known Susy syntax –
+/// returning a map with those shorthand values
+/// converted into low-level data for Su.
+/// For example `span: all` and `location: first`
+/// will be converted into specific numbers.
+///
+/// @group x-normal
+/// @see $susy
+/// @see susy-parse
+///
+/// @param {map} $config -
+/// Map of Susy configuration settings to normalize.
+/// See `$susy` and `susy-parse()` documentation for details.
+/// @param {map | null} $context [null] -
+/// Map of Susy configuration settings to use as global reference,
+/// or `null` to use global settings.
+///
+/// @return {map} -
+/// Map of Susy configuration settings,
+/// with all values normalized for Su math functions.
+@function susy-normalize(
+ $config,
+ $context: null
+) {
+ // Spread
+ @each $setting in ('spread', 'container-spread') {
+ $value: map-get($config, $setting);
+
+ @if $value {
+ $value: susy-normalize-spread($value);
+ $config: map-merge($config, ($setting: $value));
+ }
+ }
+
+ // Columns
+ $columns: map-get($config, 'columns');
+
+ @if $columns {
+ $columns: susy-normalize-columns($columns, $context);
+ $config: map-merge($config, ('columns': $columns));
+ }
+
+ @if not $columns {
+ $map: type-of($context) == 'map';
+ $columns: if($map, map-get($context, 'columns'), null);
+ $columns: $columns or susy-get('columns');
+ }
+
+ // Span
+ $span: map-get($config, 'span');
+
+ @if $span {
+ $span: susy-normalize-span($span, $columns);
+ $config: map-merge($config, ('span': $span));
+ }
+
+ // Location
+ $location: map-get($config, 'location');
+
+ @if $location {
+ $location: susy-normalize-location($span, $location, $columns);
+ $config: map-merge($config, ('location': $location));
+ }
+
+ @return $config;
+}
+
+
+
+// Normalize Span
+// --------------
+/// Normalize `span` shorthand for Su.
+/// Su span syntax allows an explicit length (e.g. `3em`),
+/// unitless column-span number (e.g. `3` columns),
+/// or an explicit list of columns (e.g. `(3 5 8)`).
+///
+/// Susy span syntax also allows the `all` keyword,
+/// which will be converted to a slice of the context
+/// in normalization.
+///
+/// @group x-normal
+///
+/// @param {number | list | 'all'} $span -
+/// Span value to normalize.
+/// @param {list} $columns -
+/// Normalized list of columns in the grid
+///
+/// @return {number | list} -
+/// Number or list value for `$span`
+@function susy-normalize-span(
+ $span,
+ $columns: susy-get('columns')
+) {
+ @if ($span == 'all') {
+ @return length($columns);
+ }
+
+ @return $span;
+}
+
+
+
+// Normalize Columns
+// -----------------
+/// Normalize `column` shorthand for Su.
+/// Su column syntax only allows column lists (e.g. `120px 1 1 1 120px`).
+///
+/// Susy span syntax also allows a unitless `slice` number (e.g `of 5`),
+/// which will be converted to a slice of the context
+/// in normalization.
+///
+/// @group x-normal
+///
+/// @param {list | integer} $columns -
+/// List of available columns,
+/// or unitless integer representing a slice of
+/// the available context.
+/// @param {map | null} $context [null] -
+/// Map of Susy configuration settings to use as global reference,
+/// or `null` to access global settings.
+///
+/// @return {list} -
+/// Columns list value, normalized for Su input.
+///
+/// @throws
+/// when attempting to access a slice of asymmetrical context
+@function susy-normalize-columns(
+ $columns,
+ $context: null
+) {
+ $context: $context or susy-settings();
+
+ @if type-of($columns) == 'list' {
+ @return _susy-flatten($columns);
+ }
+
+ @if (type-of($columns) == 'number') and (unitless($columns)) {
+ $span: $columns;
+ $context: map-get($context, 'columns');
+ $symmetrical: susy-repeat(length($context), nth($context, 1));
+
+ @if ($context == $symmetrical) {
+ @return susy-repeat($span, nth($context, 1));
+ } @else {
+ $actual: 'of `#{$span}`';
+ $columns: 'grid-columns `#{$context}`';
+ @return _susy-error(
+ 'context-slice #{$actual} can not be determined based on #{$columns}.',
+ 'susy-normalize-columns');
+ }
+ }
+
+ @return $columns;
+}
+
+
+
+// Normalize Spread
+// ----------------
+/// Normalize `spread` shorthand for Su.
+/// Su spread syntax only allows the numbers `-1`, `0`, or `1` –
+/// representing the number of gutters covered
+/// in relation to columns spanned.
+///
+/// Susy spread syntax also allows keywords for each value –
+/// `narrow` for `-1`, `wide` for `0`, or `wider` for `1` –
+/// which will be converted to their respective integers
+/// in normalization.
+///
+/// @group x-normal
+///
+/// @param {0 | 1 | -1 | 'narrow' | 'wide' | 'wider'} $spread -
+/// Spread across adjacent gutters, relative to a column-count —
+/// either `narrow` (-1), `wide` (0), or `wider` (1)
+///
+/// @return {number} -
+/// Numeric value for `$spread`
+@function susy-normalize-spread(
+ $spread
+) {
+ $normal-spread: (
+ 'narrow': -1,
+ 'wide': 0,
+ 'wider': 1,
+ );
+
+ @return map-get($normal-spread, $spread) or $spread;
+}
+
+
+
+// Normalize Location
+// ------------------
+/// Normalize `location` shorthand for Su.
+/// Su location syntax requires the (1-indexed) number for a column.
+///
+/// Susy also allows the `first` and `last` keywords,
+/// where `first` is always `1`,
+/// and `last` is calculated based on span and column values.
+/// Both keywords are normalized into an integer index
+/// in normalization.
+///
+/// @group x-normal
+///
+/// @param {number} $span -
+/// Number of grid-columns to be spanned
+/// @param {integer | 'first' | 'last'} $location -
+/// Starting (1-indexed) column position of a span,
+/// or a named location keyword.
+/// @param {list} $columns -
+/// Already-normalized list of columns in the grid.
+///
+/// @return {integer} -
+/// Numeric value for `$location`
+@function susy-normalize-location(
+ $span,
+ $location,
+ $columns
+) {
+ $count: length($columns);
+ $normal-locations: (
+ 'first': 1,
+ 'alpha': 1,
+ 'last': $count - $span + 1,
+ 'omega': $count - $span + 1,
+ );
+
+ @return map-get($normal-locations, $location) or $location;
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss b/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss
new file mode 100755
index 0000000..98aa40a
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss
@@ -0,0 +1,163 @@
+/// Shorthand Syntax Parser
+/// =======================
+/// The syntax parser converts [shorthand syntax][short]
+/// into a map of settings that can be compared/merged with
+/// other config maps and global setting.
+///
+/// [short]: b-api.html
+///
+/// @group x-parser
+
+
+
+// Parse
+// -----
+/// The `parse` function provides all the syntax-sugar in Susy,
+/// converting user shorthand
+/// into a usable map of keys and values
+/// that can be normalized and passed to Su.
+///
+/// @group x-parser
+/// @see $susy
+///
+/// @param {list} $shorthand -
+/// Shorthand expression to define the width of the span,
+/// optionally containing:
+/// - a count, length, or column-list span;
+/// - `at $n`, `first`, or `last` location on asymmetrical grids;
+/// - `narrow`, `wide`, or `wider` for optionally spreading
+/// across adjacent gutters;
+/// - `of $n ` for available grid columns
+/// and spread of the container
+/// (span counts like `of 6` are only valid
+/// in the context of symmetrical grids);
+/// - and `set-gutters $n` to override global gutter settings
+/// @param {bool} $context-only [false] -
+/// Allow the parser to ignore span and span-spread values,
+/// only parsing context and container-spread.
+/// This makes it possible to accept spanless values,
+/// like the `gutters()` syntax.
+/// When parsing context-only,
+/// the `of` indicator is optional.
+///
+/// @return {map} -
+/// Map of span and grid settings
+/// parsed from shorthand input –
+/// including all the properties available globally –
+/// `columns`, `gutters`, `spread`, `container-spread` –
+/// along with the span-specific properties
+/// `span`, and `location`.
+///
+/// @throw
+/// when a shorthand value is not recognized
+@function susy-parse(
+ $shorthand,
+ $context-only: false
+) {
+ $parse-error: 'Unknown shorthand property:';
+ $options: (
+ 'first': 'location',
+ 'last': 'location',
+ 'alpha': 'location',
+ 'omega': 'location',
+ 'narrow': 'spread',
+ 'wide': 'spread',
+ 'wider': 'spread',
+ );
+
+ $return: ();
+ $span: null;
+ $columns: null;
+
+ $of: null;
+ $next: false;
+
+ // Allow context-only shorthand, without span
+ @if ($context-only) and (not index($shorthand, 'of')) {
+ @if su-valid-columns($shorthand, 'fail-silent') {
+ $shorthand: 'of' $shorthand;
+ } @else {
+ $shorthand: join('of', $shorthand);
+ }
+ }
+
+ // loop through the shorthand list
+ @for $i from 1 through length($shorthand) {
+ $item: nth($shorthand, $i);
+ $type: type-of($item);
+ $error: false;
+ $details: '[#{$type}] `#{$item}`';
+
+ // if we know what's supposed to be coming next…
+ @if $next {
+
+ // Add to the return map
+ $return: map-merge($return, ($next: $item));
+
+ // Reset next to `false`
+ $next: false;
+
+ } @else { // If we don't know what's supposed to be coming…
+
+ // Keywords…
+ @if ($type == 'string') {
+ // Check the map for keywords…
+ @if map-has-key($options, $item) {
+ $setting: map-get($options, $item);
+
+ // Spread could be on the span or the container…
+ @if ($setting == 'spread') and ($of) {
+ $return: map-merge($return, ('container-spread': $item));
+ } @else {
+ $return: map-merge($return, ($setting: $item));
+ }
+
+ } @else if ($item == 'all') {
+ // `All` is a span shortcut
+ $span: 'all';
+ } @else if ($item == 'at') {
+ // Some keywords setup what's next…
+ $next: 'location';
+ } @else if ($item == 'set-gutters') {
+ $next: 'gutters';
+ } @else if ($item == 'of') {
+ $of: true;
+ } @else {
+ $error: true;
+ }
+
+ } @else if ($type == 'number') or ($type == 'list') { // Numbers & lists…
+
+ @if not ($span or $of) {
+ // We don't have a span, and we're not expecting context…
+ $span: $item;
+ } @else if ($of) and (not $columns) {
+ // We are expecting context…
+ $columns: $item;
+ } @else {
+ $error: true;
+ }
+
+ } @else {
+ $error: true;
+ }
+ }
+
+ @if $error {
+ @return _susy-error('#{$parse-error} #{$details}', 'susy-parse');
+ }
+ }
+
+ // If we have span, merge it in
+ @if $span {
+ $return: map-merge($return, ('span': $span));
+ }
+
+ // If we have columns, merge them in
+ @if $columns {
+ $return: map-merge($return, ('columns': $columns));
+ }
+
+ // Return the map of settings…
+ @return $return;
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss b/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss
new file mode 100755
index 0000000..b824477
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss
@@ -0,0 +1,329 @@
+/// Susy3 Configuration
+/// ===================
+/// Susy3 has 4 core settings, in a single settings map.
+/// You'll notice a few differences from Susy2:
+///
+/// **Columns** no longer accept a single number, like `12`,
+/// but use a syntax more similar to the new
+/// CSS [grid-template-columns][columns] –
+/// a list of relative sizes for each column on the grid.
+/// Unitless numbers in Susy act very similar to `fr` units in CSS,
+/// and the `susy-repeat()` function (similar to the css `repeat()`)
+/// helps quickly establish equal-width columns.
+///
+/// [columns]: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns
+///
+/// - `susy-repeat(12)` will create 12 fluid, equal-width columns
+/// - `susy-repeat(6, 120px)` will create 6 equal `120px`-wide columns
+/// - `120px susy-repeat(4) 120px` will create 6 columns,
+/// the first and last are `120px`,
+/// while the middle 4 are equal fractions of the remainder.
+/// Susy will output `calc()` values in order to achieve this.
+///
+/// **Gutters** haven't changed –
+/// a single fraction or explicit width –
+/// but the `calc()` output feature
+/// means you can now use any combination of units and fractions
+/// to create static-gutters on a fluid grid, etc.
+///
+/// **Spread** existed in the Susy2 API as a span option,
+/// and was otherwise handled behind the scenes.
+/// Now we're giving you full control over all spread issues.
+/// You can find a more [detailed explanation of spread on the blog][spread].
+///
+/// [spread]: http://oddbird.net/2017/06/13/susy-spread/
+///
+/// You can access your global settings at any time
+/// with the `susy-settings()` function,
+/// or grab a single setting from the global scope
+/// with `susy-get('columns')`, `susy-get('gutters')` etc.
+///
+/// @group a-config
+/// @link http://oddbird.net/2017/06/13/susy-spread/
+/// Article: Understanding Spread in Susy3
+///
+/// @see $susy
+/// @see susy-settings
+/// @see susy-get
+
+
+
+// Susy
+// ----
+/// The grid is defined in a single map variable,
+/// with four initial properties:
+/// `columns`, `gutters`, `spread` and `container-spread`.
+/// Anything you put in the root `$susy` variable map
+/// will be treated as a global project default.
+/// You can create similar configuration maps
+/// under different variable names,
+/// to override the defaults as-needed.
+///
+/// @group a-config
+/// @type Map
+///
+/// @see $_susy-defaults
+/// @see {function} susy-repeat
+/// @link
+/// https://codepen.io/mirisuzanne/pen/EgmJJp?editors=1100
+/// Spread examples on CodePen
+///
+/// @prop {list} columns -
+/// Columns are described by a list of numbers,
+/// representing the relative width of each column.
+/// The syntax is a simplified version of CSS native
+/// `grid-template-columns`,
+/// expecting a list of grid-column widths.
+/// Unitless numbers create fractional fluid columns
+/// (similar to the CSS-native `fr` unit),
+/// while length values (united numbers)
+/// are used to define static columns.
+/// You can mix-and match units and fractions,
+/// to create a mixed grid.
+/// Susy will generate `calc()` values when necessary,
+/// to make all your units work together.
+///
+/// Use the `susy-repeat($count, $value)` function
+/// to more easily repetative columns,
+/// similar to the CSS-native `repeat()`.
+///
+/// - `susy-repeat(8)`:
+/// an 8-column, symmetrical, fluid grid.
+/// Identical to `(1 1 1 1 1 1 1 1)`.
+/// - `susy-repeat(6, 8em)`:
+/// a 6-column, symmetrical, em-based grid.
+/// Identical to `(8em 8em 8em 8em 8em 8em)`.
+/// - `(300px susy-repeat(4) 300px)`:
+/// a 6-column, asymmetrical, mixed fluid/static grid
+/// using `calc()` output.
+/// Identical to `(300px 1 1 1 1 300px)`.
+///
+/// **NOTE** that `12` is no longer a valid 12-column grid definition,
+/// and you must list all the columns individually
+/// (or by using the `susy-repeat()` function).
+///
+/// @prop {number} gutters -
+/// Gutters are defined as a single width,
+/// or fluid ratio, similar to the native-CSS
+/// `grid-column-gap` syntax.
+/// Similar to columns,
+/// gutters can use any valid CSS length unit,
+/// or unitless numbers to define a relative fraction.
+///
+/// - `0.5`:
+/// a fluid gutter, half the size of a single-fraction column.
+/// - `1em`:
+/// a static gutter, `1em` wide.
+///
+/// Mix static gutters with fluid columns, or vice versa,
+/// and Susy will generate the required `calc()` to make it work.
+///
+/// @prop {string} spread [narrow] -
+/// Spread of an element across adjacent gutters:
+/// either `narrow` (none), `wide` (one), or `wider` (two)
+///
+/// - Both spread settings default to `narrow`,
+/// the most common use-case.
+/// A `narrow` spread only has gutters *between* columns
+/// (one less gutter than columns).
+/// This is how all css-native grids work,
+/// and most margin-based grid systems.
+/// - A `wide` spread includes the same number of gutters as columns,
+/// spanning across a single side-gutter.
+/// This is how most padding-based grid systems often work,
+/// and is also useful for pushing and pulling elements into place.
+/// - The rare `wider` spread includes gutters
+/// on both sides of the column-span
+/// (one more gutters than columns).
+///
+/// @prop {string} container-spread [narrow] -
+/// Spread of a container around adjacent gutters:
+/// either `narrow` (none), `wide` (one), or `wider` (two).
+/// See `spread` property for details.
+///
+/// @since 3.0.0-beta.1 -
+/// `columns` setting no longer accepts numbers
+/// (e.g. `12`) for symmetrical fluid grids,
+/// or the initial `12 x 120px` syntax for
+/// symmetrical fixed-unit grids.
+/// Use `susy-repeat(12)` or `susy-repeat(12, 120px)` instead.
+///
+/// @example scss - default values
+/// // 4 symmetrical, fluid columns
+/// // gutters are 1/4 the size of a column
+/// // elements span 1 less gutter than columns
+/// // containers span 1 less gutter as well
+/// $susy: (
+/// 'columns': susy-repeat(4),
+/// 'gutters': 0.25,
+/// 'spread': 'narrow',
+/// 'container-spread': 'narrow',
+/// );
+///
+/// @example scss - inside-static gutters
+/// // 6 symmetrical, fluid columns…
+/// // gutters are static, triggering calc()…
+/// // elements span equal columns & gutters…
+/// // containers span equal columns & gutters…
+/// $susy: (
+/// 'columns': susy-repeat(6),
+/// 'gutters': 0.5em,
+/// 'spread': 'wide',
+/// 'container-spread': 'wide',
+/// );
+$susy: () !default;
+
+
+
+// Susy Repeat
+// -----------
+/// Similar to the `repeat(, )` function
+/// that is available in native CSS Grid templates,
+/// the `susy-repeat()` function helps generate repetative layouts
+/// by repeating any value a given number of times.
+/// Where Susy previously allowed `8` as a column definition
+/// for 8 equal columns, you should now use `susy-repeat(8)`.
+///
+/// @group a-config
+///
+/// @param {integer} $count -
+/// The number of repetitions, e.g. `12` for a 12-column grid.
+/// @param {*} $value [1] -
+/// The value to be repeated.
+/// Technically any value can be repeated here,
+/// but the function exists to repeat column-width descriptions:
+/// e.g. the default `1` for single-fraction fluid columns,
+/// `5em` for a static column,
+/// or even `5em 120px` if you are alternating column widths.
+///
+/// @return {list} -
+/// List of repeated values
+///
+/// @example scss
+/// // 12 column grid, with 5em columns
+/// $susy: (
+/// columns: susy-repeat(12, 5em),
+/// );
+///
+/// @example scss
+/// // asymmetrical 5-column grid
+/// $susy: (
+/// columns: 20px susy-repeat(3, 100px) 20px,
+/// );
+///
+/// /* result: #{susy-get('columns')} */
+@function susy-repeat(
+ $count,
+ $value: 1
+) {
+ $return: ();
+
+ @for $i from 1 through $count {
+ $return: join($return, $value);
+ }
+
+ @return $return;
+}
+
+
+
+// Susy Defaults
+// -------------
+/// Configuration map of Susy factory defaults.
+/// Do not override this map directly –
+/// use `$susy` for user and project setting overrides.
+///
+/// @access private
+/// @type Map
+///
+/// @see $susy
+///
+/// @prop {number | list} columns [susy-repeat(4)]
+/// @prop {number} gutters [0.25]
+/// @prop {string} spread ['narrow']
+/// @prop {string} container-spread ['narrow']
+$_susy-defaults: (
+ 'columns': susy-repeat(4),
+ 'gutters': 0.25,
+ 'spread': 'narrow',
+ 'container-spread': 'narrow',
+);
+
+
+
+// Susy Settings
+// -------------
+/// Return a combined map of Susy settings,
+/// based on the factory defaults (`$_susy-defaults`),
+/// user-defined project configuration (`$susy`),
+/// and any local overrides required –
+/// such as a configuration map passed into a function.
+///
+/// @group a-config
+///
+/// @param {maps} $overrides… -
+/// Optional map override of global configuration settings.
+/// See `$susy` above for properties.
+///
+/// @return {map} -
+/// Combined map of Susy configuration settings,
+/// in order of specificity:
+/// any `$overrides...`,
+/// then `$susy` project settings,
+/// and finally the `$_susy-defaults`
+///
+/// @example scss - global settings
+/// @each $key, $value in susy-settings() {
+/// /* #{$key}: #{$value} */
+/// }
+///
+/// @example scss - local settings
+/// $local: ('columns': 1 2 3 5 8);
+///
+/// @each $key, $value in susy-settings($local) {
+/// /* #{$key}: #{$value} */
+/// }
+@function susy-settings(
+ $overrides...
+) {
+ $settings: map-merge($_susy-defaults, $susy);
+
+ @each $config in $overrides {
+ $settings: map-merge($settings, $config);
+ }
+
+ @return $settings;
+}
+
+
+
+// Susy Get
+// --------
+/// Return the current global value of any Susy setting
+///
+/// @group a-config
+///
+/// @param {string} $key -
+/// Setting to retrieve from the configuration.
+///
+/// @return {*} -
+/// Value mapped to `$key` in the configuration maps,
+/// in order of specificity:
+/// `$susy`, then `$_susy-defaults`
+///
+/// @example scss -
+/// /* columns: #{susy-get('columns')} */
+/// /* gutters: #{susy-get('gutters')} */
+@function susy-get(
+ $key
+) {
+ $settings: susy-settings();
+
+ @if not map-has-key($settings, $key) {
+ @return _susy-error(
+ 'There is no Susy setting called `#{$key}`',
+ 'susy-get');
+ }
+
+ @return map-get($settings, $key);
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss b/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss
new file mode 100755
index 0000000..1e88528
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss
@@ -0,0 +1,441 @@
+/// Grid Math Engine
+/// ================
+/// The `su` functions give you direct access to the math layer,
+/// without any syntax-sugar like shorthand parsing, and normalization.
+/// If you prefer named arguments, and stripped-down syntax,
+/// you can use these functions directly in your code –
+/// replacing `span`, `gutter`, and `slice`.
+///
+/// These functions are also useful
+/// for building mixins or other extensions to Susy.
+/// Apply the Susy syntax to new mixins and functions,
+/// using our "Plugin Helpers",
+/// or write your own syntax and pass the normalized results along
+/// to `su` for compilation.
+///
+/// @group su-math
+///
+/// @see su-span
+/// @see su-gutter
+/// @see su-slice
+/// @ignore _su-sum
+/// @ignore _su-calc-span
+/// @ignore _su-calc-sum
+/// @ignore _su-needs-calc-output
+
+
+
+// Su Span
+// -------
+/// Calculates and returns a CSS-ready span width,
+/// based on normalized span and context data –
+/// a low-level version of `susy-span`,
+/// with all of the logic and none of the syntax sugar.
+///
+/// - Grids defined with unitless numbers will return `%` values.
+/// - Grids defined with comparable units
+/// will return a value in the units provided.
+/// - Grids defined with a mix of units,
+/// or a combination of untiless numbers and unit-lengths,
+/// will return a `calc()` string.
+///
+/// @group su-math
+/// @see susy-span
+///
+/// @param {number | list} $span -
+/// Number or list of grid columns to span
+/// @param {list} $columns -
+/// List of columns available
+/// @param {number} $gutters -
+/// Width of a gutter in column-comparable units
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters spanned,
+/// relative to `span` count
+/// @param {0 | 1 | -1} $container-spread [$spread] -
+/// Number of gutters spanned,
+/// relative to `columns` count
+/// @param {integer} $location [1] -
+/// Optional position of sub-span among full set of columns
+///
+/// @return {length} -
+/// Relative or static length of a span on the grid
+@function su-span(
+ $span,
+ $columns,
+ $gutters,
+ $spread,
+ $container-spread: $spread,
+ $location: 1
+) {
+ $span: su-valid-span($span);
+ $columns: su-valid-columns($columns);
+ $gutters: su-valid-gutters($gutters);
+ $spread: su-valid-spread($spread);
+
+ @if (type-of($span) == 'number') {
+ @if (not unitless($span)) {
+ @return $span;
+ }
+
+ $location: su-valid-location($span, $location, $columns);
+ $span: su-slice($span, $columns, $location, $validate: false);
+ }
+
+ @if _su-needs-calc-output($span, $columns, $gutters, $spread, not 'validate') {
+ @return _su-calc-span($span, $columns, $gutters, $spread, $container-spread, not 'validate');
+ }
+
+ $span-width: _su-sum($span, $gutters, $spread, $validate: false);
+
+ @if unitless($span-width) {
+ $container-spread: su-valid-spread($container-spread);
+ $container: _su-sum($columns, $gutters, $container-spread, $validate: false);
+ @return percentage($span-width / $container);
+ }
+
+ @return $span-width;
+}
+
+
+
+// Su Gutter
+// ---------
+/// Calculates and returns a CSS-ready gutter width,
+/// based on normalized grid data –
+/// a low-level version of `susy-gutter`,
+/// with all of the logic and none of the syntax sugar.
+///
+/// - Grids defined with unitless numbers will return `%` values.
+/// - Grids defined with comparable units
+/// will return a value in the units provided.
+/// - Grids defined with a mix of units,
+/// or a combination of untiless numbers and unit-lengths,
+/// will return a `calc()` string.
+///
+/// @group su-math
+/// @see susy-gutter
+///
+/// @param {list} $columns -
+/// List of columns in the grid
+/// @param {number} $gutters -
+/// Width of a gutter in column-comparable units
+/// @param {0 | 1 | -1} $container-spread -
+/// Number of gutters spanned,
+/// relative to `columns` count
+///
+/// @return {length} -
+/// Relative or static length of one gutter in a grid
+@function su-gutter(
+ $columns,
+ $gutters,
+ $container-spread
+) {
+ @if (type-of($gutters) == 'number') {
+ @if ($gutters == 0) or (not unitless($gutters)) {
+ @return $gutters;
+ }
+ }
+
+ @if _su-needs-calc-output($gutters, $columns, $gutters, -1, not 'validate') {
+ @return _su-calc-span($gutters, $columns, $gutters, -1, $container-spread, not 'validate');
+ }
+
+ $container: _su-sum($columns, $gutters, $container-spread);
+ @return percentage($gutters / $container);
+}
+
+
+
+// Su Slice
+// --------
+/// Returns a list of columns
+/// based on a given span/location slice of the grid –
+/// a low-level version of `susy-slice`,
+/// with all of the logic and none of the syntax sugar.
+///
+/// @group su-math
+/// @see susy-slice
+///
+/// @param {number} $span -
+/// Number of grid columns to span
+/// @param {list} $columns -
+/// List of columns in the grid
+/// @param {number} $location [1] -
+/// Starting index of a span in the list of columns
+/// @param {bool} $validate [true] -
+/// Check that arguments are valid before proceeding
+///
+/// @return {list} -
+/// Subset list of grid columns, based on span and location
+@function su-slice(
+ $span,
+ $columns,
+ $location: 1,
+ $validate: true
+) {
+ @if $validate {
+ $columns: su-valid-columns($columns);
+ $location: su-valid-location($span, $location, $columns);
+ }
+
+ $floor: floor($span);
+ $sub-columns: ();
+
+ @for $i from $location to ($location + $floor) {
+ $sub-columns: append($sub-columns, nth($columns, $i));
+ }
+
+ @if $floor != $span {
+ $remainder: $span - $floor;
+ $column: $location + $floor;
+ $sub-columns: append($sub-columns, nth($columns, $column) * $remainder);
+ }
+
+ @return $sub-columns;
+}
+
+
+
+// Su Sum
+// ------
+/// Get the total sum of column-units in a layout.
+///
+/// @group su-math
+/// @access private
+///
+/// @param {list} $columns -
+/// List of columns in the grid
+/// @param {number} $gutters -
+/// Width of a gutter in column-comparable units
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters spanned,
+/// relative to `columns` count
+/// @param {bool} $validate [true] -
+/// Check that arguments are valid before proceeding
+///
+/// @return {number} -
+/// Total sum of column-units in a grid
+@function _su-sum(
+ $columns,
+ $gutters,
+ $spread,
+ $validate: true
+) {
+ @if $validate {
+ $columns: su-valid-span($columns);
+ $gutters: su-valid-gutters($gutters);
+ $spread: su-valid-spread($spread);
+ }
+
+ // Calculate column-sum
+ $column-sum: 0;
+ @each $column in $columns {
+ $column-sum: $column-sum + $column;
+ }
+
+ $gutter-sum: (ceil(length($columns)) + $spread) * $gutters;
+ $total: if(($gutter-sum > 0), $column-sum + $gutter-sum, $column-sum);
+
+ @return $total;
+}
+
+
+
+// Su Calc
+// -------
+/// Return a usable span width as a `calc()` function,
+/// in order to create mixed-unit grids.
+///
+/// @group su-math
+/// @access private
+///
+/// @param {number | list} $span -
+/// Pre-sliced list of grid columns to span
+/// @param {list} $columns -
+/// List of columns available
+/// @param {number} $gutters -
+/// Width of a gutter in column-comparable units
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters spanned,
+/// relative to `span` count
+/// @param {0 | 1 | -1} $container-spread [$spread] -
+/// Number of gutters spanned,
+/// relative to `columns` count
+/// @param {bool} $validate [true] -
+/// Check that arguments are valid before proceeding
+///
+/// @return {length} -
+/// Relative or static length of a span on the grid
+@function _su-calc-span(
+ $span,
+ $columns,
+ $gutters,
+ $spread,
+ $container-spread: $spread,
+ $validate: true
+) {
+ @if $validate {
+ $span: su-valid-span($span);
+ $columns: su-valid-columns($columns);
+ $gutters: su-valid-gutters($gutters);
+ $spread: su-valid-spread($spread);
+ $container-spread: su-valid-spread($container-spread);
+ }
+
+ // Span and context
+ $span: _su-calc-sum($span, $gutters, $spread, not 'validate');
+ $context: _su-calc-sum($columns, $gutters, $container-spread, not 'validate');
+
+ // Fixed and fluid
+ $fixed-span: map-get($span, 'fixed');
+ $fluid-span: map-get($span, 'fluid');
+ $fixed-context: map-get($context, 'fixed');
+ $fluid-context: map-get($context, 'fluid');
+
+ $calc: '#{$fixed-span}';
+ $fluid-calc: '(100% - #{$fixed-context})';
+
+ // Fluid-values
+ @if (not $fluid-span) {
+ $fluid-calc: null;
+ } @else if ($fluid-span != $fluid-context) {
+ $fluid-span: '* #{$fluid-span}';
+ $fluid-context: if($fluid-context, '/ #{$fluid-context}', '');
+ $fluid-calc: '(#{$fluid-calc $fluid-context $fluid-span})';
+ }
+
+ @if $fluid-calc {
+ $calc: if(($calc != ''), '#{$calc} + ', '');
+ $calc: '#{$calc + $fluid-calc}';
+ }
+
+ @return calc(#{unquote($calc)});
+}
+
+
+
+// Su Calc-Sum
+// -----------
+/// Get the total sum of fixed and fluid column-units
+/// for creating a mixed-unit layout with `calc()` values.
+///
+/// @group su-math
+/// @access private
+///
+/// @param {list} $columns -
+/// List of columns available
+/// @param {number} $gutters -
+/// Width of a gutter in column-comparable units
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters spanned,
+/// relative to `span` count
+/// @param {bool} $validate [true] -
+/// Check that arguments are valid before proceeding
+///
+/// @return {map} -
+/// Map with `fixed` and `fluid` keys
+/// containing the proper math as strings
+@function _su-calc-sum(
+ $columns,
+ $gutters,
+ $spread,
+ $validate: true
+) {
+ @if $validate {
+ $columns: su-valid-span($columns);
+ $gutters: su-valid-gutters($gutters);
+ $spread: su-valid-spread($spread);
+ }
+
+ $fluid: 0;
+ $fixed: ();
+ $calc: null;
+
+ // Gutters
+ $gutters: $gutters * (length($columns) + $spread);
+
+ // Columns
+ @each $col in append($columns, $gutters) {
+ @if unitless($col) {
+ $fluid: $fluid + $col;
+ } @else {
+ $fixed: _su-map-add-units($fixed, $col);
+ }
+ }
+
+ // Compile Fixed Units
+ @each $unit, $total in $fixed {
+ @if ($total != (0 * $total)) {
+ $calc: if($calc, '#{$calc} + #{$total}', '#{$total}');
+ }
+ }
+
+ // Calc null or string
+ @if $calc {
+ $calc: if(str-index($calc, '+'), '(#{$calc})', '#{$calc}');
+ }
+
+ // Fluid 0 => null
+ $fluid: if(($fluid == 0), null, $fluid);
+
+
+ // Return map
+ $return: (
+ 'fixed': $calc,
+ 'fluid': $fluid,
+ );
+
+ @return $return;
+}
+
+
+
+// Needs Calc
+// ----------
+/// Check if `calc()` will be needed in defining a span,
+/// if the necessary units in a grid are not comparable.
+///
+/// @group su-math
+/// @access private
+///
+/// @param {list} $span -
+/// Slice of columns to span
+/// @param {list} $columns -
+/// List of available columns in the grid
+/// @param {number} $gutters -
+/// Width of a gutter
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters spanned,
+/// relative to `span` count
+/// @param {bool} $validate [true] -
+/// Check that arguments are valid before proceeding
+///
+/// @return {bool} -
+/// `True` when units do not match, and `calc()` will be required
+@function _su-needs-calc-output(
+ $span,
+ $columns,
+ $gutters,
+ $spread,
+ $validate: true
+) {
+ @if $validate {
+ $span: su-valid-span($span);
+ $columns: su-valid-columns($columns);
+ $gutters: su-valid-gutters($gutters);
+ }
+
+ $has-gutter: if((length($span) > 1) or ($spread >= 0), true, false);
+ $check: if($has-gutter, append($span, $gutters), $span);
+ $safe-span: _su-is-comparable($check...);
+
+ @if ($safe-span == 'static') {
+ @return false;
+ } @else if (not $safe-span) {
+ @return true;
+ }
+
+ $safe-fluid: _su-is-comparable($gutters, $columns...);
+
+ @return not $safe-fluid;
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss b/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss
new file mode 100755
index 0000000..5befad3
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss
@@ -0,0 +1,213 @@
+/// Validation
+/// ==========
+/// Each argument to Su has a single canonical syntax.
+/// These validation functions check to ensure
+/// that each argument is valid,
+/// in order to provide useful errors
+/// before attempting to calculate the results/
+///
+/// @group x-validation
+///
+/// @see su-valid-columns
+/// @see su-valid-gutters
+/// @see su-valid-spread
+/// @see su-valid-location
+
+
+
+// Valid Span
+// ----------
+/// Check that the `span` argument
+/// is a number, length, or column-list
+///
+/// @group x-validation
+///
+/// @param {number | list} $span -
+/// Number of columns, or length of span
+///
+/// @return {number | list} -
+/// Validated `$span` number, length, or columns list
+///
+/// @throw
+/// when span value is not a number, or valid column list
+@function su-valid-span(
+ $span
+) {
+ $type: type-of($span);
+ @if ($type == 'number') {
+ @return $span;
+ } @else if ($type == 'list') and su-valid-columns($span, 'silent-failure') {
+ @return $span;
+ }
+
+ $actual: '[#{type-of($span)}] `#{inspect($span)}`';
+ @return _susy-error(
+ '#{$actual} is not a valid number, length, or column-list for $span.',
+ 'su-valid-span');
+}
+
+
+
+// Valid Columns
+// -------------
+/// Check that the `columns` argument is a valid
+/// list of column-lengths
+///
+/// @group x-validation
+///
+/// @param {list} $columns -
+/// List of column-lengths
+/// @param {bool} $silent-failure [true] -
+/// Set false to return null on failure
+///
+/// @return {list} -
+/// Validated `$columns` list
+///
+/// @throw
+/// when column value is not a valid list of numbers
+@function su-valid-columns(
+ $columns,
+ $silent-failure: false
+) {
+ @if (type-of($columns) == 'list') {
+ $fail: false;
+
+ @each $col in $columns {
+ @if (type-of($col) != 'number') {
+ $fail: true;
+ }
+ }
+
+ @if not $fail {
+ @return $columns;
+ }
+ }
+
+ // Silent Failure
+ @if $silent-failure {
+ @return null;
+ }
+
+ // Error Message
+ $actual: '[#{type-of($columns)}] `#{inspect($columns)}`';
+
+ @return _susy-error(
+ '#{$actual} is not a valid list of numbers for $columns.',
+ 'su-valid-columns');
+}
+
+
+
+// Valid Gutters
+// -------------
+/// Check that the `gutters` argument is a valid number
+///
+/// @group x-validation
+///
+/// @param {number} $gutters -
+/// Width of a gutter
+///
+/// @return {number} -
+/// Validated `$gutters` number
+///
+/// @throw
+/// when gutter value is not a number
+@function su-valid-gutters(
+ $gutters
+) {
+ $type: type-of($gutters);
+
+ @if ($type == 'number') {
+ @return $gutters;
+ }
+
+ $actual: '[#{$type}] `#{inspect($gutters)}`';
+ @return _susy-error(
+ '#{$actual} is not a number or length for $gutters.',
+ 'su-valid-gutters');
+}
+
+
+
+// Valid Spread
+// ------------
+/// Check that the `spread` argument is a valid
+/// intiger between `-1` and `1`
+///
+/// @group x-validation
+///
+/// @param {0 | 1 | -1} $spread -
+/// Number of gutters to include in a span,
+/// relative to the number columns
+///
+/// @return {0 | 1 | -1} -
+/// Validated `$spread` number
+///
+/// @throw
+/// when spread value is not a valid spread
+@function su-valid-spread(
+ $spread
+) {
+ @if index(0 1 -1, $spread) {
+ @return $spread;
+ }
+
+ $actual: '[#{type-of($spread)}] `#{inspect($spread)}`';
+ @return _susy-error(
+ '#{$actual} is not a normalized [0 | 1 | -1] value for `$spread`.',
+ 'su-valid-spread');
+}
+
+
+
+// Valid Location
+// --------------
+/// Check that the `location` argument is a valid number,
+/// within the scope of available columns
+///
+/// @group x-validation
+///
+/// @param {number} $span -
+/// Number of grid-columns to be spanned
+/// @param {integer | string} $location -
+/// Starting (1-indexed) column-position of that span
+/// @param {list} $columns -
+/// List of available columns in the grid
+///
+/// @return {integer} -
+/// Validated `$location` intiger
+///
+/// @throw
+/// when location value is not a valid index,
+/// given the context and span.
+@function su-valid-location(
+ $span,
+ $location,
+ $columns
+) {
+ $count: length($columns);
+
+ @if $location {
+ @if (type-of($location) != 'number') or (not unitless($location)) {
+ $actual: '[#{type-of($location)}] `#{$location}`';
+ @return _susy-error(
+ '#{$actual} is not a unitless number for $location.',
+ 'su-valid-location');
+ } @else if (round($location) != $location) {
+ @return _susy-error(
+ 'Location (`#{$location}`) must be a 1-indexed intiger position.',
+ 'su-valid-location');
+ } @else if ($location > $count) or ($location < 1) {
+ @return _susy-error(
+ 'Position `#{$location}` does not exist in grid `#{$columns}`.',
+ 'su-valid-location');
+ } @else if ($location + $span - 1 > $count) {
+ $details: 'grid `#{$columns}` for span `#{$span}` at `#{$location}`';
+ @return _susy-error(
+ 'There are not enough columns in #{$details}.',
+ 'su-valid-location');
+ }
+ }
+
+ @return $location;
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss b/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss
new file mode 100755
index 0000000..f6043ea
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss
@@ -0,0 +1,191 @@
+/// Syntax Utilities for Extending Susy
+/// ===================================
+/// There are many steps involved
+/// when translating between the Susy syntax layer,
+/// and the Su core math.
+/// That entire process can be condensed with these two functions.
+/// For anyone that wants to access the full power of Susy,
+/// and build their own plugins, functions, or mixins –
+/// this is the primary API for compiling user input,
+/// and accessing the core math.
+///
+/// This is the same technique we use internally,
+/// to keep our API layer simple and light-weight.
+/// Every function accepts two arguments,
+/// a "shorthand" description of the span or context,
+/// and an optional settings-map to override global defaults.
+///
+/// - Use `susy-compile()` to parse, merge, and normalize
+/// all the user settings into a single map.
+/// - Then use `su-call()` to call one of the core math functions,
+/// with whatever data is needed for that function.
+///
+/// @group plugin-utils
+/// @see susy-compile
+/// @see su-call
+///
+/// @example scss - Susy API `gutter` function
+/// @function susy-gutter(
+/// $context: susy-get('columns'),
+/// $config: ()
+/// ) {
+/// // compile and normalize all user arguments and global settings
+/// $context: susy-compile($context, $config, 'context-only');
+/// // call `su-gutter` with the appropriate data
+/// @return su-call('su-gutter', $context);
+/// }
+///
+/// @example scss - Sample `span` mixin for floated grids
+/// @mixin span(
+/// $span,
+/// $config: ()
+/// ) {
+/// $context: susy-compile($span, $config);
+/// width: su-call('su-span', $context);
+///
+/// @if index($span, 'last') {
+/// float: right;
+/// } @else {
+/// float: left;
+/// margin-right: su-call('su-gutter', $context);
+/// }
+/// }
+
+
+
+// Compile
+// -------
+/// Susy's syntax layer has various moving parts,
+/// with syntax-parsing for the grid/span shorthand,
+/// and normalization for each of the resulting values.
+/// The compile function rolls this all together
+/// in a single call –
+/// for quick access from our internal API functions,
+/// or any additional functions and mixins you add to your project.
+/// Pass user input and configuration maps to the compiler,
+/// and it will hand back a map of values ready for Su.
+/// Combine this with the `su-call` function
+/// to quickly parse, normalize, and process grid calculations.
+///
+/// @group plugin-utils
+/// @see su-call
+///
+/// @param {list | map} $shorthand -
+/// Shorthand expression to define the width of the span,
+/// optionally containing:
+/// - a count, length, or column-list span;
+/// - `at $n`, `first`, or `last` location on asymmetrical grids;
+/// - `narrow`, `wide`, or `wider` for optionally spreading
+/// across adjacent gutters;
+/// - `of $n ` for available grid columns
+/// and spread of the container
+/// (span counts like `of 6` are only valid
+/// in the context of symmetrical grids);
+/// - and `set-gutters $n` to override global gutter settings
+/// @param {map} $config [null] -
+/// Optional map of Susy grid configuration settings
+/// @param {bool} $context-only [false] -
+/// Allow the parser to ignore span and span-spread values,
+/// only parsing context and container-spread
+///
+/// @return {map} -
+/// Parsed and normalized map of settings,
+/// based on global and local configuration,
+/// alongwith shorthad adjustments.
+///
+/// @example scss -
+/// $user-input: 3 wide of susy-repeat(6, 120px) set-gutters 10px;
+/// $grid-data: susy-compile($user-input, $susy);
+///
+/// @each $key, $value in $grid-data {
+/// /* #{$key}: #{$value}, */
+/// }
+@function susy-compile(
+ $short,
+ $config: null,
+ $context-only: false
+) {
+ // Get and normalize config
+ $config: if($config, susy-settings($config), susy-settings());
+ $normal-config: susy-normalize($config);
+
+ // Parse and normalize shorthand
+ @if (type-of($short) != 'map') and (length($short) > 0) {
+ $short: susy-parse($short, $context-only);
+ }
+
+ $normal-short: susy-normalize($short, $normal-config);
+
+ // Merge and return
+ @return map-merge($normal-config, $normal-short);
+}
+
+
+
+// Call
+// ----
+/// The Susy parsing and normalization process
+/// results in a map of configuration settings,
+/// much like the global `$susy` settings map.
+/// In order to pass that information along to Su math functions,
+/// the proper values have to be picked out,
+/// and converted to arguments.
+///
+/// The `su-call` function streamlines that process,
+/// weeding out the unnecessary data,
+/// and passing the rest along to Su in the proper format.
+/// Combine this with `susy-compile` to quickly parse,
+/// normalize, and process grid calculations.
+///
+/// @group plugin-utils
+///
+/// @require su-span
+/// @require su-gutter
+/// @require su-slice
+/// @see susy-compile
+///
+/// @param {'su-span' | 'su-gutter' | 'su-slice'} $name -
+/// Name of the Su math function to call.
+/// @param {map} $config -
+/// Parsed and normalized map of Susy configuration settings
+/// to use for math-function arguments.
+///
+/// @return {*} -
+/// Results of the function being called.
+///
+/// @example scss -
+/// $user-input: 3 wide of susy-repeat(6, 120px) set-gutters 10px;
+/// $grid-data: susy-compile($user-input, $susy);
+///
+/// .su-span {
+/// width: su-call('su-span', $grid-data);
+/// }
+@function su-call(
+ $name,
+ $config
+) {
+ $grid-function-args: (
+ 'su-span': ('span', 'columns', 'gutters', 'spread', 'container-spread', 'location'),
+ 'su-gutter': ('columns', 'gutters', 'container-spread'),
+ 'su-slice': ('span', 'columns', 'location'),
+ );
+
+ $args: map-get($grid-function-args, $name);
+
+ @if not $args {
+ $options: 'Try one of these: #{map-keys($grid-function-args)}';
+ @return _susy-error(
+ '#{$name} is not a public Su function. #{$options}',
+ 'su-call');
+ }
+
+ $call: if(function-exists('get-function'), get-function($name), $name);
+ $output: ();
+
+ @each $arg in $args {
+ $value: map-get($config, $arg);
+ $output: if($value, map-merge($output, ($arg: $value)), $output);
+ }
+
+ @return call($call, $output...);
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss b/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss
new file mode 100755
index 0000000..2cfd1b8
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss
@@ -0,0 +1,56 @@
+// Unprefix Susy
+// =============
+
+
+// Span
+// ----
+/// Un-prefixed alias for `susy-span`
+/// (available by default)
+///
+/// @group api
+/// @alias susy-span
+///
+/// @param {list} $span
+/// @param {map} $config [()]
+@function span(
+ $span,
+ $config: ()
+) {
+ @return susy-span($span, $config);
+}
+
+
+// Gutter
+// ------
+/// Un-prefixed alias for `susy-gutter`
+/// (available by default)
+///
+/// @group api
+/// @alias susy-gutter
+///
+/// @param {integer | list} $context [null] -
+/// @param {map} $config [()]
+@function gutter(
+ $context: susy-get('columns'),
+ $config: ()
+) {
+ @return susy-gutter($context, $config);
+}
+
+
+// Slice
+// -----
+/// Un-prefixed alias for `susy-slice`
+/// (available by default)
+///
+/// @group api
+/// @alias susy-slice
+///
+/// @param {list} $span
+/// @param {map} $config [()]
+@function slice(
+ $span,
+ $config: ()
+) {
+ @return susy-slice($span, $config);
+}
diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss b/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss
new file mode 100755
index 0000000..3c62de2
--- /dev/null
+++ b/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss
@@ -0,0 +1,167 @@
+// Sass Utilities
+// ==============
+// - Susy Error Output Override [variable]
+// - Susy Error [function]
+
+
+
+// Susy Error Output Override
+// --------------------------
+/// Turn off error output for testing
+/// @group x-utility
+/// @access private
+$_susy-error-output-override: false !default;
+
+
+
+// Susy Error
+// ----------
+/// Optionally return error messages without failing,
+/// as a way to test error cases
+///
+/// @group x-utility
+/// @access private
+///
+/// @param {string} $message -
+/// A useful error message, explaining the problem
+/// @param {string} $source -
+/// The original source of the error for debugging
+/// @param {bool} $override [$_susy-error-output-override] -
+/// Optionally return the error rather than failing
+/// @return {string} -
+/// Combined error with source and message
+/// @throws When `$override == true`
+@function _susy-error(
+ $message,
+ $source,
+ $override: $_susy-error-output-override
+) {
+ @if $override {
+ @return 'ERROR [#{$source}] #{$message}';
+ }
+
+ @error '[#{$source}] #{$message}';
+}
+
+
+// Su Is Comparable
+// ----------------
+/// Check that the units in a grid are comparable
+///
+/// @group x-validation
+/// @access private
+///
+/// @param {numbers} $lengths… -
+/// Arglist of all the number values to compare
+/// (columns, gutters, span, etc)
+///
+/// @return {'fluid' | 'static' | false} -
+/// The type of span (fluid or static) when units match,
+/// or `false` for mismatched units
+@function _su-is-comparable(
+ $lengths...
+) {
+ $first: nth($lengths, 1);
+
+ @if (length($lengths) == 1) {
+ @return if(unitless($first), 'fluid', 'static');
+ }
+
+ @for $i from 2 through length($lengths) {
+ $comp: nth($lengths, $i);
+
+ $fail: not comparable($first, $comp);
+ $fail: $fail or (unitless($first) and not unitless($comp));
+ $fail: $fail or (unitless($comp) and not unitless($first));
+
+ @if $fail {
+ @return false;
+ }
+ }
+
+ @return if(unitless($first), 'fluid', 'static');
+}
+
+
+// Su Map Add Units
+// ----------------
+/// The calc features use a map of units and values
+/// to compile the proper algorythm.
+/// This function adds a new value to any comparable existing unit/value,
+/// or adds a new unit/value pair to the map
+///
+/// @group x-utility
+/// @access private
+///
+/// @param {map} $map -
+/// A map of unit/value pairs, e.g. ('px': 120px)
+/// @param {length} $value -
+/// A new length to be added to the map
+/// @return {map} -
+/// The updated map, with new value added
+///
+/// @example scss -
+/// $map: (0px: 120px);
+/// $map: _su-map-add-units($map, 1in); // add a comparable unit
+/// $map: _su-map-add-units($map, 3vw); // add a new unit
+///
+/// @each $units, $value in $map {
+/// /* #{$units}: #{$value} */
+/// }
+@function _su-map-add-units(
+ $map,
+ $value
+) {
+ $unit: $value * 0;
+ $has: map-get($map, $unit) or 0;
+
+ @if ($has == 0) {
+ @each $try, $could in $map {
+ $match: comparable($try, $value);
+ $unit: if($match, $try, $unit);
+ $has: if($match, $could, $has);
+ }
+ }
+
+ @return map-merge($map, ($unit: $has + $value));
+}
+
+
+// Susy Flatten
+// ------------
+/// Flatten a multidimensional list
+///
+/// @group x-utility
+/// @access private
+///
+/// @param {list} $list -
+/// The list to be flattened
+/// @return {list} -
+/// The flattened list
+///
+/// @example scss -
+/// $list: 120px (30em 30em) 120px;
+/// /* #{_susy-flatten($list)} */
+@function _susy-flatten(
+ $list
+) {
+ $flat: ();
+
+ // Don't iterate over maps
+ @if (type-of($list) == 'map') {
+ @return $list;
+ }
+
+ // Iterate over lists (or single items)
+ @each $item in $list {
+ @if (type-of($item) == 'list') {
+ $item: _susy-flatten($item);
+ $flat: join($flat, $item);
+ } @else {
+ $flat: append($flat, $item);
+ }
+ }
+
+ // Return flattened list
+ @return $flat;
+}
diff --git a/_site/about/board-of-directors-trustees.html b/_site/about/board-of-directors-trustees.html
new file mode 100644
index 0000000..b0459c5
--- /dev/null
+++ b/_site/about/board-of-directors-trustees.html
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+Board of Directors (Trustees) -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Board of Directors (Trustees)
+
+
+
+
+
+
+
+ Elected officers
+
+
+
+
+ President
+ Acting Treasurer
+
+
+
+
+ Steve Pennington
+ Josie Beeley
+
+
+ Conway Institute for Biomolecular and Biomedical Research University College Dublin, Belfield 4, Dublin D4 Ireland president@bspr.org
+ University of Glasgow Jarrett Building Garscube Estate Bearsden Road Glasgow G61 1QH United Kingdom treasurer@bspr.org
+
+
+
+
+
+
+
+ Secretary
+
+
+
+
+ John Timms
+
+
+ University College London Cruciform Building 1.1.03 Gower Street LONDON WC1E 6BT United Kingdom secretary@bspr.org
+
+
+
+
+Elected members
+
+
+
+
+ Chris Sutton
+ Andrew Pitt
+
+
+ University of Bradford Institute of Cancer Therapeutics Tumbling Hill Street Bradford BD7 1DP United Kingdom
+ Aston University School of Life and Health Sciences Aston Triangle Birmingham B4 7ET United Kingdom
+
+
+ Peter Kilby
+ Roz Jenkins
+
+
+ Syngenta Jealott’s Hill Bracknell RG40 6EY United Kingdom
+ University of Liverpool Institute of Translational Medicine Crown Street Liverpool L69 3BX United Kingdom
+
+
+ Sara Zanivan
+ Karin Barnouin
+
+
+ CRUK Beatson Institute University of Glasgow Switchback Road Glasgow G61 1BD United Kingdom
+ 72 Dunelm Grove London SE27 9JZ United Kingdom
+
+
+ Juan Ramon Hernández-Fernaud
+
+
+
+ University of Warwick School of Life Sciences Gibbet Hill Campus COVENTRY CV4 7AL United Kingdom
+
+
+
+
+
+Management Committee
+
+
+
+
+ Kathryn Lilley
+ Rainer Cramer
+
+
+ University of Cambridge Cambridge Centre for Proteomics Cambridge Systems Biology Centre Department of Biochemistry, Tennis Court Road Cambridge CB2 1QT United Kingdom
+ University of Reading Department of Chemistry and the BioCentre Whiteknights, PO Box 221 Reading RG6 6AS United Kingdom
+
+
+ Paul Skipp
+ Rob Ewing
+
+
+ Centre for Proteomic Research Life Sciences Building 85 University of Southampton Highfield Southampton SO17 1BJ United Kingdom
+ Biological Sciences Life Sciences Building 85 University of Southampton Highfield Southampton SO17 1BJ United Kingdom
+
+
+ Juan Antonio Vizcaino
+ Phil Green
+
+
+ EBI Wellcome Genome Campus Hinxton Cambridgeshire CB10 1SD United Kingdom
+ Life Science Mass Spectrometry, UK and Ireland Chromatography and Mass Spectrometry Thermo Fisher Scientific Stafford House, Boundary Way Hemel Hempstead HP2 7GE United Kingdom
+
+
+ James Waddington
+
+
+
+ Molecular and Clinical Pharmacology Institute of Translational Medicine University of Liverpool Liverpool L69 3BX United Kingdom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_site/about/index.html b/_site/about/index.html
new file mode 100644
index 0000000..06677da
--- /dev/null
+++ b/_site/about/index.html
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+About -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The British Society for Proteome Research (BSPR) , is a registered incorporated charity (Registered Company Number 6319769, UK Charity Number 1121692 ) and aims to advance the science of proteomics, to further public education therein and to promote study and research work in proteomics and related subjects for the public benefit.
+
+The BSPR represents both the Human Proteome Organization (HUPO) and the European Proteomics Association (EuPA) in the UK and is affiliated to the Society of Biology .
+
+Aim
+The objectives of the British Society for Proteome Research (BSPR) are to advance the science of proteomics and to promote the study and research work in this and related areas for the benefit of all. It enables scientists working in this field to keep up-to-date with current developments both nationally and internationally and to meet and exchange ideas with other workers. Unlike many learned societies we have members from a wide range of organisations including industry and the health service, as well as research and academic institutions.
+
+BSPR Memorandum of Association
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_site/about/membership/application.html b/_site/about/membership/application.html
new file mode 100644
index 0000000..e20d7bc
--- /dev/null
+++ b/_site/about/membership/application.html
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+Membership Application -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Membership Application
+
+
+
+
+
+
+
+ The subscription year is from January through to December and no pro rata rates are offered. Membership application is now open. £15 annual subscription for full membership (by standing order).Please read the Guidnce notes on applying for membership . You will also need to print a copy of either the Membership Application Form or, if you are already a member, the Membership Renewal Form together with the Standing Order Authority , unless paying by cheque. BSPR looks forward to receiving your application. Please direct all membership related enquiries to the BSPR membership secretary via email to membership@bspr.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_site/about/membership/benefits.html b/_site/about/membership/benefits.html
new file mode 100644
index 0000000..18c94bf
--- /dev/null
+++ b/_site/about/membership/benefits.html
@@ -0,0 +1,493 @@
+
+
+
+
+
+
+Membership Benefits -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Membership Benefits
+
+
+
+
+
+
+
+
+ Annual high-profile BSPR conference
+ Training workshops
+ Reduced registration fees at BSPR meetings
+ Travel bursaries
+
+
+ Young investigator awards
+ Lectureship scheme
+ Regional meetings - typically 2 per year
+ Regularly updated website to keep members informed of recent developments, forthcoming meetings of the BSPR, other conferences and workshops in the UK and overseas
+ Advanced notification of grant initiatives, new technologies etc.
+ Networking opportunities/ access to expertise
+ Members-only section with access to presentations and abstracts from previous meetings
+ Up-to-date information on the activities of the Human Proteome Organization (HUPO) and the European Proteomics Association (EuPA) and other national proteomic societies.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_site/assets/css/main.css b/_site/assets/css/main.css
new file mode 100644
index 0000000..861a292
--- /dev/null
+++ b/_site/assets/css/main.css
@@ -0,0 +1,5 @@
+/*!
+ * Minimal Mistakes Jekyll Theme 4.11.2 by Michael Rose
+ * Copyright 2013-2018 Michael Rose - mademistakes.com | @mmistakes
+ * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt)
+*/.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}a:focus,button:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*{box-sizing:border-box}html{box-sizing:border-box;background-color:#fff;font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}@media (min-width: 64em){html{font-size:20px}}@media (min-width: 80em){html{font-size:22px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:#52adc8}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:border-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{margin:0;padding:0;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid #494e52}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted #494e52}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid #7a8288}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{color:#3e8296;outline:0}a:visited{color:#7dc2d6}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}p>code,a>code,li>code,figcaption>code,td>code{padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:#fafafa;border-radius:4px}p>code:before,p>code:after,a>code:before,a>code:after,li>code:before,li>code:after,figcaption>code:before,figcaption>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}hr{display:block;margin:1em 0;border:0;border-top:1px solid #f2f3f3}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:#898c8f;font-family:Georgia,Times,serif;font-size:.75em}figcaption a{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#3e8296}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}form{margin:0 0 5px 0;padding:1em;background-color:#f2f3f3}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#494e52;border:0;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:#494e52;cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:#494e52;background-color:#fff;border:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:#7a8288;outline:0;outline:thin dotted \9;box-shadow:inset 0 1px 3px rgba(73,78,82,0.06),0 0 5px rgba(122,130,136,0.7)}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#898c8f}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-group{margin-bottom:5px;padding:0;border-width:0}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:""}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:#f2f3f3;border-radius:4px}table{margin-bottom:1em;width:100%;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse}table+table{margin-top:1em}thead{background-color:#f2f3f3;border-bottom:2px solid #b6b6b6}th{padding:0.5em;font-weight:bold;text-align:left}td{padding:0.5em;border-bottom:1px solid #b6b6b6}tr,td,th{vertical-align:middle}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;cursor:pointer}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--primary{background-color:#7a8288;color:#fff}.btn--primary:hover{background-color:#62686d;color:#fff}.btn--primary:visited{background-color:#7a8288;color:#fff}.btn--inverse{background-color:#fff;color:#494e52;border:1px solid #f2f3f3}.btn--inverse:hover{background-color:#ccc;color:#494e52}.btn--inverse:visited{background-color:#fff;color:#494e52}.btn--light-outline{background-color:transparent;color:#fff;border:1px solid #fff}.btn--light-outline:hover{background-color:rgba(0,0,0,0.2);color:#fff}.btn--light-outline:visited{background-color:transparent;color:#fff}.btn--success{background-color:#62c462;color:#fff}.btn--success:hover{background-color:#4e9d4e;color:#fff}.btn--success:visited{background-color:#62c462;color:#fff}.btn--warning{background-color:#f89406;color:#fff}.btn--warning:hover{background-color:#c67605;color:#fff}.btn--warning:visited{background-color:#f89406;color:#fff}.btn--danger{background-color:#ee5f5b;color:#fff}.btn--danger:hover{background-color:#be4c49;color:#fff}.btn--danger:visited{background-color:#ee5f5b;color:#fff}.btn--info{background-color:#52adc8;color:#fff}.btn--info:hover{background-color:#428aa0;color:#fff}.btn--info:visited{background-color:#52adc8;color:#fff}.btn--facebook{background-color:#3b5998;color:#fff}.btn--facebook:hover{background-color:#2f477a;color:#fff}.btn--facebook:visited{background-color:#3b5998;color:#fff}.btn--twitter{background-color:#55acee;color:#fff}.btn--twitter:hover{background-color:#448abe;color:#fff}.btn--twitter:visited{background-color:#55acee;color:#fff}.btn--google-plus{background-color:#dd4b39;color:#fff}.btn--google-plus:hover{background-color:#b13c2e;color:#fff}.btn--google-plus:visited{background-color:#dd4b39;color:#fff}.btn--linkedin{background-color:#007bb6;color:#fff}.btn--linkedin:hover{background-color:#006292;color:#fff}.btn--linkedin:visited{background-color:#007bb6;color:#fff}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f8f9f9;border-radius:4px;box-shadow:0 1px 1px rgba(189,193,196,0.25)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#bdc1c4}.notice a:hover{color:#717476}.notice code{background-color:#fcfcfc}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eef7fa;border-radius:4px;box-shadow:0 1px 1px rgba(82,173,200,0.25)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#52adc8}.notice--info a:hover{color:#316878}.notice--info code{background-color:#f6fbfc}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;color:#494e52;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:relative;border-bottom:1px solid #f2f3f3;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead__inner-wrap{clear:both;margin-left:auto;margin-right:auto;padding:1em;max-width:100%;display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.site-title{display:-webkit-box;display:flex;padding:0.5rem 0;align-self:stretch;-webkit-box-align:center;align-items:center;font-weight:bold;z-index:20}.masthead__menu{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.masthead__menu .site-nav{margin-left:0}@media (min-width: 37.5em){.masthead__menu .site-nav{float:right}}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{clear:both;margin:0 auto;max-width:100%;padding-left:2em;padding-right:2em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.3s;animation-delay:0.3s}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 64em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 64em){.breadcrumbs ol{float:right;width:83.0508474576%}}@media (min-width: 80em){.breadcrumbs ol{padding-left:1.6949152542%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;float:left;margin-top:1em;padding-top:1em;width:100%}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{display:block;margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:#898c8f;border:1px solid #b6b6b6;border-radius:0}.pagination li a:hover{color:#3e8296}.pagination li a.current,.pagination li a.current.disabled{color:#fff;background:#7a8288}.pagination li a.disabled{color:rgba(137,140,143,0.5);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:#898c8f;border:1px solid #b6b6b6;border-radius:4px}.pagination--pager:hover{background-color:#898c8f;color:#fff}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:rgba(137,140,143,0.5);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid #f2f3f3}.greedy-nav{position:relative;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;background:#fff}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:#7a8288;text-decoration:none}.greedy-nav a:hover{color:#5c6266}.greedy-nav a.site-title{margin-left:0}.greedy-nav__toggle{padding:0 0.5rem;align-self:stretch;border:0;outline:none;color:#fff;background-color:#7a8288;cursor:pointer}.greedy-nav .visible-links{display:-webkit-box;display:flex;-webkit-box-pack:end;justify-content:flex-end;-webkit-box-flex:1;flex:1;overflow:hidden}.greedy-nav .visible-links li{-webkit-box-flex:0;flex:none}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:#7a8288;width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0) translate3d(0, 0, 0);transform:scaleX(0) translate3d(0, 0, 0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid #f2f3f3;border-radius:4px;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.greedy-nav .hidden-links.hidden{display:none}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:#5c6266;background:#dee0e1}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid #f2f3f3}.greedy-nav .hidden-links li:last-child{border-bottom:none}.no-js .greedy-nav .visible-links{-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:visible}.nav__list{margin-bottom:1.5em}.nav__list input[type="checkbox"],.nav__list label{display:none}@media (max-width: 63.9375em){.nav__list label{position:relative;display:inline-block;padding:0.5em 2.5em 0.5em 1em;color:#7a8288;font-size:.75em;font-weight:bold;border:1px solid #bdc1c4;border-radius:4px;z-index:20;-webkit-transition:0.2s ease-out;transition:0.2s ease-out;cursor:pointer}.nav__list label:before,.nav__list label:after{content:"";position:absolute;right:1em;top:1.25em;width:0.75em;height:0.125em;line-height:1;background-color:#7a8288;-webkit-transition:0.2s ease-out;transition:0.2s ease-out}.nav__list label:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list label:hover{color:#fff;border-color:#7a8288;background-color:#333}.nav__list label:hover:before,.nav__list label:hover:after{background-color:#fff}.nav__list input:checked+label{color:white;background-color:#333}.nav__list input:checked+label:before,.nav__list input:checked+label:after{background-color:#fff}.nav__list label:hover:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list input:checked+label:hover:after{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.25em 0}}@media (max-width: 63.9375em) and (min-width: 64em){.nav__list a{padding-top:0.125em;padding-bottom:0.125em}}@media (max-width: 63.9375em){.nav__list a:hover{text-decoration:underline}}.nav__list .nav__items{margin:0;font-size:1.25rem}.nav__list .nav__items a{color:inherit}.nav__list .nav__items .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;font-weight:bold}@media (max-width: 63.9375em){.nav__list .nav__items{position:relative;max-height:0;opacity:0%;overflow:hidden;z-index:10;-webkit-transition:0.3s ease-in-out;transition:0.3s ease-in-out;-webkit-transform:translate(0, 10%);-ms-transform:translate(0, 10%);transform:translate(0, 10%)}}@media (max-width: 63.9375em){.nav__list input:checked ~ .nav__items{-webkit-transition:0.5s ease-in-out;transition:0.5s ease-in-out;max-height:9999px;overflow:visible;opacity:1;margin-top:1em;-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid #f2f3f3}.toc{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:#7a8288;text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:#7a8288;border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:#898c8f;font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid #f2f3f3}.toc__menu a:hover{color:#494e52}.toc__menu li ul>li a{padding-left:1.75rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;float:left;margin-left:0;margin-right:0;width:100%;clear:both;position:absolute;bottom:0;height:auto;margin-top:3em;color:#898c8f;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;background-color:#f2f3f3}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:2em;max-width:100%;padding:0 1em 2em}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:#898c8f}.page__footer-copyright{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}.layout--search .archive__item-teaser{margin-bottom:0.25em}.search__toggle{margin-left:1rem;margin-right:1rem;border:0;outline:none;color:#898c8f;background-color:transparent;cursor:pointer;-webkit-transition:0.2s;transition:0.2s}.search__toggle:hover{color:#494e52}.search-icon{width:100%;height:100%}.search-content{display:none;visibility:hidden;padding-top:1em;padding-bottom:1em}.search-content__inner-wrap{width:100%;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s}@media (min-width: 80em){.search-content__inner-wrap{max-width:1280px}}.search-content .search-input{display:block;margin-bottom:0;padding:0;border:none;outline:none;box-shadow:none;background-color:transparent;font-size:1.563em}@media (min-width: 64em){.search-content .search-input{font-size:1.953em}}@media (min-width: 80em){.search-content .search-input{font-size:2.441em}}.search-content.is--visible{display:block;visibility:visible}.search-content.is--visible::after{content:"";display:block}.search-content .results__found{margin-top:0.5em;font-size:.75em}.search-content .archive__item{margin-bottom:2em}@media (min-width: 64em){.search-content .archive__item{width:75%}}@media (min-width: 80em){.search-content .archive__item{width:50%}}.search-content .archive__item-title{margin-top:0}.search-content .archive__item-excerpt{margin-bottom:0}.ais-search-box{max-width:100% !important;margin-bottom:2em}.archive__item-title .ais-Highlight{color:#52adc8;font-style:normal;text-decoration:underline}.archive__item-excerpt .ais-Highlight{color:#52adc8;font-style:normal;font-weight:bold}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;background:#263238;color:#eff;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.75em;line-height:1.8;border-radius:4px}div.highlighter-rouge>pre,div.highlighter-rouge pre.highlight,figure.highlight>pre,figure.highlight pre.highlight{margin:0;padding:1em}.highlight table{margin-bottom:0;font-size:1em;border:0}.highlight table td{padding:0;width:calc(100% - 1em);border:0}.highlight table td.gutter,.highlight table td.rouge-gutter{padding-right:1em;width:1em;color:#b2ccd6;border-right:1px solid #b2ccd6;text-align:right}.highlight table td.code,.highlight table td.rouge-code{padding-left:1em}.highlight table pre{margin:0}.highlight pre{width:100%}.highlight .hll{background-color:#eff}.highlight .c{color:#b2ccd6}.highlight .err{color:#f07178}.highlight .k{color:#c792ea}.highlight .l{color:#f78c6c}.highlight .n{color:#eff}.highlight .o{color:#89ddff}.highlight .p{color:#eff}.highlight .cm{color:#b2ccd6}.highlight .cp{color:#b2ccd6}.highlight .c1{color:#b2ccd6}.highlight .cs{color:#b2ccd6}.highlight .gd{color:#f07178}.highlight .ge{font-style:italic}.highlight .gh{color:#eff;font-weight:bold}.highlight .gi{color:#c3e88d}.highlight .gp{color:#b2ccd6;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#89ddff;font-weight:bold}.highlight .kc{color:#c792ea}.highlight .kd{color:#c792ea}.highlight .kn{color:#89ddff}.highlight .kp{color:#c792ea}.highlight .kr{color:#c792ea}.highlight .kt{color:#ffcb6b}.highlight .ld{color:#c3e88d}.highlight .m{color:#f78c6c}.highlight .s{color:#c3e88d}.highlight .na{color:#82aaff}.highlight .nb{color:#eff}.highlight .nc{color:#ffcb6b}.highlight .no{color:#f07178}.highlight .nd{color:#89ddff}.highlight .ni{color:#eff}.highlight .ne{color:#f07178}.highlight .nf{color:#82aaff}.highlight .nl{color:#eff}.highlight .nn{color:#ffcb6b}.highlight .nx{color:#82aaff}.highlight .py{color:#eff}.highlight .nt{color:#89ddff}.highlight .nv{color:#f07178}.highlight .ow{color:#89ddff}.highlight .w{color:#eff}.highlight .mf{color:#f78c6c}.highlight .mh{color:#f78c6c}.highlight .mi{color:#f78c6c}.highlight .mo{color:#f78c6c}.highlight .sb{color:#c3e88d}.highlight .sc{color:#eff}.highlight .sd{color:#b2ccd6}.highlight .s2{color:#c3e88d}.highlight .se{color:#f78c6c}.highlight .sh{color:#c3e88d}.highlight .si{color:#f78c6c}.highlight .sx{color:#c3e88d}.highlight .sr{color:#c3e88d}.highlight .s1{color:#c3e88d}.highlight .ss{color:#c3e88d}.highlight .bp{color:#eff}.highlight .vc{color:#f07178}.highlight .vg{color:#f07178}.highlight .vi{color:#f07178}.highlight .il{color:#f78c6c}.gist th,.gist td{border-bottom:0}.hidden,.is--hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{margin-left:auto;margin-right:auto;width:100%}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 64em){.full{margin-right:-20.3389830508% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.social-icons .fas,.social-icons .fab,.social-icons .far,.social-icons .fal{color:#494e52}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769ff}.social-icons .fa-bitbucket{color:#205081}.social-icons .fa-dribbble,.social-icons .fa-dribble-square{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square,.social-icons .fa-facebook-f{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-gitlab{color:#e24329}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square,.social-icons .fa-google-plus-g{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-in{color:#007bb6}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square,.social-icons .fa-vimeo-v{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:1.5rem;height:.25rem;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:1.5rem;height:.25rem;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-.5rem}.navicon:after{bottom:-.5rem}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:1.5rem}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 64em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid #f2f3f3}.footnote{color:#9ba1a6;text-decoration:none}.footnotes{color:#9ba1a6}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:#7a8288;text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}.gsc-control-cse table,.gsc-control-cse tr,.gsc-control-cse td{border:0}.responsive-video-container{position:relative;margin-bottom:1em;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.responsive-video-container iframe,.responsive-video-container object,.responsive-video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}:-webkit-full-screen-ancestor .masthead,:-webkit-full-screen-ancestor .page__footer{position:static}#main{clear:both;margin-left:auto;margin-top:2em;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;max-width:100%;-webkit-animation-delay:0.15s;animation-delay:0.15s}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 64em){.page{float:right;width:calc(100% - 200px);padding-right:200px}}@media (min-width: 80em){.page{width:calc(100% - 300px);padding-right:300px}}.page .page__inner-wrap{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid #f2f3f3}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a:not(.btn):not(#goog-wm-sb):hover{text-decoration:underline}.page__content a:not(.btn):not(#goog-wm-sb):hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 0 0}@media (min-width: 64em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:#898c8f;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid #b6b6b6;border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:#3e8296}.taxonomy__section{margin-bottom:2em;padding-bottom:1em}.taxonomy__section:not(:last-child){border-bottom:solid 1px #f2f3f3}.taxonomy__section .archive__item-title{margin-top:0}.taxonomy__section .archive__subtitle{clear:both;border:0}.taxonomy__section+.taxonomy__section{margin-top:2em}.taxonomy__title{margin-bottom:0.5em;color:#e5e7e8}.taxonomy__count{color:#cacdd0}.taxonomy__index{display:grid;grid-column-gap:2em;grid-template-columns:repeat(2, 1fr);margin:1.414em 0;padding:0;font-size:0.75em;list-style:none}@media (min-width: 64em){.taxonomy__index{grid-template-columns:repeat(3, 1fr)}}.taxonomy__index a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0.25em 0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:inherit;text-decoration:none;border-bottom:1px solid #f2f3f3}.back-to-top{display:block;clear:both;color:#cacdd0;font-size:0.6em;text-transform:uppercase;text-align:right;text-decoration:none}.page__comments{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid #f2f3f3;text-transform:uppercase}.page__comments-form{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid #f2f3f3}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 64em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 64em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid #f2f3f3}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 64em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{clear:both;float:left;margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}.page__related::after{clear:both;content:"";display:table}@media (min-width: 64em){.page__related{float:right;width:calc(100% - 200px)}}@media (min-width: 80em){.page__related{width:calc(100% - 300px)}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}@media (min-width: 64em){.wide .page{padding-right:0}}@media (min-width: 80em){.wide .page{padding-right:0}}@media (min-width: 64em){.wide .page__related{padding-right:0}}@media (min-width: 80em){.wide .page__related{padding-right:0}}.archive{margin-bottom:2em}@media (min-width: 64em){.archive{float:right;width:calc(100% - 200px);padding-right:200px}}@media (min-width: 80em){.archive{width:calc(100% - 300px);padding-right:300px}}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:#898c8f;border-bottom:1px solid #f2f3f3}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:initial;overflow:hidden;text-overflow:ellipsis}.archive__item-title a{color:inherit}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{position:relative;border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.625em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 0 0}@media (min-width: 64em){.archive__item-caption{padding:5px 10px}}.archive__item-caption a{color:#fff;text-decoration:none}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px;font-size:0.6em}@media (min-width: 64em){.archive .grid__wrapper{margin-right:-200px}}@media (min-width: 80em){.archive .grid__wrapper{margin-right:-300px}}.grid__item{margin-bottom:2em}@media (min-width: 37.5em){.grid__item{float:left;width:48.9795918367%}.grid__item:nth-child(2n+1){clear:both;margin-left:0}.grid__item:nth-child(2n+2){clear:none;margin-left:2.0408163265%}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.7288135593%}.grid__item:nth-child(2n+1){clear:none}.grid__item:nth-child(4n+1){clear:both}.grid__item:nth-child(4n+2){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+3){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+4){clear:none;margin-left:1.6949152542%}}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px;font-size:0.6em}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 48em){.grid__item .archive__item-excerpt{display:block;font-size:.75em}}@media (min-width: 37.5em){.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item .archive__item-teaser{max-height:120px}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid #f2f3f3}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{float:left;margin-bottom:0;width:32.2033898305%}.feature__item:nth-child(3n+1){clear:both;margin-left:0}.feature__item:nth-child(3n+2){clear:none;margin-left:1.6949152542%}.feature__item:nth-child(3n+3){clear:none;margin-left:1.6949152542%}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item--left{float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.25rem}.feature__item--left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{float:left;width:40.6779661017%}.feature__item--left .archive__item-body{float:right;padding-left:1.6949152542%;padding-right:1.6949152542%;width:57.6271186441%}}.feature__item--right{float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{float:right;width:40.6779661017%}.feature__item--right .archive__item-body{float:right;width:57.6271186441%;padding-left:1.6949152542%;padding-right:1.6949152542%}}.feature__item--center{float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.archive .feature__wrapper .archive__item-title{margin-top:0.25em;font-size:1em}.archive .feature__item,.archive .feature__item--left,.archive .feature__item--center,.archive .feature__item--right{font-size:1em}@media (min-width: 64em){.wide .archive{padding-right:0}}@media (min-width: 80em){.wide .archive{padding-right:0}}.sidebar{clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (max-width: 64em){.sidebar{position:relative;z-index:10;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@media (min-width: 64em){.sidebar{float:left;width:calc(200px - 1em);opacity:0.75;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}.sidebar.sticky{overflow-y:auto;height:calc( 100vh - 90px - 2em )}}@media (min-width: 80em){.sidebar{width:calc(300px - 1em)}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar p,.sidebar li{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 64em){.sidebar__right{position:absolute;top:0;right:0;width:200px;margin-right:-200px;padding-left:1em;z-index:10}}@media (min-width: 80em){.sidebar__right{width:300px;margin-right:-300px}}@media (min-width: 64em){.splash .sidebar__right{position:relative;float:right;margin-right:0}}@media (min-width: 80em){.splash .sidebar__right{margin-right:0}}.author__avatar{display:table-cell;vertical-align:top;width:36px;height:36px}@media (min-width: 64em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:110px;border-radius:50%}@media (min-width: 64em){.author__avatar img{padding:5px;border:1px solid #f2f3f3}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 64em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__content a{color:inherit;text-decoration:none}.author__name{margin:0}@media (min-width: 64em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.author__bio{margin:0}@media (min-width: 64em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 64em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 64em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid #f2f3f3;border-radius:4px;background:#fff;z-index:-1;box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);cursor:default}.author__urls.is--visible{display:block}@media (min-width: 64em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;z-index:0}@media (min-width: 64em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 64em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}.wide .sidebar__right{margin-bottom:1em}@media (min-width: 64em){.wide .sidebar__right{position:initial;top:initial;right:initial;width:initial;margin-right:initial;padding-left:initial;z-index:initial}}@media (min-width: 80em){.wide .sidebar__right{width:initial;margin-right:initial}}@media print{[hidden]{display:none}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{margin:0;padding:0;min-height:auto !important;font-size:16px}body{margin:0 auto;background:#fff !important;color:#000 !important;font-size:1rem;line-height:1.5;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{color:#000;line-height:1.2;margin-bottom:0.75rem;margin-top:0}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}a,a:visited{color:#000;text-decoration:underline;word-wrap:break-word}table{border-collapse:collapse}thead{display:table-header-group}table,th,td{border-bottom:1px solid #000}td,th{padding:8px 16px}img{border:0;display:block;max-width:100% !important;vertical-align:middle}hr{border:0;border-bottom:2px solid #bbb;height:0;margin:2.25rem 0;padding:0}dt{font-weight:bold}dd{margin:0;margin-bottom:0.75rem}abbr[title],acronym[title]{border:0;text-decoration:none}table,blockquote,pre,code,figure,li,hr,ul,ol,a,tr{page-break-inside:avoid}h2,h3,h4,p,a{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}h1+p,h2+p,h3+p{page-break-before:avoid}img{page-break-after:auto;page-break-before:auto;page-break-inside:avoid}pre{white-space:pre-wrap !important;word-wrap:break-word}a[href^='http://']:after,a[href^='https://']:after,a[href^='ftp://']:after{content:" (" attr(href) ")";font-size:80%}abbr[title]:after,acronym[title]:after{content:" (" attr(title) ")"}#main{max-width:100%}.page{margin:0;padding:0;width:100%}.page-break,.page-break-before{page-break-before:always}.page-break-after{page-break-after:always}.no-print{display:none}a.no-reformat:after{content:''}abbr[title].no-reformat:after,acronym[title].no-reformat:after{content:''}.page__hero-caption{color:#000 !important;background:#fff !important;opacity:1}.page__hero-caption a{color:#000 !important}.masthead,.toc,.page__share,.page__related,.pagination,.ads,.page__footer,.page__comments-form,.author__avatar,.author__content,.author__urls-wrapper,.nav__list,.sidebar,.adsbygoogle{display:none !important;height:1px !important}}.sidebar li{display:block}.sidebar li a:hover{color:#649794 !important}.site-title{color:#649794;font-size:40px;font-weight:normal}.feature__wrapper li a{color:#649794 !important;text-decoration:none}.feature__wrapper li{list-style:none}.tess-widget li{margin-left:-40px}.page__content p{font-size:0.75em;text-decoration:none}.page__content a{text-decoration:none}a{color:#649794}a:visited{color:#649794}.sidebar.sticky nav ul{padding:10px}.sidebar.sticky nav li{display:list-item !important;list-style:disc}@media (min-width: 80em){.page{width:calc(100% - 300px);padding-right:0px}}.greedy-nav{padding-bottom:35px}.page__content li a{font-size:1em}.page__content li{font-size:0.75em}.pagination{display:none}
diff --git a/_site/assets/css/toggle-nav.css b/_site/assets/css/toggle-nav.css
new file mode 100755
index 0000000..d852ed1
--- /dev/null
+++ b/_site/assets/css/toggle-nav.css
@@ -0,0 +1,163 @@
+
+a.menu-link {
+ color: #8a8c8f;
+ display: block;
+ text-decoration: none;
+}
+
+.menu-link span {
+ border-bottom: solid 3px #8a8c8f;
+ border-top: double 10px #8a8c8f;
+ display: inline-block;
+ height: 4px;
+ margin: 0 5px -3px 0;
+ width: 30px;
+}
+
+.menu-link:hover span { border-color: #666; }
+
+.menu, .menu > ul, .menu > ul ul {
+ clear: both;
+ display: flex;
+ flex-flow: column;
+ margin: 0;
+}
+
+.menu.active {
+ background: #f9f9f9;
+ border-bottom: 1px solid #d8d8d8;
+ border-top: 1px solid #d8d8d8;
+ margin: 1em 0 1em -12px;
+ max-height: 55em;
+ width: 100vw;
+}
+
+.js .menu > ul ul.active {
+ margin: 0;
+ max-height: 55em;
+ padding: 0;
+}
+
+.menu > ul { padding: 0; }
+
+nav li {
+ display: inline-block;
+ margin: 0;
+ position: relative;
+}
+
+.menu li a {
+ color: #8a8c8f;
+ display: inline-block;
+ font-size: 0.8em;
+ letter-spacing: .05em;
+ /* aligin the text custom by chuqiao*/
+ line-height: 2.75em;
+ text-decoration: none;
+}
+
+span.has-subnav {
+ display: block;
+ font-size: 1em;
+ line-height: 2.5em;
+ position: absolute;
+ right: 20px;
+ padding: 0 0.5em;
+ top: 0;
+}
+ @media screen and (max-width:800px) {
+
+.menu, .menu > ul ul {
+ margin: 0;
+ max-height: 0;
+ overflow: hidden;
+}
+
+.menu li a {
+ border-bottom: 1px solid #d8d8d8;
+ display: block;
+ padding-left: 15px;
+}
+
+.menu li li a { padding-left: 50px; }
+
+.menu li:last-child a { border: none; }
+
+.menu li li:last-child a { border-bottom: 1px solid #d8d8d8; }
+
+.menu li:hover { background: #EDEDED; }
+}
+@media screen and (min-width: 801px) {
+
+nav {
+ /*border-top: 3px solid #00578b;*/
+ border-bottom: 1px solid #ebebeb;
+}
+
+a.menu-link { display: none; }
+
+.js .menu, .js .menu > ul ul {
+ max-height: none;
+ overflow: visible;
+}
+
+.js .menu > ul li:hover > ul { display: flex; }
+
+.menu ul {
+ display: flex;
+ flex-flow: row;
+ height: 44px;
+ justify-content: space-between;
+ margin: 0;
+ padding: 0;
+}
+
+.menu span.has-subnav { display: none; }
+
+/*color #649794 */
+.menu li a:hover { color: rgb(100,151,148); }
+
+.menu li li a:hover {
+ background: rgba(235,235,235,0.1);
+ color: #649794;
+}
+
+.menu ul ul {
+ background: #fff;
+ border: solid 1px rgba(235,235,235,1);
+ /*border: solid 1px rgba(173,173,173,1);*/
+ border-radius: 2px 2px 5px 5px;
+ border-top: solid 2px transparent;
+ display: none;
+ height: auto;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ text-align: left;
+ top: 43px;
+ width: 150px;
+ z-index: 999;
+}
+
+.chrome .js .menu > ul ul { top: 43px; }
+
+.menu ul ul.wide { width: 300px; }
+
+.menu ul ul li {
+ border-bottom: solid 1px rgba(255,255,255,0.5);
+ display: inline-block;
+ position: relative;
+ font-size: .75em;
+
+}
+
+.menu > ul ul li:last-child { border-bottom: none; }
+
+.menu ul ul li a {
+ display: block;
+ padding-left: 10px;
+}
+}
+
+
+
diff --git a/_site/assets/files/110711BSPREBITalk.pdf b/_site/assets/files/110711BSPREBITalk.pdf
new file mode 100644
index 0000000..4b10952
Binary files /dev/null and b/_site/assets/files/110711BSPREBITalk.pdf differ
diff --git a/_site/assets/files/13BSPNOT - Sponsorship and Trade Opportunities version 5.pdf b/_site/assets/files/13BSPNOT - Sponsorship and Trade Opportunities version 5.pdf
new file mode 100644
index 0000000..188ad73
Binary files /dev/null and b/_site/assets/files/13BSPNOT - Sponsorship and Trade Opportunities version 5.pdf differ
diff --git a/_site/assets/files/20110713_BTC_MALDI_BSPR.pdf b/_site/assets/files/20110713_BTC_MALDI_BSPR.pdf
new file mode 100644
index 0000000..a838da1
Binary files /dev/null and b/_site/assets/files/20110713_BTC_MALDI_BSPR.pdf differ
diff --git a/_site/assets/files/7th_European_Summer_School_by_Bogusia_Pesko.pdf b/_site/assets/files/7th_European_Summer_School_by_Bogusia_Pesko.pdf
new file mode 100644
index 0000000..48374be
Binary files /dev/null and b/_site/assets/files/7th_European_Summer_School_by_Bogusia_Pesko.pdf differ
diff --git a/_site/assets/files/7th_European_Summer_School_by_Snezhana_Akpunarlieva.pdf b/_site/assets/files/7th_European_Summer_School_by_Snezhana_Akpunarlieva.pdf
new file mode 100644
index 0000000..777e3cd
Binary files /dev/null and b/_site/assets/files/7th_European_Summer_School_by_Snezhana_Akpunarlieva.pdf differ
diff --git a/_site/assets/files/Adam Byron 13-07-10.pdf b/_site/assets/files/Adam Byron 13-07-10.pdf
new file mode 100644
index 0000000..2aab428
Binary files /dev/null and b/_site/assets/files/Adam Byron 13-07-10.pdf differ
diff --git a/_site/assets/files/Akhilesh Pandey14-07-10.pdf b/_site/assets/files/Akhilesh Pandey14-07-10.pdf
new file mode 100644
index 0000000..ec313ff
Binary files /dev/null and b/_site/assets/files/Akhilesh Pandey14-07-10.pdf differ
diff --git a/_site/assets/files/Alex Jones 14-07-10.pdf b/_site/assets/files/Alex Jones 14-07-10.pdf
new file mode 100644
index 0000000..9235523
Binary files /dev/null and b/_site/assets/files/Alex Jones 14-07-10.pdf differ
diff --git a/_site/assets/files/Amos Bairoch 14-07-10.pdf b/_site/assets/files/Amos Bairoch 14-07-10.pdf
new file mode 100644
index 0000000..b8df4e3
Binary files /dev/null and b/_site/assets/files/Amos Bairoch 14-07-10.pdf differ
diff --git "a/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics (1).docx" "b/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics (1).docx"
new file mode 100644
index 0000000..61a7aea
Binary files /dev/null and "b/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics (1).docx" differ
diff --git "a/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics.docx" "b/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics.docx"
new file mode 100644
index 0000000..61a7aea
Binary files /dev/null and "b/_site/assets/files/BPSR Conference Report \342\200\223 9th European Summer School for Advanced Proteomics.docx" differ
diff --git a/_site/assets/files/BSPR - Memorandum of Association May - 07.pdf b/_site/assets/files/BSPR - Memorandum of Association May - 07.pdf
new file mode 100644
index 0000000..38d09d1
Binary files /dev/null and b/_site/assets/files/BSPR - Memorandum of Association May - 07.pdf differ
diff --git a/_site/assets/files/BSPR 2013 Meeting Programme.pdf b/_site/assets/files/BSPR 2013 Meeting Programme.pdf
new file mode 100644
index 0000000..9060502
Binary files /dev/null and b/_site/assets/files/BSPR 2013 Meeting Programme.pdf differ
diff --git a/_site/assets/files/BSPR 2015 Programme draft 16-06.pdf b/_site/assets/files/BSPR 2015 Programme draft 16-06.pdf
new file mode 100644
index 0000000..9065860
Binary files /dev/null and b/_site/assets/files/BSPR 2015 Programme draft 16-06.pdf differ
diff --git a/_site/assets/files/BSPR 2015 flyer4-1.pdf b/_site/assets/files/BSPR 2015 flyer4-1.pdf
new file mode 100644
index 0000000..b61fe9e
Binary files /dev/null and b/_site/assets/files/BSPR 2015 flyer4-1.pdf differ
diff --git a/_site/assets/files/BSPR 2016 flyer_01b.pdf b/_site/assets/files/BSPR 2016 flyer_01b.pdf
new file mode 100644
index 0000000..595e1f0
Binary files /dev/null and b/_site/assets/files/BSPR 2016 flyer_01b.pdf differ
diff --git a/_site/assets/files/BSPR 2018 data science workshop v 2.pdf b/_site/assets/files/BSPR 2018 data science workshop v 2.pdf
new file mode 100644
index 0000000..fc79a64
Binary files /dev/null and b/_site/assets/files/BSPR 2018 data science workshop v 2.pdf differ
diff --git a/_site/assets/files/BSPR 2018 poster invited speakers Apr.pdf b/_site/assets/files/BSPR 2018 poster invited speakers Apr.pdf
new file mode 100644
index 0000000..4620904
Binary files /dev/null and b/_site/assets/files/BSPR 2018 poster invited speakers Apr.pdf differ
diff --git a/_site/assets/files/BSPR 2018 programme final 15-06-18.pdf b/_site/assets/files/BSPR 2018 programme final 15-06-18.pdf
new file mode 100644
index 0000000..e99d7e2
Binary files /dev/null and b/_site/assets/files/BSPR 2018 programme final 15-06-18.pdf differ
diff --git a/_site/assets/files/BSPR HUPO2017 Student report_EmilyBowler.docx b/_site/assets/files/BSPR HUPO2017 Student report_EmilyBowler.docx
new file mode 100644
index 0000000..b2c4f45
Binary files /dev/null and b/_site/assets/files/BSPR HUPO2017 Student report_EmilyBowler.docx differ
diff --git a/_site/assets/files/BSPR Newsletter - April 2017.docx b/_site/assets/files/BSPR Newsletter - April 2017.docx
new file mode 100644
index 0000000..cd56ff1
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - April 2017.docx differ
diff --git a/_site/assets/files/BSPR Newsletter - August 2017.docx b/_site/assets/files/BSPR Newsletter - August 2017.docx
new file mode 100644
index 0000000..52c43ad
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - August 2017.docx differ
diff --git a/_site/assets/files/BSPR Newsletter - December 2014.pdf b/_site/assets/files/BSPR Newsletter - December 2014.pdf
new file mode 100644
index 0000000..564d81b
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - December 2014.pdf differ
diff --git a/_site/assets/files/BSPR Newsletter - January 2016.pdf b/_site/assets/files/BSPR Newsletter - January 2016.pdf
new file mode 100644
index 0000000..b1ae5e9
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - January 2016.pdf differ
diff --git a/_site/assets/files/BSPR Newsletter - January 2017.pdf b/_site/assets/files/BSPR Newsletter - January 2017.pdf
new file mode 100644
index 0000000..77c1724
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - January 2017.pdf differ
diff --git a/_site/assets/files/BSPR Newsletter - March 2017.docx b/_site/assets/files/BSPR Newsletter - March 2017.docx
new file mode 100644
index 0000000..318fb1f
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - March 2017.docx differ
diff --git a/_site/assets/files/BSPR Newsletter - March 2015.pdf b/_site/assets/files/BSPR Newsletter - March 2015.pdf
new file mode 100644
index 0000000..3b5ffa7
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - March 2015.pdf differ
diff --git a/_site/assets/files/BSPR Newsletter - March 2016.pdf b/_site/assets/files/BSPR Newsletter - March 2016.pdf
new file mode 100644
index 0000000..7cd9934
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - March 2016.pdf differ
diff --git a/_site/assets/files/BSPR Newsletter - May 2015.doc b/_site/assets/files/BSPR Newsletter - May 2015.doc
new file mode 100644
index 0000000..040e982
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter - May 2015.doc differ
diff --git a/_site/assets/files/BSPR Newsletter-Feb 2018.pdf b/_site/assets/files/BSPR Newsletter-Feb 2018.pdf
new file mode 100644
index 0000000..03a75b8
Binary files /dev/null and b/_site/assets/files/BSPR Newsletter-Feb 2018.pdf differ
diff --git a/_site/assets/files/BSPR Workshop_2010 - Juan Antonio Vizcaino.pdf b/_site/assets/files/BSPR Workshop_2010 - Juan Antonio Vizcaino.pdf
new file mode 100644
index 0000000..1ce7213
Binary files /dev/null and b/_site/assets/files/BSPR Workshop_2010 - Juan Antonio Vizcaino.pdf differ
diff --git a/_site/assets/files/BSPR Workshop_2010 - Kathryn Lilley.pdf b/_site/assets/files/BSPR Workshop_2010 - Kathryn Lilley.pdf
new file mode 100644
index 0000000..79b261a
Binary files /dev/null and b/_site/assets/files/BSPR Workshop_2010 - Kathryn Lilley.pdf differ
diff --git a/_site/assets/files/BSPR Workshop_2010 - Martin Wells.pdf b/_site/assets/files/BSPR Workshop_2010 - Martin Wells.pdf
new file mode 100644
index 0000000..815a8cd
Binary files /dev/null and b/_site/assets/files/BSPR Workshop_2010 - Martin Wells.pdf differ
diff --git a/_site/assets/files/BSPR bursary awarded for attendance of HUPO 2017.docx b/_site/assets/files/BSPR bursary awarded for attendance of HUPO 2017.docx
new file mode 100644
index 0000000..6d34019
Binary files /dev/null and b/_site/assets/files/BSPR bursary awarded for attendance of HUPO 2017.docx differ
diff --git a/_site/assets/files/BSPR corporate membership application form.pdf b/_site/assets/files/BSPR corporate membership application form.pdf
new file mode 100644
index 0000000..7cdc829
Binary files /dev/null and b/_site/assets/files/BSPR corporate membership application form.pdf differ
diff --git a/_site/assets/files/BSPR membership application form.pdf b/_site/assets/files/BSPR membership application form.pdf
new file mode 100644
index 0000000..cf74609
Binary files /dev/null and b/_site/assets/files/BSPR membership application form.pdf differ
diff --git a/_site/assets/files/BSPR standing order form.pdf b/_site/assets/files/BSPR standing order form.pdf
new file mode 100644
index 0000000..6c22e50
Binary files /dev/null and b/_site/assets/files/BSPR standing order form.pdf differ
diff --git a/_site/assets/files/BSPR2011Panel_Update_9Aug.pdf b/_site/assets/files/BSPR2011Panel_Update_9Aug.pdf
new file mode 100644
index 0000000..9707e1e
Binary files /dev/null and b/_site/assets/files/BSPR2011Panel_Update_9Aug.pdf differ
diff --git a/_site/assets/files/BSPR2011_Cox.pdf b/_site/assets/files/BSPR2011_Cox.pdf
new file mode 100644
index 0000000..f68d017
Binary files /dev/null and b/_site/assets/files/BSPR2011_Cox.pdf differ
diff --git a/_site/assets/files/BSPR_2010_Programme (final).pdf b/_site/assets/files/BSPR_2010_Programme (final).pdf
new file mode 100644
index 0000000..d2a3c42
Binary files /dev/null and b/_site/assets/files/BSPR_2010_Programme (final).pdf differ
diff --git a/_site/assets/files/BSPR_2010_meeting_and_Bioinformatics_Workshop_Reports.pdf b/_site/assets/files/BSPR_2010_meeting_and_Bioinformatics_Workshop_Reports.pdf
new file mode 100644
index 0000000..686044c
Binary files /dev/null and b/_site/assets/files/BSPR_2010_meeting_and_Bioinformatics_Workshop_Reports.pdf differ
diff --git a/_site/assets/files/BSPR_2011_Programme.pdf b/_site/assets/files/BSPR_2011_Programme.pdf
new file mode 100644
index 0000000..631b478
Binary files /dev/null and b/_site/assets/files/BSPR_2011_Programme.pdf differ
diff --git a/_site/assets/files/BSPR_2013_Meeting_Late-Breaking_Abstracts_Guide.pdf b/_site/assets/files/BSPR_2013_Meeting_Late-Breaking_Abstracts_Guide.pdf
new file mode 100644
index 0000000..f6296cd
Binary files /dev/null and b/_site/assets/files/BSPR_2013_Meeting_Late-Breaking_Abstracts_Guide.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2004.pdf b/_site/assets/files/BSPR_EBI_2004.pdf
new file mode 100644
index 0000000..7b567c9
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2004.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2005.pdf b/_site/assets/files/BSPR_EBI_2005.pdf
new file mode 100644
index 0000000..7b8b454
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2005.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2006.pdf b/_site/assets/files/BSPR_EBI_2006.pdf
new file mode 100644
index 0000000..94d04bb
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2006.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2007.pdf b/_site/assets/files/BSPR_EBI_2007.pdf
new file mode 100644
index 0000000..e232bbf
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2007.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2008.pdf b/_site/assets/files/BSPR_EBI_2008.pdf
new file mode 100644
index 0000000..a71c613
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2008.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2009.pdf b/_site/assets/files/BSPR_EBI_2009.pdf
new file mode 100644
index 0000000..a162f50
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2009.pdf differ
diff --git a/_site/assets/files/BSPR_EBI_2010.pdf b/_site/assets/files/BSPR_EBI_2010.pdf
new file mode 100644
index 0000000..7ae9739
Binary files /dev/null and b/_site/assets/files/BSPR_EBI_2010.pdf differ
diff --git a/_site/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf b/_site/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf
new file mode 100644
index 0000000..1d59acf
Binary files /dev/null and b/_site/assets/files/BSPR_Guidance_notes_on_applying_for_membership.pdf differ
diff --git a/_site/assets/files/BSPR_MJ Dunn_Fellowship_Confernece_Report_Brian Flatley.pdf b/_site/assets/files/BSPR_MJ Dunn_Fellowship_Confernece_Report_Brian Flatley.pdf
new file mode 100644
index 0000000..a845d31
Binary files /dev/null and b/_site/assets/files/BSPR_MJ Dunn_Fellowship_Confernece_Report_Brian Flatley.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter-Jan_2013.pdf b/_site/assets/files/BSPR_Newsletter-Jan_2013.pdf
new file mode 100644
index 0000000..7b1cb9c
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter-Jan_2013.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter-January_2012.pdf b/_site/assets/files/BSPR_Newsletter-January_2012.pdf
new file mode 100644
index 0000000..081d750
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter-January_2012.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter-March_2012.pdf b/_site/assets/files/BSPR_Newsletter-March_2012.pdf
new file mode 100644
index 0000000..2e9b3a0
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter-March_2012.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter-May_2012.pdf b/_site/assets/files/BSPR_Newsletter-May_2012.pdf
new file mode 100644
index 0000000..66906b2
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter-May_2012.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter-May_2013.pdf b/_site/assets/files/BSPR_Newsletter-May_2013.pdf
new file mode 100644
index 0000000..5505a38
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter-May_2013.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter_August_2013.pdf b/_site/assets/files/BSPR_Newsletter_August_2013.pdf
new file mode 100644
index 0000000..0d942b7
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter_August_2013.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter_February_2014.pdf b/_site/assets/files/BSPR_Newsletter_February_2014.pdf
new file mode 100644
index 0000000..eb918f2
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter_February_2014.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter_January_2014.pdf b/_site/assets/files/BSPR_Newsletter_January_2014.pdf
new file mode 100644
index 0000000..e890c45
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter_January_2014.pdf differ
diff --git a/_site/assets/files/BSPR_Newsletter_October_2013.pdf b/_site/assets/files/BSPR_Newsletter_October_2013.pdf
new file mode 100644
index 0000000..206f159
Binary files /dev/null and b/_site/assets/files/BSPR_Newsletter_October_2013.pdf differ
diff --git a/_site/assets/files/BSPR_Report_Hamdi_Hussain.docx b/_site/assets/files/BSPR_Report_Hamdi_Hussain.docx
new file mode 100644
index 0000000..a6360cd
Binary files /dev/null and b/_site/assets/files/BSPR_Report_Hamdi_Hussain.docx differ
diff --git a/_site/assets/files/BSPR_RiteshKrishna.pdf b/_site/assets/files/BSPR_RiteshKrishna.pdf
new file mode 100644
index 0000000..b737a3a
Binary files /dev/null and b/_site/assets/files/BSPR_RiteshKrishna.pdf differ
diff --git a/_site/assets/files/BSPR_Student_Bursary_Application_Form_2010.doc b/_site/assets/files/BSPR_Student_Bursary_Application_Form_2010.doc
new file mode 100644
index 0000000..6fdadfb
Binary files /dev/null and b/_site/assets/files/BSPR_Student_Bursary_Application_Form_2010.doc differ
diff --git a/_site/assets/files/BSPR_Student_Bursary_Application_Form_2011.doc b/_site/assets/files/BSPR_Student_Bursary_Application_Form_2011.doc
new file mode 100644
index 0000000..11297b1
Binary files /dev/null and b/_site/assets/files/BSPR_Student_Bursary_Application_Form_2011.doc differ
diff --git a/_site/assets/files/BSPR_SummerSchool_Fellowships_Application_Form_2011.doc b/_site/assets/files/BSPR_SummerSchool_Fellowships_Application_Form_2011.doc
new file mode 100644
index 0000000..111aa8b
Binary files /dev/null and b/_site/assets/files/BSPR_SummerSchool_Fellowships_Application_Form_2011.doc differ
diff --git a/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2010.doc b/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2010.doc
new file mode 100644
index 0000000..e905833
Binary files /dev/null and b/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2010.doc differ
diff --git a/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2011.doc b/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2011.doc
new file mode 100644
index 0000000..fbb3cec
Binary files /dev/null and b/_site/assets/files/BSPR_Young_Researcher_Award_Application_Form_2011.doc differ
diff --git a/_site/assets/files/Conference Report - NoelFitzGerald BSPR2016.pdf b/_site/assets/files/Conference Report - NoelFitzGerald BSPR2016.pdf
new file mode 100644
index 0000000..7fb9b10
Binary files /dev/null and b/_site/assets/files/Conference Report - NoelFitzGerald BSPR2016.pdf differ
diff --git a/_site/assets/files/Conference report - Claire Tonry BSPR2016.pdf b/_site/assets/files/Conference report - Claire Tonry BSPR2016.pdf
new file mode 100644
index 0000000..b38e429
Binary files /dev/null and b/_site/assets/files/Conference report - Claire Tonry BSPR2016.pdf differ
diff --git a/_site/assets/files/Daniel Rios 14-07-10.pdf b/_site/assets/files/Daniel Rios 14-07-10.pdf
new file mode 100644
index 0000000..1666828
Binary files /dev/null and b/_site/assets/files/Daniel Rios 14-07-10.pdf differ
diff --git a/_site/assets/files/Dario Di Silvestre 15-07-10.pdf b/_site/assets/files/Dario Di Silvestre 15-07-10.pdf
new file mode 100644
index 0000000..8f6065e
Binary files /dev/null and b/_site/assets/files/Dario Di Silvestre 15-07-10.pdf differ
diff --git a/_site/assets/files/David O'Connor 15-07-10.pdf b/_site/assets/files/David O'Connor 15-07-10.pdf
new file mode 100644
index 0000000..3413f6c
Binary files /dev/null and b/_site/assets/files/David O'Connor 15-07-10.pdf differ
diff --git a/_site/assets/files/Dolores Cahill 14-07-10.pdf b/_site/assets/files/Dolores Cahill 14-07-10.pdf
new file mode 100644
index 0000000..e9b845d
Binary files /dev/null and b/_site/assets/files/Dolores Cahill 14-07-10.pdf differ
diff --git a/_site/assets/files/EUPA2012Abstracts_final.pdf b/_site/assets/files/EUPA2012Abstracts_final.pdf
new file mode 100644
index 0000000..511264d
Binary files /dev/null and b/_site/assets/files/EUPA2012Abstracts_final.pdf differ
diff --git a/_site/assets/files/Emoke Bendixen 13-07-10.pdf b/_site/assets/files/Emoke Bendixen 13-07-10.pdf
new file mode 100644
index 0000000..b4e2a3e
Binary files /dev/null and b/_site/assets/files/Emoke Bendixen 13-07-10.pdf differ
diff --git a/_site/assets/files/Final_BSPR_A3_flyerVs4.pdf b/_site/assets/files/Final_BSPR_A3_flyerVs4.pdf
new file mode 100644
index 0000000..a05b63a
Binary files /dev/null and b/_site/assets/files/Final_BSPR_A3_flyerVs4.pdf differ
diff --git a/_site/assets/files/Gavin Wright 14-07-10.pdf b/_site/assets/files/Gavin Wright 14-07-10.pdf
new file mode 100644
index 0000000..aa1b706
Binary files /dev/null and b/_site/assets/files/Gavin Wright 14-07-10.pdf differ
diff --git a/_site/assets/files/HUPO 16th World Congress 2017_HarryHitwell.docx b/_site/assets/files/HUPO 16th World Congress 2017_HarryHitwell.docx
new file mode 100644
index 0000000..034b025
Binary files /dev/null and b/_site/assets/files/HUPO 16th World Congress 2017_HarryHitwell.docx differ
diff --git a/_site/assets/files/Hanno Steen 14-07-10.pdf b/_site/assets/files/Hanno Steen 14-07-10.pdf
new file mode 100644
index 0000000..fece671
Binary files /dev/null and b/_site/assets/files/Hanno Steen 14-07-10.pdf differ
diff --git a/_site/assets/files/Henning Hermjakob 14-07-10.pdf b/_site/assets/files/Henning Hermjakob 14-07-10.pdf
new file mode 100644
index 0000000..58da9e2
Binary files /dev/null and b/_site/assets/files/Henning Hermjakob 14-07-10.pdf differ
diff --git a/_site/assets/files/Ingrid Miller 13-07-10.pdf b/_site/assets/files/Ingrid Miller 13-07-10.pdf
new file mode 100644
index 0000000..9ae7935
Binary files /dev/null and b/_site/assets/files/Ingrid Miller 13-07-10.pdf differ
diff --git a/_site/assets/files/Javier Barallobre-Barreiro 13-07-10.pdf b/_site/assets/files/Javier Barallobre-Barreiro 13-07-10.pdf
new file mode 100644
index 0000000..6327e50
Binary files /dev/null and b/_site/assets/files/Javier Barallobre-Barreiro 13-07-10.pdf differ
diff --git a/_site/assets/files/Julio Saez-Rodriguez 13-07-10.pdf b/_site/assets/files/Julio Saez-Rodriguez 13-07-10.pdf
new file mode 100644
index 0000000..181f100
Binary files /dev/null and b/_site/assets/files/Julio Saez-Rodriguez 13-07-10.pdf differ
diff --git a/_site/assets/files/Kelly McMahon 14-07-10.pdf b/_site/assets/files/Kelly McMahon 14-07-10.pdf
new file mode 100644
index 0000000..8fc597e
Binary files /dev/null and b/_site/assets/files/Kelly McMahon 14-07-10.pdf differ
diff --git a/_site/assets/files/MJ Dunn Fellowships Announcement 2013.pdf b/_site/assets/files/MJ Dunn Fellowships Announcement 2013.pdf
new file mode 100644
index 0000000..e010680
Binary files /dev/null and b/_site/assets/files/MJ Dunn Fellowships Announcement 2013.pdf differ
diff --git a/_site/assets/files/MJ Dunn Fellowships Application Form 2013.doc b/_site/assets/files/MJ Dunn Fellowships Application Form 2013.doc
new file mode 100644
index 0000000..33b0173
Binary files /dev/null and b/_site/assets/files/MJ Dunn Fellowships Application Form 2013.doc differ
diff --git a/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2010.doc b/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2010.doc
new file mode 100644
index 0000000..5fddca1
Binary files /dev/null and b/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2010.doc differ
diff --git a/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2011.doc b/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2011.doc
new file mode 100644
index 0000000..4902116
Binary files /dev/null and b/_site/assets/files/MJ_Dunn_Fellowships_Application_Form_2011.doc differ
diff --git a/_site/assets/files/MSoste_BSPR_presentation_webpub.pdf b/_site/assets/files/MSoste_BSPR_presentation_webpub.pdf
new file mode 100644
index 0000000..57514ae
Binary files /dev/null and b/_site/assets/files/MSoste_BSPR_presentation_webpub.pdf differ
diff --git a/_site/assets/files/Marie-Claude Djidja 15-07-10.pdf b/_site/assets/files/Marie-Claude Djidja 15-07-10.pdf
new file mode 100644
index 0000000..99ad010
Binary files /dev/null and b/_site/assets/files/Marie-Claude Djidja 15-07-10.pdf differ
diff --git a/_site/assets/files/Matthias Selbach 13-07-10.pdf b/_site/assets/files/Matthias Selbach 13-07-10.pdf
new file mode 100644
index 0000000..2b7e211
Binary files /dev/null and b/_site/assets/files/Matthias Selbach 13-07-10.pdf differ
diff --git a/_site/assets/files/Omenn_BSPR_7_13_11.pdf b/_site/assets/files/Omenn_BSPR_7_13_11.pdf
new file mode 100644
index 0000000..da5010a
Binary files /dev/null and b/_site/assets/files/Omenn_BSPR_7_13_11.pdf differ
diff --git a/_site/assets/files/PRIDE_Inspector_BSPR.pdf b/_site/assets/files/PRIDE_Inspector_BSPR.pdf
new file mode 100644
index 0000000..05eb9f3
Binary files /dev/null and b/_site/assets/files/PRIDE_Inspector_BSPR.pdf differ
diff --git a/_site/assets/files/Phillip Wright 14-07-10.pdf b/_site/assets/files/Phillip Wright 14-07-10.pdf
new file mode 100644
index 0000000..0a12346
Binary files /dev/null and b/_site/assets/files/Phillip Wright 14-07-10.pdf differ
diff --git a/_site/assets/files/Proteomics Summer School_EF.docx b/_site/assets/files/Proteomics Summer School_EF.docx
new file mode 100644
index 0000000..4a8d5da
Binary files /dev/null and b/_site/assets/files/Proteomics Summer School_EF.docx differ
diff --git a/_site/assets/files/Report School of Proteomics.docx b/_site/assets/files/Report School of Proteomics.docx
new file mode 100644
index 0000000..2718701
Binary files /dev/null and b/_site/assets/files/Report School of Proteomics.docx differ
diff --git a/_site/assets/files/Report for attendance EMBO Workshop.docx b/_site/assets/files/Report for attendance EMBO Workshop.docx
new file mode 100644
index 0000000..c3885ca
Binary files /dev/null and b/_site/assets/files/Report for attendance EMBO Workshop.docx differ
diff --git a/_site/assets/files/Richard Kay 15-07-10.pdf b/_site/assets/files/Richard Kay 15-07-10.pdf
new file mode 100644
index 0000000..462bbb5
Binary files /dev/null and b/_site/assets/files/Richard Kay 15-07-10.pdf differ
diff --git a/_site/assets/files/Rob Beynon 14-07-10.pdf b/_site/assets/files/Rob Beynon 14-07-10.pdf
new file mode 100644
index 0000000..af1660b
Binary files /dev/null and b/_site/assets/files/Rob Beynon 14-07-10.pdf differ
diff --git a/_site/assets/files/Sarah Martin 14-07-10.pdf b/_site/assets/files/Sarah Martin 14-07-10.pdf
new file mode 100644
index 0000000..af49e76
Binary files /dev/null and b/_site/assets/files/Sarah Martin 14-07-10.pdf differ
diff --git a/_site/assets/files/Travel Grant Report_Sarah Wagner_BSPR.docx b/_site/assets/files/Travel Grant Report_Sarah Wagner_BSPR.docx
new file mode 100644
index 0000000..2cd38bb
Binary files /dev/null and b/_site/assets/files/Travel Grant Report_Sarah Wagner_BSPR.docx differ
diff --git a/_site/assets/files/Visitor_travel_Information_2010.pdf b/_site/assets/files/Visitor_travel_Information_2010.pdf
new file mode 100644
index 0000000..3536294
Binary files /dev/null and b/_site/assets/files/Visitor_travel_Information_2010.pdf differ
diff --git a/_site/assets/files/Waltraud Schulze 13-07-10.pdf b/_site/assets/files/Waltraud Schulze 13-07-10.pdf
new file mode 100644
index 0000000..4f36cba
Binary files /dev/null and b/_site/assets/files/Waltraud Schulze 13-07-10.pdf differ
diff --git a/_site/assets/files/bspr report.docx b/_site/assets/files/bspr report.docx
new file mode 100644
index 0000000..862863b
Binary files /dev/null and b/_site/assets/files/bspr report.docx differ
diff --git a/_site/assets/files/bspr-final-programme.pdf b/_site/assets/files/bspr-final-programme.pdf
new file mode 100644
index 0000000..ea255c1
Binary files /dev/null and b/_site/assets/files/bspr-final-programme.pdf differ
diff --git a/_site/assets/files/mi-clustering-scoring_rJimenez.pdf b/_site/assets/files/mi-clustering-scoring_rJimenez.pdf
new file mode 100644
index 0000000..1d10af3
Binary files /dev/null and b/_site/assets/files/mi-clustering-scoring_rJimenez.pdf differ
diff --git a/_site/assets/files/mjDunnAward2015.docx b/_site/assets/files/mjDunnAward2015.docx
new file mode 100644
index 0000000..3ba5b14
Binary files /dev/null and b/_site/assets/files/mjDunnAward2015.docx differ
diff --git a/_site/assets/images/7thbspr.jpg b/_site/assets/images/7thbspr.jpg
new file mode 100644
index 0000000..6b8d0fa
Binary files /dev/null and b/_site/assets/images/7thbspr.jpg differ
diff --git a/_site/assets/images/EMCC.jpg b/_site/assets/images/EMCC.jpg
new file mode 100644
index 0000000..e3ebf4c
Binary files /dev/null and b/_site/assets/images/EMCC.jpg differ
diff --git a/_site/assets/images/EMCC2.jpg b/_site/assets/images/EMCC2.jpg
new file mode 100644
index 0000000..94b84e5
Binary files /dev/null and b/_site/assets/images/EMCC2.jpg differ
diff --git a/_site/assets/images/Kathryn-Portrait.jpg b/_site/assets/images/Kathryn-Portrait.jpg
new file mode 100644
index 0000000..84c6b3a
Binary files /dev/null and b/_site/assets/images/Kathryn-Portrait.jpg differ
diff --git a/_site/assets/images/Key-dates.jpg b/_site/assets/images/Key-dates.jpg
new file mode 100644
index 0000000..8e74bab
Binary files /dev/null and b/_site/assets/images/Key-dates.jpg differ
diff --git a/_site/assets/images/LMS_Talk_KSL.jpg b/_site/assets/images/LMS_Talk_KSL.jpg
new file mode 100644
index 0000000..6c4824b
Binary files /dev/null and b/_site/assets/images/LMS_Talk_KSL.jpg differ
diff --git a/_site/assets/images/Orchard-Hotel.jpg b/_site/assets/images/Orchard-Hotel.jpg
new file mode 100644
index 0000000..291f681
Binary files /dev/null and b/_site/assets/images/Orchard-Hotel.jpg differ
diff --git a/_site/assets/images/banner.png b/_site/assets/images/banner.png
new file mode 100644
index 0000000..fd017f8
Binary files /dev/null and b/_site/assets/images/banner.png differ
diff --git a/_site/assets/images/bspr-meeting-2013.png b/_site/assets/images/bspr-meeting-2013.png
new file mode 100644
index 0000000..9dadce5
Binary files /dev/null and b/_site/assets/images/bspr-meeting-2013.png differ
diff --git a/_site/assets/images/bspr2011-banner.png b/_site/assets/images/bspr2011-banner.png
new file mode 100644
index 0000000..8d3f7f9
Binary files /dev/null and b/_site/assets/images/bspr2011-banner.png differ
diff --git a/_site/assets/images/bspr2011_160x160.png b/_site/assets/images/bspr2011_160x160.png
new file mode 100644
index 0000000..cd2f07f
Binary files /dev/null and b/_site/assets/images/bspr2011_160x160.png differ
diff --git a/_site/assets/images/bspr2011_260x110.png b/_site/assets/images/bspr2011_260x110.png
new file mode 100644
index 0000000..fbab654
Binary files /dev/null and b/_site/assets/images/bspr2011_260x110.png differ
diff --git a/_site/assets/images/bspr2011s.png b/_site/assets/images/bspr2011s.png
new file mode 100644
index 0000000..8d3f7f9
Binary files /dev/null and b/_site/assets/images/bspr2011s.png differ
diff --git a/_site/assets/images/bspr2015.jpg b/_site/assets/images/bspr2015.jpg
new file mode 100644
index 0000000..3f3f36f
Binary files /dev/null and b/_site/assets/images/bspr2015.jpg differ
diff --git a/_site/assets/images/bspr2016.png b/_site/assets/images/bspr2016.png
new file mode 100644
index 0000000..9c311ae
Binary files /dev/null and b/_site/assets/images/bspr2016.png differ
diff --git a/_site/assets/images/bspr2018v1.jpg b/_site/assets/images/bspr2018v1.jpg
new file mode 100644
index 0000000..5899219
Binary files /dev/null and b/_site/assets/images/bspr2018v1.jpg differ
diff --git a/_site/assets/images/bspr_2016_02.jpg b/_site/assets/images/bspr_2016_02.jpg
new file mode 100644
index 0000000..8939388
Binary files /dev/null and b/_site/assets/images/bspr_2016_02.jpg differ
diff --git a/_site/assets/images/bspr_logo_100.jpg b/_site/assets/images/bspr_logo_100.jpg
new file mode 100644
index 0000000..aa11bf8
Binary files /dev/null and b/_site/assets/images/bspr_logo_100.jpg differ
diff --git a/_site/assets/images/image003.jpg b/_site/assets/images/image003.jpg
new file mode 100644
index 0000000..0181b15
Binary files /dev/null and b/_site/assets/images/image003.jpg differ
diff --git a/_site/assets/images/mm-feature.png b/_site/assets/images/mm-feature.png
new file mode 100644
index 0000000..a0f8b40
Binary files /dev/null and b/_site/assets/images/mm-feature.png differ
diff --git a/_site/assets/images/rscmb.gif b/_site/assets/images/rscmb.gif
new file mode 100644
index 0000000..5d10ac8
Binary files /dev/null and b/_site/assets/images/rscmb.gif differ
diff --git a/_site/assets/js/_main.js b/_site/assets/js/_main.js
new file mode 100644
index 0000000..31b1f7d
--- /dev/null
+++ b/_site/assets/js/_main.js
@@ -0,0 +1,106 @@
+/* ==========================================================================
+ jQuery plugin settings and other scripts
+ ========================================================================== */
+
+$(document).ready(function() {
+ // Sticky footer
+ var bumpIt = function() {
+ $("body").css("margin-bottom", $(".page__footer").outerHeight(true));
+ },
+ didResize = false;
+
+ bumpIt();
+
+ $(window).resize(function() {
+ didResize = true;
+ });
+ setInterval(function() {
+ if (didResize) {
+ didResize = false;
+ bumpIt();
+ }
+ }, 250);
+
+ // FitVids init
+ $("#main").fitVids();
+
+ // Sticky sidebar
+ var stickySideBar = function() {
+ var show =
+ $(".author__urls-wrapper button").length === 0
+ ? $(window).width() > 1024 // width should match $large Sass variable
+ : !$(".author__urls-wrapper button").is(":visible");
+ if (show) {
+ // fix
+ $(".sidebar").addClass("sticky");
+ } else {
+ // unfix
+ $(".sidebar").removeClass("sticky");
+ }
+ };
+
+ stickySideBar();
+
+ $(window).resize(function() {
+ stickySideBar();
+ });
+
+ // Follow menu drop down
+ $(".author__urls-wrapper button").on("click", function() {
+ $(".author__urls").toggleClass("is--visible");
+ $(".author__urls-wrapper button").toggleClass("open");
+ });
+
+ // Search toggle
+ $(".search__toggle").on("click", function() {
+ $(".search-content").toggleClass("is--visible");
+ $(".initial-content").toggleClass("is--hidden");
+ // set focus on input
+ setTimeout(function() {
+ $(".search-content input").focus();
+ }, 400);
+ });
+
+ // init smooth scroll
+ $("a").smoothScroll({ offset: -20 });
+
+ // add lightbox class to all image links
+ $(
+ "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']"
+ ).addClass("image-popup");
+
+ // Magnific-Popup options
+ $(".image-popup").magnificPopup({
+ // disableOn: function() {
+ // if( $(window).width() < 500 ) {
+ // return false;
+ // }
+ // return true;
+ // },
+ type: "image",
+ tLoading: "Loading image #%curr%...",
+ gallery: {
+ enabled: true,
+ navigateByImgClick: true,
+ preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
+ },
+ image: {
+ tError: 'Image #%curr% could not be loaded.'
+ },
+ removalDelay: 500, // Delay in milliseconds before popup is removed
+ // Class that is added to body when popup is open.
+ // make it unique to apply your CSS animations just to this exact popup
+ mainClass: "mfp-zoom-in",
+ callbacks: {
+ beforeOpen: function() {
+ // just a hack that adds mfp-anim class to markup
+ this.st.image.markup = this.st.image.markup.replace(
+ "mfp-figure",
+ "mfp-figure mfp-with-anim"
+ );
+ }
+ },
+ closeOnContentClick: true,
+ midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
+ });
+});
diff --git a/_site/assets/js/lunr/lunr-en.js b/_site/assets/js/lunr/lunr-en.js
new file mode 100644
index 0000000..54594b2
--- /dev/null
+++ b/_site/assets/js/lunr/lunr-en.js
@@ -0,0 +1,71 @@
+var idx = lunr(function () {
+ this.field('title')
+ this.field('excerpt')
+ this.field('categories')
+ this.field('tags')
+ this.ref('id')
+
+ this.pipeline.remove(lunr.trimmer)
+
+ for (var item in store) {
+ this.add({
+ title: store[item].title,
+ excerpt: store[item].excerpt,
+ categories: store[item].categories,
+ tags: store[item].tags,
+ id: item
+ })
+ }
+});
+
+console.log( jQuery.type(idx) );
+
+$(document).ready(function() {
+ $('input#search').on('keyup', function () {
+ var resultdiv = $('#results');
+ var query = $(this).val().toLowerCase();
+ var result =
+ idx.query(function (q) {
+ query.split(lunr.tokenizer.separator).forEach(function (term) {
+ q.term(term, { boost: 100 })
+ if(query.lastIndexOf(" ") != query.length-1){
+ q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 })
+ }
+ if (term != ""){
+ q.term(term, { usePipeline: false, editDistance: 1, boost: 1 })
+ }
+ })
+ });
+ resultdiv.empty();
+ resultdiv.prepend(''+result.length+' Result(s) found
');
+ for (var item in result) {
+ var ref = result[item].ref;
+ if(store[ref].teaser){
+ var searchitem =
+ ''+
+ '
'+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
+ ' '+
+ '
';
+ }
+ else{
+ var searchitem =
+ ''+
+ '
'+
+ ''+
+ ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
+ ' '+
+ '
';
+ }
+ resultdiv.append(searchitem);
+ }
+ });
+});
diff --git a/_site/assets/js/lunr/lunr-gr.js b/_site/assets/js/lunr/lunr-gr.js
new file mode 100644
index 0000000..3ec0229
--- /dev/null
+++ b/_site/assets/js/lunr/lunr-gr.js
@@ -0,0 +1,524 @@
+step1list = new Array();
+step1list["ΦΑΓΙΑ"] = "ΦΑ";
+step1list["ΦΑΓΙΟΥ"] = "ΦΑ";
+step1list["ΦΑΓΙΩΝ"] = "ΦΑ";
+step1list["ΣΚΑΓΙΑ"] = "ΣΚΑ";
+step1list["ΣΚΑΓΙΟΥ"] = "ΣΚΑ";
+step1list["ΣΚΑΓΙΩΝ"] = "ΣΚΑ";
+step1list["ΟΛΟΓΙΟΥ"] = "ΟΛΟ";
+step1list["ΟΛΟΓΙΑ"] = "ΟΛΟ";
+step1list["ΟΛΟΓΙΩΝ"] = "ΟΛΟ";
+step1list["ΣΟΓΙΟΥ"] = "ΣΟ";
+step1list["ΣΟΓΙΑ"] = "ΣΟ";
+step1list["ΣΟΓΙΩΝ"] = "ΣΟ";
+step1list["ΤΑΤΟΓΙΑ"] = "ΤΑΤΟ";
+step1list["ΤΑΤΟΓΙΟΥ"] = "ΤΑΤΟ";
+step1list["ΤΑΤΟΓΙΩΝ"] = "ΤΑΤΟ";
+step1list["ΚΡΕΑΣ"] = "ΚΡΕ";
+step1list["ΚΡΕΑΤΟΣ"] = "ΚΡΕ";
+step1list["ΚΡΕΑΤΑ"] = "ΚΡΕ";
+step1list["ΚΡΕΑΤΩΝ"] = "ΚΡΕ";
+step1list["ΠΕΡΑΣ"] = "ΠΕΡ";
+step1list["ΠΕΡΑΤΟΣ"] = "ΠΕΡ";
+step1list["ΠΕΡΑΤΑ"] = "ΠΕΡ";
+step1list["ΠΕΡΑΤΩΝ"] = "ΠΕΡ";
+step1list["ΤΕΡΑΣ"] = "ΤΕΡ";
+step1list["ΤΕΡΑΤΟΣ"] = "ΤΕΡ";
+step1list["ΤΕΡΑΤΑ"] = "ΤΕΡ";
+step1list["ΤΕΡΑΤΩΝ"] = "ΤΕΡ";
+step1list["ΦΩΣ"] = "ΦΩ";
+step1list["ΦΩΤΟΣ"] = "ΦΩ";
+step1list["ΦΩΤΑ"] = "ΦΩ";
+step1list["ΦΩΤΩΝ"] = "ΦΩ";
+step1list["ΚΑΘΕΣΤΩΣ"] = "ΚΑΘΕΣΤ";
+step1list["ΚΑΘΕΣΤΩΤΟΣ"] = "ΚΑΘΕΣΤ";
+step1list["ΚΑΘΕΣΤΩΤΑ"] = "ΚΑΘΕΣΤ";
+step1list["ΚΑΘΕΣΤΩΤΩΝ"] = "ΚΑΘΕΣΤ";
+step1list["ΓΕΓΟΝΟΣ"] = "ΓΕΓΟΝ";
+step1list["ΓΕΓΟΝΟΤΟΣ"] = "ΓΕΓΟΝ";
+step1list["ΓΕΓΟΝΟΤΑ"] = "ΓΕΓΟΝ";
+step1list["ΓΕΓΟΝΟΤΩΝ"] = "ΓΕΓΟΝ";
+
+v = "[ΑΕΗΙΟΥΩ]";
+v2 = "[ΑΕΗΙΟΩ]"
+
+function stemWord(w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+ test1 = new Boolean(true);
+
+ if(w.length < 4) {
+ return w;
+ }
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ re = /(.*)(ΦΑΓΙΑ|ΦΑΓΙΟΥ|ΦΑΓΙΩΝ|ΣΚΑΓΙΑ|ΣΚΑΓΙΟΥ|ΣΚΑΓΙΩΝ|ΟΛΟΓΙΟΥ|ΟΛΟΓΙΑ|ΟΛΟΓΙΩΝ|ΣΟΓΙΟΥ|ΣΟΓΙΑ|ΣΟΓΙΩΝ|ΤΑΤΟΓΙΑ|ΤΑΤΟΓΙΟΥ|ΤΑΤΟΓΙΩΝ|ΚΡΕΑΣ|ΚΡΕΑΤΟΣ|ΚΡΕΑΤΑ|ΚΡΕΑΤΩΝ|ΠΕΡΑΣ|ΠΕΡΑΤΟΣ|ΠΕΡΑΤΑ|ΠΕΡΑΤΩΝ|ΤΕΡΑΣ|ΤΕΡΑΤΟΣ|ΤΕΡΑΤΑ|ΤΕΡΑΤΩΝ|ΦΩΣ|ΦΩΤΟΣ|ΦΩΤΑ|ΦΩΤΩΝ|ΚΑΘΕΣΤΩΣ|ΚΑΘΕΣΤΩΤΟΣ|ΚΑΘΕΣΤΩΤΑ|ΚΑΘΕΣΤΩΤΩΝ|ΓΕΓΟΝΟΣ|ΓΕΓΟΝΟΤΟΣ|ΓΕΓΟΝΟΤΑ|ΓΕΓΟΝΟΤΩΝ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ w = stem + step1list[suffix];
+ test1 = false;
+ }
+
+ re = /^(.+?)(ΑΔΕΣ|ΑΔΩΝ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+
+ reg1 = /(ΟΚ|ΜΑΜ|ΜΑΝ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ΝΤΑΝΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ)$/;
+
+ if(!(reg1.test(w))) {
+ w = w + "ΑΔ";
+ }
+ }
+
+ re2 = /^(.+?)(ΕΔΕΣ|ΕΔΩΝ)$/;
+
+ if(re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+
+ exept2 = /(ΟΠ|ΙΠ|ΕΜΠ|ΥΠ|ΓΗΠ|ΔΑΠ|ΚΡΑΣΠ|ΜΙΛ)$/;
+
+ if(exept2.test(w)) {
+ w = w + "ΕΔ";
+ }
+ }
+
+ re3 = /^(.+?)(ΟΥΔΕΣ|ΟΥΔΩΝ)$/;
+
+ if(re3.test(w)) {
+ var fp = re3.exec(w);
+ stem = fp[1];
+ w = stem;
+
+ exept3 = /(ΑΡΚ|ΚΑΛΙΑΚ|ΠΕΤΑΛ|ΛΙΧ|ΠΛΕΞ|ΣΚ|Σ|ΦΛ|ΦΡ|ΒΕΛ|ΛΟΥΛ|ΧΝ|ΣΠ|ΤΡΑΓ|ΦΕ)$/;
+
+ if(exept3.test(w)) {
+ w = w + "ΟΥΔ";
+ }
+ }
+
+ re4 = /^(.+?)(ΕΩΣ|ΕΩΝ)$/;
+
+ if(re4.test(w)) {
+ var fp = re4.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept4 = /^(Θ|Δ|ΕΛ|ΓΑΛ|Ν|Π|ΙΔ|ΠΑΡ)$/;
+
+ if(exept4.test(w)) {
+ w = w + "Ε";
+ }
+ }
+
+ re = /^(.+?)(ΙΑ|ΙΟΥ|ΙΩΝ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ re2 = new RegExp(v + "$");
+ test1 = false;
+
+ if(re2.test(w)) {
+ w = stem + "Ι";
+ }
+ }
+
+ re = /^(.+?)(ΙΚΑ|ΙΚΟ|ΙΚΟΥ|ΙΚΩΝ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ re2 = new RegExp(v + "$");
+ exept5 = /^(ΑΛ|ΑΔ|ΕΝΔ|ΑΜΑΝ|ΑΜΜΟΧΑΛ|ΗΘ|ΑΝΗΘ|ΑΝΤΙΔ|ΦΥΣ|ΒΡΩΜ|ΓΕΡ|ΕΞΩΔ|ΚΑΛΠ|ΚΑΛΛΙΝ|ΚΑΤΑΔ|ΜΟΥΛ|ΜΠΑΝ|ΜΠΑΓΙΑΤ|ΜΠΟΛ|ΜΠΟΣ|ΝΙΤ|ΞΙΚ|ΣΥΝΟΜΗΛ|ΠΕΤΣ|ΠΙΤΣ|ΠΙΚΑΝΤ|ΠΛΙΑΤΣ|ΠΟΣΤΕΛΝ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΥΝΑΔ|ΤΣΑΜ|ΥΠΟΔ|ΦΙΛΟΝ|ΦΥΛΟΔ|ΧΑΣ)$/;
+
+ if((exept5.test(w)) || (re2.test(w))) {
+ w = w + "ΙΚ";
+ }
+ }
+
+ re = /^(.+?)(ΑΜΕ)$/;
+ re2 = /^(.+?)(ΑΓΑΜΕ|ΗΣΑΜΕ|ΟΥΣΑΜΕ|ΗΚΑΜΕ|ΗΘΗΚΑΜΕ)$/;
+ if(w == "ΑΓΑΜΕ") {
+ w = "ΑΓΑΜ";
+ }
+
+ if(re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+ }
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept6 = /^(ΑΝΑΠ|ΑΠΟΘ|ΑΠΟΚ|ΑΠΟΣΤ|ΒΟΥΒ|ΞΕΘ|ΟΥΛ|ΠΕΘ|ΠΙΚΡ|ΠΟΤ|ΣΙΧ|Χ)$/;
+
+ if(exept6.test(w)) {
+ w = w + "ΑΜ";
+ }
+ }
+
+ re2 = /^(.+?)(ΑΝΕ)$/;
+ re3 = /^(.+?)(ΑΓΑΝΕ|ΗΣΑΝΕ|ΟΥΣΑΝΕ|ΙΟΝΤΑΝΕ|ΙΟΤΑΝΕ|ΙΟΥΝΤΑΝΕ|ΟΝΤΑΝΕ|ΟΤΑΝΕ|ΟΥΝΤΑΝΕ|ΗΚΑΝΕ|ΗΘΗΚΑΝΕ)$/;
+
+ if(re3.test(w)) {
+ var fp = re3.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ re3 = /^(ΤΡ|ΤΣ)$/;
+
+ if(re3.test(w)) {
+ w = w + "ΑΓΑΝ";
+ }
+ }
+
+ if(re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ re2 = new RegExp(v2 + "$");
+ exept7 = /^(ΒΕΤΕΡ|ΒΟΥΛΚ|ΒΡΑΧΜ|Γ|ΔΡΑΔΟΥΜ|Θ|ΚΑΛΠΟΥΖ|ΚΑΣΤΕΛ|ΚΟΡΜΟΡ|ΛΑΟΠΛ|ΜΩΑΜΕΘ|Μ|ΜΟΥΣΟΥΛΜ|Ν|ΟΥΛ|Π|ΠΕΛΕΚ|ΠΛ|ΠΟΛΙΣ|ΠΟΡΤΟΛ|ΣΑΡΑΚΑΤΣ|ΣΟΥΛΤ|ΤΣΑΡΛΑΤ|ΟΡΦ|ΤΣΙΓΓ|ΤΣΟΠ|ΦΩΤΟΣΤΕΦ|Χ|ΨΥΧΟΠΛ|ΑΓ|ΟΡΦ|ΓΑΛ|ΓΕΡ|ΔΕΚ|ΔΙΠΛ|ΑΜΕΡΙΚΑΝ|ΟΥΡ|ΠΙΘ|ΠΟΥΡΙΤ|Σ|ΖΩΝΤ|ΙΚ|ΚΑΣΤ|ΚΟΠ|ΛΙΧ|ΛΟΥΘΗΡ|ΜΑΙΝΤ|ΜΕΛ|ΣΙΓ|ΣΠ|ΣΤΕΓ|ΤΡΑΓ|ΤΣΑΓ|Φ|ΕΡ|ΑΔΑΠ|ΑΘΙΓΓ|ΑΜΗΧ|ΑΝΙΚ|ΑΝΟΡΓ|ΑΠΗΓ|ΑΠΙΘ|ΑΤΣΙΓΓ|ΒΑΣ|ΒΑΣΚ|ΒΑΘΥΓΑΛ|ΒΙΟΜΗΧ|ΒΡΑΧΥΚ|ΔΙΑΤ|ΔΙΑΦ|ΕΝΟΡΓ|ΘΥΣ|ΚΑΠΝΟΒΙΟΜΗΧ|ΚΑΤΑΓΑΛ|ΚΛΙΒ|ΚΟΙΛΑΡΦ|ΛΙΒ|ΜΕΓΛΟΒΙΟΜΗΧ|ΜΙΚΡΟΒΙΟΜΗΧ|ΝΤΑΒ|ΞΗΡΟΚΛΙΒ|ΟΛΙΓΟΔΑΜ|ΟΛΟΓΑΛ|ΠΕΝΤΑΡΦ|ΠΕΡΗΦ|ΠΕΡΙΤΡ|ΠΛΑΤ|ΠΟΛΥΔΑΠ|ΠΟΛΥΜΗΧ|ΣΤΕΦ|ΤΑΒ|ΤΕΤ|ΥΠΕΡΗΦ|ΥΠΟΚΟΠ|ΧΑΜΗΛΟΔΑΠ|ΨΗΛΟΤΑΒ)$/;
+
+ if((re2.test(w)) || (exept7.test(w))) {
+ w = w + "ΑΝ";
+ }
+ }
+
+ re3 = /^(.+?)(ΕΤΕ)$/;
+ re4 = /^(.+?)(ΗΣΕΤΕ)$/;
+
+ if(re4.test(w)) {
+ var fp = re4.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+ }
+
+ if(re3.test(w)) {
+ var fp = re3.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ re3 = new RegExp(v2 + "$");
+ exept8 = /(ΟΔ|ΑΙΡ|ΦΟΡ|ΤΑΘ|ΔΙΑΘ|ΣΧ|ΕΝΔ|ΕΥΡ|ΤΙΘ|ΥΠΕΡΘ|ΡΑΘ|ΕΝΘ|ΡΟΘ|ΣΘ|ΠΥΡ|ΑΙΝ|ΣΥΝΔ|ΣΥΝ|ΣΥΝΘ|ΧΩΡ|ΠΟΝ|ΒΡ|ΚΑΘ|ΕΥΘ|ΕΚΘ|ΝΕΤ|ΡΟΝ|ΑΡΚ|ΒΑΡ|ΒΟΛ|ΩΦΕΛ)$/;
+ exept9 = /^(ΑΒΑΡ|ΒΕΝ|ΕΝΑΡ|ΑΒΡ|ΑΔ|ΑΘ|ΑΝ|ΑΠΛ|ΒΑΡΟΝ|ΝΤΡ|ΣΚ|ΚΟΠ|ΜΠΟΡ|ΝΙΦ|ΠΑΓ|ΠΑΡΑΚΑΛ|ΣΕΡΠ|ΣΚΕΛ|ΣΥΡΦ|ΤΟΚ|Υ|Δ|ΕΜ|ΘΑΡΡ|Θ)$/;
+
+ if((re3.test(w)) || (exept8.test(w)) || (exept9.test(w))) {
+ w = w + "ΕΤ";
+ }
+ }
+
+ re = /^(.+?)(ΟΝΤΑΣ|ΩΝΤΑΣ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept10 = /^(ΑΡΧ)$/;
+ exept11 = /(ΚΡΕ)$/;
+ if(exept10.test(w)) {
+ w = w + "ΟΝΤ";
+ }
+ if(exept11.test(w)) {
+ w = w + "ΩΝΤ";
+ }
+ }
+
+ re = /^(.+?)(ΟΜΑΣΤΕ|ΙΟΜΑΣΤΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept11 = /^(ΟΝ)$/;
+
+ if(exept11.test(w)) {
+ w = w + "ΟΜΑΣΤ";
+ }
+ }
+
+ re = /^(.+?)(ΕΣΤΕ)$/;
+ re2 = /^(.+?)(ΙΕΣΤΕ)$/;
+
+ if(re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ re2 = /^(Π|ΑΠ|ΣΥΜΠ|ΑΣΥΜΠ|ΑΚΑΤΑΠ|ΑΜΕΤΑΜΦ)$/;
+
+ if(re2.test(w)) {
+ w = w + "ΙΕΣΤ";
+ }
+ }
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept12 = /^(ΑΛ|ΑΡ|ΕΚΤΕΛ|Ζ|Μ|Ξ|ΠΑΡΑΚΑΛ|ΑΡ|ΠΡΟ|ΝΙΣ)$/;
+
+ if(exept12.test(w)) {
+ w = w + "ΕΣΤ";
+ }
+ }
+
+ re = /^(.+?)(ΗΚΑ|ΗΚΕΣ|ΗΚΕ)$/;
+ re2 = /^(.+?)(ΗΘΗΚΑ|ΗΘΗΚΕΣ|ΗΘΗΚΕ)$/;
+
+ if(re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+ }
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept13 = /(ΣΚΩΛ|ΣΚΟΥΛ|ΝΑΡΘ|ΣΦ|ΟΘ|ΠΙΘ)$/;
+ exept14 = /^(ΔΙΑΘ|Θ|ΠΑΡΑΚΑΤΑΘ|ΠΡΟΣΘ|ΣΥΝΘ|)$/;
+
+ if((exept13.test(w)) || (exept14.test(w))) {
+ w = w + "ΗΚ";
+ }
+ }
+
+ re = /^(.+?)(ΟΥΣΑ|ΟΥΣΕΣ|ΟΥΣΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept15 = /^(ΦΑΡΜΑΚ|ΧΑΔ|ΑΓΚ|ΑΝΑΡΡ|ΒΡΟΜ|ΕΚΛΙΠ|ΛΑΜΠΙΔ|ΛΕΧ|Μ|ΠΑΤ|Ρ|Λ|ΜΕΔ|ΜΕΣΑΖ|ΥΠΟΤΕΙΝ|ΑΜ|ΑΙΘ|ΑΝΗΚ|ΔΕΣΠΟΖ|ΕΝΔΙΑΦΕΡ|ΔΕ|ΔΕΥΤΕΡΕΥ|ΚΑΘΑΡΕΥ|ΠΛΕ|ΤΣΑ)$/;
+ exept16 = /(ΠΟΔΑΡ|ΒΛΕΠ|ΠΑΝΤΑΧ|ΦΡΥΔ|ΜΑΝΤΙΛ|ΜΑΛΛ|ΚΥΜΑΤ|ΛΑΧ|ΛΗΓ|ΦΑΓ|ΟΜ|ΠΡΩΤ)$/;
+
+ if((exept15.test(w)) || (exept16.test(w))) {
+ w = w + "ΟΥΣ";
+ }
+ }
+
+ re = /^(.+?)(ΑΓΑ|ΑΓΕΣ|ΑΓΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept17 = /^(ΨΟΦ|ΝΑΥΛΟΧ)$/;
+ exept20 = /(ΚΟΛΛ)$/;
+ exept18 = /^(ΑΒΑΣΤ|ΠΟΛΥΦ|ΑΔΗΦ|ΠΑΜΦ|Ρ|ΑΣΠ|ΑΦ|ΑΜΑΛ|ΑΜΑΛΛΙ|ΑΝΥΣΤ|ΑΠΕΡ|ΑΣΠΑΡ|ΑΧΑΡ|ΔΕΡΒΕΝ|ΔΡΟΣΟΠ|ΞΕΦ|ΝΕΟΠ|ΝΟΜΟΤ|ΟΛΟΠ|ΟΜΟΤ|ΠΡΟΣΤ|ΠΡΟΣΩΠΟΠ|ΣΥΜΠ|ΣΥΝΤ|Τ|ΥΠΟΤ|ΧΑΡ|ΑΕΙΠ|ΑΙΜΟΣΤ|ΑΝΥΠ|ΑΠΟΤ|ΑΡΤΙΠ|ΔΙΑΤ|ΕΝ|ΕΠΙΤ|ΚΡΟΚΑΛΟΠ|ΣΙΔΗΡΟΠ|Λ|ΝΑΥ|ΟΥΛΑΜ|ΟΥΡ|Π|ΤΡ|Μ)$/;
+ exept19 = /(ΟΦ|ΠΕΛ|ΧΟΡΤ|ΛΛ|ΣΦ|ΡΠ|ΦΡ|ΠΡ|ΛΟΧ|ΣΜΗΝ)$/;
+
+ if(((exept18.test(w)) || (exept19.test(w))) && !((exept17.test(w)) || (exept20.test(w)))) {
+ w = w + "ΑΓ";
+ }
+ }
+
+ re = /^(.+?)(ΗΣΕ|ΗΣΟΥ|ΗΣΑ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept21 = /^(Ν|ΧΕΡΣΟΝ|ΔΩΔΕΚΑΝ|ΕΡΗΜΟΝ|ΜΕΓΑΛΟΝ|ΕΠΤΑΝ)$/;
+
+ if(exept21.test(w)) {
+ w = w + "ΗΣ";
+ }
+ }
+
+ re = /^(.+?)(ΗΣΤΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept22 = /^(ΑΣΒ|ΣΒ|ΑΧΡ|ΧΡ|ΑΠΛ|ΑΕΙΜΝ|ΔΥΣΧΡ|ΕΥΧΡ|ΚΟΙΝΟΧΡ|ΠΑΛΙΜΨ)$/;
+
+ if(exept22.test(w)) {
+ w = w + "ΗΣΤ";
+ }
+ }
+
+ re = /^(.+?)(ΟΥΝΕ|ΗΣΟΥΝΕ|ΗΘΟΥΝΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept23 = /^(Ν|Ρ|ΣΠΙ|ΣΤΡΑΒΟΜΟΥΤΣ|ΚΑΚΟΜΟΥΤΣ|ΕΞΩΝ)$/;
+
+ if(exept23.test(w)) {
+ w = w + "ΟΥΝ";
+ }
+ }
+
+ re = /^(.+?)(ΟΥΜΕ|ΗΣΟΥΜΕ|ΗΘΟΥΜΕ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ test1 = false;
+
+ exept24 = /^(ΠΑΡΑΣΟΥΣ|Φ|Χ|ΩΡΙΟΠΛ|ΑΖ|ΑΛΛΟΣΟΥΣ|ΑΣΟΥΣ)$/;
+
+ if(exept24.test(w)) {
+ w = w + "ΟΥΜ";
+ }
+ }
+
+ re = /^(.+?)(ΜΑΤΑ|ΜΑΤΩΝ|ΜΑΤΟΣ)$/;
+ re2 = /^(.+?)(Α|ΑΓΑΤΕ|ΑΓΑΝ|ΑΕΙ|ΑΜΑΙ|ΑΝ|ΑΣ|ΑΣΑΙ|ΑΤΑΙ|ΑΩ|Ε|ΕΙ|ΕΙΣ|ΕΙΤΕ|ΕΣΑΙ|ΕΣ|ΕΤΑΙ|Ι|ΙΕΜΑΙ|ΙΕΜΑΣΤΕ|ΙΕΤΑΙ|ΙΕΣΑΙ|ΙΕΣΑΣΤΕ|ΙΟΜΑΣΤΑΝ|ΙΟΜΟΥΝ|ΙΟΜΟΥΝΑ|ΙΟΝΤΑΝ|ΙΟΝΤΟΥΣΑΝ|ΙΟΣΑΣΤΑΝ|ΙΟΣΑΣΤΕ|ΙΟΣΟΥΝ|ΙΟΣΟΥΝΑ|ΙΟΤΑΝ|ΙΟΥΜΑ|ΙΟΥΜΑΣΤΕ|ΙΟΥΝΤΑΙ|ΙΟΥΝΤΑΝ|Η|ΗΔΕΣ|ΗΔΩΝ|ΗΘΕΙ|ΗΘΕΙΣ|ΗΘΕΙΤΕ|ΗΘΗΚΑΤΕ|ΗΘΗΚΑΝ|ΗΘΟΥΝ|ΗΘΩ|ΗΚΑΤΕ|ΗΚΑΝ|ΗΣ|ΗΣΑΝ|ΗΣΑΤΕ|ΗΣΕΙ|ΗΣΕΣ|ΗΣΟΥΝ|ΗΣΩ|Ο|ΟΙ|ΟΜΑΙ|ΟΜΑΣΤΑΝ|ΟΜΟΥΝ|ΟΜΟΥΝΑ|ΟΝΤΑΙ|ΟΝΤΑΝ|ΟΝΤΟΥΣΑΝ|ΟΣ|ΟΣΑΣΤΑΝ|ΟΣΑΣΤΕ|ΟΣΟΥΝ|ΟΣΟΥΝΑ|ΟΤΑΝ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|ΟΥΝ|ΟΥΝΤΑΙ|ΟΥΝΤΑΝ|ΟΥΣ|ΟΥΣΑΝ|ΟΥΣΑΤΕ|Υ|ΥΣ|Ω|ΩΝ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem + "ΜΑ";
+ }
+
+ if((re2.test(w)) && (test1)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ w = stem;
+
+ }
+
+ re = /^(.+?)(ΕΣΤΕΡ|ΕΣΤΑΤ|ΟΤΕΡ|ΟΤΑΤ|ΥΤΕΡ|ΥΤΑΤ|ΩΤΕΡ|ΩΤΑΤ)$/;
+
+ if(re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem;
+ }
+
+ return w;
+};
+
+var greekStemmer = function (token) {
+ return token.update(function (word) {
+ return stemWord(word);
+ })
+}
+
+var idx = lunr(function () {
+ this.field('title')
+ this.field('excerpt')
+ this.field('categories')
+ this.field('tags')
+ this.ref('id')
+
+ this.pipeline.remove(lunr.trimmer)
+ this.pipeline.add(greekStemmer)
+ this.pipeline.remove(lunr.stemmer)
+
+ for (var item in store) {
+ this.add({
+ title: store[item].title,
+ excerpt: store[item].excerpt,
+ categories: store[item].categories,
+ tags: store[item].tags,
+ id: item
+ })
+ }
+});
+
+console.log( jQuery.type(idx) );
+
+$(document).ready(function() {
+ $('input#search').on('keyup', function () {
+ var resultdiv = $('#results');
+ var query = $(this).val().toLowerCase();
+ var result =
+ idx.query(function (q) {
+ query.split(lunr.tokenizer.separator).forEach(function (term) {
+ q.term(term, { boost: 100 })
+ if(query.lastIndexOf(" ") != query.length-1){
+ q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 })
+ }
+ if (term != ""){
+ q.term(term, { usePipeline: false, editDistance: 1, boost: 1 })
+ }
+ })
+ });
+ resultdiv.empty();
+ resultdiv.prepend(''+result.length+' Result(s) found
');
+ for (var item in result) {
+ var ref = result[item].ref;
+ if(store[ref].teaser){
+ var searchitem =
+ ''+
+ '
'+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
+ ' '+
+ '
';
+ }
+ else{
+ var searchitem =
+ ''+
+ '
'+
+ ''+
+ ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
+ ' '+
+ '
';
+ }
+ resultdiv.append(searchitem);
+ }
+ });
+});
diff --git a/_site/assets/js/lunr/lunr-store.js b/_site/assets/js/lunr/lunr-store.js
new file mode 100644
index 0000000..afe3d65
--- /dev/null
+++ b/_site/assets/js/lunr/lunr-store.js
@@ -0,0 +1,166 @@
+var store = [{
+ "title": "BSPR-EBI 2010 programme",
+ "excerpt":"We are pleased to announce that, following yet another very successful year at Hinxton, the 7th annual scientific meeting of the British Society for Proteome Research will again be organized in collaboration with the European Bioinformatics Institute (EBI) and held in the popular Wellcome Trust Conference Centre from 13-15 July...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-ebi-2010-programme",
+ "teaser":null},{
+ "title": "BSPR-EBI 2011 programme",
+ "excerpt":"BSPR Panel Discussion Registration Extended: Midnight - Wednesday 29th June 2011 Early Stage Career Investigator Award abstracts: 17th June 2011 Oral Communication abstracts: 17th June 2011 Poster abstracts: 17th June 2011 General information Pre-meeting BSPR Workshop Joint EBI-Wellcome Trust Course on Proteomics Final Programme Registration information Bursaries Poster Abstract Submission...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-ebi-2011-programme",
+ "teaser":null},{
+ "title": "NEWSLETTER - january 2012",
+ "excerpt":"NEWSLETTER - January 2012 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-january-2012/",
+ "teaser":null},{
+ "title": "NEWSLETTER - March 2012",
+ "excerpt":"NEWSLETTER - March 2012 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-March-2012/",
+ "teaser":null},{
+ "title": "NEWSLETTER - May 2012",
+ "excerpt":"NEWSLETTER - May 2012 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-May-2012/",
+ "teaser":null},{
+ "title": "BSPR meeting 2011",
+ "excerpt":"Data:Monday, July 9, 2018 to Wednesday, July 11, 2018Location:Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom Programme for BSPR 2018 Please click here. Plenary speakers Daniel Chan Johns Hopkins School of Medicine, USA Chuna Ram Choudhary University of Copenhagen, Denmark Julia Chamot-Rooke Institut Pasteur,...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2012",
+ "teaser":null},{
+ "title": "NEWSLETTER - January 2013",
+ "excerpt":"NEWSLETTER - January 2013 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-January-2013/",
+ "teaser":null},{
+ "title": "NEWSLETTER - May 2013",
+ "excerpt":"NEWSLETTER - May 2013 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-May-2013/",
+ "teaser":null},{
+ "title": "BSPR meeting 2013",
+ "excerpt":"Late-breaking abstracts now invited! Keynote speaker Identifying sites where post-translational modifications regulate the interactome from proteomics and structural data - Rob Russell (Heidelberg) Invited speakers A mass spectrometry based framework to determine protein structure – Perdita Barran (Manchester) Mechanisms of signalling plasticity and heterogeneity that contribute to cancer drug resistance...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2013",
+ "teaser":null},{
+ "title": "NEWSLETTER - August 2013",
+ "excerpt":"NEWSLETTER - August 2013 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-August-2013/",
+ "teaser":null},{
+ "title": "NEWSLETTER - October 2013",
+ "excerpt":"NEWSLETTER - October 2013 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-October-2013/",
+ "teaser":null},{
+ "title": "NEWSLETTER - January 2014",
+ "excerpt":"NEWSLETTER - january 2014 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-January-2014/",
+ "teaser":null},{
+ "title": "NEWSLETTER - February 2014",
+ "excerpt":"NEWSLETTER - February 2014 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-February-2014/",
+ "teaser":null},{
+ "title": "BSPR meeting 2014",
+ "excerpt":"Data:Monday, July 9, 2018 to Wednesday, July 11, 2018Location:Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom Programme for BSPR 2018 Please click here. Plenary speakers Daniel Chan Johns Hopkins School of Medicine, USA Chuna Ram Choudhary University of Copenhagen, Denmark Julia Chamot-Rooke Institut Pasteur,...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2014",
+ "teaser":null},{
+ "title": "NEWSLETTER - December 2014",
+ "excerpt":"NEWSLETTER - December 2014 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-December-2014/",
+ "teaser":null},{
+ "title": "NEWSLETTER - March 2015",
+ "excerpt":"NEWSLETTER - March 2015 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-March-2015/",
+ "teaser":null},{
+ "title": "NEWSLETTER - May 2015",
+ "excerpt":"NEWSLETTER - May 2015 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-May-2015/",
+ "teaser":null},{
+ "title": "BSPR meeting 2015",
+ "excerpt":"Data:Monday, July 20, 2015Location:United Kingdom Programme for BSPR 2018 Thank you! With 150 attendees and 38 speakers from 12 countries, the BSPR 2015 meeting was a resounding success. Thanks to all attendees, the scientific committee (Kathryn Lilley (chair), Rainer Cramer, Juri Rappsilber, Andy Pitt, Matthias Trost, Steve Pennington, Paul Skipp)...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2015",
+ "teaser":null},{
+ "title": "NEWSLETTER - January 2016",
+ "excerpt":"NEWSLETTER - January 2016 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-January-2016/",
+ "teaser":null},{
+ "title": "NEWSLETTER - March 2016",
+ "excerpt":"NEWSLETTER - March 2016 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-March-2016/",
+ "teaser":null},{
+ "title": "BSPR meeting 2016",
+ "excerpt":"Data:Monday, July 25, 2016 to Wednesday, July 27, 2016Location:University of Glasgow, Glasgow, United Kingdom The 2016 meeting of the Society will be held in the Western Infirmary Lecture Theatre building at the University of Glasgow from Monday 25th – Wednesday 27th July 2016. The conference will aim to bring together...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2016",
+ "teaser":null},{
+ "title": "NEWSLETTER - January 2017",
+ "excerpt":"NEWSLETTER - January 2017 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-January-2017/",
+ "teaser":null},{
+ "title": "NEWSLETTER - March 2017",
+ "excerpt":"NEWSLETTER - March 2017 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-March-2017/",
+ "teaser":null},{
+ "title": "NEWSLETTER - Aprill 2017",
+ "excerpt":"NEWSLETTER - Aprill 2017 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-April-2017/",
+ "teaser":null},{
+ "title": "NEWSLETTER - August 2018",
+ "excerpt":"NEWSLETTER - August 2018 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-August-2017/",
+ "teaser":null},{
+ "title": "NEWSLETTER - February 2018",
+ "excerpt":"NEWSLETTER - February 2018 ","categories": ["Newsletters"],
+ "tags": [],
+ "url": "http://localhost:4000/newsletters/Newsletter-February-2018/",
+ "teaser":null},{
+ "title": "Membership Renewal 2017",
+ "excerpt":"","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/membership-renewal-2017/",
+ "teaser":null},{
+ "title": "PMF 2017",
+ "excerpt":"","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/pmf-2017/",
+ "teaser":null},{
+ "title": "BSPR Lecturer",
+ "excerpt":"","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/bspr-lecturer/",
+ "teaser":null},{
+ "title": "Membership renewal 2017",
+ "excerpt":"","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/membership-renewal-2016/",
+ "teaser":null},{
+ "title": "BSPR meeting 2018",
+ "excerpt":"Data:Monday, July 9, 2018 to Wednesday, July 11, 2018Location:Norcroft Conference Centre, University of Bradford, Bradford, West Yorkshire, BD7 1DP, United Kingdom Programme for BSPR 2018 Please click here. Plenary speakers Daniel Chan Johns Hopkins School of Medicine, USA Chuna Ram Choudhary University of Copenhagen, Denmark Julia Chamot-Rooke Institut Pasteur,...","categories": ["Events"],
+ "tags": [],
+ "url": "http://localhost:4000/event/bspr-meeting-2018",
+ "teaser":null},{
+ "title": "HUPO 2017",
+ "excerpt":"","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/hupo-2017/",
+ "teaser":null},{
+ "title": "BMSS 2018",
+ "excerpt":" ","categories": ["News"],
+ "tags": [],
+ "url": "http://localhost:4000/news/bmss-2018/",
+ "teaser":null}]
diff --git a/_site/assets/js/lunr/lunr.js b/_site/assets/js/lunr/lunr.js
new file mode 100755
index 0000000..f208eba
--- /dev/null
+++ b/_site/assets/js/lunr/lunr.js
@@ -0,0 +1,2977 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.1.5
+ * Copyright (C) 2017 Oliver Nightingale
+ * @license MIT
+ */
+
+;(function(){
+
+/**
+ * A convenience function for configuring and constructing
+ * a new lunr Index.
+ *
+ * A lunr.Builder instance is created and the pipeline setup
+ * with a trimmer, stop word filter and stemmer.
+ *
+ * This builder object is yielded to the configuration function
+ * that is passed as a parameter, allowing the list of fields
+ * and other builder parameters to be customised.
+ *
+ * All documents _must_ be added within the passed config function.
+ *
+ * @example
+ * var idx = lunr(function () {
+ * this.field('title')
+ * this.field('body')
+ * this.ref('id')
+ *
+ * documents.forEach(function (doc) {
+ * this.add(doc)
+ * }, this)
+ * })
+ *
+ * @see {@link lunr.Builder}
+ * @see {@link lunr.Pipeline}
+ * @see {@link lunr.trimmer}
+ * @see {@link lunr.stopWordFilter}
+ * @see {@link lunr.stemmer}
+ * @namespace {function} lunr
+ */
+var lunr = function (config) {
+ var builder = new lunr.Builder
+
+ builder.pipeline.add(
+ lunr.trimmer,
+ lunr.stopWordFilter,
+ lunr.stemmer
+ )
+
+ builder.searchPipeline.add(
+ lunr.stemmer
+ )
+
+ config.call(builder, builder)
+ return builder.build()
+}
+
+lunr.version = "2.1.5"
+/*!
+ * lunr.utils
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * A namespace containing utils for the rest of the lunr library
+ */
+lunr.utils = {}
+
+/**
+ * Print a warning message to the console.
+ *
+ * @param {String} message The message to be printed.
+ * @memberOf Utils
+ */
+lunr.utils.warn = (function (global) {
+ /* eslint-disable no-console */
+ return function (message) {
+ if (global.console && console.warn) {
+ console.warn(message)
+ }
+ }
+ /* eslint-enable no-console */
+})(this)
+
+/**
+ * Convert an object to a string.
+ *
+ * In the case of `null` and `undefined` the function returns
+ * the empty string, in all other cases the result of calling
+ * `toString` on the passed object is returned.
+ *
+ * @param {Any} obj The object to convert to a string.
+ * @return {String} string representation of the passed object.
+ * @memberOf Utils
+ */
+lunr.utils.asString = function (obj) {
+ if (obj === void 0 || obj === null) {
+ return ""
+ } else {
+ return obj.toString()
+ }
+}
+lunr.FieldRef = function (docRef, fieldName, stringValue) {
+ this.docRef = docRef
+ this.fieldName = fieldName
+ this._stringValue = stringValue
+}
+
+lunr.FieldRef.joiner = "/"
+
+lunr.FieldRef.fromString = function (s) {
+ var n = s.indexOf(lunr.FieldRef.joiner)
+
+ if (n === -1) {
+ throw "malformed field ref string"
+ }
+
+ var fieldRef = s.slice(0, n),
+ docRef = s.slice(n + 1)
+
+ return new lunr.FieldRef (docRef, fieldRef, s)
+}
+
+lunr.FieldRef.prototype.toString = function () {
+ if (this._stringValue == undefined) {
+ this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef
+ }
+
+ return this._stringValue
+}
+/**
+ * A function to calculate the inverse document frequency for
+ * a posting. This is shared between the builder and the index
+ *
+ * @private
+ * @param {object} posting - The posting for a given term
+ * @param {number} documentCount - The total number of documents.
+ */
+lunr.idf = function (posting, documentCount) {
+ var documentsWithTerm = 0
+
+ for (var fieldName in posting) {
+ if (fieldName == '_index') continue // Ignore the term index, its not a field
+ documentsWithTerm += Object.keys(posting[fieldName]).length
+ }
+
+ var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)
+
+ return Math.log(1 + Math.abs(x))
+}
+
+/**
+ * A token wraps a string representation of a token
+ * as it is passed through the text processing pipeline.
+ *
+ * @constructor
+ * @param {string} [str=''] - The string token being wrapped.
+ * @param {object} [metadata={}] - Metadata associated with this token.
+ */
+lunr.Token = function (str, metadata) {
+ this.str = str || ""
+ this.metadata = metadata || {}
+}
+
+/**
+ * Returns the token string that is being wrapped by this object.
+ *
+ * @returns {string}
+ */
+lunr.Token.prototype.toString = function () {
+ return this.str
+}
+
+/**
+ * A token update function is used when updating or optionally
+ * when cloning a token.
+ *
+ * @callback lunr.Token~updateFunction
+ * @param {string} str - The string representation of the token.
+ * @param {Object} metadata - All metadata associated with this token.
+ */
+
+/**
+ * Applies the given function to the wrapped string token.
+ *
+ * @example
+ * token.update(function (str, metadata) {
+ * return str.toUpperCase()
+ * })
+ *
+ * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.update = function (fn) {
+ this.str = fn(this.str, this.metadata)
+ return this
+}
+
+/**
+ * Creates a clone of this token. Optionally a function can be
+ * applied to the cloned token.
+ *
+ * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.clone = function (fn) {
+ fn = fn || function (s) { return s }
+ return new lunr.Token (fn(this.str, this.metadata), this.metadata)
+}
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * A function for splitting a string into tokens ready to be inserted into
+ * the search index. Uses `lunr.tokenizer.separator` to split strings, change
+ * the value of this property to change how strings are split into tokens.
+ *
+ * This tokenizer will convert its parameter to a string by calling `toString` and
+ * then will split this string on the character in `lunr.tokenizer.separator`.
+ * Arrays will have their elements converted to strings and wrapped in a lunr.Token.
+ *
+ * @static
+ * @param {?(string|object|object[])} obj - The object to convert into tokens
+ * @returns {lunr.Token[]}
+ */
+lunr.tokenizer = function (obj) {
+ if (obj == null || obj == undefined) {
+ return []
+ }
+
+ if (Array.isArray(obj)) {
+ return obj.map(function (t) {
+ return new lunr.Token(lunr.utils.asString(t).toLowerCase())
+ })
+ }
+
+ var str = obj.toString().trim().toLowerCase(),
+ len = str.length,
+ tokens = []
+
+ for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {
+ var char = str.charAt(sliceEnd),
+ sliceLength = sliceEnd - sliceStart
+
+ if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {
+
+ if (sliceLength > 0) {
+ tokens.push(
+ new lunr.Token (str.slice(sliceStart, sliceEnd), {
+ position: [sliceStart, sliceLength],
+ index: tokens.length
+ })
+ )
+ }
+
+ sliceStart = sliceEnd + 1
+ }
+
+ }
+
+ return tokens
+}
+
+/**
+ * The separator used to split a string into tokens. Override this property to change the behaviour of
+ * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.
+ *
+ * @static
+ * @see lunr.tokenizer
+ */
+lunr.tokenizer.separator = /[\s\-]+/
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * lunr.Pipelines maintain an ordered list of functions to be applied to all
+ * tokens in documents entering the search index and queries being ran against
+ * the index.
+ *
+ * An instance of lunr.Index created with the lunr shortcut will contain a
+ * pipeline with a stop word filter and an English language stemmer. Extra
+ * functions can be added before or after either of these functions or these
+ * default functions can be removed.
+ *
+ * When run the pipeline will call each function in turn, passing a token, the
+ * index of that token in the original list of all tokens and finally a list of
+ * all the original tokens.
+ *
+ * The output of functions in the pipeline will be passed to the next function
+ * in the pipeline. To exclude a token from entering the index the function
+ * should return undefined, the rest of the pipeline will not be called with
+ * this token.
+ *
+ * For serialisation of pipelines to work, all functions used in an instance of
+ * a pipeline should be registered with lunr.Pipeline. Registered functions can
+ * then be loaded. If trying to load a serialised pipeline that uses functions
+ * that are not registered an error will be thrown.
+ *
+ * If not planning on serialising the pipeline then registering pipeline functions
+ * is not necessary.
+ *
+ * @constructor
+ */
+lunr.Pipeline = function () {
+ this._stack = []
+}
+
+lunr.Pipeline.registeredFunctions = Object.create(null)
+
+/**
+ * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token
+ * string as well as all known metadata. A pipeline function can mutate the token string
+ * or mutate (or add) metadata for a given token.
+ *
+ * A pipeline function can indicate that the passed token should be discarded by returning
+ * null. This token will not be passed to any downstream pipeline functions and will not be
+ * added to the index.
+ *
+ * Multiple tokens can be returned by returning an array of tokens. Each token will be passed
+ * to any downstream pipeline functions and all will returned tokens will be added to the index.
+ *
+ * Any number of pipeline functions may be chained together using a lunr.Pipeline.
+ *
+ * @interface lunr.PipelineFunction
+ * @param {lunr.Token} token - A token from the document being processed.
+ * @param {number} i - The index of this token in the complete list of tokens for this document/field.
+ * @param {lunr.Token[]} tokens - All tokens for this document/field.
+ * @returns {(?lunr.Token|lunr.Token[])}
+ */
+
+/**
+ * Register a function with the pipeline.
+ *
+ * Functions that are used in the pipeline should be registered if the pipeline
+ * needs to be serialised, or a serialised pipeline needs to be loaded.
+ *
+ * Registering a function does not add it to a pipeline, functions must still be
+ * added to instances of the pipeline for them to be used when running a pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @param {String} label - The label to register this function with
+ */
+lunr.Pipeline.registerFunction = function (fn, label) {
+ if (label in this.registeredFunctions) {
+ lunr.utils.warn('Overwriting existing registered function: ' + label)
+ }
+
+ fn.label = label
+ lunr.Pipeline.registeredFunctions[fn.label] = fn
+}
+
+/**
+ * Warns if the function is not registered as a Pipeline function.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @private
+ */
+lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {
+ var isRegistered = fn.label && (fn.label in this.registeredFunctions)
+
+ if (!isRegistered) {
+ lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn)
+ }
+}
+
+/**
+ * Loads a previously serialised pipeline.
+ *
+ * All functions to be loaded must already be registered with lunr.Pipeline.
+ * If any function from the serialised data has not been registered then an
+ * error will be thrown.
+ *
+ * @param {Object} serialised - The serialised pipeline to load.
+ * @returns {lunr.Pipeline}
+ */
+lunr.Pipeline.load = function (serialised) {
+ var pipeline = new lunr.Pipeline
+
+ serialised.forEach(function (fnName) {
+ var fn = lunr.Pipeline.registeredFunctions[fnName]
+
+ if (fn) {
+ pipeline.add(fn)
+ } else {
+ throw new Error('Cannot load unregistered function: ' + fnName)
+ }
+ })
+
+ return pipeline
+}
+
+/**
+ * Adds new functions to the end of the pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.
+ */
+lunr.Pipeline.prototype.add = function () {
+ var fns = Array.prototype.slice.call(arguments)
+
+ fns.forEach(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+ this._stack.push(fn)
+ }, this)
+}
+
+/**
+ * Adds a single function after a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.after = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ pos = pos + 1
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Adds a single function before a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.before = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Removes a function from the pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.
+ */
+lunr.Pipeline.prototype.remove = function (fn) {
+ var pos = this._stack.indexOf(fn)
+ if (pos == -1) {
+ return
+ }
+
+ this._stack.splice(pos, 1)
+}
+
+/**
+ * Runs the current list of functions that make up the pipeline against the
+ * passed tokens.
+ *
+ * @param {Array} tokens The tokens to run through the pipeline.
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.run = function (tokens) {
+ var stackLength = this._stack.length
+
+ for (var i = 0; i < stackLength; i++) {
+ var fn = this._stack[i]
+
+ tokens = tokens.reduce(function (memo, token, j) {
+ var result = fn(token, j, tokens)
+
+ if (result === void 0 || result === '') return memo
+
+ return memo.concat(result)
+ }, [])
+ }
+
+ return tokens
+}
+
+/**
+ * Convenience method for passing a string through a pipeline and getting
+ * strings out. This method takes care of wrapping the passed string in a
+ * token and mapping the resulting tokens back to strings.
+ *
+ * @param {string} str - The string to pass through the pipeline.
+ * @returns {string[]}
+ */
+lunr.Pipeline.prototype.runString = function (str) {
+ var token = new lunr.Token (str)
+
+ return this.run([token]).map(function (t) {
+ return t.toString()
+ })
+}
+
+/**
+ * Resets the pipeline by removing any existing processors.
+ *
+ */
+lunr.Pipeline.prototype.reset = function () {
+ this._stack = []
+}
+
+/**
+ * Returns a representation of the pipeline ready for serialisation.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.toJSON = function () {
+ return this._stack.map(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+
+ return fn.label
+ })
+}
+/*!
+ * lunr.Vector
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * A vector is used to construct the vector space of documents and queries. These
+ * vectors support operations to determine the similarity between two documents or
+ * a document and a query.
+ *
+ * Normally no parameters are required for initializing a vector, but in the case of
+ * loading a previously dumped vector the raw elements can be provided to the constructor.
+ *
+ * For performance reasons vectors are implemented with a flat array, where an elements
+ * index is immediately followed by its value. E.g. [index, value, index, value]. This
+ * allows the underlying array to be as sparse as possible and still offer decent
+ * performance when being used for vector calculations.
+ *
+ * @constructor
+ * @param {Number[]} [elements] - The flat list of element index and element value pairs.
+ */
+lunr.Vector = function (elements) {
+ this._magnitude = 0
+ this.elements = elements || []
+}
+
+
+/**
+ * Calculates the position within the vector to insert a given index.
+ *
+ * This is used internally by insert and upsert. If there are duplicate indexes then
+ * the position is returned as if the value for that index were to be updated, but it
+ * is the callers responsibility to check whether there is a duplicate at that index
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.positionForIndex = function (index) {
+ // For an empty vector the tuple can be inserted at the beginning
+ if (this.elements.length == 0) {
+ return 0
+ }
+
+ var start = 0,
+ end = this.elements.length / 2,
+ sliceLength = end - start,
+ pivotPoint = Math.floor(sliceLength / 2),
+ pivotIndex = this.elements[pivotPoint * 2]
+
+ while (sliceLength > 1) {
+ if (pivotIndex < index) {
+ start = pivotPoint
+ }
+
+ if (pivotIndex > index) {
+ end = pivotPoint
+ }
+
+ if (pivotIndex == index) {
+ break
+ }
+
+ sliceLength = end - start
+ pivotPoint = start + Math.floor(sliceLength / 2)
+ pivotIndex = this.elements[pivotPoint * 2]
+ }
+
+ if (pivotIndex == index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex > index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex < index) {
+ return (pivotPoint + 1) * 2
+ }
+}
+
+/**
+ * Inserts an element at an index within the vector.
+ *
+ * Does not allow duplicates, will throw an error if there is already an entry
+ * for this index.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ */
+lunr.Vector.prototype.insert = function (insertIdx, val) {
+ this.upsert(insertIdx, val, function () {
+ throw "duplicate index"
+ })
+}
+
+/**
+ * Inserts or updates an existing index within the vector.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ * @param {function} fn - A function that is called for updates, the existing value and the
+ * requested value are passed as arguments
+ */
+lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {
+ this._magnitude = 0
+ var position = this.positionForIndex(insertIdx)
+
+ if (this.elements[position] == insertIdx) {
+ this.elements[position + 1] = fn(this.elements[position + 1], val)
+ } else {
+ this.elements.splice(position, 0, insertIdx, val)
+ }
+}
+
+/**
+ * Calculates the magnitude of this vector.
+ *
+ * @returns {Number}
+ */
+lunr.Vector.prototype.magnitude = function () {
+ if (this._magnitude) return this._magnitude
+
+ var sumOfSquares = 0,
+ elementsLength = this.elements.length
+
+ for (var i = 1; i < elementsLength; i += 2) {
+ var val = this.elements[i]
+ sumOfSquares += val * val
+ }
+
+ return this._magnitude = Math.sqrt(sumOfSquares)
+}
+
+/**
+ * Calculates the dot product of this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The vector to compute the dot product with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.dot = function (otherVector) {
+ var dotProduct = 0,
+ a = this.elements, b = otherVector.elements,
+ aLen = a.length, bLen = b.length,
+ aVal = 0, bVal = 0,
+ i = 0, j = 0
+
+ while (i < aLen && j < bLen) {
+ aVal = a[i], bVal = b[j]
+ if (aVal < bVal) {
+ i += 2
+ } else if (aVal > bVal) {
+ j += 2
+ } else if (aVal == bVal) {
+ dotProduct += a[i + 1] * b[j + 1]
+ i += 2
+ j += 2
+ }
+ }
+
+ return dotProduct
+}
+
+/**
+ * Calculates the cosine similarity between this vector and another
+ * vector.
+ *
+ * @param {lunr.Vector} otherVector - The other vector to calculate the
+ * similarity with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.similarity = function (otherVector) {
+ return this.dot(otherVector) / (this.magnitude() * otherVector.magnitude())
+}
+
+/**
+ * Converts the vector to an array of the elements within the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toArray = function () {
+ var output = new Array (this.elements.length / 2)
+
+ for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {
+ output[j] = this.elements[i]
+ }
+
+ return output
+}
+
+/**
+ * A JSON serializable representation of the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toJSON = function () {
+ return this.elements
+}
+/* eslint-disable */
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2017 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/**
+ * lunr.stemmer is an english language stemmer, this is a JavaScript
+ * implementation of the PorterStemmer taken from http://tartarus.org/~martin
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token - The string to stem
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ var re_mgr0 = new RegExp(mgr0);
+ var re_mgr1 = new RegExp(mgr1);
+ var re_meq1 = new RegExp(meq1);
+ var re_s_v = new RegExp(s_v);
+
+ var re_1a = /^(.+?)(ss|i)es$/;
+ var re2_1a = /^(.+?)([^s])s$/;
+ var re_1b = /^(.+?)eed$/;
+ var re2_1b = /^(.+?)(ed|ing)$/;
+ var re_1b_2 = /.$/;
+ var re2_1b_2 = /(at|bl|iz)$/;
+ var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$");
+ var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var re_1c = /^(.+?[^aeiou])y$/;
+ var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+
+ var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+
+ var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ var re2_4 = /^(.+?)(s|t)(ion)$/;
+
+ var re_5 = /^(.+?)e$/;
+ var re_5_1 = /ll$/;
+ var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var porterStemmer = function porterStemmer(w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = re_1a
+ re2 = re2_1a;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = re_1b;
+ re2 = re2_1b;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = re_mgr0;
+ if (re.test(fp[1])) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = re_s_v;
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = re2_1b_2;
+ re3 = re3_1b_2;
+ re4 = re4_1b_2;
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)
+ re = re_1c;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = re_2;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = re_3;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = re_4;
+ re2 = re2_4;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = re_mgr1;
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = re_5;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ re2 = re_meq1;
+ re3 = re3_5;
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = re_5_1;
+ re2 = re_mgr1;
+ if (re.test(w) && re2.test(w)) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ };
+
+ return function (token) {
+ return token.update(porterStemmer);
+ }
+})();
+
+lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * lunr.generateStopWordFilter builds a stopWordFilter function from the provided
+ * list of stop words.
+ *
+ * The built in lunr.stopWordFilter is built using this generator and can be used
+ * to generate custom stopWordFilters for applications or non English languages.
+ *
+ * @param {Array} token The token to pass through the filter
+ * @returns {lunr.PipelineFunction}
+ * @see lunr.Pipeline
+ * @see lunr.stopWordFilter
+ */
+lunr.generateStopWordFilter = function (stopWords) {
+ var words = stopWords.reduce(function (memo, stopWord) {
+ memo[stopWord] = stopWord
+ return memo
+ }, {})
+
+ return function (token) {
+ if (token && words[token.toString()] !== token.toString()) return token
+ }
+}
+
+/**
+ * lunr.stopWordFilter is an English language stop word list filter, any words
+ * contained in the list will not be passed through the filter.
+ *
+ * This is intended to be used in the Pipeline. If the token does not pass the
+ * filter then undefined will be returned.
+ *
+ * @implements {lunr.PipelineFunction}
+ * @params {lunr.Token} token - A token to check for being a stop word.
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.stopWordFilter = lunr.generateStopWordFilter([
+ 'a',
+ 'able',
+ 'about',
+ 'across',
+ 'after',
+ 'all',
+ 'almost',
+ 'also',
+ 'am',
+ 'among',
+ 'an',
+ 'and',
+ 'any',
+ 'are',
+ 'as',
+ 'at',
+ 'be',
+ 'because',
+ 'been',
+ 'but',
+ 'by',
+ 'can',
+ 'cannot',
+ 'could',
+ 'dear',
+ 'did',
+ 'do',
+ 'does',
+ 'either',
+ 'else',
+ 'ever',
+ 'every',
+ 'for',
+ 'from',
+ 'get',
+ 'got',
+ 'had',
+ 'has',
+ 'have',
+ 'he',
+ 'her',
+ 'hers',
+ 'him',
+ 'his',
+ 'how',
+ 'however',
+ 'i',
+ 'if',
+ 'in',
+ 'into',
+ 'is',
+ 'it',
+ 'its',
+ 'just',
+ 'least',
+ 'let',
+ 'like',
+ 'likely',
+ 'may',
+ 'me',
+ 'might',
+ 'most',
+ 'must',
+ 'my',
+ 'neither',
+ 'no',
+ 'nor',
+ 'not',
+ 'of',
+ 'off',
+ 'often',
+ 'on',
+ 'only',
+ 'or',
+ 'other',
+ 'our',
+ 'own',
+ 'rather',
+ 'said',
+ 'say',
+ 'says',
+ 'she',
+ 'should',
+ 'since',
+ 'so',
+ 'some',
+ 'than',
+ 'that',
+ 'the',
+ 'their',
+ 'them',
+ 'then',
+ 'there',
+ 'these',
+ 'they',
+ 'this',
+ 'tis',
+ 'to',
+ 'too',
+ 'twas',
+ 'us',
+ 'wants',
+ 'was',
+ 'we',
+ 'were',
+ 'what',
+ 'when',
+ 'where',
+ 'which',
+ 'while',
+ 'who',
+ 'whom',
+ 'why',
+ 'will',
+ 'with',
+ 'would',
+ 'yet',
+ 'you',
+ 'your'
+])
+
+lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * lunr.trimmer is a pipeline function for trimming non word
+ * characters from the beginning and end of tokens before they
+ * enter the index.
+ *
+ * This implementation may not work correctly for non latin
+ * characters and should either be removed or adapted for use
+ * with languages with non-latin characters.
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token The token to pass through the filter
+ * @returns {lunr.Token}
+ * @see lunr.Pipeline
+ */
+lunr.trimmer = function (token) {
+ return token.update(function (s) {
+ return s.replace(/^\W+/, '').replace(/\W+$/, '')
+ })
+}
+
+lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * A token set is used to store the unique list of all tokens
+ * within an index. Token sets are also used to represent an
+ * incoming query to the index, this query token set and index
+ * token set are then intersected to find which tokens to look
+ * up in the inverted index.
+ *
+ * A token set can hold multiple tokens, as in the case of the
+ * index token set, or it can hold a single token as in the
+ * case of a simple query token set.
+ *
+ * Additionally token sets are used to perform wildcard matching.
+ * Leading, contained and trailing wildcards are supported, and
+ * from this edit distance matching can also be provided.
+ *
+ * Token sets are implemented as a minimal finite state automata,
+ * where both common prefixes and suffixes are shared between tokens.
+ * This helps to reduce the space used for storing the token set.
+ *
+ * @constructor
+ */
+lunr.TokenSet = function () {
+ this.final = false
+ this.edges = {}
+ this.id = lunr.TokenSet._nextId
+ lunr.TokenSet._nextId += 1
+}
+
+/**
+ * Keeps track of the next, auto increment, identifier to assign
+ * to a new tokenSet.
+ *
+ * TokenSets require a unique identifier to be correctly minimised.
+ *
+ * @private
+ */
+lunr.TokenSet._nextId = 1
+
+/**
+ * Creates a TokenSet instance from the given sorted array of words.
+ *
+ * @param {String[]} arr - A sorted array of strings to create the set from.
+ * @returns {lunr.TokenSet}
+ * @throws Will throw an error if the input array is not sorted.
+ */
+lunr.TokenSet.fromArray = function (arr) {
+ var builder = new lunr.TokenSet.Builder
+
+ for (var i = 0, len = arr.length; i < len; i++) {
+ builder.insert(arr[i])
+ }
+
+ builder.finish()
+ return builder.root
+}
+
+/**
+ * Creates a token set from a query clause.
+ *
+ * @private
+ * @param {Object} clause - A single clause from lunr.Query.
+ * @param {string} clause.term - The query clause term.
+ * @param {number} [clause.editDistance] - The optional edit distance for the term.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromClause = function (clause) {
+ if ('editDistance' in clause) {
+ return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)
+ } else {
+ return lunr.TokenSet.fromString(clause.term)
+ }
+}
+
+/**
+ * Creates a token set representing a single string with a specified
+ * edit distance.
+ *
+ * Insertions, deletions, substitutions and transpositions are each
+ * treated as an edit distance of 1.
+ *
+ * Increasing the allowed edit distance will have a dramatic impact
+ * on the performance of both creating and intersecting these TokenSets.
+ * It is advised to keep the edit distance less than 3.
+ *
+ * @param {string} str - The string to create the token set from.
+ * @param {number} editDistance - The allowed edit distance to match.
+ * @returns {lunr.Vector}
+ */
+lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
+ var root = new lunr.TokenSet
+
+ var stack = [{
+ node: root,
+ editsRemaining: editDistance,
+ str: str
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop()
+
+ // no edit
+ if (frame.str.length > 0) {
+ var char = frame.str.charAt(0),
+ noEditNode
+
+ if (char in frame.node.edges) {
+ noEditNode = frame.node.edges[char]
+ } else {
+ noEditNode = new lunr.TokenSet
+ frame.node.edges[char] = noEditNode
+ }
+
+ if (frame.str.length == 1) {
+ noEditNode.final = true
+ } else {
+ stack.push({
+ node: noEditNode,
+ editsRemaining: frame.editsRemaining,
+ str: frame.str.slice(1)
+ })
+ }
+ }
+
+ // deletion
+ // can only do a deletion if we have enough edits remaining
+ // and if there are characters left to delete in the string
+ if (frame.editsRemaining > 0 && frame.str.length > 1) {
+ var char = frame.str.charAt(1),
+ deletionNode
+
+ if (char in frame.node.edges) {
+ deletionNode = frame.node.edges[char]
+ } else {
+ deletionNode = new lunr.TokenSet
+ frame.node.edges[char] = deletionNode
+ }
+
+ if (frame.str.length <= 2) {
+ deletionNode.final = true
+ } else {
+ stack.push({
+ node: deletionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(2)
+ })
+ }
+ }
+
+ // deletion
+ // just removing the last character from the str
+ if (frame.editsRemaining > 0 && frame.str.length == 1) {
+ frame.node.final = true
+ }
+
+ // substitution
+ // can only do a substitution if we have enough edits remaining
+ // and if there are characters left to substitute
+ if (frame.editsRemaining > 0 && frame.str.length >= 1) {
+ if ("*" in frame.node.edges) {
+ var substitutionNode = frame.node.edges["*"]
+ } else {
+ var substitutionNode = new lunr.TokenSet
+ frame.node.edges["*"] = substitutionNode
+ }
+
+ if (frame.str.length == 1) {
+ substitutionNode.final = true
+ } else {
+ stack.push({
+ node: substitutionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+ }
+
+ // insertion
+ // can only do insertion if there are edits remaining
+ if (frame.editsRemaining > 0) {
+ if ("*" in frame.node.edges) {
+ var insertionNode = frame.node.edges["*"]
+ } else {
+ var insertionNode = new lunr.TokenSet
+ frame.node.edges["*"] = insertionNode
+ }
+
+ if (frame.str.length == 0) {
+ insertionNode.final = true
+ } else {
+ stack.push({
+ node: insertionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str
+ })
+ }
+ }
+
+ // transposition
+ // can only do a transposition if there are edits remaining
+ // and there are enough characters to transpose
+ if (frame.editsRemaining > 0 && frame.str.length > 1) {
+ var charA = frame.str.charAt(0),
+ charB = frame.str.charAt(1),
+ transposeNode
+
+ if (charB in frame.node.edges) {
+ transposeNode = frame.node.edges[charB]
+ } else {
+ transposeNode = new lunr.TokenSet
+ frame.node.edges[charB] = transposeNode
+ }
+
+ if (frame.str.length == 1) {
+ transposeNode.final = true
+ } else {
+ stack.push({
+ node: transposeNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: charA + frame.str.slice(2)
+ })
+ }
+ }
+ }
+
+ return root
+}
+
+/**
+ * Creates a TokenSet from a string.
+ *
+ * The string may contain one or more wildcard characters (*)
+ * that will allow wildcard matching when intersecting with
+ * another TokenSet.
+ *
+ * @param {string} str - The string to create a TokenSet from.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromString = function (str) {
+ var node = new lunr.TokenSet,
+ root = node,
+ wildcardFound = false
+
+ /*
+ * Iterates through all characters within the passed string
+ * appending a node for each character.
+ *
+ * As soon as a wildcard character is found then a self
+ * referencing edge is introduced to continually match
+ * any number of any characters.
+ */
+ for (var i = 0, len = str.length; i < len; i++) {
+ var char = str[i],
+ final = (i == len - 1)
+
+ if (char == "*") {
+ wildcardFound = true
+ node.edges[char] = node
+ node.final = final
+
+ } else {
+ var next = new lunr.TokenSet
+ next.final = final
+
+ node.edges[char] = next
+ node = next
+
+ // TODO: is this needed anymore?
+ if (wildcardFound) {
+ node.edges["*"] = root
+ }
+ }
+ }
+
+ return root
+}
+
+/**
+ * Converts this TokenSet into an array of strings
+ * contained within the TokenSet.
+ *
+ * @returns {string[]}
+ */
+lunr.TokenSet.prototype.toArray = function () {
+ var words = []
+
+ var stack = [{
+ prefix: "",
+ node: this
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop(),
+ edges = Object.keys(frame.node.edges),
+ len = edges.length
+
+ if (frame.node.final) {
+ words.push(frame.prefix)
+ }
+
+ for (var i = 0; i < len; i++) {
+ var edge = edges[i]
+
+ stack.push({
+ prefix: frame.prefix.concat(edge),
+ node: frame.node.edges[edge]
+ })
+ }
+ }
+
+ return words
+}
+
+/**
+ * Generates a string representation of a TokenSet.
+ *
+ * This is intended to allow TokenSets to be used as keys
+ * in objects, largely to aid the construction and minimisation
+ * of a TokenSet. As such it is not designed to be a human
+ * friendly representation of the TokenSet.
+ *
+ * @returns {string}
+ */
+lunr.TokenSet.prototype.toString = function () {
+ // NOTE: Using Object.keys here as this.edges is very likely
+ // to enter 'hash-mode' with many keys being added
+ //
+ // avoiding a for-in loop here as it leads to the function
+ // being de-optimised (at least in V8). From some simple
+ // benchmarks the performance is comparable, but allowing
+ // V8 to optimize may mean easy performance wins in the future.
+
+ if (this._str) {
+ return this._str
+ }
+
+ var str = this.final ? '1' : '0',
+ labels = Object.keys(this.edges).sort(),
+ len = labels.length
+
+ for (var i = 0; i < len; i++) {
+ var label = labels[i],
+ node = this.edges[label]
+
+ str = str + label + node.id
+ }
+
+ return str
+}
+
+/**
+ * Returns a new TokenSet that is the intersection of
+ * this TokenSet and the passed TokenSet.
+ *
+ * This intersection will take into account any wildcards
+ * contained within the TokenSet.
+ *
+ * @param {lunr.TokenSet} b - An other TokenSet to intersect with.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.prototype.intersect = function (b) {
+ var output = new lunr.TokenSet,
+ frame = undefined
+
+ var stack = [{
+ qNode: b,
+ output: output,
+ node: this
+ }]
+
+ while (stack.length) {
+ frame = stack.pop()
+
+ // NOTE: As with the #toString method, we are using
+ // Object.keys and a for loop instead of a for-in loop
+ // as both of these objects enter 'hash' mode, causing
+ // the function to be de-optimised in V8
+ var qEdges = Object.keys(frame.qNode.edges),
+ qLen = qEdges.length,
+ nEdges = Object.keys(frame.node.edges),
+ nLen = nEdges.length
+
+ for (var q = 0; q < qLen; q++) {
+ var qEdge = qEdges[q]
+
+ for (var n = 0; n < nLen; n++) {
+ var nEdge = nEdges[n]
+
+ if (nEdge == qEdge || qEdge == '*') {
+ var node = frame.node.edges[nEdge],
+ qNode = frame.qNode.edges[qEdge],
+ final = node.final && qNode.final,
+ next = undefined
+
+ if (nEdge in frame.output.edges) {
+ // an edge already exists for this character
+ // no need to create a new node, just set the finality
+ // bit unless this node is already final
+ next = frame.output.edges[nEdge]
+ next.final = next.final || final
+
+ } else {
+ // no edge exists yet, must create one
+ // set the finality bit and insert it
+ // into the output
+ next = new lunr.TokenSet
+ next.final = final
+ frame.output.edges[nEdge] = next
+ }
+
+ stack.push({
+ qNode: qNode,
+ output: next,
+ node: node
+ })
+ }
+ }
+ }
+ }
+
+ return output
+}
+lunr.TokenSet.Builder = function () {
+ this.previousWord = ""
+ this.root = new lunr.TokenSet
+ this.uncheckedNodes = []
+ this.minimizedNodes = {}
+}
+
+lunr.TokenSet.Builder.prototype.insert = function (word) {
+ var node,
+ commonPrefix = 0
+
+ if (word < this.previousWord) {
+ throw new Error ("Out of order word insertion")
+ }
+
+ for (var i = 0; i < word.length && i < this.previousWord.length; i++) {
+ if (word[i] != this.previousWord[i]) break
+ commonPrefix++
+ }
+
+ this.minimize(commonPrefix)
+
+ if (this.uncheckedNodes.length == 0) {
+ node = this.root
+ } else {
+ node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child
+ }
+
+ for (var i = commonPrefix; i < word.length; i++) {
+ var nextNode = new lunr.TokenSet,
+ char = word[i]
+
+ node.edges[char] = nextNode
+
+ this.uncheckedNodes.push({
+ parent: node,
+ char: char,
+ child: nextNode
+ })
+
+ node = nextNode
+ }
+
+ node.final = true
+ this.previousWord = word
+}
+
+lunr.TokenSet.Builder.prototype.finish = function () {
+ this.minimize(0)
+}
+
+lunr.TokenSet.Builder.prototype.minimize = function (downTo) {
+ for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {
+ var node = this.uncheckedNodes[i],
+ childKey = node.child.toString()
+
+ if (childKey in this.minimizedNodes) {
+ node.parent.edges[node.char] = this.minimizedNodes[childKey]
+ } else {
+ // Cache the key for this node since
+ // we know it can't change anymore
+ node.child._str = childKey
+
+ this.minimizedNodes[childKey] = node.child
+ }
+
+ this.uncheckedNodes.pop()
+ }
+}
+/*!
+ * lunr.Index
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * An index contains the built index of all documents and provides a query interface
+ * to the index.
+ *
+ * Usually instances of lunr.Index will not be created using this constructor, instead
+ * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be
+ * used to load previously built and serialized indexes.
+ *
+ * @constructor
+ * @param {Object} attrs - The attributes of the built search index.
+ * @param {Object} attrs.invertedIndex - An index of term/field to document reference.
+ * @param {Object} attrs.documentVectors - Document vectors keyed by document reference.
+ * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.
+ * @param {string[]} attrs.fields - The names of indexed document fields.
+ * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.
+ */
+lunr.Index = function (attrs) {
+ this.invertedIndex = attrs.invertedIndex
+ this.fieldVectors = attrs.fieldVectors
+ this.tokenSet = attrs.tokenSet
+ this.fields = attrs.fields
+ this.pipeline = attrs.pipeline
+}
+
+/**
+ * A result contains details of a document matching a search query.
+ * @typedef {Object} lunr.Index~Result
+ * @property {string} ref - The reference of the document this result represents.
+ * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.
+ * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.
+ */
+
+/**
+ * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple
+ * query language which itself is parsed into an instance of lunr.Query.
+ *
+ * For programmatically building queries it is advised to directly use lunr.Query, the query language
+ * is best used for human entered text rather than program generated text.
+ *
+ * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported
+ * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'
+ * or 'world', though those that contain both will rank higher in the results.
+ *
+ * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can
+ * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding
+ * wildcards will increase the number of documents that will be found but can also have a negative
+ * impact on query performance, especially with wildcards at the beginning of a term.
+ *
+ * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term
+ * hello in the title field will match this query. Using a field not present in the index will lead
+ * to an error being thrown.
+ *
+ * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term
+ * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported
+ * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.
+ * Avoid large values for edit distance to improve query performance.
+ *
+ * To escape special characters the backslash character '\' can be used, this allows searches to include
+ * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead
+ * of attempting to apply a boost of 2 to the search term "foo".
+ *
+ * @typedef {string} lunr.Index~QueryString
+ * @example Simple single term query
+ * hello
+ * @example Multiple term query
+ * hello world
+ * @example term scoped to a field
+ * title:hello
+ * @example term with a boost of 10
+ * hello^10
+ * @example term with an edit distance of 2
+ * hello~2
+ */
+
+/**
+ * Performs a search against the index using lunr query syntax.
+ *
+ * Results will be returned sorted by their score, the most relevant results
+ * will be returned first.
+ *
+ * For more programmatic querying use lunr.Index#query.
+ *
+ * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.
+ * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.search = function (queryString) {
+ return this.query(function (query) {
+ var parser = new lunr.QueryParser(queryString, query)
+ parser.parse()
+ })
+}
+
+/**
+ * A query builder callback provides a query object to be used to express
+ * the query to perform on the index.
+ *
+ * @callback lunr.Index~queryBuilder
+ * @param {lunr.Query} query - The query object to build up.
+ * @this lunr.Query
+ */
+
+/**
+ * Performs a query against the index using the yielded lunr.Query object.
+ *
+ * If performing programmatic queries against the index, this method is preferred
+ * over lunr.Index#search so as to avoid the additional query parsing overhead.
+ *
+ * A query object is yielded to the supplied function which should be used to
+ * express the query to be run against the index.
+ *
+ * Note that although this function takes a callback parameter it is _not_ an
+ * asynchronous operation, the callback is just yielded a query object to be
+ * customized.
+ *
+ * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.query = function (fn) {
+ // for each query clause
+ // * process terms
+ // * expand terms from token set
+ // * find matching documents and metadata
+ // * get document vectors
+ // * score documents
+
+ var query = new lunr.Query(this.fields),
+ matchingFields = Object.create(null),
+ queryVectors = Object.create(null),
+ termFieldCache = Object.create(null)
+
+ fn.call(query, query)
+
+ for (var i = 0; i < query.clauses.length; i++) {
+ /*
+ * Unless the pipeline has been disabled for this term, which is
+ * the case for terms with wildcards, we need to pass the clause
+ * term through the search pipeline. A pipeline returns an array
+ * of processed terms. Pipeline functions may expand the passed
+ * term, which means we may end up performing multiple index lookups
+ * for a single query term.
+ */
+ var clause = query.clauses[i],
+ terms = null
+
+ if (clause.usePipeline) {
+ terms = this.pipeline.runString(clause.term)
+ } else {
+ terms = [clause.term]
+ }
+
+ for (var m = 0; m < terms.length; m++) {
+ var term = terms[m]
+
+ /*
+ * Each term returned from the pipeline needs to use the same query
+ * clause object, e.g. the same boost and or edit distance. The
+ * simplest way to do this is to re-use the clause object but mutate
+ * its term property.
+ */
+ clause.term = term
+
+ /*
+ * From the term in the clause we create a token set which will then
+ * be used to intersect the indexes token set to get a list of terms
+ * to lookup in the inverted index
+ */
+ var termTokenSet = lunr.TokenSet.fromClause(clause),
+ expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()
+
+ for (var j = 0; j < expandedTerms.length; j++) {
+ /*
+ * For each term get the posting and termIndex, this is required for
+ * building the query vector.
+ */
+ var expandedTerm = expandedTerms[j],
+ posting = this.invertedIndex[expandedTerm],
+ termIndex = posting._index
+
+ for (var k = 0; k < clause.fields.length; k++) {
+ /*
+ * For each field that this query term is scoped by (by default
+ * all fields are in scope) we need to get all the document refs
+ * that have this term in that field.
+ *
+ * The posting is the entry in the invertedIndex for the matching
+ * term from above.
+ */
+ var field = clause.fields[k],
+ fieldPosting = posting[field],
+ matchingDocumentRefs = Object.keys(fieldPosting),
+ termField = expandedTerm + "/" + field
+
+ /*
+ * To support field level boosts a query vector is created per
+ * field. This vector is populated using the termIndex found for
+ * the term and a unit value with the appropriate boost applied.
+ *
+ * If the query vector for this field does not exist yet it needs
+ * to be created.
+ */
+ if (queryVectors[field] === undefined) {
+ queryVectors[field] = new lunr.Vector
+ }
+
+ /*
+ * Using upsert because there could already be an entry in the vector
+ * for the term we are working with. In that case we just add the scores
+ * together.
+ */
+ queryVectors[field].upsert(termIndex, 1 * clause.boost, function (a, b) { return a + b })
+
+ /**
+ * If we've already seen this term, field combo then we've already collected
+ * the matching documents and metadata, no need to go through all that again
+ */
+ if (termFieldCache[termField]) {
+ continue
+ }
+
+ for (var l = 0; l < matchingDocumentRefs.length; l++) {
+ /*
+ * All metadata for this term/field/document triple
+ * are then extracted and collected into an instance
+ * of lunr.MatchData ready to be returned in the query
+ * results
+ */
+ var matchingDocumentRef = matchingDocumentRefs[l],
+ matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),
+ metadata = fieldPosting[matchingDocumentRef],
+ fieldMatch
+
+ if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {
+ matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)
+ } else {
+ fieldMatch.add(expandedTerm, field, metadata)
+ }
+
+ }
+
+ termFieldCache[termField] = true
+ }
+ }
+ }
+ }
+
+ var matchingFieldRefs = Object.keys(matchingFields),
+ results = [],
+ matches = Object.create(null)
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ /*
+ * Currently we have document fields that match the query, but we
+ * need to return documents. The matchData and scores are combined
+ * from multiple fields belonging to the same document.
+ *
+ * Scores are calculated by field, using the query vectors created
+ * above, and combined into a final document score using addition.
+ */
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),
+ docRef = fieldRef.docRef,
+ fieldVector = this.fieldVectors[fieldRef],
+ score = queryVectors[fieldRef.fieldName].similarity(fieldVector),
+ docMatch
+
+ if ((docMatch = matches[docRef]) !== undefined) {
+ docMatch.score += score
+ docMatch.matchData.combine(matchingFields[fieldRef])
+ } else {
+ var match = {
+ ref: docRef,
+ score: score,
+ matchData: matchingFields[fieldRef]
+ }
+ matches[docRef] = match
+ results.push(match)
+ }
+ }
+
+ /*
+ * Sort the results objects by score, highest first.
+ */
+ return results.sort(function (a, b) {
+ return b.score - a.score
+ })
+}
+
+/**
+ * Prepares the index for JSON serialization.
+ *
+ * The schema for this JSON blob will be described in a
+ * separate JSON schema file.
+ *
+ * @returns {Object}
+ */
+lunr.Index.prototype.toJSON = function () {
+ var invertedIndex = Object.keys(this.invertedIndex)
+ .sort()
+ .map(function (term) {
+ return [term, this.invertedIndex[term]]
+ }, this)
+
+ var fieldVectors = Object.keys(this.fieldVectors)
+ .map(function (ref) {
+ return [ref, this.fieldVectors[ref].toJSON()]
+ }, this)
+
+ return {
+ version: lunr.version,
+ fields: this.fields,
+ fieldVectors: fieldVectors,
+ invertedIndex: invertedIndex,
+ pipeline: this.pipeline.toJSON()
+ }
+}
+
+/**
+ * Loads a previously serialized lunr.Index
+ *
+ * @param {Object} serializedIndex - A previously serialized lunr.Index
+ * @returns {lunr.Index}
+ */
+lunr.Index.load = function (serializedIndex) {
+ var attrs = {},
+ fieldVectors = {},
+ serializedVectors = serializedIndex.fieldVectors,
+ invertedIndex = {},
+ serializedInvertedIndex = serializedIndex.invertedIndex,
+ tokenSetBuilder = new lunr.TokenSet.Builder,
+ pipeline = lunr.Pipeline.load(serializedIndex.pipeline)
+
+ if (serializedIndex.version != lunr.version) {
+ lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'")
+ }
+
+ for (var i = 0; i < serializedVectors.length; i++) {
+ var tuple = serializedVectors[i],
+ ref = tuple[0],
+ elements = tuple[1]
+
+ fieldVectors[ref] = new lunr.Vector(elements)
+ }
+
+ for (var i = 0; i < serializedInvertedIndex.length; i++) {
+ var tuple = serializedInvertedIndex[i],
+ term = tuple[0],
+ posting = tuple[1]
+
+ tokenSetBuilder.insert(term)
+ invertedIndex[term] = posting
+ }
+
+ tokenSetBuilder.finish()
+
+ attrs.fields = serializedIndex.fields
+
+ attrs.fieldVectors = fieldVectors
+ attrs.invertedIndex = invertedIndex
+ attrs.tokenSet = tokenSetBuilder.root
+ attrs.pipeline = pipeline
+
+ return new lunr.Index(attrs)
+}
+/*!
+ * lunr.Builder
+ * Copyright (C) 2017 Oliver Nightingale
+ */
+
+/**
+ * lunr.Builder performs indexing on a set of documents and
+ * returns instances of lunr.Index ready for querying.
+ *
+ * All configuration of the index is done via the builder, the
+ * fields to index, the document reference, the text processing
+ * pipeline and document scoring parameters are all set on the
+ * builder before indexing.
+ *
+ * @constructor
+ * @property {string} _ref - Internal reference to the document reference field.
+ * @property {string[]} _fields - Internal reference to the document fields to index.
+ * @property {object} invertedIndex - The inverted index maps terms to document fields.
+ * @property {object} documentTermFrequencies - Keeps track of document term frequencies.
+ * @property {object} documentLengths - Keeps track of the length of documents added to the index.
+ * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.
+ * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.
+ * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.
+ * @property {number} documentCount - Keeps track of the total number of documents indexed.
+ * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.
+ * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.
+ * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.
+ * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.
+ */
+lunr.Builder = function () {
+ this._ref = "id"
+ this._fields = []
+ this.invertedIndex = Object.create(null)
+ this.fieldTermFrequencies = {}
+ this.fieldLengths = {}
+ this.tokenizer = lunr.tokenizer
+ this.pipeline = new lunr.Pipeline
+ this.searchPipeline = new lunr.Pipeline
+ this.documentCount = 0
+ this._b = 0.75
+ this._k1 = 1.2
+ this.termIndex = 0
+ this.metadataWhitelist = []
+}
+
+/**
+ * Sets the document field used as the document reference. Every document must have this field.
+ * The type of this field in the document should be a string, if it is not a string it will be
+ * coerced into a string by calling toString.
+ *
+ * The default ref is 'id'.
+ *
+ * The ref should _not_ be changed during indexing, it should be set before any documents are
+ * added to the index. Changing it during indexing can lead to inconsistent results.
+ *
+ * @param {string} ref - The name of the reference field in the document.
+ */
+lunr.Builder.prototype.ref = function (ref) {
+ this._ref = ref
+}
+
+/**
+ * Adds a field to the list of document fields that will be indexed. Every document being
+ * indexed should have this field. Null values for this field in indexed documents will
+ * not cause errors but will limit the chance of that document being retrieved by searches.
+ *
+ * All fields should be added before adding documents to the index. Adding fields after
+ * a document has been indexed will have no effect on already indexed documents.
+ *
+ * @param {string} field - The name of a field to index in all documents.
+ */
+lunr.Builder.prototype.field = function (field) {
+ this._fields.push(field)
+}
+
+/**
+ * A parameter to tune the amount of field length normalisation that is applied when
+ * calculating relevance scores. A value of 0 will completely disable any normalisation
+ * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b
+ * will be clamped to the range 0 - 1.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.b = function (number) {
+ if (number < 0) {
+ this._b = 0
+ } else if (number > 1) {
+ this._b = 1
+ } else {
+ this._b = number
+ }
+}
+
+/**
+ * A parameter that controls the speed at which a rise in term frequency results in term
+ * frequency saturation. The default value is 1.2. Setting this to a higher value will give
+ * slower saturation levels, a lower value will result in quicker saturation.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.k1 = function (number) {
+ this._k1 = number
+}
+
+/**
+ * Adds a document to the index.
+ *
+ * Before adding fields to the index the index should have been fully setup, with the document
+ * ref and all fields to index already having been specified.
+ *
+ * The document must have a field name as specified by the ref (by default this is 'id') and
+ * it should have all fields defined for indexing, though null or undefined values will not
+ * cause errors.
+ *
+ * @param {object} doc - The document to add to the index.
+ */
+lunr.Builder.prototype.add = function (doc) {
+ var docRef = doc[this._ref]
+
+ this.documentCount += 1
+
+ for (var i = 0; i < this._fields.length; i++) {
+ var fieldName = this._fields[i],
+ field = doc[fieldName],
+ tokens = this.tokenizer(field),
+ terms = this.pipeline.run(tokens),
+ fieldRef = new lunr.FieldRef (docRef, fieldName),
+ fieldTerms = Object.create(null)
+
+ this.fieldTermFrequencies[fieldRef] = fieldTerms
+ this.fieldLengths[fieldRef] = 0
+
+ // store the length of this field for this document
+ this.fieldLengths[fieldRef] += terms.length
+
+ // calculate term frequencies for this field
+ for (var j = 0; j < terms.length; j++) {
+ var term = terms[j]
+
+ if (fieldTerms[term] == undefined) {
+ fieldTerms[term] = 0
+ }
+
+ fieldTerms[term] += 1
+
+ // add to inverted index
+ // create an initial posting if one doesn't exist
+ if (this.invertedIndex[term] == undefined) {
+ var posting = Object.create(null)
+ posting["_index"] = this.termIndex
+ this.termIndex += 1
+
+ for (var k = 0; k < this._fields.length; k++) {
+ posting[this._fields[k]] = Object.create(null)
+ }
+
+ this.invertedIndex[term] = posting
+ }
+
+ // add an entry for this term/fieldName/docRef to the invertedIndex
+ if (this.invertedIndex[term][fieldName][docRef] == undefined) {
+ this.invertedIndex[term][fieldName][docRef] = Object.create(null)
+ }
+
+ // store all whitelisted metadata about this token in the
+ // inverted index
+ for (var l = 0; l < this.metadataWhitelist.length; l++) {
+ var metadataKey = this.metadataWhitelist[l],
+ metadata = term.metadata[metadataKey]
+
+ if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {
+ this.invertedIndex[term][fieldName][docRef][metadataKey] = []
+ }
+
+ this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)
+ }
+ }
+
+ }
+}
+
+/**
+ * Calculates the average document length for this index
+ *
+ * @private
+ */
+lunr.Builder.prototype.calculateAverageFieldLengths = function () {
+
+ var fieldRefs = Object.keys(this.fieldLengths),
+ numberOfFields = fieldRefs.length,
+ accumulator = {},
+ documentsWithField = {}
+
+ for (var i = 0; i < numberOfFields; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ field = fieldRef.fieldName
+
+ documentsWithField[field] || (documentsWithField[field] = 0)
+ documentsWithField[field] += 1
+
+ accumulator[field] || (accumulator[field] = 0)
+ accumulator[field] += this.fieldLengths[fieldRef]
+ }
+
+ for (var i = 0; i < this._fields.length; i++) {
+ var field = this._fields[i]
+ accumulator[field] = accumulator[field] / documentsWithField[field]
+ }
+
+ this.averageFieldLength = accumulator
+}
+
+/**
+ * Builds a vector space model of every document using lunr.Vector
+ *
+ * @private
+ */
+lunr.Builder.prototype.createFieldVectors = function () {
+ var fieldVectors = {},
+ fieldRefs = Object.keys(this.fieldTermFrequencies),
+ fieldRefsLength = fieldRefs.length,
+ termIdfCache = Object.create(null)
+
+ for (var i = 0; i < fieldRefsLength; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ field = fieldRef.fieldName,
+ fieldLength = this.fieldLengths[fieldRef],
+ fieldVector = new lunr.Vector,
+ termFrequencies = this.fieldTermFrequencies[fieldRef],
+ terms = Object.keys(termFrequencies),
+ termsLength = terms.length
+
+ for (var j = 0; j < termsLength; j++) {
+ var term = terms[j],
+ tf = termFrequencies[term],
+ termIndex = this.invertedIndex[term]._index,
+ idf, score, scoreWithPrecision
+
+ if (termIdfCache[term] === undefined) {
+ idf = lunr.idf(this.invertedIndex[term], this.documentCount)
+ termIdfCache[term] = idf
+ } else {
+ idf = termIdfCache[term]
+ }
+
+ score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[field])) + tf)
+ scoreWithPrecision = Math.round(score * 1000) / 1000
+ // Converts 1.23456789 to 1.234.
+ // Reducing the precision so that the vectors take up less
+ // space when serialised. Doing it now so that they behave
+ // the same before and after serialisation. Also, this is
+ // the fastest approach to reducing a number's precision in
+ // JavaScript.
+
+ fieldVector.insert(termIndex, scoreWithPrecision)
+ }
+
+ fieldVectors[fieldRef] = fieldVector
+ }
+
+ this.fieldVectors = fieldVectors
+}
+
+/**
+ * Creates a token set of all tokens in the index using lunr.TokenSet
+ *
+ * @private
+ */
+lunr.Builder.prototype.createTokenSet = function () {
+ this.tokenSet = lunr.TokenSet.fromArray(
+ Object.keys(this.invertedIndex).sort()
+ )
+}
+
+/**
+ * Builds the index, creating an instance of lunr.Index.
+ *
+ * This completes the indexing process and should only be called
+ * once all documents have been added to the index.
+ *
+ * @returns {lunr.Index}
+ */
+lunr.Builder.prototype.build = function () {
+ this.calculateAverageFieldLengths()
+ this.createFieldVectors()
+ this.createTokenSet()
+
+ return new lunr.Index({
+ invertedIndex: this.invertedIndex,
+ fieldVectors: this.fieldVectors,
+ tokenSet: this.tokenSet,
+ fields: this._fields,
+ pipeline: this.searchPipeline
+ })
+}
+
+/**
+ * Applies a plugin to the index builder.
+ *
+ * A plugin is a function that is called with the index builder as its context.
+ * Plugins can be used to customise or extend the behaviour of the index
+ * in some way. A plugin is just a function, that encapsulated the custom
+ * behaviour that should be applied when building the index.
+ *
+ * The plugin function will be called with the index builder as its argument, additional
+ * arguments can also be passed when calling use. The function will be called
+ * with the index builder as its context.
+ *
+ * @param {Function} plugin The plugin to apply.
+ */
+lunr.Builder.prototype.use = function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1)
+ args.unshift(this)
+ fn.apply(this, args)
+}
+/**
+ * Contains and collects metadata about a matching document.
+ * A single instance of lunr.MatchData is returned as part of every
+ * lunr.Index~Result.
+ *
+ * @constructor
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ * @property {object} metadata - A cloned collection of metadata associated with this document.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData = function (term, field, metadata) {
+ var clonedMetadata = Object.create(null),
+ metadataKeys = Object.keys(metadata)
+
+ // Cloning the metadata to prevent the original
+ // being mutated during match data combination.
+ // Metadata is kept in an array within the inverted
+ // index so cloning the data can be done with
+ // Array#slice
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+ clonedMetadata[key] = metadata[key].slice()
+ }
+
+ this.metadata = Object.create(null)
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = clonedMetadata
+}
+
+/**
+ * An instance of lunr.MatchData will be created for every term that matches a
+ * document. However only one instance is required in a lunr.Index~Result. This
+ * method combines metadata from another instance of lunr.MatchData with this
+ * objects metadata.
+ *
+ * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData.prototype.combine = function (otherMatchData) {
+ var terms = Object.keys(otherMatchData.metadata)
+
+ for (var i = 0; i < terms.length; i++) {
+ var term = terms[i],
+ fields = Object.keys(otherMatchData.metadata[term])
+
+ if (this.metadata[term] == undefined) {
+ this.metadata[term] = Object.create(null)
+ }
+
+ for (var j = 0; j < fields.length; j++) {
+ var field = fields[j],
+ keys = Object.keys(otherMatchData.metadata[term][field])
+
+ if (this.metadata[term][field] == undefined) {
+ this.metadata[term][field] = Object.create(null)
+ }
+
+ for (var k = 0; k < keys.length; k++) {
+ var key = keys[k]
+
+ if (this.metadata[term][field][key] == undefined) {
+ this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]
+ } else {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])
+ }
+
+ }
+ }
+ }
+}
+
+/**
+ * Add metadata for a term/field pair to this instance of match data.
+ *
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ */
+lunr.MatchData.prototype.add = function (term, field, metadata) {
+ if (!(term in this.metadata)) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ if (!(field in this.metadata[term])) {
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ var metadataKeys = Object.keys(metadata)
+
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+
+ if (key in this.metadata[term][field]) {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])
+ } else {
+ this.metadata[term][field][key] = metadata[key]
+ }
+ }
+}
+/**
+ * A lunr.Query provides a programmatic way of defining queries to be performed
+ * against a {@link lunr.Index}.
+ *
+ * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method
+ * so the query object is pre-initialized with the right index fields.
+ *
+ * @constructor
+ * @property {lunr.Query~Clause[]} clauses - An array of query clauses.
+ * @property {string[]} allFields - An array of all available fields in a lunr.Index.
+ */
+lunr.Query = function (allFields) {
+ this.clauses = []
+ this.allFields = allFields
+}
+
+/**
+ * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.
+ *
+ * This allows wildcards to be added to the beginning and end of a term without having to manually do any string
+ * concatenation.
+ *
+ * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.
+ *
+ * @constant
+ * @default
+ * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour
+ * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists
+ * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example query term with trailing wildcard
+ * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })
+ * @example query term with leading and trailing wildcard
+ * query.term('foo', {
+ * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING
+ * })
+ */
+lunr.Query.wildcard = new String ("*")
+lunr.Query.wildcard.NONE = 0
+lunr.Query.wildcard.LEADING = 1
+lunr.Query.wildcard.TRAILING = 2
+
+/**
+ * A single clause in a {@link lunr.Query} contains a term and details on how to
+ * match that term against a {@link lunr.Index}.
+ *
+ * @typedef {Object} lunr.Query~Clause
+ * @property {string[]} fields - The fields in an index this clause should be matched against.
+ * @property {number} [boost=1] - Any boost that should be applied when matching this clause.
+ * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.
+ * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.
+ * @property {number} [wildcard=0] - Whether the term should have wildcards appended or prepended.
+ */
+
+/**
+ * Adds a {@link lunr.Query~Clause} to this query.
+ *
+ * Unless the clause contains the fields to be matched all fields will be matched. In addition
+ * a default boost of 1 is applied to the clause.
+ *
+ * @param {lunr.Query~Clause} clause - The clause to add to this query.
+ * @see lunr.Query~Clause
+ * @returns {lunr.Query}
+ */
+lunr.Query.prototype.clause = function (clause) {
+ if (!('fields' in clause)) {
+ clause.fields = this.allFields
+ }
+
+ if (!('boost' in clause)) {
+ clause.boost = 1
+ }
+
+ if (!('usePipeline' in clause)) {
+ clause.usePipeline = true
+ }
+
+ if (!('wildcard' in clause)) {
+ clause.wildcard = lunr.Query.wildcard.NONE
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {
+ clause.term = "*" + clause.term
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {
+ clause.term = "" + clause.term + "*"
+ }
+
+ this.clauses.push(clause)
+
+ return this
+}
+
+/**
+ * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}
+ * to the list of clauses that make up this query.
+ *
+ * @param {string} term - The term to add to the query.
+ * @param {Object} [options] - Any additional properties to add to the query clause.
+ * @returns {lunr.Query}
+ * @see lunr.Query#clause
+ * @see lunr.Query~Clause
+ * @example adding a single term to a query
+ * query.term("foo")
+ * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard
+ * query.term("foo", {
+ * fields: ["title"],
+ * boost: 10,
+ * wildcard: lunr.Query.wildcard.TRAILING
+ * })
+ */
+lunr.Query.prototype.term = function (term, options) {
+ var clause = options || {}
+ clause.term = term
+
+ this.clause(clause)
+
+ return this
+}
+lunr.QueryParseError = function (message, start, end) {
+ this.name = "QueryParseError"
+ this.message = message
+ this.start = start
+ this.end = end
+}
+
+lunr.QueryParseError.prototype = new Error
+lunr.QueryLexer = function (str) {
+ this.lexemes = []
+ this.str = str
+ this.length = str.length
+ this.pos = 0
+ this.start = 0
+ this.escapeCharPositions = []
+}
+
+lunr.QueryLexer.prototype.run = function () {
+ var state = lunr.QueryLexer.lexText
+
+ while (state) {
+ state = state(this)
+ }
+}
+
+lunr.QueryLexer.prototype.sliceString = function () {
+ var subSlices = [],
+ sliceStart = this.start,
+ sliceEnd = this.pos
+
+ for (var i = 0; i < this.escapeCharPositions.length; i++) {
+ sliceEnd = this.escapeCharPositions[i]
+ subSlices.push(this.str.slice(sliceStart, sliceEnd))
+ sliceStart = sliceEnd + 1
+ }
+
+ subSlices.push(this.str.slice(sliceStart, this.pos))
+ this.escapeCharPositions.length = 0
+
+ return subSlices.join('')
+}
+
+lunr.QueryLexer.prototype.emit = function (type) {
+ this.lexemes.push({
+ type: type,
+ str: this.sliceString(),
+ start: this.start,
+ end: this.pos
+ })
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.escapeCharacter = function () {
+ this.escapeCharPositions.push(this.pos - 1)
+ this.pos += 1
+}
+
+lunr.QueryLexer.prototype.next = function () {
+ if (this.pos >= this.length) {
+ return lunr.QueryLexer.EOS
+ }
+
+ var char = this.str.charAt(this.pos)
+ this.pos += 1
+ return char
+}
+
+lunr.QueryLexer.prototype.width = function () {
+ return this.pos - this.start
+}
+
+lunr.QueryLexer.prototype.ignore = function () {
+ if (this.start == this.pos) {
+ this.pos += 1
+ }
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.backup = function () {
+ this.pos -= 1
+}
+
+lunr.QueryLexer.prototype.acceptDigitRun = function () {
+ var char, charCode
+
+ do {
+ char = this.next()
+ charCode = char.charCodeAt(0)
+ } while (charCode > 47 && charCode < 58)
+
+ if (char != lunr.QueryLexer.EOS) {
+ this.backup()
+ }
+}
+
+lunr.QueryLexer.prototype.more = function () {
+ return this.pos < this.length
+}
+
+lunr.QueryLexer.EOS = 'EOS'
+lunr.QueryLexer.FIELD = 'FIELD'
+lunr.QueryLexer.TERM = 'TERM'
+lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'
+lunr.QueryLexer.BOOST = 'BOOST'
+
+lunr.QueryLexer.lexField = function (lexer) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.FIELD)
+ lexer.ignore()
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexTerm = function (lexer) {
+ if (lexer.width() > 1) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+
+ lexer.ignore()
+
+ if (lexer.more()) {
+ return lunr.QueryLexer.lexText
+ }
+}
+
+lunr.QueryLexer.lexEditDistance = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexBoost = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.BOOST)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexEOS = function (lexer) {
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+}
+
+// This matches the separator used when tokenising fields
+// within a document. These should match otherwise it is
+// not possible to search for some tokens within a document.
+//
+// It is possible for the user to change the separator on the
+// tokenizer so it _might_ clash with any other of the special
+// characters already used within the search string, e.g. :.
+//
+// This means that it is possible to change the separator in
+// such a way that makes some words unsearchable using a search
+// string.
+lunr.QueryLexer.termSeparator = lunr.tokenizer.separator
+
+lunr.QueryLexer.lexText = function (lexer) {
+ while (true) {
+ var char = lexer.next()
+
+ if (char == lunr.QueryLexer.EOS) {
+ return lunr.QueryLexer.lexEOS
+ }
+
+ // Escape character is '\'
+ if (char.charCodeAt(0) == 92) {
+ lexer.escapeCharacter()
+ continue
+ }
+
+ if (char == ":") {
+ return lunr.QueryLexer.lexField
+ }
+
+ if (char == "~") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexEditDistance
+ }
+
+ if (char == "^") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexBoost
+ }
+
+ if (char.match(lunr.QueryLexer.termSeparator)) {
+ return lunr.QueryLexer.lexTerm
+ }
+ }
+}
+
+lunr.QueryParser = function (str, query) {
+ this.lexer = new lunr.QueryLexer (str)
+ this.query = query
+ this.currentClause = {}
+ this.lexemeIdx = 0
+}
+
+lunr.QueryParser.prototype.parse = function () {
+ this.lexer.run()
+ this.lexemes = this.lexer.lexemes
+
+ var state = lunr.QueryParser.parseFieldOrTerm
+
+ while (state) {
+ state = state(this)
+ }
+
+ return this.query
+}
+
+lunr.QueryParser.prototype.peekLexeme = function () {
+ return this.lexemes[this.lexemeIdx]
+}
+
+lunr.QueryParser.prototype.consumeLexeme = function () {
+ var lexeme = this.peekLexeme()
+ this.lexemeIdx += 1
+ return lexeme
+}
+
+lunr.QueryParser.prototype.nextClause = function () {
+ var completedClause = this.currentClause
+ this.query.clause(completedClause)
+ this.currentClause = {}
+}
+
+lunr.QueryParser.parseFieldOrTerm = function (parser) {
+ var lexeme = parser.peekLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ switch (lexeme.type) {
+ case lunr.QueryLexer.FIELD:
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expected either a field or a term, found " + lexeme.type
+
+ if (lexeme.str.length >= 1) {
+ errorMessage += " with value '" + lexeme.str + "'"
+ }
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+}
+
+lunr.QueryParser.parseField = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ if (parser.query.allFields.indexOf(lexeme.str) == -1) {
+ var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '),
+ errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.fields = [lexeme.str]
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ var errorMessage = "expecting term, found nothing"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expecting term, found '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseTerm = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ parser.currentClause.term = lexeme.str.toLowerCase()
+
+ if (lexeme.str.indexOf("*") != -1) {
+ parser.currentClause.usePipeline = false
+ }
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseEditDistance = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var editDistance = parseInt(lexeme.str, 10)
+
+ if (isNaN(editDistance)) {
+ var errorMessage = "edit distance must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.editDistance = editDistance
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseBoost = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var boost = parseInt(lexeme.str, 10)
+
+ if (isNaN(boost)) {
+ var errorMessage = "boost must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.boost = boost
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+ /**
+ * export the module via AMD, CommonJS or as a browser global
+ * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
+ */
+ ;(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(factory)
+ } else if (typeof exports === 'object') {
+ /**
+ * Node. Does not work with strict CommonJS, but
+ * only CommonJS-like enviroments that support module.exports,
+ * like Node.
+ */
+ module.exports = factory()
+ } else {
+ // Browser globals (root is window)
+ root.lunr = factory()
+ }
+ }(this, function () {
+ /**
+ * Just return a value to define the module export.
+ * This example returns an object, but the module
+ * can return a function as the exported value.
+ */
+ return lunr
+ }))
+})();
diff --git a/_site/assets/js/lunr/lunr.min.js b/_site/assets/js/lunr/lunr.min.js
new file mode 100755
index 0000000..75f6a2b
--- /dev/null
+++ b/_site/assets/js/lunr/lunr.min.js
@@ -0,0 +1,6 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.1.5
+ * Copyright (C) 2017 Oliver Nightingale
+ * @license MIT
+ */
+!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.1.5",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(-1===r)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase())});for(var r=t.toString().trim().toLowerCase(),i=r.length,n=[],s=0,o=0;i>=s;s++){var a=r.charAt(s),u=s-o;(a.match(e.tokenizer.separator)||s==i)&&(u>0&&n.push(new e.Token(r.slice(o,s),{position:[o,u],index:n.length})),o=s+1)}return n},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;t>r;r++){var i=this._stack[r];e=e.reduce(function(t,r,n){var s=i(r,n,e);return void 0===s||""===s?t:t.concat(s)},[])}return e},e.Pipeline.prototype.runString=function(t){var r=new e.Token(t);return this.run([r]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(e>s&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:e>s?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;t>r;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;n>u&&s>l;)o=r[u],a=i[l],a>o?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/(this.magnitude()*e.magnitude())},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;ti;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length?o["final"]=!0:n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining>0&&s.str.length>1){var u,a=s.str.charAt(1);a in s.node.edges?u=s.node.edges[a]:(u=new e.TokenSet,s.node.edges[a]=u),s.str.length<=2?u["final"]=!0:n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(2)})}if(s.editsRemaining>0&&1==s.str.length&&(s.node["final"]=!0),s.editsRemaining>0&&s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length?l["final"]=!0:n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.editsRemaining>0){if("*"in s.node.edges)var d=s.node.edges["*"];else{var d=new e.TokenSet;s.node.edges["*"]=d}0==s.str.length?d["final"]=!0:n.push({node:d,editsRemaining:s.editsRemaining-1,str:s.str})}if(s.editsRemaining>0&&s.str.length>1){var h,c=s.str.charAt(0),f=s.str.charAt(1);f in s.node.edges?h=s.node.edges[f]:(h=new e.TokenSet,s.node.edges[f]=h),1==s.str.length?h["final"]=!0:n.push({node:h,editsRemaining:s.editsRemaining-1,str:c+s.str.slice(2)})}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=!1,s=0,o=t.length;o>s;s++){var a=t[s],u=s==o-1;if("*"==a)n=!0,r.edges[a]=r,r["final"]=u;else{var l=new e.TokenSet;l["final"]=u,r.edges[a]=l,r=l,n&&(r.edges["*"]=i)}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&e.push(r.prefix);for(var s=0;n>s;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;r>i;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;o>l;l++)for(var d=s[l],h=0;u>h;h++){var c=a[h];if(c==d||"*"==d){var f=i.node.edges[c],p=i.qNode.edges[d],y=f["final"]&&p["final"],m=void 0;c in i.output.edges?(m=i.output.edges[c],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[c]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null);t.call(r,r);for(var o=0;oe?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t){var r=t[this._ref];this.documentCount+=1;for(var i=0;is;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var s=0;ss;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,d=this.fieldTermFrequencies[o],h=Object.keys(d),c=h.length,f=0;c>f;f++){var p,y,m,v=h[f],g=d[v],x=this.invertedIndex[v]._index;void 0===n[v]?(p=e.idf(this.invertedIndex[v],this.documentCount),n[v]=p):p=n[v],y=p*((this._k1+1)*g)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+g),m=Math.round(1e3*y)/1e3,l.insert(x,m)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:this._fields,pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r),s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&58>r);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more()?e.QueryLexer.lexText:void 0},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseFieldOrTerm;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseFieldOrTerm=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(-1==t.query.allFields.indexOf(r.str)){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),-1!=r.str.indexOf("*")&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
\ No newline at end of file
diff --git a/_site/assets/js/main.min.js b/_site/assets/js/main.min.js
new file mode 100755
index 0000000..46fd77f
--- /dev/null
+++ b/_site/assets/js/main.min.js
@@ -0,0 +1,9 @@
+/*!
+ * Minimal Mistakes Jekyll Theme 4.11.2 by Michael Rose
+ * Copyright 2013-2018 Michael Rose - mademistakes.com | @mmistakes
+ * Licensed under MIT
+ */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t,n){var r,i=(t=t||ae).createElement("script");if(i.text=e,n)for(r in be)n[r]&&(i[r]=n[r]);t.head.appendChild(i).parentNode.removeChild(i)}function r(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?de[pe.call(e)]||"object":typeof e}function i(e){var t=!!e&&"length"in e&&e.length,n=r(e);return!ye(e)&&!xe(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function o(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function a(e,t,n){return ye(t)?we.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?we.grep(e,function(e){return e===t!==n}):"string"!=typeof t?we.grep(e,function(e){return fe.call(t,e)>-1!==n}):we.filter(t,e,n)}function s(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function l(e){var t={};return we.each(e.match(Le)||[],function(e,n){t[n]=!0}),t}function u(e){return e}function c(e){throw e}function f(e,t,n,r){var i;try{e&&ye(i=e.promise)?i.call(e).done(t).fail(n):e&&ye(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function d(){ae.removeEventListener("DOMContentLoaded",d),e.removeEventListener("load",d),we.ready()}function p(e,t){return t.toUpperCase()}function h(e){return e.replace(He,"ms-").replace(Me,p)}function m(){this.expando=we.expando+m.uid++}function g(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Fe.test(e)?JSON.parse(e):e)}function v(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ze,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=g(n)}catch(e){}$e.set(e,t,n)}else n=void 0;return n}function y(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return we.css(e,t,"")},l=s(),u=n&&n[3]||(we.cssNumber[t]?"":"px"),c=(we.cssNumber[t]||"px"!==u&&+l)&&We.exec(we.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)we.style(e,t,c+u),(1-o)*(1-(o=s()/l||.5))<=0&&(a=0),c/=o;c*=2,we.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=u,r.start=c,r.end=i)),i}function x(e){var t,n=e.ownerDocument,r=e.nodeName,i=Ye[r];return i||(t=n.body.appendChild(n.createElement(r)),i=we.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),Ye[r]=i,i)}function b(e,t){for(var n,r,i=[],o=0,a=e.length;a>o;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=Be.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&Xe(r)&&(i[o]=x(r))):"none"!==n&&(i[o]="none",Be.set(r,"display",n)));for(o=0;a>o;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}function w(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&o(e,t)?we.merge([e],n):n}function C(e,t){for(var n=0,r=e.length;r>n;n++)Be.set(e[n],"globalEval",!t||Be.get(t[n],"globalEval"))}function T(e,t,n,i,o){for(var a,s,l,u,c,f,d=t.createDocumentFragment(),p=[],h=0,m=e.length;m>h;h++)if((a=e[h])||0===a)if("object"===r(a))we.merge(p,a.nodeType?[a]:a);else if(Je.test(a)){for(s=s||d.appendChild(t.createElement("div")),l=(Ze.exec(a)||["",""])[1].toLowerCase(),u=Qe[l]||Qe._default,s.innerHTML=u[1]+we.htmlPrefilter(a)+u[2],f=u[0];f--;)s=s.lastChild;we.merge(p,s.childNodes),(s=d.firstChild).textContent=""}else p.push(t.createTextNode(a));for(d.textContent="",h=0;a=p[h++];)if(i&&we.inArray(a,i)>-1)o&&o.push(a);else if(c=we.contains(a.ownerDocument,a),s=w(d.appendChild(a),"script"),c&&C(s),n)for(f=0;a=s[f++];)Ke.test(a.type||"")&&n.push(a);return d}function k(){return!0}function S(){return!1}function E(){try{return ae.activeElement}catch(e){}}function j(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)j(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=S;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return we().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=we.guid++)),e.each(function(){we.event.add(this,t,i,r,n)})}function N(e,t){return o(e,"table")&&o(11!==t.nodeType?t:t.firstChild,"tr")?we(e).children("tbody")[0]||e:e}function A(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function D(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function I(e,t){var n,r,i,o,a,s,l,u;if(1===t.nodeType){if(Be.hasData(e)&&(o=Be.access(e),a=Be.set(t,o),u=o.events)){delete a.handle,a.events={};for(i in u)for(n=0,r=u[i].length;r>n;n++)we.event.add(t,i,u[i][n])}$e.hasData(e)&&(s=$e.access(e),l=we.extend({},s),$e.set(t,l))}}function L(e,t){var n=t.nodeName.toLowerCase();"input"===n&&Ge.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function O(e,t,r,i){t=ue.apply([],t);var o,a,s,l,u,c,f=0,d=e.length,p=d-1,h=t[0],m=ye(h);if(m||d>1&&"string"==typeof h&&!ve.checkClone&&at.test(h))return e.each(function(n){var o=e.eq(n);m&&(t[0]=h.call(this,n,o.html())),O(o,t,r,i)});if(d&&(o=T(t,e[0].ownerDocument,!1,e,i),a=o.firstChild,1===o.childNodes.length&&(o=a),a||i)){for(l=(s=we.map(w(o,"script"),A)).length;d>f;f++)u=o,f!==p&&(u=we.clone(u,!0,!0),l&&we.merge(s,w(u,"script"))),r.call(e[f],u,f);if(l)for(c=s[s.length-1].ownerDocument,we.map(s,D),f=0;l>f;f++)u=s[f],Ke.test(u.type||"")&&!Be.access(u,"globalEval")&&we.contains(c,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?we._evalUrl&&we._evalUrl(u.src):n(u.textContent.replace(st,""),c,u))}return e}function P(e,t,n){for(var r,i=t?we.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||we.cleanData(w(r)),r.parentNode&&(n&&we.contains(r.ownerDocument,r)&&C(w(r,"script")),r.parentNode.removeChild(r));return e}function q(e,t,n){var r,i,o,a,s=e.style;return(n=n||ut(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||we.contains(e.ownerDocument,e)||(a=we.style(e,t)),!ve.pixelBoxStyles()&<.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function H(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function M(e){if(e in gt)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=mt.length;n--;)if((e=mt[n]+t)in gt)return e}function _(e){var t=we.cssProps[e];return t||(t=we.cssProps[e]=M(e)||e),t}function B(e,t,n){var r=We.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function $(e,t,n,r,i,o){var a="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;4>a;a+=2)"margin"===n&&(l+=we.css(e,n+Ue[a],!0,i)),r?("content"===n&&(l-=we.css(e,"padding"+Ue[a],!0,i)),"margin"!==n&&(l-=we.css(e,"border"+Ue[a]+"Width",!0,i))):(l+=we.css(e,"padding"+Ue[a],!0,i),"padding"!==n?l+=we.css(e,"border"+Ue[a]+"Width",!0,i):s+=we.css(e,"border"+Ue[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))),l}function F(e,t,n){var r=ut(e),i=q(e,t,r),o="border-box"===we.css(e,"boxSizing",!1,r),a=o;if(lt.test(i)){if(!n)return i;i="auto"}return a=a&&(ve.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===we.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+$(e,t,n||(o?"border":"content"),a,r,i)+"px"}function z(e,t,n,r,i){return new z.prototype.init(e,t,n,r,i)}function R(){yt&&(!1===ae.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(R):e.setTimeout(R,we.fx.interval),we.fx.tick())}function W(){return e.setTimeout(function(){vt=void 0}),vt=Date.now()}function U(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)i["margin"+(n=Ue[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function X(e,t,n){for(var r,i=(G.tweeners[t]||[]).concat(G.tweeners["*"]),o=0,a=i.length;a>o;o++)if(r=i[o].call(n,t,e))return r}function V(e,t,n){var r,i,o,a,s,l,u,c,f="width"in t||"height"in t,d=this,p={},h=e.style,m=e.nodeType&&Xe(e),g=Be.get(e,"fxshow");n.queue||(null==(a=we._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,we.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],xt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(m?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;m=!0}p[r]=g&&g[r]||we.style(e,r)}if((l=!we.isEmptyObject(t))||!we.isEmptyObject(p)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(u=g&&g.display)&&(u=Be.get(e,"display")),"none"===(c=we.css(e,"display"))&&(u?c=u:(b([e],!0),u=e.style.display||u,c=we.css(e,"display"),b([e]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===we.css(e,"float")&&(l||(d.done(function(){h.display=u}),null==u&&(c=h.display,u="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",d.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),l=!1;for(r in p)l||(g?"hidden"in g&&(m=g.hidden):g=Be.access(e,"fxshow",{display:u}),o&&(g.hidden=!m),m&&b([e],!0),d.done(function(){m||b([e]),Be.remove(e,"fxshow");for(r in p)we.style(e,r,p[r])})),l=X(m?g[r]:0,r,d),r in g||(g[r]=l.start,m&&(l.end=l.start,l.start=0))}}function Y(e,t){var n,r,i,o,a;for(n in e)if(r=h(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=we.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function G(e,t,n){var r,i,o=0,a=G.prefilters.length,s=we.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var t=vt||W(),n=Math.max(0,u.startTime+u.duration-t),r=1-(n/u.duration||0),o=0,a=u.tweens.length;a>o;o++)u.tweens[o].run(r);return s.notifyWith(e,[u,r,n]),1>r&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:we.extend({},t),opts:we.extend(!0,{specialEasing:{},easing:we.easing._default},n),originalProperties:t,originalOptions:n,startTime:vt||W(),duration:n.duration,tweens:[],createTween:function(t,n){var r=we.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(Y(c,u.opts.specialEasing);a>o;o++)if(r=G.prefilters[o].call(u,e,c,u.opts))return ye(r.stop)&&(we._queueHooks(u.elem,u.opts.queue).stop=r.stop.bind(r)),r;return we.map(c,X,u),ye(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),we.fx.timer(we.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}function Z(e){return(e.match(Le)||[]).join(" ")}function K(e){return e.getAttribute&&e.getAttribute("class")||""}function Q(e){return Array.isArray(e)?e:"string"==typeof e?e.match(Le)||[]:[]}function J(e,t,n,i){var o;if(Array.isArray(t))we.each(t,function(t,r){n||It.test(e)?i(e,r):J(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==r(t))i(e,t);else for(o in t)J(e+"["+o+"]",t[o],n,i)}function ee(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(Le)||[];if(ye(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function te(e,t,n,r){function i(s){var l;return o[s]=!0,we.each(e[s]||[],function(e,s){var u=s(t,n,r);return"string"!=typeof u||a||o[u]?a?!(l=u):void 0:(t.dataTypes.unshift(u),i(u),!1)}),l}var o={},a=e===Rt;return i(t.dataTypes[0])||!o["*"]&&i("*")}function ne(e,t){var n,r,i=we.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&we.extend(!0,e,r),e}function re(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function ie(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}var oe=[],ae=e.document,se=Object.getPrototypeOf,le=oe.slice,ue=oe.concat,ce=oe.push,fe=oe.indexOf,de={},pe=de.toString,he=de.hasOwnProperty,me=he.toString,ge=me.call(Object),ve={},ye=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},xe=function(e){return null!=e&&e===e.window},be={type:!0,src:!0,noModule:!0},we=function(e,t){return new we.fn.init(e,t)},Ce=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;we.fn=we.prototype={jquery:"3.3.1",constructor:we,length:0,toArray:function(){return le.call(this)},get:function(e){return null==e?le.call(this):0>e?this[e+this.length]:this[e]},pushStack:function(e){var t=we.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return we.each(this,e)},map:function(e){return this.pushStack(we.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ce,sort:oe.sort,splice:oe.splice},we.extend=we.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[s]||{},s++),"object"==typeof a||ye(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(u&&r&&(we.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&we.isPlainObject(n)?n:{},a[t]=we.extend(u,o,r)):void 0!==r&&(a[t]=r));return a},we.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==pe.call(e)||(t=se(e))&&("function"!=typeof(n=he.call(t,"constructor")&&t.constructor)||me.call(n)!==ge))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){n(e)},each:function(e,t){var n,r=0;if(i(e))for(n=e.length;n>r&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(Ce,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(i(Object(e))?we.merge(n,"string"==typeof e?[e]:e):ce.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:fe.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;a>o;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,o,a=0,s=[];if(i(e))for(r=e.length;r>a;a++)null!=(o=t(e[a],a,n))&&s.push(o);else for(a in e)null!=(o=t(e[a],a,n))&&s.push(o);return ue.apply([],s)},guid:1,support:ve}),"function"==typeof Symbol&&(we.fn[Symbol.iterator]=oe[Symbol.iterator]),we.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){de["[object "+t+"]"]=t.toLowerCase()});var Te=function(e){function t(e,t,n,r){var i,o,a,s,l,u,c,d=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==h&&9!==h&&11!==h)return n;if(!r&&((t?t.ownerDocument||t:F)!==O&&L(t),t=t||O,q)){if(11!==h&&(l=ve.exec(e)))if(i=l[1]){if(9===h){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&B(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&C.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(C.qsa&&!X[e+" "]&&(!H||!H.test(e))){if(1!==h)d=t,c=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(we,Ce):t.setAttribute("id",s=$),o=(u=E(e)).length;o--;)u[o]="#"+s+" "+p(u[o]);c=u.join(","),d=ye.test(e)&&f(t.parentNode)||t}if(c)try{return Q.apply(n,d.querySelectorAll(c)),n}catch(e){}finally{s===$&&t.removeAttribute("id")}}}return N(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function i(e){var t=O.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function u(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ke(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function d(){}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=R++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,l){var u,c,f,d=[z,s];if(l){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(f=t[$]||(t[$]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((u=c[o])&&u[0]===z&&u[1]===s)return d[2]=u[2];if(c[o]=d,d[2]=e(t,n,l))return!0}return!1}}function m(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}function v(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,u=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),u&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[$]&&(i=y(i)),o&&!o[$]&&(o=y(o,a)),r(function(r,a,s,l){var u,c,f,d=[],p=[],h=a.length,m=r||g(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?m:v(m,d,e,s,l),x=n?o||(r?e:h||i)?[]:a:y;if(n&&n(y,x,s,l),i)for(u=v(x,p),i(u,[],s,l),c=u.length;c--;)(f=u[c])&&(x[p[c]]=!(y[p[c]]=f));if(r){if(o||e){if(o){for(u=[],c=x.length;c--;)(f=x[c])&&u.push(y[c]=f);o(null,x=[],u,l)}for(c=x.length;c--;)(f=x[c])&&(u=o?ee(r,f):d[c])>-1&&(r[u]=!(a[u]=f))}}else x=v(x===a?x.splice(h,x.length):x),o?o(null,a,x,l):Q.apply(a,x)})}function x(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),u=h(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?l(e,n,r):u(e,n,r));return t=null,i}];i>s;s++)if(n=T.relative[e[s].type])c=[h(m(c),n)];else{if((n=T.filter[e[s].type].apply(null,e[s].matches))[$]){for(r=++s;i>r&&!T.relative[e[r].type];r++);return y(s>1&&m(c),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&x(e.slice(s,r)),i>r&&x(e=e.slice(r)),i>r&&p(e))}c.push(n)}return m(c)}function b(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,l,u){var c,f,d,p=0,h="0",m=r&&[],g=[],y=A,x=r||o&&T.find.TAG("*",u),b=z+=null==y?1:Math.random()||.1,w=x.length;for(u&&(A=a===O||a||u);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===O||(L(c),s=!q);d=e[f++];)if(d(c,a||O,s)){l.push(c);break}u&&(z=b)}i&&((c=!d&&c)&&p--,r&&m.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(m,g,a,s);if(r){if(p>0)for(;h--;)m[h]||g[h]||(g[h]=Z.call(l));g=v(g)}Q.apply(l,g),u&&!r&&g.length>0&&p+n.length>1&&t.uniqueSort(l)}return u&&(z=b,A=y),m};return i?r(a):a}var w,C,T,k,S,E,j,N,A,D,I,L,O,P,q,H,M,_,B,$="sizzle"+1*new Date,F=e.document,z=0,R=0,W=n(),U=n(),X=n(),V=function(e,t){return e===t&&(I=!0),0},Y={}.hasOwnProperty,G=[],Z=G.pop,K=G.push,Q=G.push,J=G.slice,ee=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ue=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Ce=function(e,t){return t?"\x00"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Te=function(){L()},ke=h(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Q.apply(G=J.call(F.childNodes),F.childNodes),G[F.childNodes.length].nodeType}catch(e){Q={apply:G.length?function(e,t){K.apply(e,J.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=t.support={},S=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:F;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,P=O.documentElement,q=!S(O),F!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),C.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=i(function(e){return e.appendChild(O.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=ge.test(O.getElementsByClassName),C.getById=i(function(e){return P.appendChild(e).id=$,!O.getElementsByName||!O.getElementsByName($).length}),C.getById?(T.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&q){var n=t.getElementById(e);return n?[n]:[]}}):(T.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&q){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),T.find.TAG=C.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):C.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=C.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&q?t.getElementsByClassName(e):void 0},M=[],H=[],(C.qsa=ge.test(O.querySelectorAll))&&(i(function(e){P.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||H.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||H.push("~="),e.querySelectorAll(":checked").length||H.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||H.push(".#.+[+~]")}),i(function(e){e.innerHTML=" ";var t=O.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&H.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&H.push(":enabled",":disabled"),P.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&H.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),H.push(",.*:")})),(C.matchesSelector=ge.test(_=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&i(function(e){C.disconnectedMatch=_.call(e,"*"),_.call(e,"[s!='']:x"),M.push("!=",oe)}),H=H.length&&new RegExp(H.join("|")),M=M.length&&new RegExp(M.join("|")),t=ge.test(P.compareDocumentPosition),B=t||ge.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return I=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!C.sortDetached&&t.compareDocumentPosition(e)===n?e===O||e.ownerDocument===F&&B(F,e)?-1:t===O||t.ownerDocument===F&&B(F,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return I=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!i||!o)return e===O?-1:t===O?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===F?-1:l[r]===F?1:0},O):O},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==O&&L(e),n=n.replace(ce,"='$1']"),C.matchesSelector&&q&&!X[n+" "]&&(!M||!M.test(n))&&(!H||!H.test(n)))try{var r=_.call(e,n);if(r||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,O,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==O&&L(e),B(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==O&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!q):void 0;return void 0!==r?r:C.attributes||!q?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Ce)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(I=!C.detectDuplicates,D=!C.sortStable&&e.slice(0),e.sort(V),I){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},k=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=k(t);return n},(T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(x=(p=(u=(c=(f=(d=g)[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===z&&u[1])&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[z,p,x];break}}else if(y&&(x=p=(u=(c=(f=(d=t)[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===z&&u[1]),!1===x)for(;(d=++p&&d&&d[m]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&((c=(f=d[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[z,x]),d!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)e[r=ee(e,i[a])]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=j(e.replace(se,"$1"));return i[$]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=q?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===P},focus:function(e){return e===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(e.type||e.href||~e.tabIndex);
+},enabled:u(!1),disabled:u(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&q&&T.relative[o[1].type]){if(!(t=(T.find.ID(a.matches[0].replace(xe,be),t)||[])[0]))return n;u&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((l=T.find[s])&&(r=l(a.matches[0].replace(xe,be),ye.test(o[0].type)&&f(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&p(o)))return Q.apply(n,r),n;break}}return(u||j(e,c))(r,t,!q,n,!t||ye.test(e)&&f(t.parentNode)||t),n},C.sortStable=$.split("").sort(V).join("")===$,C.detectDuplicates=!!I,L(),C.sortDetached=i(function(e){return 1&e.compareDocumentPosition(O.createElement("fieldset"))}),i(function(e){return e.innerHTML=" ","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&i(function(e){return e.innerHTML=" ",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;return n?void 0:!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);we.find=Te,we.expr=Te.selectors,we.expr[":"]=we.expr.pseudos,we.uniqueSort=we.unique=Te.uniqueSort,we.text=Te.getText,we.isXMLDoc=Te.isXML,we.contains=Te.contains,we.escapeSelector=Te.escape;var ke=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&we(e).is(n))break;r.push(e)}return r},Se=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ee=we.expr.match.needsContext,je=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;we.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?we.find.matchesSelector(r,e)?[r]:[]:we.find.matches(e,we.grep(t,function(e){return 1===e.nodeType}))},we.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(we(e).filter(function(){for(t=0;r>t;t++)if(we.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;r>t;t++)we.find(e,i[t],n);return r>1?we.uniqueSort(n):n},filter:function(e){return this.pushStack(a(this,e||[],!1))},not:function(e){return this.pushStack(a(this,e||[],!0))},is:function(e){return!!a(this,"string"==typeof e&&Ee.test(e)?we(e):e||[],!1).length}});var Ne,Ae=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(we.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ne,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ae.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof we?t[0]:t,we.merge(this,we.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ae,!0)),je.test(r[1])&&we.isPlainObject(t))for(r in t)ye(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=ae.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):ye(e)?void 0!==n.ready?n.ready(e):e(we):we.makeArray(e,this)}).prototype=we.fn,Ne=we(ae);var De=/^(?:parents|prev(?:Until|All))/,Ie={children:!0,contents:!0,next:!0,prev:!0};we.fn.extend({has:function(e){var t=we(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(we.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&we(e);if(!Ee.test(e))for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&we.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?we.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?fe.call(we(e),this[0]):fe.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(we.uniqueSort(we.merge(this.get(),we(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),we.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ke(e,"parentNode")},parentsUntil:function(e,t,n){return ke(e,"parentNode",n)},next:function(e){return s(e,"nextSibling")},prev:function(e){return s(e,"previousSibling")},nextAll:function(e){return ke(e,"nextSibling")},prevAll:function(e){return ke(e,"previousSibling")},nextUntil:function(e,t,n){return ke(e,"nextSibling",n)},prevUntil:function(e,t,n){return ke(e,"previousSibling",n)},siblings:function(e){return Se((e.parentNode||{}).firstChild,e)},children:function(e){return Se(e.firstChild)},contents:function(e){return o(e,"iframe")?e.contentDocument:(o(e,"template")&&(e=e.content||e),we.merge([],e.childNodes))}},function(e,t){we.fn[e]=function(n,r){var i=we.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=we.filter(r,i)),this.length>1&&(Ie[e]||we.uniqueSort(i),De.test(e)&&i.reverse()),this.pushStack(i)}});var Le=/[^\x20\t\r\n\f]+/g;we.Callbacks=function(e){e="string"==typeof e?l(e):we.extend({},e);var t,n,i,o,a=[],s=[],u=-1,c=function(){for(o=o||e.once,i=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),u>=n&&u--}),this},has:function(e){return e?we.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return o=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return o=s=[],n||t||(a=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],s.push(n),t||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!i}};return f},we.extend({Deferred:function(t){var n=[["notify","progress",we.Callbacks("memory"),we.Callbacks("memory"),2],["resolve","done",we.Callbacks("once memory"),we.Callbacks("once memory"),0,"resolved"],["reject","fail",we.Callbacks("once memory"),we.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return we.Deferred(function(t){we.each(n,function(n,r){var i=ye(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&ye(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){function o(t,n,r,i){return function(){var s=this,l=arguments,f=function(){var e,f;if(!(a>t)){if((e=r.apply(s,l))===n.promise())throw new TypeError("Thenable self-resolution");f=e&&("object"==typeof e||"function"==typeof e)&&e.then,ye(f)?i?f.call(e,o(a,n,u,i),o(a,n,c,i)):(a++,f.call(e,o(a,n,u,i),o(a,n,c,i),o(a,n,u,n.notifyWith))):(r!==u&&(s=void 0,l=[e]),(i||n.resolveWith)(s,l))}},d=i?f:function(){try{f()}catch(e){we.Deferred.exceptionHook&&we.Deferred.exceptionHook(e,d.stackTrace),t+1>=a&&(r!==c&&(s=void 0,l=[e]),n.rejectWith(s,l))}};t?d():(we.Deferred.getStackHook&&(d.stackTrace=we.Deferred.getStackHook()),e.setTimeout(d))}}var a=0;return we.Deferred(function(e){n[0][3].add(o(0,e,ye(i)?i:u,e.notifyWith)),n[1][3].add(o(0,e,ye(t)?t:u)),n[2][3].add(o(0,e,ye(r)?r:c))}).promise()},promise:function(e){return null!=e?we.extend(e,i):i}},o={};return we.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=le.call(arguments),o=we.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?le.call(arguments):n,--t||o.resolveWith(r,i)}};if(1>=t&&(f(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||ye(i[n]&&i[n].then)))return o.then();for(;n--;)f(i[n],a(n),o.reject);return o.promise()}});var Oe=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;we.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Oe.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},we.readyException=function(t){e.setTimeout(function(){throw t})};var Pe=we.Deferred();we.fn.ready=function(e){return Pe.then(e)["catch"](function(e){we.readyException(e)}),this},we.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--we.readyWait:we.isReady)||(we.isReady=!0,!0!==e&&--we.readyWait>0||Pe.resolveWith(ae,[we]))}}),we.ready.then=Pe.then,"complete"===ae.readyState||"loading"!==ae.readyState&&!ae.documentElement.doScroll?e.setTimeout(we.ready):(ae.addEventListener("DOMContentLoaded",d),e.addEventListener("load",d));var qe=function(e,t,n,i,o,a,s){var l=0,u=e.length,c=null==n;if("object"===r(n)){o=!0;for(l in n)qe(e,t,l,n[l],!0,a,s)}else if(void 0!==i&&(o=!0,ye(i)||(s=!0),c&&(s?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(we(e),n)})),t))for(;u>l;l++)t(e[l],n,s?i:i.call(e[l],l,t(e[l],n)));return o?e:c?t.call(e):u?t(e[0],n):a},He=/^-ms-/,Me=/-([a-z])/g,_e=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};m.uid=1,m.prototype={cache:function(e){var t=e[this.expando];return t||(t={},_e(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[h(t)]=n;else for(r in t)i[h(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][h(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(h):(t=h(t))in r?[t]:t.match(Le)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||we.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!we.isEmptyObject(t)}};var Be=new m,$e=new m,Fe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ze=/[A-Z]/g;we.extend({hasData:function(e){return $e.hasData(e)||Be.hasData(e)},data:function(e,t,n){return $e.access(e,t,n)},removeData:function(e,t){$e.remove(e,t)},_data:function(e,t,n){return Be.access(e,t,n)},_removeData:function(e,t){Be.remove(e,t)}}),we.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=$e.get(o),1===o.nodeType&&!Be.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=h(r.slice(5)),v(o,r,i[r]));Be.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){$e.set(this,e)}):qe(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=$e.get(o,e)))return n;if(void 0!==(n=v(o,e)))return n}else this.each(function(){$e.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){$e.remove(this,e)})}}),we.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=Be.get(e,t),n&&(!r||Array.isArray(n)?r=Be.access(e,t,we.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=we.queue(e,t),r=n.length,i=n.shift(),o=we._queueHooks(e,t),a=function(){we.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Be.get(e,n)||Be.access(e,n,{empty:we.Callbacks("once memory").add(function(){Be.remove(e,[t+"queue",n])})})}}),we.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ke=/^$|^module$|\/(?:java|ecma)script/i,Qe={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};Qe.optgroup=Qe.option,Qe.tbody=Qe.tfoot=Qe.colgroup=Qe.caption=Qe.thead,Qe.th=Qe.td;var Je=/<|?\w+;/;!function(){var e=ae.createDocumentFragment().appendChild(ae.createElement("div")),t=ae.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),ve.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="x ",ve.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var et=ae.documentElement,tt=/^key/,nt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rt=/^([^.]*)(?:\.(.+)|)/;we.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Be.get(e);if(g)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&we.find.matchesSelector(et,i),n.guid||(n.guid=we.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return"undefined"!=typeof we&&we.event.triggered!==t.type?we.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(Le)||[""]).length;u--;)p=m=(s=rt.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=we.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=we.event.special[p]||{},c=we.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&we.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=l[p])||((d=l[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),we.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Be.hasData(e)&&Be.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(Le)||[""]).length;u--;)if(s=rt.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){for(f=we.event.special[p]||{},d=l[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)c=d[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||we.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)we.event.remove(e,p+t[u],n,r,!0);we.isEmptyObject(l)&&Be.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=we.event.fix(e),l=new Array(arguments.length),u=(Be.get(this,"events")||{})[s.type]||[],c=we.event.special[s.type]||{};for(l[0]=s,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;l>n;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?we(i,this).index(u)>-1:we.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,ot=/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BSPR 2017 Bursaries and Fellowships
+
+
+
+
+
+
+
+ 2017 European Summer School Bursary
+
+Emily Feneberg, Oxford
+
+Student Conference Bursaries HUPO Dublin 2017
+Arun Tailor, Liverpool
+
+Carmen Arasti M.Arasti-Rezola, Liverpool
+
+Emily Bowler E.H.Bowler,
+
+Southhampton
+
+Fernanda Grande Kugeratski, Glasgow
+
+James Waddington , Liverpool
+
+Muhammad Zubair Israr , Leicester
+
+Sarah Wagner , Nottingham
+
+MJ Dunn Fellowship HUPO 2017
+Harry Whitwell , London
+
+Alice Len, London
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+