From b5d69d71e76bf20bab35490cdc6d6855eb1dc3e5 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 13 Dec 2017 15:57:01 +0100 Subject: [PATCH] refactor: Improvements * refactor: Update modal * refactor: Update settings page * feat: Add reset credentials * feat: Add .nvmrc and lodash * chore: Remove console.log * chore: nmvrc -> .nvmrc * chore: nmvrc -> .nvmrc --- .nvmrc | 1 + app.js | 2 +- helpers.js | 10 ++ i18n/locales/de-DE.json | 53 +++++-- i18n/locales/en-US.json | 51 +++++-- package.json | 4 +- public/fonts/roboto-bold-webfont.woff | Bin public/fonts/roboto-bold-webfont.woff2 | Bin public/fonts/roboto-bolditalic-webfont.woff | Bin public/fonts/roboto-bolditalic-webfont.woff2 | Bin public/fonts/roboto-italic-webfont.woff | Bin public/fonts/roboto-italic-webfont.woff2 | Bin public/fonts/roboto-medium-webfont.woff | Bin public/fonts/roboto-medium-webfont.woff2 | Bin public/fonts/roboto-mediumitalic-webfont.woff | Bin .../fonts/roboto-mediumitalic-webfont.woff2 | Bin public/fonts/roboto-regular-webfont.woff | Bin public/fonts/roboto-regular-webfont.woff2 | Bin public/icons/icons.svg | 2 +- public/images/android-icon.svg | 6 + public/images/apple.svg | 3 + public/images/dotnet.svg | 144 ++++++++++++++++++ public/images/java.svg | 7 + public/images/javascript.svg | 4 + public/images/logo-node.svg | 14 -- .../images/logo-the-example-app-android.svg | 17 +++ public/images/logo-the-example-app-csharp.svg | 17 +++ public/images/logo-the-example-app-dotnet.svg | 17 +++ public/images/logo-the-example-app-ios.svg | 17 +++ public/images/logo-the-example-app-java.svg | 17 +++ public/images/logo-the-example-app-nodejs.svg | 17 +++ public/images/logo-the-example-app-php.svg | 17 +++ public/images/logo-the-example-app-python.svg | 17 +++ public/images/logo-the-example-app-ruby.svg | 17 +++ public/images/logo-the-example-app-swift.svg | 17 +++ public/images/nodejs-icon.svg | 3 + public/images/php.svg | 17 +++ public/images/python.svg | 14 ++ public/images/ruby.svg | 136 +++++++++++++++++ public/images/swift.svg | 13 ++ public/scripts/index.js | 4 + public/stylesheets/style.css | 4 + routes/landingPage.js | 1 - routes/settings.js | 12 +- views/layout.pug | 83 +++++++--- views/settings.pug | 36 ++++- 46 files changed, 731 insertions(+), 63 deletions(-) create mode 100644 .nvmrc mode change 100755 => 100644 public/fonts/roboto-bold-webfont.woff mode change 100755 => 100644 public/fonts/roboto-bold-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-bolditalic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-bolditalic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-italic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-italic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-medium-webfont.woff mode change 100755 => 100644 public/fonts/roboto-medium-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-mediumitalic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-mediumitalic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-regular-webfont.woff mode change 100755 => 100644 public/fonts/roboto-regular-webfont.woff2 create mode 100644 public/images/android-icon.svg create mode 100644 public/images/apple.svg create mode 100644 public/images/dotnet.svg create mode 100644 public/images/java.svg create mode 100644 public/images/javascript.svg delete mode 100644 public/images/logo-node.svg create mode 100644 public/images/logo-the-example-app-android.svg create mode 100644 public/images/logo-the-example-app-csharp.svg create mode 100644 public/images/logo-the-example-app-dotnet.svg create mode 100644 public/images/logo-the-example-app-ios.svg create mode 100644 public/images/logo-the-example-app-java.svg create mode 100644 public/images/logo-the-example-app-nodejs.svg create mode 100644 public/images/logo-the-example-app-php.svg create mode 100644 public/images/logo-the-example-app-python.svg create mode 100644 public/images/logo-the-example-app-ruby.svg create mode 100644 public/images/logo-the-example-app-swift.svg create mode 100644 public/images/nodejs-icon.svg create mode 100644 public/images/php.svg create mode 100644 public/images/python.svg create mode 100644 public/images/ruby.svg create mode 100644 public/images/swift.svg diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..22333f1 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +8.9.3 diff --git a/app.js b/app.js index dfb0c9d..de3cafb 100644 --- a/app.js +++ b/app.js @@ -45,6 +45,7 @@ app.use(settings) // Make data available for our views to consume app.use(catchErrors(async function (request, response, next) { + response.locals.baseUrl = `${request.protocol}://${request.headers.host}` // Get enabled locales from Contentful response.locals.locales = [{code: 'en-US', name: 'U.S. English'}] response.locals.currentLocale = response.locals.locales[0] @@ -90,7 +91,6 @@ app.use(catchErrors(async function (request, response, next) { if (!response.locals.currentLocale) { response.locals.currentLocale = defaultLocale } - next() })) diff --git a/helpers.js b/helpers.js index 72acd75..30867fe 100644 --- a/helpers.js +++ b/helpers.js @@ -19,6 +19,16 @@ module.exports.formatMetaTitle = (title, localeCode = 'en-US') => { return `${title.charAt(0).toUpperCase()}${title.slice(1)} — ${translate('defaultTitle', localeCode)}` } +module.exports.isCustomCredentials = (settings) => { + const spaceId = process.env.CONTENTFUL_SPACE_ID + const deliveryToken = process.env.CONTENTFUL_DELIVERY_TOKEN + const previewToken = process.env.CONTENTFUL_PREVIEW_TOKEN + + return settings.spaceId !== spaceId || + settings.deliveryToken !== deliveryToken || + settings.previewToken !== previewToken +} + /** * Evil users might try to add base64 url data to execute js code * so we should purge any potentially harmful data to mitigate risk diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index bf3f98c..b952868 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -21,14 +21,29 @@ "footerDisclaimer": "Powered by Contentful. Diese Website und deren Materialien existieren nur für Demonstrationszwecken. Sie können diese benutzen, um den Inhalt ihres Contentful Kontos anzusehen.", "imprintLabel": "Impressum", "contactUsLabel": "Kontakt", - "modalTitle": "Ein Beispiel für Entwickler, die Contentful benutzen.", - "modalIntro": "Dies ist \"The Example App\" in node.js. Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalTitle": "Ein Beispiel für Entwickler, die Contentful benutzen", + "modalTitleDotnet": "Ein Beispiel für .NET Entwickler, die Contentful benutzen", + "modalTitleRuby": "Ein Beispiel für Ruby Entwickler, die Contentful benutzen", + "modalTitlePhp": "Ein Beispiel für PHP Entwickler, die Contentful benutzen", + "modalTitlePython": "Ein Beispiel für Python Entwickler, die Contentful benutzen", + "modalTitleSwift": "Ein Beispiel für Swift Entwickler, die Contentful benutzen", + "modalTitleAndroid": "Ein Beispiel für Android Entwickler, die Contentful benutzen", + "modalTitleJava": "Ein Beispiel für Java Entwickler, die Contentful benutzen", + "modalIntro": "Dies ist \"The Node.js Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroDotnet": "Dies ist \"The .NET Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroRuby": "Dies ist \"The Ruby Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroPhp": "Dies ist \"The PHP Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroPython": "Dies ist \"The Python Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroSwift": "Dies ist \"The Swift Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroAndroid": "Dies ist \"The Android Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroJava": "Dies ist \"The Java Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", "modalSpaceIntro": "Den Inhalt dieser Anwendung können Sie selbst bearbeiten. Dafür müssen Sie den \"The Example App\" space in Ihren Contentful Account importieren. Anleitung hierzu gibt es", + "modalPlatforms": "Diese App ist auch in den folgenden Plattformen und Sprachen verfügbar:", "modalSpaceLinkLabel": "hier", "modalCTALabel": "Gut, verstanden.", - "editorialFeaturesHint": "Bearbeiten Sie diesen Eintrag in unserer Web App. Sie müssen sich eingelogged haben und Zugang zum Space haben, um diese Funktion nutzen zu können.", + "editorialFeaturesHint": "Bearbeiten Sie diesen Eintrag in der Contentful Web App. Sie müssen sich eingelogged haben und Zugang zum Space haben, um diese Funktion nutzen zu können.", "draftLabel": "Entwurf", - "pendingChangesLabel": "Änderungen vorbehalten", + "pendingChangesLabel": "Änderungen verfügbar", "lessonModuleErrorTitle": "⚠️ Ungültiges Lektionsmodul", "lessonModuleErrorBody": "Konnte den Typ nicht erkennen: ", "nextLessonLabel": "Nächste Lektion ansehen", @@ -64,12 +79,14 @@ "changesSavedLabel": "Änderungen erfolgreich gespeichert!", "errorOcurredTitleLabel": "Fehler aufgetreten", "errorOcurredMessageLabel": "Einige Fehler sind aufgetreten. Bitte schauen Sie sich die Fehlermeldungen neben den Feldern an.", - "connectedToSpaceLabel": "Verbunden mit Space ", + "connectedToSpaceLabel": "Verbundener Space ", "spaceIdLabel": "Space ID", "spaceIdHelpText": "Die Space Id ist eine eindeutige Identifizierung für Ihren Space.", "accessTokenLabel": "Access Token", - "contentDeliveryApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit dieser API an.", - "contentPreviewApiHelpText": "Schauen Sie sich unveröffentlichten Inhalt mit dieser API an. (z.B. Inhalt im Zustand “Entwurf”).", + "cdaAccessTokenLabel": "Content Delivery API Access Token", + "cpaAccessTokenLabel": "Content Preview API Access Token", + "contentDeliveryApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit diesem Token an.", + "contentPreviewApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit diesem Token an. (z.B. Inhalt im Zustand “Entwurf”).", "enableEditorialFeaturesLabel": "Editoriale Funktionen aktivieren.", "enableEditorialFeaturesHelpText": "Aktivieren, um Bearbeitung und weitere kontextabhängige Helfer zu aktivieren. Damit dies funktioniert, müssen sie Zugang zu dem Space haben.", "saveSettingsButtonLabel": "Einstellungen Speichern", @@ -80,6 +97,22 @@ "beginnerLabel": "Anfänger", "intermediateLabel": "Fortgeschrittener", "advancedLabel": "Experte", - "editInTheWebAppLabel": "In der web app bearbeiten", - "error404Route": "Ein nicht unterstützter HTTP Route" -} + "editInTheWebAppLabel": "In der Contentful Web App bearbeiten", + "error404Route": "Eine nicht unterstützte HTTP Route", + "currentLocaleLabel": "Deutsch (Deutschland)", + "hostedLabel": "Gehostet", + "comingSoonLabel": "Bald verfügbar", + "credentialSourceLabel": "Ursprung der Zugangsdaten:", + "readMoreLabel": "Weiterlesen", + "credentialsLocationLabel": "Ihre Zugangsdaten werden derzeit aus", + "overwriteCredentialsLabel": "Sie können überschrieben werden, indem Sie das Formular unten oder einen Querystring Parameter verwenden.", + "copyLinkLabel": "Einen Link zum Verteilen kopieren", + "resetCredentialsLabel": "Zugangsdaten zurücksetzen", + "resetAboveLabel": "Sie können auf voreingestellten Zugangsdaten zurücksetzen.", + "closeLabel": "Schließen", + "overrideConfigLabel": "Diese Konfiguration kann durch das folgende Formular oder durch Verwendung von Querystring Parameter überschrieben werden.", + "loadedFromLocalFileLabel": "Geladen von der lokalen Datei", + "usingServerCredentialsLabel": "Die Beispielanwendung verwendet derzeit serverseitig gespeicherte Anmeldeinformationen zum Herstellen einer Verbindung mit einem Contentful-Space.", + "usingSessionCredentialsLabel": "Die Beispielanwendung verwendet derzeit Anmeldeinformationen von der Anwendungssitzung, um eine Verbindung zu einem Contentful-Space herzustellen.", + "applicationCredentialsLabel": "Anmeldeinformationen für die Anwendungssitzung" +} \ No newline at end of file diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index fa93f79..18b4fc0 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -21,12 +21,27 @@ "footerDisclaimer": "Powered by Contentful. This website and the materials found on it are for demo purposes. You can use this to preview the content created on your Contentful account.", "imprintLabel": "Imprint", "contactUsLabel": "Contact us", - "modalTitle": "A reference for developers using Contentful", - "modalIntro": "This is \"The Example App\" in node.js. While building your own apps with Contentful, you can reference this app's code, found on", + "modalTitle": "A reference for Node.js developers using Contentful", + "modalTitleDotnet": "A reference for .NET developers using Contentful", + "modalTitleRuby": "A reference for Ruby developers using Contentful", + "modalTitlePhp": "A reference for PHP developers using Contentful", + "modalTitlePython": "A reference for Python developers using Contentful", + "modalTitleSwift": "A reference for Swift developers using Contentful", + "modalTitleAndroid": "A reference for Android developers using Contentful", + "modalTitleJava": "A reference for Java developers using Contentful", + "modalIntro": "This is \"The Node.js Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroDotnet": "This is \"The .NET Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroRuby": "This is \"The Ruby Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroPhp": "This is \"The PHP Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroPython": "This is \"The Python Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroSwift": "This is \"The Swift Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroAndroid": "This is \"The Android Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroJava": "This is \"The Java Example App\". While building your own apps with Contentful, you can reference this app's code, found on", "modalSpaceIntro": "You can also edit the content in the app by cloning the Contentful space to your own Contentful account by following the instructions", + "modalPlatforms": "This app is also available in the following platforms and languages:", "modalSpaceLinkLabel": "here", "modalCTALabel": "Ok, got it.", - "editorialFeaturesHint": "Edit this entry in our web app. You have to be logged in and have access to the connected space to use this feature.", + "editorialFeaturesHint": "Edit this entry in the Contentful web app. You have to be logged in and have access to the connected space to use this feature.", "draftLabel": "draft", "pendingChangesLabel": "pending changes", "lessonModuleErrorTitle": "⚠️ Invalid lesson module", @@ -64,12 +79,14 @@ "changesSavedLabel": "Changes saved successfully!", "errorOcurredTitleLabel": "Error occurred", "errorOcurredMessageLabel": "Some errors occurred. Please check the error messages next to the fields.", - "connectedToSpaceLabel": "Connected to space", + "connectedToSpaceLabel": "Connected space", "spaceIdLabel": "Space ID", "spaceIdHelpText": "The Space ID is a unique identifier for your space.", "accessTokenLabel": "access token", - "contentDeliveryApiHelpText": "View published content using this API.", - "contentPreviewApiHelpText": "Preview unpublished content using this API (i.e. content with “Draft” status).", + "cdaAccessTokenLabel": "Content Delivery API access token", + "cpaAccessTokenLabel": "Content Preview API access token", + "contentDeliveryApiHelpText": "View published content using this token.", + "contentPreviewApiHelpText": "Preview unpublished content using this token (i.e. content with “Draft” status).", "enableEditorialFeaturesLabel": "Enable editorial features", "enableEditorialFeaturesHelpText": "Enable to display an edit link and other contextual helpers for authors. You need to have access to the connected space to make this work.", "saveSettingsButtonLabel": "Save settings", @@ -80,6 +97,22 @@ "beginnerLabel": "Beginner", "intermediateLabel": "Intermediate", "advancedLabel": "Advanced", - "editInTheWebAppLabel": "Edit in the web app", - "error404Route": "a non supported route" -} + "editInTheWebAppLabel": "Edit in the Contentful Web App", + "error404Route": "Verify that you are trying to reach a supported route", + "currentLocaleLabel": "English (United States)", + "hostedLabel": "Hosted", + "comingSoonLabel": "Coming soon", + "credentialSourceLabel": "Credentials source", + "readMoreLabel": "Read more", + "credentialsLocationLabel": "Your credentials are currently loaded from", + "overwriteCredentialsLabel": "They can be overwritten by changing them below or using query string parameters.", + "copyLinkLabel": "Copy session deeplink to clipboard", + "resetCredentialsLabel": "Reset credentials to default", + "resetAboveLabel": "You can reset to the default credentials above.", + "closeLabel": "Close", + "overrideConfigLabel": "This configuration can be overriden through the form below or by using query string parameters.", + "loadedFromLocalFileLabel": "Loaded from local file", + "usingServerCredentialsLabel": "The example app is currently using server side stored credentials to connect to a Contentful space.", + "usingSessionCredentialsLabel": "The example app is currently using application session stored credentials to connect to a Contentful space.", + "applicationCredentialsLabel": "Application session credentials" +} \ No newline at end of file diff --git a/package.json b/package.json index 4efd13e..b6aa42b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "heroku-postbuild": "./bin/vendor/deploy.sh" }, "engines": { - "node": ">=8.4.0" + "node": ">=8.9.3" }, "dependencies": { "body-parser": "~1.15.2", @@ -30,7 +30,7 @@ "execa": "^0.8.0", "express": "~4.14.0", "helmet": "^3.9.0", - "loadash": "^1.0.0", + "lodash": "^4.17.4", "marked": "^0.3.6", "morgan": "~1.7.0", "pug": "~2.0.0-beta6" diff --git a/public/fonts/roboto-bold-webfont.woff b/public/fonts/roboto-bold-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bold-webfont.woff2 b/public/fonts/roboto-bold-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bolditalic-webfont.woff b/public/fonts/roboto-bolditalic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bolditalic-webfont.woff2 b/public/fonts/roboto-bolditalic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-italic-webfont.woff b/public/fonts/roboto-italic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-italic-webfont.woff2 b/public/fonts/roboto-italic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-medium-webfont.woff b/public/fonts/roboto-medium-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-medium-webfont.woff2 b/public/fonts/roboto-medium-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-mediumitalic-webfont.woff b/public/fonts/roboto-mediumitalic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-mediumitalic-webfont.woff2 b/public/fonts/roboto-mediumitalic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-regular-webfont.woff b/public/fonts/roboto-regular-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-regular-webfont.woff2 b/public/fonts/roboto-regular-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/icons/icons.svg b/public/icons/icons.svg index 013a8eb..6e8867e 100644 --- a/public/icons/icons.svg +++ b/public/icons/icons.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/images/android-icon.svg b/public/images/android-icon.svg new file mode 100644 index 0000000..54a7f13 --- /dev/null +++ b/public/images/android-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/apple.svg b/public/images/apple.svg new file mode 100644 index 0000000..57d9d85 --- /dev/null +++ b/public/images/apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/dotnet.svg b/public/images/dotnet.svg new file mode 100644 index 0000000..e75d272 --- /dev/null +++ b/public/images/dotnet.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/java.svg b/public/images/java.svg new file mode 100644 index 0000000..d131c8a --- /dev/null +++ b/public/images/java.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/images/javascript.svg b/public/images/javascript.svg new file mode 100644 index 0000000..c6370d7 --- /dev/null +++ b/public/images/javascript.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/logo-node.svg b/public/images/logo-node.svg deleted file mode 100644 index 5c3995a..0000000 --- a/public/images/logo-node.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - logo-node - - - - - - - - - - - diff --git a/public/images/logo-the-example-app-android.svg b/public/images/logo-the-example-app-android.svg new file mode 100644 index 0000000..411fe1d --- /dev/null +++ b/public/images/logo-the-example-app-android.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Android + + + + diff --git a/public/images/logo-the-example-app-csharp.svg b/public/images/logo-the-example-app-csharp.svg new file mode 100644 index 0000000..44630a9 --- /dev/null +++ b/public/images/logo-the-example-app-csharp.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The C# + + + + diff --git a/public/images/logo-the-example-app-dotnet.svg b/public/images/logo-the-example-app-dotnet.svg new file mode 100644 index 0000000..b0fd00f --- /dev/null +++ b/public/images/logo-the-example-app-dotnet.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The .NET + + + + diff --git a/public/images/logo-the-example-app-ios.svg b/public/images/logo-the-example-app-ios.svg new file mode 100644 index 0000000..918f817 --- /dev/null +++ b/public/images/logo-the-example-app-ios.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The iOS + + + + diff --git a/public/images/logo-the-example-app-java.svg b/public/images/logo-the-example-app-java.svg new file mode 100644 index 0000000..3956404 --- /dev/null +++ b/public/images/logo-the-example-app-java.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Java + + + + diff --git a/public/images/logo-the-example-app-nodejs.svg b/public/images/logo-the-example-app-nodejs.svg new file mode 100644 index 0000000..d2b8602 --- /dev/null +++ b/public/images/logo-the-example-app-nodejs.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The node.js + + + + diff --git a/public/images/logo-the-example-app-php.svg b/public/images/logo-the-example-app-php.svg new file mode 100644 index 0000000..3c4a6f4 --- /dev/null +++ b/public/images/logo-the-example-app-php.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The PHP + + + + diff --git a/public/images/logo-the-example-app-python.svg b/public/images/logo-the-example-app-python.svg new file mode 100644 index 0000000..bda70c0 --- /dev/null +++ b/public/images/logo-the-example-app-python.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Python + + + + diff --git a/public/images/logo-the-example-app-ruby.svg b/public/images/logo-the-example-app-ruby.svg new file mode 100644 index 0000000..55c2b34 --- /dev/null +++ b/public/images/logo-the-example-app-ruby.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Ruby + + + + diff --git a/public/images/logo-the-example-app-swift.svg b/public/images/logo-the-example-app-swift.svg new file mode 100644 index 0000000..94f0846 --- /dev/null +++ b/public/images/logo-the-example-app-swift.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Swift + + + + diff --git a/public/images/nodejs-icon.svg b/public/images/nodejs-icon.svg new file mode 100644 index 0000000..90f4af0 --- /dev/null +++ b/public/images/nodejs-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/php.svg b/public/images/php.svg new file mode 100644 index 0000000..6f2cb5d --- /dev/null +++ b/public/images/php.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/images/python.svg b/public/images/python.svg new file mode 100644 index 0000000..a49fcb6 --- /dev/null +++ b/public/images/python.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/images/ruby.svg b/public/images/ruby.svg new file mode 100644 index 0000000..b03eda3 --- /dev/null +++ b/public/images/ruby.svg @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/swift.svg b/public/images/swift.svg new file mode 100644 index 0000000..eff1018 --- /dev/null +++ b/public/images/swift.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/scripts/index.js b/public/scripts/index.js index 0ca00ad..43b1bac 100644 --- a/public/scripts/index.js +++ b/public/scripts/index.js @@ -1,5 +1,9 @@ <<<<<<< HEAD +<<<<<<< HEAD !function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(3),o=i(r),a=n(4),s=i(a),l=n(5),c=i(l),u=n(6),d=i(u),f=n(7),p=i(f),g=n(8),m=i(g),h=n(9),b=i(h),E=n(10),v=i(E),_=n(11),w=i(_),y=n(12),N=i(y),O=n(14),M=i(O),x=n(15),C=i(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),i=null;(0,N.default)(e,function(){},function(){i&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return i.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),i=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-higlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),i=function(e){var i=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===i&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=i})})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s/g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s>>>>>> feat: Minor fixes (#73) +======= +!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=n(3),o=r(i),a=n(4),s=r(a),l=n(5),c=r(l),u=n(6),d=r(u),f=n(7),p=r(f),g=n(8),m=r(g),h=n(9),b=r(h),E=n(10),v=r(E),_=n(11),w=r(_),y=n(12),N=r(y),O=n(14),M=r(O),x=n(15),C=r(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),r=null;(0,N.default)(e,function(){},function(){r&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return r.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),r=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-highlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),r=function(e){var r=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===r&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=r})});var r=document.querySelector(".status-block__sharelink");r&&r.addEventListener("click",function(e){e.preventDefault();var t=e.target.getAttribute("href"),n=document.createElement("input");n.value=t,document.body.appendChild(n),n.select();try{document.execCommand("copy")}catch(e){alert("Unable to copy text. Please right click and copy link target.")}document.body.removeChild(n)})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function r(e,t){var n=e&&e.exec(t);return n&&0===n.index}function i(e){return x.test(e)}function o(e){var t,n,r,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,r=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||r.length;){var f=o();if(u+=t(i.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(i.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(i,o){if(!i.compiled){if(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof i.keywords?s("keyword",i.keywords):N(i.keywords).forEach(function(e){s(e,i.keywords[e])}),i.keywords=a}i.lexemesRe=n(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=n(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return c("self"===e?i:e)})),i.contains.forEach(function(e){r(e,i)}),i.starts&&r(i.starts,o);var l=i.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([i.terminator_end,i.illegal]).map(t).filter(Boolean);i.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function d(e,n,i,o){function a(e,t){var n,i;for(n=0,i=t.contains.length;n')+t+a}function g(){var e,n,r,i;if(!y.keywords)return t(x);for(i="",n=0,y.lexemesRe.lastIndex=0,r=y.lexemesRe.exec(x);r;)i+=t(x.substring(n,r.index)),e=c(y,r),e?(C+=e[1],i+=p(e[0],t(r[0]))):i+=t(r[0]),n=y.lexemesRe.lastIndex,r=y.lexemesRe.exec(x);return i+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var r=s(y,t);if(r){var i=y;i.skip?x+=t:(i.returnEnd||i.excludeEnd||(x+=t),h(),i.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==r.parent);return r.starts&&b(r.starts,""),i.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var r={relevance:0,value:t(e)},i=r;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>i.relevance&&(i=n),n.relevance>r.relevance&&(i=r,r=n)}),i.language&&(r.second_best=i),r}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var r=t?M[t]:n,i=[e.trim()];return e.match(/\bhljs\b/)||i.push("hljs"),-1===e.indexOf(r)&&i.push(r),i.join(" ").trim()}function m(e){var t,n,r,a,c,u=o(e);i(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,r=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=r.value,r.value=l(n,s(a),c)),r.value=p(r.value),e.innerHTML=r.value,e.className=g(e.className,u,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var r=O[t]=n(e);r.aliases&&r.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var i=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return i.contains.push(e.PHRASAL_WORDS_MODE),i.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),i},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(n,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]};i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,r,e.REGEXP_MODE];var a=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},i={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,i]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,i]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i]};return r.contains=[i,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r=e.COMMENT("/\\*","\\*/",{contains:["self"]}),i={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[i,e.BACKSLASH_ESCAPE]});return i.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,r,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,r]}]}}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e,t,n){function i(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",r=e.nodeName;if("BODY"===r||"HTML"===r){var i=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||i)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=f(t,"top"),i=f(t,"left"),o=n?-1:1;return e.top+=r*o,e.bottom+=r*o,e.left+=i*o,e.right+=i*o,e}function g(e,t){var n="x"===t?"Left":"Top",r="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+r+"Width"].split("px")[0]}function m(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+r["margin"+("Height"===e?"Top":"Left")]+r["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),r=f(e,"left");t.top+=n,t.left+=r,t.bottom+=n,t.right+=r}catch(e){}else t=e.getBoundingClientRect();var i={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||i.right-i.left,l=a.height||e.clientHeight||i.bottom-i.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),i.width-=c,i.height-=u}return b(i)}function v(e,t){var n=ge(),r="HTML"===t.nodeName,i=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:i.top-a.top-u,left:i.left-a.left-d,width:i.width,height:i.height});if(f.marginTop=0,f.marginLeft=0,!n&&r){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),r=Math.max(t.clientWidth,window.innerWidth||0),i=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:r,height:i})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,r){var i={top:0,left:0},o=d(e,t);if("viewport"===r)i=_(o);else{var l=void 0;"scrollParent"===r?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===r?e.ownerDocument.documentElement:r;var c=v(l,o);if("HTML"!==l.nodeName||w(o))i=c;else{var u=h(),f=u.height,p=u.width;i.top+=c.top-c.marginTop,i.bottom=f+c.top,i.left+=c.left-c.marginLeft,i.right=p+c.left}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function N(e){return e.width*e.height}function O(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,r,o,i),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,r=e.height;return t>=n.clientWidth&&r>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),r=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+r,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var r=x(e),i={width:r.width,height:r.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return i[a]=t[a]+t[l]/2-r[l]/2,i[s]=n===s?t[s]-r[c]:t[C(s)],i}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var r=L(e,function(e){return e[t]===n});return e.indexOf(r)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&i(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;ra[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),r=_e.slice(n+1).concat(_e.slice(0,n));return t?r.reverse():r}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),r=e.placement.split("-")[0],i=C(r),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[r,i];break;case we.CLOCKWISE:a=Y(r);break;case we.COUNTERCLOCKWISE:a=Y(r,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(r!==s||a.length===l+1)return e;r=e.placement.split("-")[0],i=C(r);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===r&&d(c.right)>d(u.left)||"right"===r&&d(c.left)d(u.top)||"bottom"===r&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===r&&p||"right"===r&&g||"top"===r&&m||"bottom"===r&&h,E=-1!==["top","bottom"].indexOf(r),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(r=a[l+1]),v&&(o=Q(o)),e.placement=r+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(r[s])&&(e.offsets.popper[l]=o(r[s])),e}function ee(e,t,n,r){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+i[1],a=i[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,r){var i=[0,0],o=-1!==["right","left"].indexOf(r),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,r){var i=(1===r?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,i,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,r){K(n)&&(i[t]+=n*("-"===e[r-1]?-1:1))})}),i}function ne(e,t){var n=t.offset,r=e.placement,i=e.offsets,o=i.popper,a=i.reference,s=r.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function re(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var r=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=r;var i=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]r[e]&&!t.escapeWithReference&&(i=Math.min(o[n],r[e]-("right"===e?o.width:o.height))),be({},n,i)}};return i.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function ie(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var i=e.offsets,o=i.reference,a=i.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[r])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:r,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){r.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},r.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&i(e.onLoad)&&e.onLoad(r.reference,r.popper,r.options,e,r.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var r,i,o;!function(n,a){"use strict";i=[],r=a,void 0!==(o="function"==typeof r?r.apply(t,i):r)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!r(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),i(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),i(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!i(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function r(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function i(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var r={};for(var i in a)n.hasOwnProperty(i)?r[i]=n[i]:r[i]=a[i];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s>>>>>> refactor: Improvements diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index d692606..9820780 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1,5 +1,9 @@ <<<<<<< HEAD +<<<<<<< HEAD /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} ======= /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} >>>>>>> feat: Minor fixes (#73) +======= +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}.status-block__message form button{margin:0;padding:0;background:none;color:#5c9fef;line-height:1.5em;min-width:0;font-size:14px;text-decoration:underline;height:auto}.status-block__message form button:hover{color:#3c80cf}.status-block__readmore{display:none;padding-top:1.5em}.status-block__readmore--active{display:block}.status-block__readmore-trigger{text-decoration:underline}.status-block__readmore-trigger:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='10' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%233c80cf' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.status-block__readmore-trigger.active:after{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.status-block__readmore-trigger:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='10' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%235c9fef' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content ul{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0;margin:0;margin-top:2em}.modal__content ul li{width:50px;height:100px;margin:0 10px;text-align:center}.modal__content ul li img{width:50px;height:50px}.modal__content ul li img.inactive{filter:url('data:image/svg+xml;charset=utf-8,#filter');-webkit-filter:grayscale(1);filter:grayscale(1)}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} +>>>>>>> refactor: Improvements diff --git a/routes/landingPage.js b/routes/landingPage.js index d0c8fca..3ba213c 100644 --- a/routes/landingPage.js +++ b/routes/landingPage.js @@ -31,6 +31,5 @@ module.exports.getLandingPage = async (request, response, next) => { if (shouldAttachEntryState(response)) { landingPage = await attachEntryState(landingPage) } - console.log(landingPage.fields.contentModules[0].fields.course.fields.image) response.render('landingPage', { title: pathname, landingPage }) } diff --git a/routes/settings.js b/routes/settings.js index e89fd30..6066700 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -59,7 +59,14 @@ module.exports.getSettings = async (request, response, next) => { module.exports.postSettings = async (request, response, next) => { const currentLocale = response.locals.currentLocale let errorList = [] - const { spaceId, deliveryToken, previewToken, editorialFeatures, qs } = request.body + let { spaceId, deliveryToken, previewToken, editorialFeatures } = request.body + + if (request.query.reset) { + spaceId = process.env.CONTENTFUL_SPACE_ID + deliveryToken = process.env.CONTENTFUL_DELIVERY_TOKEN + previewToken = process.env.CONTENTFUL_PREVIEW_TOKEN + } + const settings = { spaceId, deliveryToken, @@ -169,7 +176,6 @@ module.exports.postSettings = async (request, response, next) => { settings, errors, hasErrors: errorList.length > 0, - success: errorList.length === 0, - queryString: qs + success: errorList.length === 0 }) } diff --git a/views/layout.pug b/views/layout.pug index 98683d4..67dff1b 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -77,7 +77,7 @@ html .header__lower.layout-centered .header__logo a.header__logo-link(href=`/${queryString}`) - img(src='/images/logo-node.svg' alt=translate('logoAlt', currentLocale.code)) + img(src='/images/logo-the-example-app-nodejs.svg' alt=translate('logoAlt', currentLocale.code)) nav.header__navigation.main-navigation ul li @@ -126,24 +126,69 @@ html a(href='https://github.com/contentful' target='_blank' rel='noopener') svg use(xlink:href='/icons/icons.svg#github') - section.modal#about-this-modal - .modal__overlay.close - .modal__wrapper - h1.modal__title #{translate('modalTitle', currentLocale.code)} - .modal__content - p #{translate('modalIntro', currentLocale.code)}  - a(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') GitHub - | . - p - | #{translate('modalSpaceIntro', currentLocale.code)}  - a(href='https://github.com/contentful/content-models/blob/master/the-example-app/README.md ' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) - | . - .modal__cta-wrapper - a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} - .modal__close-wrapper - a(href='#').modal__close-button.close - svg - use(xlink:href='/icons/icons.svg#cross') +section.modal#about-this-modal + .modal__overlay.close + .modal__wrapper + h1.modal__title= translate("modalTitleDotnet", currentLocale.code) + .modal__content + p + | #{translate("modalIntro", currentLocale.code)}  + a(href="https://github.com/contentful/the-example-app.nodejs" target="_blank" rel="noopener") Github + | . + p + | #{translate("modalSpaceIntro", currentLocale.code)}  + a(href="https://github.com/contentful/content-models/blob/master/the-example-app/README.md " target="_blank" rel="noopener") #{translate("modalSpaceLinkLabel", currentLocale.code)} + | . + p= translate("modalPlatforms", currentLocale.code) + ul + li + img(src='/images/nodejs-icon.svg') + br + a(href="https://the-example-app-nodejs.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.nodejs" rel="noopener" target="_blank") GitHub + li + img(src='/images/dotnet.svg') + br + a(href="https://the-example-app-csharp.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.csharp" rel="noopener" target="_blank") GitHub + li + img(src='/images/ruby.svg') + br + a(href="https://the-example-app-rb.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.rb" rel="noopener" target="_blank") GitHub + li + img(src='/images/php.svg') + br + a(href="https://the-example-app-php.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.php" rel="noopener" target="_blank") GitHub + li + img(src='/images/python.svg') + br + a(href="https://the-example-app-py.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.py" rel="noopener" target="_blank") GitHub + li + img.inactive(src='/images/swift.svg') + br + = translate("comingSoonLabel", currentLocale.code) + li + img.inactive(src='/images/java.svg') + br + = translate("comingSoonLabel", currentLocale.code) + li + img.inactive(src='/images/android-icon.svg') + br + = translate("comingSoonLabel", currentLocale.code) + .modal__cta-wrapper + a.modal__cta.close(href="#")= translate("modalCTALabel", currentLocale.code) + .modal__close-wrapper + a.modal__close-button.close(href="#") + svg + use(xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/icons/icons.svg#cross") script(src='/scripts/index.js') diff --git a/views/settings.pug b/views/settings.pug index 9f713d6..c0783ed 100644 --- a/views/settings.pug +++ b/views/settings.pug @@ -35,11 +35,41 @@ block content svg.status-block__icon.status-block__icon--info use(xlink:href='/icons/icons.svg#info') .status-block__content - .status-block__message #{translate('connectedToSpaceLabel', currentLocale.code)} “#{space.name}” + .status-block__message + if !helpers.isCustomCredentials(settings) + p + em #{translate('usingServerCredentialsLabel', currentLocale.code)} + p + strong #{translate('connectedToSpaceLabel', currentLocale.code)}: + br + span #{space.name} (#{settings.spaceId}) + p + strong #{translate('credentialSourceLabel', currentLocale.code)}: + br + span #{translate('loadedFromLocalFileLabel', currentLocale.code)} + a(href="https://github.com/contentful/the-example-app.nodejs/blob/master/variables.env" target="_blank" rel="noopener") variable.env + p + em #{translate('overrideConfigLabel', currentLocale.code)} + else + p + em #{translate('usingSessionCredentialsLabel', currentLocale.code)} + p + strong #{translate('connectedToSpaceLabel', currentLocale.code)}: + br + span #{space.name} (#{settings.spaceId}) - form(action=`/settings` method="POST" class="form") + form(action='/settings?reset=true' method='POST') + p + strong #{translate('applicationCredentialsLabel', currentLocale.code)}: + br + button(type="submit") #{translate('resetCredentialsLabel', currentLocale.code)} + br + a(href=`${baseUrl}/?space_id=${settings.spaceId}&preview_token=${settings.previewToken}&delivery_token=${settings.deliveryToken}&api=${currentApi.id}${settings.editorialFeatures ? '&enable_editorial_features' : ''}` class="status-block__sharelink") #{translate('copyLinkLabel', currentLocale.code)} + p + em #{translate('overrideConfigLabel', currentLocale.code)} + + form(action=`/settings${queryString}` method="POST" class="form") .form-item - input(type="hidden" name="qs" value=queryString) label(for="input-space-id") #{translate('spaceIdLabel', currentLocale.code)} input(type="text" name="spaceId" id="input-space-id" value=settings.spaceId) if 'spaceId' in errors