From 15d71bcf516e1340e0c1eaa8b72f2d286e90358b Mon Sep 17 00:00:00 2001 From: the1mason Date: Mon, 22 Jan 2024 17:00:20 -0800 Subject: [PATCH] Ahh shit... Here we go again --- .../{modular-web-app.md => modular-app-1.md} | 48 +- content/posts/modular-web-app-advanced.md | 71 + public/404.html | 175 +++ public/bigcrab.png | Bin 0 -> 2454 bytes public/bundle.min.js | 45 + public/categories/index.html | 176 +++ public/categories/index.xml | 10 + public/crab.png | Bin 0 -> 3055 bytes public/crabHdFixed512signal.png | Bin 0 -> 33845 bytes public/crabr.png | Bin 0 -> 23379 bytes public/css/red-local.css | 1191 +++++++++++++++++ public/fonts/FiraCode-Bold.woff | Bin 0 -> 97028 bytes public/fonts/FiraCode-Regular.woff | Bin 0 -> 97744 bytes public/img/theme-colors/blue.png | Bin 0 -> 189 bytes public/img/theme-colors/green.png | Bin 0 -> 190 bytes public/img/theme-colors/orange.png | Bin 0 -> 190 bytes public/img/theme-colors/pink.png | Bin 0 -> 190 bytes public/img/theme-colors/red.png | Bin 0 -> 189 bytes public/index.html | 256 ++++ public/index.xml | 123 ++ public/js/repo-card.js | 80 ++ public/page/1/index.html | 10 + public/posts/index.html | 228 ++++ public/posts/index.xml | 123 ++ public/posts/modular-app-1/index.html | 314 +++++ public/posts/modular-app/createdwith.jpeg | Bin 0 -> 29823 bytes public/posts/modular-app/mvc.png | Bin 0 -> 16393 bytes public/posts/modular-app/stack.svg | 29 + public/posts/modular-app/title.svg | 38 + public/posts/page/1/index.html | 10 + public/semitcrab.png | Bin 0 -> 12775 bytes public/sitemap.xml | 28 + public/styles.css | 3 + public/styles.css.map | 45 + public/tags/dotnet/index.html | 228 ++++ public/tags/dotnet/index.xml | 123 ++ public/tags/dotnet/page/1/index.html | 10 + public/tags/index.html | 200 +++ public/tags/index.xml | 41 + public/tags/prototype/index.html | 228 ++++ public/tags/prototype/index.xml | 123 ++ public/tags/prototype/page/1/index.html | 10 + public/tags/web/index.html | 228 ++++ public/tags/web/index.xml | 123 ++ public/tags/web/page/1/index.html | 10 + ...s_3b33337114e481782feeb60752452e17.content | 3 + ...scss_3b33337114e481782feeb60752452e17.json | 1 + ...s_f120a3f402b106f64b18d498afd3d82e.content | 1191 +++++++++++++++++ ...scss_f120a3f402b106f64b18d498afd3d82e.json | 1 + 49 files changed, 5513 insertions(+), 10 deletions(-) rename content/posts/{modular-web-app.md => modular-app-1.md} (67%) create mode 100644 content/posts/modular-web-app-advanced.md create mode 100644 public/404.html create mode 100644 public/bigcrab.png create mode 100644 public/bundle.min.js create mode 100644 public/categories/index.html create mode 100644 public/categories/index.xml create mode 100644 public/crab.png create mode 100644 public/crabHdFixed512signal.png create mode 100644 public/crabr.png create mode 100644 public/css/red-local.css create mode 100644 public/fonts/FiraCode-Bold.woff create mode 100644 public/fonts/FiraCode-Regular.woff create mode 100644 public/img/theme-colors/blue.png create mode 100644 public/img/theme-colors/green.png create mode 100644 public/img/theme-colors/orange.png create mode 100644 public/img/theme-colors/pink.png create mode 100644 public/img/theme-colors/red.png create mode 100644 public/index.html create mode 100644 public/index.xml create mode 100644 public/js/repo-card.js create mode 100644 public/page/1/index.html create mode 100644 public/posts/index.html create mode 100644 public/posts/index.xml create mode 100644 public/posts/modular-app-1/index.html create mode 100644 public/posts/modular-app/createdwith.jpeg create mode 100644 public/posts/modular-app/mvc.png create mode 100644 public/posts/modular-app/stack.svg create mode 100644 public/posts/modular-app/title.svg create mode 100644 public/posts/page/1/index.html create mode 100644 public/semitcrab.png create mode 100644 public/sitemap.xml create mode 100644 public/styles.css create mode 100644 public/styles.css.map create mode 100644 public/tags/dotnet/index.html create mode 100644 public/tags/dotnet/index.xml create mode 100644 public/tags/dotnet/page/1/index.html create mode 100644 public/tags/index.html create mode 100644 public/tags/index.xml create mode 100644 public/tags/prototype/index.html create mode 100644 public/tags/prototype/index.xml create mode 100644 public/tags/prototype/page/1/index.html create mode 100644 public/tags/web/index.html create mode 100644 public/tags/web/index.xml create mode 100644 public/tags/web/page/1/index.html create mode 100644 resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.content create mode 100644 resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.json create mode 100644 resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.content create mode 100644 resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.json diff --git a/content/posts/modular-web-app.md b/content/posts/modular-app-1.md similarity index 67% rename from content/posts/modular-web-app.md rename to content/posts/modular-app-1.md index 4ef6962..7726ba2 100644 --- a/content/posts/modular-web-app.md +++ b/content/posts/modular-app-1.md @@ -1,5 +1,5 @@ +++ -title = "Plugin-Based Web Application in Dotnet" +title = "#1 Plugin-Based Web App in Dotnet - The Idea" date = "2024-01-20T00:00:00+00:00" author = "the1mason" authorTwitter = "the0mason" #do not include @ @@ -13,22 +13,39 @@ hideComments = false draft = false +++ -### Table of Contents + +
-- [Introduction](#introduction) +# Chapters + +Writing those takes time. Expect to see one published per one-two weeks. + +1. Idea, Stack + +2. ~~Loading plugins~~ + +3. ~~PluginBase, IPlugin~~ + +4. ~~Creating plugin, DependencyInjection~~ + +5. ~~Controllers, Views~~ + +6. ~~Hooks and Triggers - better event system~~ + +7. ~~Advanced: Unit tests, unloading plugins~~ # Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. -This article is an overview of my plugin-based web application prototype and mechanisms behind it's features as well as my thought process and decision making during development. This article is, essentially, a step by step guide to making your own plugin-based web app prototype. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it's features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype. -*This article assumes some knowledge of programming and design patterns.* +*I assume some that readers have some knowledge of C# and design patterns* # Problem -Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. +Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn't of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules. -# Choose your stack! +# Choosing my stack ![C#, MVC, HTMX](/posts/modular-app/stack.svg) @@ -40,9 +57,9 @@ I'm a dotnet developer and I write C# code for living. This project is as much o I haven't seen such plugin-based sites written in C#. There are some projects, using plugin based architecture... Well, there's even a [Microsoft Learn Article](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) about building such an app! -**Q:** Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post? +> **Q:** Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post? -**A:** You see... there's a problem: Neither `learn.microsoft.com` nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it's the right place. Also just loading libraries isn't enough because app also has to provide some ways for plugins to interact with it, which is also covered here! +> **A:** You see... there's a problem: Neither `learn.microsoft.com` nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it's the right place. Also just loading libraries isn't enough because app also has to provide some ways for plugins to interact with it, which is also covered here! --- @@ -58,6 +75,17 @@ ASP.NET MVC is a web framework, that incorporates the MVC design pattern and use HTMX uses [Hypermedia as the Engine of Application State (HATEOAS)](https://htmx.org/essays/hateoas/) - it's a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won't show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won't give the link to withdraw money, making this action impossible in the first place. +HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies. + +> Have you heard about Blazor WASM? You can just write client code in C#! + +Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won't be able to extend the client. Also it's initial load time is stupidly slow. + +--- + +The next article will cover the following topocs: Loading plugins in runtime, creating plugin's instances, app-plugin communication. I'll have the link here when I'm done writing it! + + \ No newline at end of file diff --git a/content/posts/modular-web-app-advanced.md b/content/posts/modular-web-app-advanced.md new file mode 100644 index 0000000..de6b364 --- /dev/null +++ b/content/posts/modular-web-app-advanced.md @@ -0,0 +1,71 @@ ++++ +title = "Plugin-Based Web Application in Dotnet" +date = "2024-01-20T00:00:00+00:00" +author = "the1mason" +authorTwitter = "the0mason" #do not include @ +cover = "posts/modular-app/title.svg" +tags = ["dotnet", "web", "prototype"] +keywords = ["prototype", "dotnet", "guide", "plugins", "plugin-based", "web application", "ASP.NET", "C#", ".NET 8", "Programming", "Software Architecture"] +description = "Have you ever thought about making a web application, that could be easily extended by third-party developers? I've been thinking about making this app for a while, so here's my experience..." +showFullContent = false +readingTime = true +hideComments = false +draft = true ++++ + +### Table of Contents + +- [Introduction](#introduction) +- [Why](#why) +- [How](#how) +- [The Prototype](#the-prototype) +- - [IPlugin](#iplugin) +- - [Loading Plugins](#loading-plugins) +- - [Hooks and Triggers](#hooks-and-triggers) +- [Sources](#sources) + + +# Introduction + +This post is about my experience of making a prototype of a web app with plugin support as well as my reasoning. As a result, this app could be extended by adding compiled `.dll` class libraries into a plugins folder. I've made it possible to load not only classes but also views and API controllers. You can check out the final version of this prototype in this [GitHub Repo](//github.com/the1mason/prototype.modularmvc). +Also right now I'm building a web application, using similar concepts. As of now, it's not on github, but you can find it [here](//git.the1mason.com/the1mason/octocore). + + +
+ +# Why + +Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions. + +# Stack + +![C#, MVC, HTMX](/posts/modular-app/stack.svg) + +Making a C# web application was my goal from the begginning. That's my backend language for this project, but why MVC and what is HTMX? +Let's have a quick look at worthy alternatives, and then I'll explain my choices. + +`Blazor WASM` does not support runtime assembly loading, which makes client extension impossible. It has [Lazy loading](https://learn.microsoft.com/en-us/aspnet/core/blazor/webassembly-lazy-load-assemblies?view=aspnetcore-8.0), but it still requires these assemblies to be defined in the project file, which is not viable for our case. + +`WebApi + ` is also not an option. It would require plugins to be written in two languages. Also, the client would have to be rebuilt after each plugin installation. + +So, what are MVC and HTMX? + +`ASP.NET MVC` is an older framework that uses `Razor Pages` to render HTML on a server and return it to the client. But it has a significant problem: Lack of reactivity. Each user's action would have to be processed on the server like in the good old days... +So in order for the app to be usable, I have decided to go with `HTMX`: + +> htmx gives you access to AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext. +> *— from [htmx.org](htmx.org)* + +
+ +
+
+ +This means, that I will use razor pages to generate an HTML body with HTMX tags, and return it to the client. The client would then read HTML, executing HTMX tags. Ain't that awesome? + +# How + +[This](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) article gives the base for plugin loading. It doesn't cover the ASP.NET part but otherwise is very helpful. +Still, I will explain basic concepts here. Just to have everything in one place. + + diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..6869e4e --- /dev/null +++ b/public/404.html @@ -0,0 +1,175 @@ + + + + + 404 Page not found :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ +
+

404 — Page not found...

+ +
+ Back to home page → +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/bigcrab.png b/public/bigcrab.png new file mode 100644 index 0000000000000000000000000000000000000000..c946f1c7019a0aae00287f05c84c761eb7c61e36 GIT binary patch literal 2454 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Hfk$L91B2-m5N3=^eaZn8 z^YC9X4U+gzNvz=iy1-#(RlyM@i5={ln2tU^vqAO1 zhQxP0JHF3hyLb5A{QvrCJV1j<2RE|j#Wj4-we2gdYWJQUKWFmyw7*gndh>0k|FPdc zCys&PhCc&?!vqF~1_ee221lS@nphYZSU4FNID{A&1XLIp6g;S+;DXIwhUpvSj$7?z z{(tvR(cbi;zprN2^gsLj)oyZW9@VTN=o6qj98Olry#B(M|L)rtrs?MPmg?`%R_!>n z`P<&3W}dN~{NVoV{jvXxcgh{RW%MHT zv-n-^mb+7(yKX5yeU;6%3{o87PGwsUnPo-mA!5wA3 zT)d$?A$N|c`MFzX-*eatno~7x!tKG9{4?goJ(%*<;@V4Dy;tDa`ER_%?%m(_&z{$A zzIMEJbJ^}^_Y3Rn3i#yA<~C2)4L&B3eCGK(^Or32b>o5*+rF*2H_mSJy#D_7OV$Sq z?tkx{b$*|x^-e~b=WUemd-jsmFS0*5SH5a+XSIO29&?QJtoi-%voFy-gl{ZylC=01Cwd(NhJz(Vh^>)p9=4EsJ;RWbg!So5lm z{Vr8XRg{n?Sa1WQX5aRA$AKkE-svgH&#v44fBS30%m2StUw{var t=document.querySelector(".container"),e=document.querySelectorAll(".menu");document.body.addEventListener("click",()=>{e.forEach(e=>{e.classList.contains("open")&&e.classList.remove("open")})}),window.addEventListener("resize",()=>{e.forEach(e=>{e.classList.remove("open")})}),e.forEach(n=>{const o=n.querySelector(".menu__trigger"),s=n.querySelector(".menu__dropdown");o.addEventListener("click",o=>{o.stopPropagation(),n.classList.contains("open")?n.classList.remove("open"):(e.forEach(e=>e.classList.remove("open")),n.classList.add("open")),s.getBoundingClientRect().right>t.getBoundingClientRect().right&&(s.style.left="auto",s.style.right=0)}),s.addEventListener("click",e=>e.stopPropagation())})})(),(()=>{var e=Object.getOwnPropertyNames,t=(t,n)=>function(){return n||(0,t[e(t)[0]])((n={exports:{}}).exports,n),n.exports},n=t({""(e,t){var s="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},n=function(e){var s,c,o=/\blang(?:uage)?-([\w-]+)\b/i,d=0,i={},t={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof n?new n(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);f+=u.value.length,u=u.next){if(b=u.value,o.length>s.length)return;if(!(b instanceof n)){if(O=1,z){if(!(g=l(N,f,s,S)))break;var E=g.index,L=g.index+g[0].length,p=f;for(p+=u.value.length;p<=E;)u=u.next,p+=u.value.length;if(p-=u.value.length,f=p,u.value instanceof n)continue;for(j=u;j!==o.tail&&(pd.reach&&(d.reach=k),w=u.prev,A&&(w=a(o,w,A),f+=A.length),h(o,w,O),D=new n(_,M?t.tokenize(C,M):C,R,C),(u=a(o,w,D),T&&a(o,u,T),1d.reach&&(d.reach=x.reach))}}}}(e,o,s,o.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(o)},hooks:{all:{},add:function(e,n){var s=t.hooks.all;s[e]=s[e]||[],s[e].push(n)},run:function(e,n){var o,i,s=t.hooks.all[e];if(s&&s.length)for(i=0;o=s[i++];)o(n)}},Token:n};function n(e,t,n,s){this.type=e,this.content=t,this.alias=n,this.length=0|(s||"").length}function l(e,t,n,s){e.lastIndex=t;var i,o=e.exec(n);return o&&s&&o[1]&&(i=o[1].length,o.index+=i,o[0]=o[0].slice(i)),o}function u(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function a(e,t,n){var o=t.next,s={value:n,prev:t,next:o};return t.next=s,o.prev=s,e.length++,s}function h(e,t,n){for(var s=t.next,o=0;o"+o.content+""},!e.document)return e.addEventListener&&(t.disableWorkerMessageHandler||e.addEventListener("message",function(n){var s=JSON.parse(n.data),o=s.language,i=s.code,a=s.immediateClose;e.postMessage(t.highlight(i,t.languages[o],o)),a&&e.close()},!1)),t;s=t.util.currentScript();function r(){t.manual||t.highlightAll()}return(s&&(t.filename=s.src,s.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual)&&(c=document.readyState,"loading"===c||"interactive"===c&&s&&s.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),t}(s);"undefined"!=typeof t&&t.exports&&(t.exports=n),"undefined"!=typeof global&&(global.Prism=n),n.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>/]+/,inside:{namespace:/^[^\s>/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var o,i,s={};s["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[t]},s.cdata=/^$/i,o={"included-cdata":{pattern://i,inside:s}},o["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]},i={},i[e]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:o},n.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(e,t){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:n.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,!function(e){var n,t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+`|(?:[^\\\\ +()"']|\\\\[^])*)\\)`,"i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,n=e.languages.markup,n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),n.languages.js=n.languages.javascript,n.languages.actionscript=n.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),n.languages.actionscript["class-name"].alias="function",n.languages.markup&&n.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:n.languages.markup}}),n.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|Type|UserFile|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferSize|BufferedLogs|CGIDScriptTimeout|CGIMapExtension|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DTracePrivileges|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtFilterDefine|ExtFilterOptions|ExtendedStatus|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|KeepAlive|KeepAliveTimeout|KeptBodySize|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|LanguagePriority|Limit(?:InternalRecursion|Request(?:Body|FieldSize|Fields|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|MMapFile|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|ModMimeUsePathInfo|ModemStandard|MultiviewsMatch|Mutex|NWSSLTrustedCerts|NWSSLUpgradeable|NameVirtualHost|NoProxy|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|RLimitCPU|RLimitMEM|RLimitNPROC|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|SSIETag|SSIEndTag|SSIErrorMsg|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|SRPUnknownUserSeed|SRPVerifierFile|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UseStapling|UserName|VerifyClient|VerifyDepth)|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadStackSize|ThreadsPerChild|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/},n.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/},!function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},t={bash:o,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!/]|##?|%%?|\^\^?|,,?/,punctuation:/[[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:t.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:t.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=e.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=t.variable[1].inside,s=0;s>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),n.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},n.languages.c.string],comment:n.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:n.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete n.languages.c.boolean,!function(e){function n(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function t(e,t,s){return RegExp(n(e,t),s||"")}function r(e,t){for(var n=0;n>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var S="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",c="class enum interface record struct",_="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",f="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var v=l(c),d=RegExp(l(S+" "+c+" "+_+" "+f)),z=l(c+" "+_+" "+f),T=l(S+" "+c+" "+f),u=r("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),h=r("\\((?:[^()]|<>)*\\)",2),o="@?\\b[A-Za-z_]\\w*\\b",m=n("<<0>>(?:\\s*<<1>>)?",[o,u]),i=n("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[z,m]),p="\\[\\s*(?:,\\s*)*\\]",D=n("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[i,p]),a=n("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[n("\\(<<0>>+(?:,<<0>>+)+\\)",[n("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[u,h,p])]),i,p]),s={keyword:d,punctuation:/[<>()?,.:[\]]/},w=`'(?:[^ +'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'`,O=`"(?:\\\\.|[^\\\\" +])*"`;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[O]),lookbehind:!0,greedy:!0},{pattern:RegExp(w),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[i]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[o,a]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[o]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[v,m]),lookbehind:!0,inside:s},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[i]),lookbehind:!0,inside:s},{pattern:t("(\\bwhere\\s+)<<0>>",[o]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[D]),lookbehind:!0,inside:s},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[a,T,o]),inside:s}],keyword:d,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[o]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[o]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[h]),lookbehind:!0,alias:"class-name",inside:s},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[a,i]),inside:s,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[a]),lookbehind:!0,inside:s,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[o,u]),inside:{function:t("^<<0>>",[o]),generic:{pattern:RegExp(u),alias:"class-name",inside:s}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[v,m,o,a,d.source,h,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[m,h]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:d,"class-name":{pattern:RegExp(a),greedy:!0,inside:s},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var x=O+"|"+w,C=n(`/(?![*/])|//[^ +]*[ +]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>`,[x]),b=r(n(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),k="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",F=n("<<0>>(?:\\s*\\(<<1>>*\\))?",[i,b]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[k,F]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[k]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[b]),inside:e.languages.csharp},"class-name":{pattern:RegExp(i),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var g=`:[^} +]+`,M=r(n(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),A=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[M,g]),E=r(n(`[^"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)`,[x]),2),y=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[E,g]);function j(n,s){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[n]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[s,g]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:j(A,M)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[y]),lookbehind:!0,greedy:!0,inside:j(y,E)}]})}(n),n.languages.dotnet=n.languages.cs=n.languages.csharp,!function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n="\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b".replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp("(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+".replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(`(\\b(?:module|import)\\s+)(?:"(?:\\\\(?: +|[^])|[^"\\\\ +])*"|<[^<> +]*>|`+"(?:\\s*:\\s*)?|:\\s*".replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b[a-z_]\w*\s*<(?:[^<>]|<(?:[^<>])*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(n),n.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:ON|OFF|TRUE|FALSE)\b/,namespace:/\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\b/,operator:/\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/},!function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:t}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(n),n.languages.csp={directive:{pattern:/(^|[^-\da-z])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[^-\da-z]|$)/i,lookbehind:!0,alias:"keyword"},safe:{pattern:/'(?:deny|none|report-sample|self|strict-dynamic|top-only|(?:nonce|sha(?:256|384|512))-[-+/\w=]+)'/i,alias:"selector"},unsafe:{pattern:/(?:'unsafe-(?:allow-redirects|dynamic|eval|hash-attributes|hashed-attributes|hashes|inline)'|\*)/i,alias:"function"}},!function(e){t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp(`\\[(?:[^[\\]"']|`+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=n,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var t,n,s={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:s,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:s,number:o})}(n),!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var o=t[n],s=[];/^\w+$/.test(n)||s.push(/\w+/.exec(n)[0]),"diff"===n&&s.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+o+`].*(?: +?| +|(?![\\s\\S])))+`,"m"),alias:s,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(n),!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,s,o,i){if(n.language===s){var a=n.tokenStack=[];n.code=n.code.replace(o,function(e){if("function"==typeof i&&!i(e))return e;for(var r,o=a.length;-1!==n.code.indexOf(r=t(s,o));)++o;return a[o]=e,r}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,s){if(n.language===s&&n.tokenStack){n.grammar=e.languages[s];var o=0,i=Object.keys(n.tokenStack);!function a(r){for(d=0;d=i.length);d++)if(c=r[d],"string"==typeof c||c.content&&"string"==typeof c.content){{var c,d,m=i[o],f=n.tokenStack[m],u="string"==typeof c?c:c.content,p=t(s,m),h=u.indexOf(p);if(-1]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Tt]rue|[Ff]alse|[Nn]one/,variable:/\b\w+?\b/,punctuation:/[{}[\](),.:;]/};var n=/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g,t=e.languages["markup-templating"];e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"django",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"django")}),e.languages.jinja2=e.languages.django,e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"jinja2",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"jinja2")})}(n),!function(e){var i="(?:[ ]+(?![ ])(?:)?|)".replace(//g,function(){return`\\\\[ +](?:\\s|\\\\[ +]|#.*(?!.))*(?![\\s#]|\\\\[ +])`}),n=`"(?:[^"\\\\ +]|\\\\(?: +|[^]))*"|'(?:[^'\\\\ +]|\\\\(?: +|[^]))*'`,a=`--[\\w-]+=(?:|(?!["'])(?:[^\\s\\\\]|\\\\.)+)`.replace(//g,function(){return n}),s={pattern:RegExp(n),greedy:!0},o={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function t(e,t){return e=e.replace(//g,function(){return a}).replace(//g,function(){return i}),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:t("(^(?:ONBUILD)?\\w+)(?:)*","i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[s,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:t("(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b","i"),lookbehind:!0,greedy:!0},{pattern:t("(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \\\\]+)AS","i"),lookbehind:!0,greedy:!0},{pattern:t("(^ONBUILD)\\w+","i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:o,string:s,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:o},e.languages.dockerfile=e.languages.docker}(n),n.languages.elixir={doc:{pattern:/@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/,inside:{attribute:/^@\w+/,string:/['"][\s\S]+/}},comment:{pattern:/#.*/m,greedy:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},module:{pattern:/\b[A-Z]\w*\b/,alias:"class-name"},"attr-name":/\b\w+\??:(?!:)/,argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},function:/\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/,number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%[\]{}()]/},n.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:n.languages.elixir}}}}),n.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/},n.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\b\d+#[a-z0-9]+/i,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=/<>:]=|=[:/]=|\+\+?|--?|[=*/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/},n.languages.fsharp=n.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?|'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),n.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),n.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),n.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:n.languages.fsharp}}}}),!function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(n),n.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},n.languages.go=n.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete n.languages.go["class-name"],n.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:n.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/[A-Z]\w*Input(?=!?.*$)/m,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}[\]:=,]/,property:/\w+/},n.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var o,i,a,r,c,l,d,n=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),t=0;t\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:t}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:t}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(n),!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ].+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ].*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ].+)/,lookbehind:!0,inside:e.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ].*\|[\t ]*)*/,lookbehind:!0,inside:e.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^{}])+\}|\[[^\]]+\])*[/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^{}])+\}/,lookbehind:!0,inside:e.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:e.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:e.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t,s=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],o={},n=0,i=s.length;n@[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,/;<=>@[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}),e.languages.hbs=e.languages.handlebars}(n),n.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\/][-!#$%*+=?&@|~.:<>^\\/]*|\.[-!#$%*+=?&@|~.:<>^\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},n.languages.hs=n.languages.haskell,!function(e){e.languages.http={"request-line":{pattern:/^(?:GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH|PRI|SEARCH)\s(?:https?:\/\/|\/)\S*\sHTTP\/[0-9.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[0-9.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[0-9.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[0-9.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var n,s,i,a,r,t=e.languages,o={"application/javascript":t.javascript,"application/json":t.json||t.javascript,"application/xml":t.xml,"text/xml":t.xml,"text/html":t.html,"text/css":t.css},c={"application/json":!0,"application/xml":!0};for(n in o)o[n]&&(s=s||{},r=c[n]?(void 0,a=(i=n).replace(/^[a-z]+\//,""),"(?:"+i+"|\\w+/(?:[\\w.-]+\\+)+"+a+"(?![+\\w.-]))"):n,s[n.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+r+`(?:(?:\\r\\n?|\\n).+)*)(?:\\r?\\n|\\r){2}[\\s\\S]*`,"i"),lookbehind:!0,inside:o[n]});s&&e.languages.insertBefore("http","header-name",s)}(n),!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,s="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",n={pattern:RegExp(s+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{"class-name":[n,{pattern:RegExp(s+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:n.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":n,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(n),n.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},n.languages.webmanifest=n.languages.json,!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}});var t=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:t},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(n),!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/},e.languages.tex=e.languages.latex,e.languages.context=e.languages.latex}(n),n.languages.less=n.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*/]/}),n.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),n.languages.llvm={comment:/;.*/,string:{pattern:/"[^"]*"/,greedy:!0},boolean:/\b(?:true|false)\b/,variable:/[%@!#](?:(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+|\d+)/i,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,type:{pattern:/\b(?:double|float|fp128|half|i[1-9]\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\b/,alias:"class-name"},keyword:/\b[a-z_][a-z_0-9]*\b/,number:/[+-]?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-Fa-f]+\b|\b0xK[\dA-Fa-f]{20}\b|\b0x[ML][\dA-Fa-f]{32}\b|\b0xH[\dA-Fa-f]{4}\b/,punctuation:/[{}[\];(),.!*=<>]/},n.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},!function(e){function n(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\ + ]|(?: +| +?)(?![ +]))`}),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+e+")")}var s="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",t=`\\|?__(?:\\|__)+\\|?(?:(?: +| +?)|(?![^]))`.replace(/__/g,function(){return s}),o=`\\|?[ ]*:?-{3,}:?[ ]*(?:\\|[ ]*:?-{3,}:?[ ]*)+\\|?(?: +| +?)`;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+o+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+o+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(s),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(s),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[[\]!:]|[<>]/},alias:"url"},bold:{pattern:n("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[ ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ ]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||!function e(t){if(t&&"string"!=typeof t)for(var n,s,o,i,r,a=0,c=t.length;a",quot:'"'},r=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(n),n.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx](?:\.[\da-f]+|[\da-f]+(?:\.[\da-f]+)?)(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|(?:\d+(?:\.\d+)?|\.\d+)(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[[\]*+\-/%<>=&|$!]/},n.languages.objectivec=n.languages.extend("c",{string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*/@]/}),delete n.languages.objectivec["class-name"],n.languages.objc=n.languages.objectivec,n.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*/$%!?~][!$%&*+\-./:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}[\]|.,:;]|\b_\b/},n.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{([<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub \w+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/},!function(e){var t,n,s=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,o=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,a=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,r=/[{}[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:s,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:a,punctuation:r},t={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},n=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:t}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:t}}],e.languages.insertBefore("php","variable",{string:n,attribute:{pattern:/#\[(?:[^"'/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:s,string:n,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,number:i,operator:a,punctuation:r}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",function(t){/<\?/.test(t.code)&&e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")})}(n),n.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}}),!function(){var t=n.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^[\]])*\]|[^[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},s=t.string[0].inside;s.boolean=t.boolean,s.variable=t.variable,s.function.inside=t}(),n.languages.processing=n.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*/]=?/}),n.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|[A-Z]\w*)\b/,alias:"variable"}}),n.languages.processing.function=/\b\w+(?=\s*\()/,n.languages.processing["class-name"].alias="variable",!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w-]+/,"attr-class":/\.[\w-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t,s=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","less","livescript","markdown",{filter:"sass",language:"scss"},"stylus"],o={},n=0,i=s.length;n(?:(?:\r?\n|\r(?!\n))(?:\\2[ ].+|\\s*?(?=\r?\n|\r)))+".replace("",function(){return t.filter}),"m"),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[t.language]}});e.languages.insertBefore("pug","filter",o)}(n),n.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},n.languages.python["string-interpolation"].inside.interpolation.inside.rest=n.languages.python,n.languages.py=n.languages.python,n.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*/^$@~]/,punctuation:/[(){}[\],;]/},!function(e){var t,o,i=e.util.clone(e.languages.javascript),s="(?:\\{*\\.{3}(?:[^{}]|)*\\})";function n(e,t){return e=e.replace(//g,function(){return"(?:\\s|//.*(?!.)|/\\*(?:[^*]|\\*(?!/))\\*/)"}).replace(//g,function(){return"(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})"}).replace(//g,function(){return s}),RegExp(e,t)}s=n(s).source,e.languages.jsx=e.languages.extend("markup",i),e.languages.jsx.tag.pattern=n(`+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[^]|[^\\\\"])*"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'"/>=]+|))?|))**/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=i.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:n(""),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:n("="),inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag),t=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(t).join(""):""},o=function(n){for(var s,r,c,i=[],a=0;a"===s.content[s.content.length-1].content||i.push({tagName:t(s.content[0].content[1]),openedBraces:0}):0]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[{*]|$))/),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(n),!function(e){var t,n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),t=e.languages.tsx.tag,t.pattern=RegExp("(^|[^\\w$]|(?=|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),n.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete n.languages.reason.function,!function(e){for(var t="/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|)*\\*/",n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return"[^\\s\\S]"}),e.languages.rust={comment:[{pattern:RegExp("(^|[^\\\\])"+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0,alias:"string"},attribute:{pattern:/#!?\[(?:[^[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|Self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:[ui](?:8|16|32|64|128|size)|f(?:32|64)|bool|char|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64|size)?|f32|f64))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(n),!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(n),n.languages.scss=n.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),n.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),n.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),n.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),n.languages.scss.atrule.inside.rest=n.languages.scss,n.languages.scala=n.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,symbol:/'[^\d\s\\]\w*/}),delete n.languages.scala["class-name"],delete n.languages.scala.function,n.languages.scheme={comment:/;.*|#;\s*(?:\((?:[^()]|\([^()]*\))*\)|\[(?:[^[\]]|\[[^[\]]*\])*\])|#\|(?:[^#|]|#(?!\|)|\|(?!#)|#\|(?:[^#|]|#(?!\|)|\|(?!#))*\|#)*\|#/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()[\]#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+\b|[-a-zA-Z]+\b|[\uD800-\uDBFF][\uDC00-\uDFFF]|\S)/,greedy:!0,alias:"string"},"lambda-parameter":[{pattern:/((?:^|[^'`#])[([]lambda\s+)(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)/,lookbehind:!0},{pattern:/((?:^|[^'`#])[([]lambda\s+[([])[^()[\]']+/,lookbehind:!0}],keyword:{pattern:/((?:^|[^'`#])[([])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|export|except|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\*)?|let\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()[\]\s]|$)/,lookbehind:!0},builtin:{pattern:/((?:^|[^'`#])[([])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\?|boolean=?\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\?|\?|<\?|<=\?|=\?|>\?|>=\?)|close-(?:input-port|output-port|port)|complex\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\??|eq\?|equal\?|eqv\?|error|error-object(?:-irritants|-message|\?)|eval|even\?|exact(?:-integer-sqrt|-integer\?|\?)?|expt|features|file-error\?|floor(?:-quotient|-remainder|\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\??|input-port(?:-open\?|\?)|integer(?:->char|\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\?|newline|not|null\?|number(?:->string|\?)|numerator|odd\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\?|\?)|pair\?|peek-char|peek-u8|port\?|positive\?|procedure\?|quotient|raise|raise-continuable|rational\?|rationalize|read-(?:bytevector|bytevector!|char|error\?|line|string|u8)|real\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?|<\?|<=\?|=\?|>\?|>=\?)?|substring|symbol(?:->string|\?|=\?)|syntax-error|textual-port\?|truncate(?:-quotient|-remainder|\/)?|u8-ready\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\?)(?=[()[\]\s]|$)/,lookbehind:!0},operator:{pattern:/((?:^|[^'`#])[([])(?:[-+*%/]|[<>]=?|=>?)(?=[()\[\]\s]|$)/,lookbehind:!0},number:{pattern:RegExp(function(e){for(var t in e)e[t]=e[t].replace(/<[\w\s]+>/g,function(t){return"(?:"+e[t].trim()+")"});return e[t]}({"":"\\d+(?:/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?","":"[+-]?|[+-](?:inf|nan)\\.0","":"[+-](?:|(?:inf|nan)\\.0)?i","":"(?:@|)?|","":"(?:#d(?:#[ei])?|#[ei](?:#d)?)?","":"[0-9a-f]+(?:/[0-9a-f]+)?","":"[+-]?|[+-](?:inf|nan)\\.0","":"[+-](?:|(?:inf|nan)\\.0)?i","":"(?:@|)?|","":"#[box](?:#[ei])?|(?:#[ei])?#[box]","":"(^|[()\\[\\]\\s])(?:|)(?=[()\\[\\]\\s]|$)"}),"i"),lookbehind:!0},boolean:{pattern:/(^|[()[\]\s])#(?:[ft]|false|true)(?=[()[\]\s]|$)/,lookbehind:!0},function:{pattern:/((?:^|[^'`#])[([])(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)(?=[()[\]\s]|$)/,lookbehind:!0},identifier:{pattern:/(^|[()[\]\s])\|(?:[^\\|]|\\.)*\|(?=[()[\]\s]|$)/,lookbehind:!0,greedy:!0},punctuation:/[()[\]']/},n.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},!function(e){var n={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},s={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},t={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:n,number:s,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:n,boolean:/\b(?:true|false)\b/,operator:[/~|[+!/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:s,punctuation:/[{}()[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:t.interpolation,comment:t.comment,punctuation:/[{},]/}},func:t.func,string:t.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:t.interpolation,punctuation:/[{}()[\];:.]/}}(n),n.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(`(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)| +|[^(])|[^\\\\ +"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ ]*(?:![ ]*)?(?:\\b\\w+\\b(?:[ ]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ ]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:true|false)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:true|false)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},n.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=n.languages.swift}),!function(e){function t(e,t){return RegExp(e.replace(//g,function(){return`(?:\\([^|() +]+\\)|\\[[^\\] +]+\\]|\\{[^} +]+\\})`}).replace(//g,function(){return`(?:\\)|\\((?![^|() +]+\\)))`}),t||"")}var o,a,i={css:{pattern:/\{[^{}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^()]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^[\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\/]\d+|\S/},r=e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:t("^[a-z]\\w*(?:||[<>=])*\\."),inside:{modifier:{pattern:t("(^[a-z]\\w*)(?:||[<>=])+(?=\\.)"),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:t("^[*#]+*\\s+\\S.*","m"),inside:{modifier:{pattern:t("(^[*#]+)+"),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:t("^(?:(?:||[<>=^~])+\\.\\s*)?(?:\\|(?:(?:||[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:||[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|","m"),inside:{modifier:{pattern:t(`(^|\\|(?: ? +| )?)(?:||[<>=^~_]|[\\\\/]\\d+)+(?=\\.)`),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:t("(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])*.+?\\2(?![a-zA-Z\\d])"),lookbehind:!0,inside:{bold:{pattern:t("(^(\\*\\*?)*).+?(?=\\2)"),lookbehind:!0},italic:{pattern:t("(^(__?)*).+?(?=\\2)"),lookbehind:!0},cite:{pattern:t("(^\\?\\?*).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:t("(^@*).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:t("(^\\+*).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:t("(^-*).+?(?=-)"),lookbehind:!0},span:{pattern:t("(^%*).+?(?=%)"),lookbehind:!0},modifier:{pattern:t("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])+"),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(^\])\S+$/,lookbehind:!0},punctuation:/[[\]]/}},link:{pattern:t('"*[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:t('(^"*)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:t('(^")+'),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:t("!(?:||[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:t("(^!(?:||[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:t("(^!)(?:||[<>=])+"),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^()]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}}),s=r.phrase.inside,n={inline:s.inline,link:s.link,image:s.image,footnote:s.footnote,acronym:s.acronym,mark:s.mark};r.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,a=s.inline.inside,a.bold.inside=n,a.italic.inside=n,a.inserted.inside=n,a.deleted.inside=n,a.span.inside=n,o=s.table.inside,o.inline=n.inline,o.link=n.link,o.image=n.image,o.footnote=n.footnote,o.acronym=n.acronym,o.mark=n.mark}(n),!function(e){function t(e){return e.replace(/__/g,function(){return`(?:[\\w-]+|'[^' + ]*'|"(?:\\\\.|[^\\\\" +])*")`})}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(t("(^[ ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])"),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(t("(^[ ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)"),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:true|false)\b/,punctuation:/[.,=[\]{}]/}}(n),n.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.+/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:n.languages.markup}},n.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/},n.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b)(?:[^\r\n_]|_(?:\r\n?|\n)?)*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/\$?["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?)[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Until|Xor)\b/i,operator:[/[+\-*/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},n.languages.vb=n.languages["visual-basic"],n.languages.vba=n.languages["visual-basic"],n.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},!function(e){var n=/[*&][^\s[\]{},]+/,s=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,o="(?:"+s.source+"(?:[ ]+"+n.source+")?|"+n.source+"(?:[ ]+"+s.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ ]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),i=`"(?:[^"\\\\ +]|\\\\.)*"|'(?:[^'\\\\ +]|\\\\.)*'`;function t(e,t){t=(t||"").replace(/m/g,"")+"m";var n=`([:\\-,[{]\\s*(?:\\s<>[ ]+)?)(?:<>)(?=[ ]*(?:$|,|\\]|\\}|(?:[ +]\\s*)?#))`.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ ]+)?[|>])[ ]*(?:((?:\r?\n|\r)[ ]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return o})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{ +?])[ ]*(?:<>[ ]+)?)<>(?=\\s*:\\s)`.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return"(?:"+a+"|"+i+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:t("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ ]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ ]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:t("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:t("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:t(i),lookbehind:!0,greedy:!0},number:{pattern:t("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:s,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(n),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document&&document.querySelector){var s,r="line-numbers",e="linkable-line-numbers",h=function(){if(void 0===s){var e=document.createElement("div");e.style.fontSize="13px",e.style.lineHeight="1.5",e.style.padding="0",e.style.border="0",e.innerHTML=" 
 ",document.body.appendChild(e),s=38===e.offsetHeight,document.body.removeChild(e)}return s},o=!0,c=0;n.hooks.add("before-sanity-check",function(e){var n,s=e.element.parentElement;i(s)&&(n=0,t(".line-highlight",s).forEach(function(e){n+=e.textContent.length,e.parentNode.removeChild(e)}),n&&/^(?: \n)+$/.test(e.code.slice(-n))&&(e.code=e.code.slice(0,-n)))}),n.hooks.add("complete",function e(t){if(s=t.element.parentElement,i(s)){clearTimeout(c);var s,o=n.plugins.lineNumbers,d=t.plugins&&t.plugins.lineNumbers;l(s,r)&&o&&!d?n.hooks.add("line-numbers",e):(a(s)(),c=setTimeout(u,1))}}),window.addEventListener("hashchange",u),window.addEventListener("resize",function(){t("pre").filter(i).map(function(e){return a(e)}).forEach(d)})}function t(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function l(e,t){return e.classList.contains(t)}function d(e){e()}function i(t){return!!t&&!!/pre/i.test(t.nodeName)&&(!!t.hasAttribute("data-line")||!!t.id&&!!n.util.isActive(t,e))}function a(s,i,a){var f,v,b=(i="string"==typeof i?i:s.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),j=+s.getAttribute("data-line-offset")||0,y=(h()?parseInt:parseFloat)(getComputedStyle(s).lineHeight),m=n.util.isActive(s,r),u=s.querySelector("code"),p=m?s:u||s,c=[],g=u&&p!=u?function(e,t){var o=getComputedStyle(e),s=getComputedStyle(t);function n(e){return+e.substr(0,e.length-2)}return t.offsetTop+n(s.borderTopWidth)+n(s.paddingTop)-n(o.paddingTop)}(s,u):0;return b.forEach(function(e){var r,l,u,h,d=e.split("-"),o=+d[0],i=+d[1]||o,t=s.querySelector('.line-highlight[data-range="'+e+'"]')||document.createElement("div");c.push(function(){t.setAttribute("aria-hidden","true"),t.setAttribute("data-range",e),t.className=(a||"")+" line-highlight"}),m&&n.plugins.lineNumbers?(r=n.plugins.lineNumbers.getLine(s,o),l=n.plugins.lineNumbers.getLine(s,i),r&&(u=r.offsetTop+g+"px",c.push(function(){t.style.top=u})),l&&(h=l.offsetTop-r.offsetTop+l.offsetHeight+"px",c.push(function(){t.style.height=h}))):c.push(function(){t.setAttribute("data-start",String(o)),o span",s).forEach(function(e,t){var n=t+v;e.onclick=function(){var e=f+"."+n;o=!1,location.hash=e,setTimeout(function(){o=!0},1)}})),function(){c.forEach(d)}}function u(){if(e=location.hash.slice(1),t(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)}),s=(e.match(/\.([\d,-]+)$/)||[,""])[1],s&&!document.getElementById(e)){var e,s,i=e.slice(0,e.lastIndexOf(".")),n=document.getElementById(i);n&&(n.hasAttribute("data-line")||n.setAttribute("data-line",""),a(n,s,"temporary ")(),o&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}(),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){var e="line-numbers",s=/\n(?!$)/g,i=n.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)&&(s=t.querySelector(".line-numbers-rows"),s)){var s,a,o=parseInt(t.getAttribute("data-start"),10)||1,i=o+(s.children.length-1);return n");(r=document.createElement("span")).setAttribute("aria-hidden","true"),r.className="line-numbers-rows",r.innerHTML=d,i.hasAttribute("data-start")&&(i.style.counterReset="linenumber "+(parseInt(i.getAttribute("data-start"),10)-1)),o.element.appendChild(r),t([i]),n.hooks.run("line-numbers",o)}}}),n.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function t(e){if(0!=(e=e.filter(function(e){var t=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===t||"pre-line"===t})).length){var t=e.map(function(e){var t,o,i,n=e.querySelector("code"),a=e.querySelector(".line-numbers-rows");if(n&&a)return t=e.querySelector(".line-numbers-sizer"),o=n.textContent.split(s),t||((t=document.createElement("span")).className="line-numbers-sizer",n.appendChild(t)),t.innerHTML="0",t.style.display="block",i=t.getBoundingClientRect().height,t.innerHTML="",{element:e,lines:o,lineHeights:[],oneLinerHeight:i,sizer:t}}).filter(Boolean);t.forEach(function(e){var s=e.sizer,t=e.lines,n=e.lineHeights,o=e.oneLinerHeight;n[t.length-1]=void 0,t.forEach(function(e,t){if(e&&1o.length&&(s=o.length),s--;for(t=--n;t<=s;t++)u[t]=o[t],o[t]=""}});else if(d)for(a=0;a',h):d=o('',h),a=document.createElement("span"),a.className=s,a.innerHTML=d;for(var f=i.outputLines||[],c=0,p=f.length;c + + + + Categories :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ +
+

Categories

+
    + + +
+
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..c6693be --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,10 @@ + + + + Categories on the1mason + the1mason.com/categories/ + Recent content in Categories on the1mason + Hugo -- gohugo.io + en + + diff --git a/public/crab.png b/public/crab.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfe065449f185e80e01b7a7da40f842b4bbdd0e GIT binary patch literal 3055 zcmd5;ZA=?w9DmBo#!DF6%xty+MQ3P?3B_b+HbyHG1H^QgX(Yld8^#fwZRzR;1Fj{I zY)&F5nL&B$6ttOG5ewJet}h~Bg9Ykdgk>$X%}TqaT-&vj8$DXQ;`F26&g{eGxm@nU z@A=3_$Mf=tJYZznlO- z^4BGW1#i{&Vs}P9If3uJWZ#@be>Faxb+XFH{r+Hf(=HvYOmu3p^Vywv%pT9p!JNUm zy%%jquQkP9PuSj+*!dl5o_Z}O8)PoiD;NN1 zBqW}eH~``j0Z7;lz|Q9Y$SelnmCpcZ&ZGfQ@TC55|3i0d=Z=?^L>FC20QqUZw(%S9 ziAw6=_wk`$wC9Mk0>WPzt0THR_gVnzfTn?EegK~4IH@s!GZb@5?? z)DrqQFV8Z=x9WP$Y-x^4J6|r{m{^Hi!C|&-&ygh|RA3qyQn1vhtAbHmWIEy!?xt9- z7ZA;tX7&uXV<{igj$;O5Tof6an6<1ql#zv}B)p7wXZaji54%Pl>P_`i$I&0r&F#GuRTur z<)b6-yulq7xes{0Egg2kj5%%x;ZP!&P}gtfol(%00nMo_sa(F1*L`q(KXjdu#^F+E z$;0MQbEDgCTVu*n+EWRq8^P$}TW1twY{mvE&3#m7=Mam+YJAhLLa=G;=Xmnw0Sd#4 zwJ#9&=8G(^TcJEvI2_nY>tj&vfN7gyp`2rx4r!^C{#{(q1=7ROmd_@G;Dodk7lz-Z!P^#)3Mj9 zTO{##WkQH1cl6b{U{=NqU-okhU>L zY^Ia4*f&MLd%LD_PqgwbQ$GyjfUjYlOxhE>VE*S8yjpq{8`)RV{)~a#;6cf2#|nQu Hda~s&4_**) literal 0 HcmV?d00001 diff --git a/public/crabHdFixed512signal.png b/public/crabHdFixed512signal.png new file mode 100644 index 0000000000000000000000000000000000000000..f32bbd1df4cc647bcf42ead1c038b2dd64cdeac1 GIT binary patch literal 33845 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 literal 0 HcmV?d00001 diff --git a/public/crabr.png b/public/crabr.png new file mode 100644 index 0000000000000000000000000000000000000000..b1dff46a5d95253fa24c809080839ea0f6501cda GIT binary patch literal 23379 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 li { + flex: 0 0 auto; + margin-bottom: 10px; + white-space: nowrap; } + .navigation-menu__inner > li:not(:last-of-type) { + margin-right: 20px; } + @media (max-width: 684px) { + .navigation-menu__inner { + flex-direction: column; + align-items: flex-start; + padding: 0; } + .navigation-menu__inner li { + margin: 0; + padding: 5px; } } + .navigation-menu .spacer { + flex-grow: 1 !important; } + +.menu { + display: flex; + flex-direction: column; + position: relative; + list-style: none; + padding: 0; + margin: 0; } + .menu__trigger { + margin-right: 0 !important; + color: #FF6266; + user-select: none; + cursor: pointer; } + .menu__dropdown { + display: none; + flex-direction: column; + position: absolute; + background: #221f29; + box-shadow: 0 10px rgba(34, 31, 41, 0.8), -10px 10px rgba(34, 31, 41, 0.8), 10px 10px rgba(34, 31, 41, 0.8); + color: white; + border: 2px solid; + margin: 0; + padding: 10px; + top: 10px; + left: 0; + list-style: none; + z-index: 99; } + .open .menu__dropdown { + display: flex; } + .menu__dropdown > li { + flex: 0 0 auto; } + .menu__dropdown > li:not(:last-of-type) { + margin-bottom: 10px; } + .menu__dropdown > li a { + display: flex; + padding: 5px; } + @media (max-width: 684px) { + .menu--desktop { + display: none; } } + .menu--mobile .menu__trigger { + color: #FF6266; + border: 2px solid; + margin-left: 10px; + height: 100%; + padding: 3px 8px; + margin-bottom: 0 !important; + position: relative; + cursor: pointer; + display: none; } + @media (max-width: 684px) { + .menu--mobile .menu__trigger { + display: block; } } + @media (max-width: 684px) { + .menu--mobile .menu__dropdown { + left: auto; + right: 0; } } + .menu--mobile li { + flex: 0 0 auto; } + .menu--mobile li:not(:last-of-type) { + margin-bottom: 10px; } + .menu--language-selector .menu__trigger { + color: #FF6266; + border: 2px solid; + margin-left: 10px; + height: 100%; + padding: 3px 8px; + margin-bottom: 0 !important; + position: relative; + cursor: pointer; } + @media (max-width: 684px) { + .menu--language-selector .menu__trigger { + display: none; } } + .menu--language-selector .menu__dropdown { + left: auto; + right: 0; } + +.logo { + display: flex; + align-items: center; + text-decoration: none; + background: #FF6266; + color: black; + padding: 5px 10px; } + +html { + box-sizing: border-box; } + +*, +*:before, +*:after { + box-sizing: inherit; } + +body { + margin: 0; + padding: 0; + font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace; + font-size: 1rem; + line-height: 1.54; + letter-spacing: -0.02em; + background-color: #221f29; + color: white; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + font-feature-settings: "liga", "tnum", "zero", "ss01", "locl"; + font-variant-ligatures: contextual; + -webkit-overflow-scrolling: touch; + -webkit-text-size-adjust: 100%; } + @media (max-width: 684px) { + body { + font-size: 1rem; } } +.headings--one-size h1, +.headings--one-size h2, +.headings--one-size h3, +.headings--one-size h4, +.headings--one-size h5, +.headings--one-size h6 { + line-height: 1.3; } + .headings--one-size h1:not(first-child), + .headings--one-size h2:not(first-child), + .headings--one-size h3:not(first-child), + .headings--one-size h4:not(first-child), + .headings--one-size h5:not(first-child), + .headings--one-size h6:not(first-child) { + margin-top: 40px; } + +.headings--one-size h1, +.headings--one-size h2, +.headings--one-size h3 { + font-size: 1.4rem; } + +.headings--one-size h4, +.headings--one-size h5, +.headings--one-size h6 { + font-size: 1.2rem; } + +a { + color: inherit; + /* Waiting for a better times... */ + /* &:has(code) { + text-decoration-color: $accent; + } */ } + +img { + display: block; + max-width: 100%; } + img.left { + margin-right: auto; } + img.center { + margin-left: auto; + margin-right: auto; } + img.right { + margin-left: auto; } + +p { + margin-bottom: 20px; } + +figure { + display: table; + max-width: 100%; + margin: 25px 0; } + figure.left { + margin-right: auto; } + figure.center { + margin-left: auto; + margin-right: auto; } + figure.right { + margin-left: auto; } + figure figcaption { + font-size: 14px; + padding: 5px 10px; + margin-top: 5px; + background: #FF6266; + color: #221f29; + /* opacity: .8; */ } + figure figcaption.left { + text-align: left; } + figure figcaption.center { + text-align: center; } + figure figcaption.right { + text-align: right; } + +code, kbd { + font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important; + font-feature-settings: normal; + background: rgba(255, 98, 102, 0.2); + color: #FF6266; + padding: 1px 6px; + margin: 0 2px; + font-size: .95rem; } + code code, code kbd, kbd code, kbd kbd { + background: transparent; + padding: 0; + margin: 0; } + +pre { + background: transparent !important; + padding: 20px 10px; + margin: 40px 0; + font-size: .95rem !important; + overflow: auto; + border-top: 1px solid rgba(255, 255, 255, 0.1); + border-bottom: 1px solid rgba(255, 255, 255, 0.1); } + pre + pre { + border-top: 0; + margin-top: -40px; } + @media (max-width: 684px) { + pre { + white-space: pre-wrap; + word-wrap: break-word; } } + pre code { + background: none !important; + margin: 0; + padding: 0; + font-size: inherit; + border: none; } + +blockquote { + border-top: 1px solid #FF6266; + border-bottom: 1px solid #FF6266; + margin: 40px 0; + padding: 25px; } + @media (max-width: 684px) { + blockquote { + padding-right: 0; } } + blockquote p:first-of-type { + margin-top: 0; } + blockquote p:last-of-type { + margin-bottom: 0; } + blockquote p { + position: relative; } + blockquote p:first-of-type:before { + content: '>'; + display: block; + position: absolute; + left: -25px; + color: #FF6266; } + blockquote.twitter-tweet { + position: relative; + background: rgba(255, 98, 102, 0.1); + font: inherit; + color: inherit; + border: 1px solid #FF6266; + padding-top: 60px; } + blockquote.twitter-tweet p:before { + content: ''; } + blockquote.twitter-tweet:before { + content: '> From Twitter:'; + position: absolute; + top: 20px; + color: #FF6266; + font-weight: bold; } + blockquote.twitter-tweet a { + color: #FF6266; } + +table { + table-layout: auto; + border-collapse: collapse; + width: 100%; + margin: 40px 0; } + +table, +th, +td { + border: 1px dashed #FF6266; + padding: 10px; } + +th { + color: #FF6266; } + +ul, +ol { + margin-left: 22px; + padding: 0; } + ul li, + ol li { + position: relative; } + @media (max-width: 684px) { + ul, + ol { + margin-left: 20px; } } +ol { + list-style: none; + counter-reset: li; } + ol li { + counter-increment: li; } + ol li:before { + content: counter(li); + position: absolute; + right: calc(100% + 10px); + color: #FF6266; + display: inline-block; + text-align: right; } + ol ol { + margin-left: 38px; } + ol ol li { + counter-increment: li; } + ol ol li:before { + content: counters(li, ".") " "; } + +mark { + background: #FF6266; + color: #221f29; } + +.container { + display: flex; + flex-direction: column; + padding: 40px; + max-width: 864px; + min-height: 100vh; + border-right: 1px solid rgba(255, 255, 255, 0.1); } + .container.full, .container.center { + border: none; + margin: 0 auto; } + .container.full { + max-width: 100%; } + @media (max-width: 684px) { + .container { + padding: 20px; } } + @media print { + .container { + display: initial; } } +.content { + display: flex; + flex-direction: column; } + @media print { + .content { + display: initial; } } +hr { + width: 100%; + border: none; + background: rgba(255, 255, 255, 0.1); + height: 1px; } + +.hidden { + display: none; } + +sup { + line-height: 0; } + +.index-content { + margin-top: 20px; } + +.framed { + border: 1px solid #FF6266; + padding: 20px; } + .framed *:first-child { + margin-top: 0; } + .framed *:last-child { + margin-bottom: 0; } + +.posts { + width: 100%; } + +.post { + width: 100%; + text-align: left; + margin: 20px auto; + padding: 20px 0; } + .post:not(:last-of-type) { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); } + .post-meta { + font-size: 1rem; + margin-bottom: 10px; + color: rgba(255, 98, 102, 0.7); } + .post-title { + position: relative; + color: #FF6266; + margin: 0 0 15px; + padding-bottom: 15px; + border-bottom: 3px dotted #FF6266; } + .post-title:after { + content: ''; + position: absolute; + bottom: 2px; + display: block; + width: 100%; + border-bottom: 3px dotted #FF6266; } + .post-title a { + text-decoration: none; } + .post-tags { + display: block; + margin-bottom: 20px; + font-size: 1rem; + opacity: .5; } + .post-tags a { + text-decoration: none; } + .post-content { + margin-top: 30px; } + .post-cover { + border: 20px solid #FF6266; + background: transparent; + margin: 40px 0; + padding: 20px; } + @media (max-width: 684px) { + .post-cover { + padding: 10px; + border-width: 10px; } } + .post ul { + list-style: none; } + .post ul li:not(:empty):before { + content: '-'; + position: absolute; + left: -20px; + color: #FF6266; } + +.post--regulation h1 { + justify-content: center; } + +.post--regulation h2 { + justify-content: center; + margin-bottom: 10px; } + .post--regulation h2 + h2 { + margin-top: -10px; + margin-bottom: 20px; } + +.hanchor { + color: rgba(255, 98, 102, 0.9); + text-decoration: none; + margin-left: 10px; + visibility: hidden; } + +h1:hover a, h2:hover a, h3:hover a, h4:hover a { + visibility: visible; } + +.footnotes { + color: rgba(255, 255, 255, 0.5); } + +.pagination { + margin-top: 50px; } + @media print { + .pagination { + display: none; } } + .pagination__title { + display: flex; + text-align: center; + position: relative; + margin: 100px 0 20px; } + .pagination__title-h { + text-align: center; + margin: 0 auto; + padding: 5px 10px; + background: #221f29; + color: rgba(255, 255, 255, 0.3); + font-size: .8rem; + text-transform: uppercase; + text-decoration: none; + letter-spacing: .1em; + z-index: 1; } + .pagination__title hr { + position: absolute; + left: 0; + right: 0; + width: 100%; + margin-top: 15px; + z-index: 0; } + .pagination__buttons { + display: flex; + align-items: center; + justify-content: center; + flex-flow: row wrap; + gap: 10px; } + .pagination__buttons a { + text-decoration: none; } + +.button { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 1rem; + padding: 0; + appearance: none; } + @media (max-width: 684px) { + .button { + flex: 1; } } + .button a { + display: flex; + justify-content: center; + flex: 1; + padding: 8px 16px; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .button__text { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .button.next .button__icon { + margin-left: 8px; } + .button.previous .button__icon { + margin-right: 8px; } + +.footer { + padding: 40px 0; + flex-grow: 0; + opacity: .5; } + .footer__inner { + display: flex; + align-items: center; + justify-content: space-between; + margin: 0; + width: 760px; + max-width: 100%; } + @media (max-width: 900px) { + .footer__inner { + flex-direction: column; } } + .footer a { + color: inherit; } + .footer .copyright { + display: flex; + flex-flow: row wrap; + flex: 1; + align-items: center; + font-size: 1rem; + justify-content: center; } + .footer .copyright--user { + margin: auto; + text-align: center; } + .footer .copyright > *:first-child:not(:only-child) { + margin-right: 10px; } + .footer .copyright span { + white-space: nowrap; } + +/* PrismJS 1.24.1 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */ +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML + * Based on https://github.com/chriskempson/tomorrow-theme + * @author Rose Pritchard + */ +code[class*="language-"], +pre[class*="language-"] { + color: #ccc; + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; } + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; } + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #2d2d2d; } + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; } + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; } + +.token.punctuation { + color: #ccc; } + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; } + +.token.function-name { + color: #6196cc; } + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; } + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; } + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; } + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; } + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; } + +.token.important, +.token.bold { + font-weight: bold; } + +.token.italic { + font-style: italic; } + +.token.entity { + cursor: help; } + +.token.inserted { + color: green; } + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; } + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; + /* Same as .prism’s padding-top */ + background: rgba(153, 122, 102, 0.08); + background: linear-gradient(to right, rgba(153, 122, 102, 0.1) 70%, rgba(153, 122, 102, 0)); + pointer-events: none; + line-height: inherit; + white-space: pre; } + +@media print { + .line-highlight { + /* + * This will prevent browsers from replacing the background color with white. + * It's necessary because the element is layered on top of the displayed code. + */ + -webkit-print-color-adjust: exact; + color-adjust: exact; } } + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: rgba(153, 122, 102, 0.4); + color: #f5f2f0; + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; } + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; } + +pre[id].linkable-line-numbers span.line-numbers-rows { + pointer-events: all; } + +pre[id].linkable-line-numbers span.line-numbers-rows > span:before { + cursor: pointer; } + +pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { + background-color: rgba(128, 128, 128, 0.2); } + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; } + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; } + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; + /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; } + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; } + +.command-line-prompt { + border-right: 1px solid #999; + display: block; + float: left; + font-size: 100%; + letter-spacing: -1px; + margin-right: 1em; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.command-line-prompt > span:before { + color: #999; + content: ' '; + display: block; + padding-right: 0.8em; } + +.command-line-prompt > span[data-user]:before { + content: "[" attr(data-user) "@" attr(data-host) "] $"; } + +.command-line-prompt > span[data-user="root"]:before { + content: "[" attr(data-user) "@" attr(data-host) "] #"; } + +.command-line-prompt > span[data-prompt]:before { + content: attr(data-prompt); } + +div.code-toolbar { + position: relative; } + +div.code-toolbar > .toolbar { + position: absolute; + top: .3em; + right: .2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; } + +div.code-toolbar:hover > .toolbar { + opacity: 1; } + +/* Separate line b/c rules are thrown out if selector is invalid. + IE11 and old Edge versions don't support :focus-within. */ +div.code-toolbar:focus-within > .toolbar { + opacity: 1; } + +div.code-toolbar > .toolbar > .toolbar-item { + display: inline-block; } + +div.code-toolbar > .toolbar > .toolbar-item > a { + cursor: pointer; } + +div.code-toolbar > .toolbar > .toolbar-item > button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; + /* for button */ + -moz-user-select: none; + -ms-user-select: none; } + +div.code-toolbar > .toolbar > .toolbar-item > a, +div.code-toolbar > .toolbar > .toolbar-item > button, +div.code-toolbar > .toolbar > .toolbar-item > span { + color: #bbb; + font-size: .8em; + padding: 0 .5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: .5em; } + +div.code-toolbar > .toolbar > .toolbar-item > a:hover, +div.code-toolbar > .toolbar > .toolbar-item > a:focus, +div.code-toolbar > .toolbar > .toolbar-item > button:hover, +div.code-toolbar > .toolbar > .toolbar-item > button:focus, +div.code-toolbar > .toolbar > .toolbar-item > span:hover, +div.code-toolbar > .toolbar > .toolbar-item > span:focus { + color: inherit; + text-decoration: none; } + +code.language-css, +code.language-scss, +.token.boolean, +.token.string, +.token.entity, +.token.url, +.language-css .token.string, +.language-scss .token.string, +.style .token.string, +.token.attr-value, +.token.keyword, +.token.control, +.token.directive, +.token.statement, +.token.regex, +.token.atrule, +.token.number, +.token.inserted, +.token.important { + color: #FF6266 !important; } + +.token.tag-id, +.token.atrule-id, +.token.operator, +.token.unit, +.token.placeholder, +.token.variable, +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted, +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: rgba(255, 98, 102, 0.7) !important; } + +.token.property, +.token.function, +.token.function-name, +.token.deleted, +code.language-javascript, +code.language-html, +.command-line-prompt > span:before { + color: #9a9999 !important; } + +.token.selector, +.token.tag, +.token.punctuation { + color: white; } + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: rgba(255, 255, 255, 0.3) !important; } + +.token.namespace { + opacity: .7 !important; } + +pre[data-line] { + position: relative; } + +pre[class*="language-"] { + margin: 0; + padding: 0; + overflow: auto; } + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: 0; + margin: 0; + background: rgba(245, 104, 107, 0.08); + pointer-events: none; + line-height: inherit; + white-space: pre; } + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + /* top: .4em; */ + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: rgba(153, 122, 102, 0.4); + color: #f5f2f0; + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; } + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; } + +.code-toolbar { + position: relative; + margin: 40px 0; + padding: 20px; + border: 1px solid rgba(255, 255, 255, 0.1); } + .code-toolbar + .code-toolbar, + .code-toolbar + .highlight, + .code-toolbar + .highlight .code-toolbar { + border-top: 0; + margin-top: calc(-1 * $code-margin); } + .code-toolbar pre, .code-toolbar code { + border: none; } + .code-toolbar code { + display: block; + color: inherit; } + .code-toolbar > .toolbar button { + font-size: .8em !important; + background: rgba(224, 224, 224, 0.2) !important; + color: #bbb !important; + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2) !important; + border-radius: 0 !important; + margin: 6px !important; + padding: 10px !important; + user-select: none; } + +.collapsable-code { + position: relative; + width: 100%; + margin: 40px 0; } + .collapsable-code input[type="checkbox"] { + position: absolute; + visibility: hidden; } + .collapsable-code input[type="checkbox"]:checked ~ pre, + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar pre { + height: 0; + padding: 0; + border-top: none; } + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar { + padding: 0; + border-top: none; } + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar .toolbar { + display: none; } + .collapsable-code input[type="checkbox"]:checked ~ label .collapsable-code__toggle:after { + content: attr(data-label-expand); } + .collapsable-code label { + position: relative; + display: flex; + justify-content: space-between; + min-width: 30px; + min-height: 30px; + margin: 0; + border-bottom: 1px solid #f5686b; + cursor: pointer; } + .collapsable-code__title { + flex: 1; + color: #FF6266; + padding: 3px 10px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .collapsable-code__language { + color: #FF6266; + border: 1px solid #f5686b; + border-bottom: none; + text-transform: uppercase; + padding: 3px 10px; } + .collapsable-code__toggle { + color: #FF6266; + font-size: 16px; + padding: 3px 10px; } + .collapsable-code__toggle:after { + content: attr(data-label-collapse); } + .collapsable-code pre { + margin-top: 0; } + .collapsable-code pre::first-line { + line-height: 0; } + .collapsable-code .code-toolbar { + margin: 0; } + +.terms h1 { + color: #FF6266; } + +.terms h3 { + font-size: initial; } + +body .gist .blob-num, +body .gist .blob-code-inner { + border: none; } diff --git a/public/fonts/FiraCode-Bold.woff b/public/fonts/FiraCode-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..61d5e6475d7343bdbdb988a06736c0787139f578 GIT binary patch literal 97028 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%0DVc^!P!`TlFIh14sBJIWP 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
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ + +
+
+
+
+
+ +
+
+

Vladislav Belkov

+

Dotnet developer

+
+
+
+

Welcome!

+

This is my site. I don’t post here often, so feel free to check out my GitHub.
+You can also check any of my posts below.

+ +
+ +
+ + + + + + + + + + +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + +
+ + Have you ever thought about making a web application, that could be easily extended by third-party developers? I’ve been thinking about making this app for a while, so here’s my experience… + +
+ + + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..708644c --- /dev/null +++ b/public/index.xml @@ -0,0 +1,123 @@ + + + + the1mason + the1mason.com/ + Recent content on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + #1 Plugin-Based Web App in Dotnet - The Idea + the1mason.com/posts/modular-app-1/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/posts/modular-app-1/ + Chapters Writing those takes time. Expect to see one published per one-two weeks. +Idea, Stack +Loading plugins +PluginBase, IPlugin +Creating plugin, DependencyInjection +Controllers, Views +Hooks and Triggers - better event system +Advanced: Unit tests, unloading plugins +Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. + <script src="the1mason.com/js/repo-card.js"></script> +<div class="repo-card" data-repo="the1mason/Prototype.ModularMVC" data-theme="dark-theme"></div> +<h1 id="chapters">Chapters</h1> +<p>Writing those takes time. Expect to see one published per one-two weeks.</p> +<ol> +<li> +<p>Idea, Stack</p> +</li> +<li> +<p><del>Loading plugins</del></p> +</li> +<li> +<p><del>PluginBase, IPlugin</del></p> +</li> +<li> +<p><del>Creating plugin, DependencyInjection</del></p> +</li> +<li> +<p><del>Controllers, Views</del></p> +</li> +<li> +<p><del>Hooks and Triggers - better event system</del></p> +</li> +<li> +<p><del>Advanced: Unit tests, unloading plugins</del></p> +</li> +</ol> +<h1 id="introduction">Introduction</h1> +<p>Have you ever heard of plugins? These are loadable libraries, extending your application.<br> +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.</p> +<p><em>I assume some that readers have some knowledge of C# and design patterns</em></p> +<h1 id="problem">Problem</h1> +<p>Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn&rsquo;t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.</p> +<h1 id="choosing-my-stack">Choosing my stack</h1> +<p><img src="the1mason.com/posts/modular-app/stack.svg" alt="C#, MVC, HTMX"></p> +<hr> +<p><strong>C#</strong></p> +<p>I&rsquo;m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn&rsquo;t been described in detail as much online.</p> +<p>I haven&rsquo;t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture&hellip; Well, there&rsquo;s even a <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Microsoft Learn Article</a> about building such an app!</p> +<blockquote> +<p><strong>Q:</strong> Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?</p> +</blockquote> +<blockquote> +<p><strong>A:</strong> You see&hellip; there&rsquo;s a problem: Neither <code>learn.microsoft.com</code> nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it&rsquo;s the right place. Also just loading libraries isn&rsquo;t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!</p> +</blockquote> +<hr> +<p><strong>MVC with HTMX</strong></p> +<p>ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.</p> +<div style="display: flex; justify-content: center"> + <img src="the1mason.com/posts/modular-app/createdwith.jpeg" style="height: 100px;"/> +</div> +<br> +<p>HTMX uses <a href="https://htmx.org/essays/hateoas/">Hypermedia as the Engine of Application State (HATEOAS)</a> - it&rsquo;s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won&rsquo;t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won&rsquo;t give the link to withdraw money, making this action impossible in the first place.</p> +<p>HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.</p> +<blockquote> +<p>Have you heard about Blazor WASM? You can just write client code in C#!</p> +</blockquote> +<p>Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won&rsquo;t be able to extend the client. Also it&rsquo;s initial load time is stupidly slow.</p> +<hr> +<p>The next article will cover the following topocs: Loading plugins in runtime, creating plugin&rsquo;s instances, app-plugin communication. I&rsquo;ll have the link here when I&rsquo;m done writing it!</p> +<!-- +--- + +# Loading plugins + +C#, being a compiled language, can't be extended as easily as interpreted languages like Pytnon or PHP. To load plugins, we will need to load precompiled libraries dynamically after the app is compiled. To do this, [Microsoft Learn Article, mentioned before](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) suggests using custom AssemblyLoadContext with AssemblyDependencyResolver. + +> Wait, wait, wait! Using... what? I'm pretty sure you could just `Assembly.Load()` stuff, right? + +Not so easy! If you want to build a really working plugin system, you need a way to determine: whether this assembly has dependencies or not, and what are they. + +Let's imagine, that our plugin uses `Newtonsoft.Json` library - one of the all-time most popular C# libraries. Should we load it together with the plugin and how do we find it? +C# has a built-in mechanism to resolve dependencies. When you compile your project, aside from `Project.Name.dll` you would have `Project.Name.deps.json` file, that will include paths to all it's dependencies! That's where `AssemblyDependencyResolver` comes in. It'll find all of plugin's `.dll` dependencies and load those as well. + +> And also! What it two plugins will have the same library, but conflicting versions? Would we be able to load to of the same assemblies? + +No! And yes. +`AssemblyLoadContext` is used exactly for this. Along with `AssemblyDependencyResolver`, it will create an isolated context with current assembly and all it's dependencies. This will allow multiple plugins to have same dependencies with different versions. + +There's an example of such custom AssemblyLoadContext [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/PluginLoadContext.cs) and also an example of this context being used [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/Impl/PluginLoaders/ManifestBasedPluginLoader.cs#L89). + +--- + + +# Plugin - App interaction + +So now we figured out how we load stuff. Now: how do we interact with the app from out plugins? + +First, we make all plugins to referense the `Prototype.PluginBase` project. This project will provide types that both plugin and our server can understand. We'll build communication using those. + +**Dependency Injection** + +Before the app is built and ran, --> + + + + diff --git a/public/js/repo-card.js b/public/js/repo-card.js new file mode 100644 index 0000000..08dc324 --- /dev/null +++ b/public/js/repo-card.js @@ -0,0 +1,80 @@ +window.tarptaeya = {}; + +window.tarptaeya.reloadRepoCards = async function() { + const CACHE_TIMEOUT = 60000; + async function get(url) { + const now = new Date().getTime(); + const prevResp = JSON.parse(localStorage.getItem(url)); + if (prevResp && Math.abs(now - prevResp.time) < CACHE_TIMEOUT) { + return prevResp.data; + } + const resp = await fetch(url); + const json = await resp.json(); + localStorage.setItem(url, JSON.stringify({time: now, data: json})); + return json; + } + + const emojis = await get('https://api.github.com/emojis'); + const colors = await get('https://raw.githubusercontent.com/ozh/github-colors/master/colors.json'); + + const themes = { + 'light-default': { + background: 'white', + borderColor: '#e1e4e8', + color: '#586069', + linkColor: '#0366d6', + }, + 'dark-theme': { + background: 'rgb(13, 17, 23)', + borderColor: 'rgb(48, 54, 61)', + color: 'rgb(139, 148, 158)', + linkColor: 'rgb(88, 166, 255)', + } + }; + + for (const el of document.querySelectorAll('.repo-card')) { + const name = el.getAttribute('data-repo'); + const theme = themes[el.getAttribute('data-theme') || 'light-default']; + const data = await get(`https://api.github.com/repos/${name}`); + + data.description = (data.description || '').replace(/:\w+:/g, function(match) { + const name = match.substring(1, match.length - 1); + const emoji = emojis[name]; + + if (emoji) { + return `${name}`; + } + + return match; + }); + + el.innerHTML = ` +
+
+ + + ${data.name} + +
+ +
${data.description}
+
+
+ + ${data.language} +
+
+ +   ${data.stargazers_count} +
+
+ +   ${data.forks} +
+
+
+ `; + } +}; + +window.addEventListener('DOMContentLoaded', window.tarptaeya.reloadRepoCards); diff --git a/public/page/1/index.html b/public/page/1/index.html new file mode 100644 index 0000000..b4040ab --- /dev/null +++ b/public/page/1/index.html @@ -0,0 +1,10 @@ + + + + the1mason.com/ + + + + + + diff --git a/public/posts/index.html b/public/posts/index.html new file mode 100644 index 0000000..ff9915e --- /dev/null +++ b/public/posts/index.html @@ -0,0 +1,228 @@ + + + + + Posts :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + +
+ + Have you ever thought about making a web application, that could be easily extended by third-party developers? I’ve been thinking about making this app for a while, so here’s my experience… + +
+ + + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/index.xml b/public/posts/index.xml new file mode 100644 index 0000000..64995ae --- /dev/null +++ b/public/posts/index.xml @@ -0,0 +1,123 @@ + + + + Posts on the1mason + the1mason.com/posts/ + Recent content in Posts on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + #1 Plugin-Based Web App in Dotnet - The Idea + the1mason.com/posts/modular-app-1/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/posts/modular-app-1/ + Chapters Writing those takes time. Expect to see one published per one-two weeks. +Idea, Stack +Loading plugins +PluginBase, IPlugin +Creating plugin, DependencyInjection +Controllers, Views +Hooks and Triggers - better event system +Advanced: Unit tests, unloading plugins +Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. + <script src="the1mason.com/js/repo-card.js"></script> +<div class="repo-card" data-repo="the1mason/Prototype.ModularMVC" data-theme="dark-theme"></div> +<h1 id="chapters">Chapters</h1> +<p>Writing those takes time. Expect to see one published per one-two weeks.</p> +<ol> +<li> +<p>Idea, Stack</p> +</li> +<li> +<p><del>Loading plugins</del></p> +</li> +<li> +<p><del>PluginBase, IPlugin</del></p> +</li> +<li> +<p><del>Creating plugin, DependencyInjection</del></p> +</li> +<li> +<p><del>Controllers, Views</del></p> +</li> +<li> +<p><del>Hooks and Triggers - better event system</del></p> +</li> +<li> +<p><del>Advanced: Unit tests, unloading plugins</del></p> +</li> +</ol> +<h1 id="introduction">Introduction</h1> +<p>Have you ever heard of plugins? These are loadable libraries, extending your application.<br> +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.</p> +<p><em>I assume some that readers have some knowledge of C# and design patterns</em></p> +<h1 id="problem">Problem</h1> +<p>Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn&rsquo;t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.</p> +<h1 id="choosing-my-stack">Choosing my stack</h1> +<p><img src="the1mason.com/posts/modular-app/stack.svg" alt="C#, MVC, HTMX"></p> +<hr> +<p><strong>C#</strong></p> +<p>I&rsquo;m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn&rsquo;t been described in detail as much online.</p> +<p>I haven&rsquo;t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture&hellip; Well, there&rsquo;s even a <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Microsoft Learn Article</a> about building such an app!</p> +<blockquote> +<p><strong>Q:</strong> Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?</p> +</blockquote> +<blockquote> +<p><strong>A:</strong> You see&hellip; there&rsquo;s a problem: Neither <code>learn.microsoft.com</code> nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it&rsquo;s the right place. Also just loading libraries isn&rsquo;t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!</p> +</blockquote> +<hr> +<p><strong>MVC with HTMX</strong></p> +<p>ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.</p> +<div style="display: flex; justify-content: center"> + <img src="the1mason.com/posts/modular-app/createdwith.jpeg" style="height: 100px;"/> +</div> +<br> +<p>HTMX uses <a href="https://htmx.org/essays/hateoas/">Hypermedia as the Engine of Application State (HATEOAS)</a> - it&rsquo;s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won&rsquo;t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won&rsquo;t give the link to withdraw money, making this action impossible in the first place.</p> +<p>HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.</p> +<blockquote> +<p>Have you heard about Blazor WASM? You can just write client code in C#!</p> +</blockquote> +<p>Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won&rsquo;t be able to extend the client. Also it&rsquo;s initial load time is stupidly slow.</p> +<hr> +<p>The next article will cover the following topocs: Loading plugins in runtime, creating plugin&rsquo;s instances, app-plugin communication. I&rsquo;ll have the link here when I&rsquo;m done writing it!</p> +<!-- +--- + +# Loading plugins + +C#, being a compiled language, can't be extended as easily as interpreted languages like Pytnon or PHP. To load plugins, we will need to load precompiled libraries dynamically after the app is compiled. To do this, [Microsoft Learn Article, mentioned before](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) suggests using custom AssemblyLoadContext with AssemblyDependencyResolver. + +> Wait, wait, wait! Using... what? I'm pretty sure you could just `Assembly.Load()` stuff, right? + +Not so easy! If you want to build a really working plugin system, you need a way to determine: whether this assembly has dependencies or not, and what are they. + +Let's imagine, that our plugin uses `Newtonsoft.Json` library - one of the all-time most popular C# libraries. Should we load it together with the plugin and how do we find it? +C# has a built-in mechanism to resolve dependencies. When you compile your project, aside from `Project.Name.dll` you would have `Project.Name.deps.json` file, that will include paths to all it's dependencies! That's where `AssemblyDependencyResolver` comes in. It'll find all of plugin's `.dll` dependencies and load those as well. + +> And also! What it two plugins will have the same library, but conflicting versions? Would we be able to load to of the same assemblies? + +No! And yes. +`AssemblyLoadContext` is used exactly for this. Along with `AssemblyDependencyResolver`, it will create an isolated context with current assembly and all it's dependencies. This will allow multiple plugins to have same dependencies with different versions. + +There's an example of such custom AssemblyLoadContext [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/PluginLoadContext.cs) and also an example of this context being used [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/Impl/PluginLoaders/ManifestBasedPluginLoader.cs#L89). + +--- + + +# Plugin - App interaction + +So now we figured out how we load stuff. Now: how do we interact with the app from out plugins? + +First, we make all plugins to referense the `Prototype.PluginBase` project. This project will provide types that both plugin and our server can understand. We'll build communication using those. + +**Dependency Injection** + +Before the app is built and ran, --> + + + + diff --git a/public/posts/modular-app-1/index.html b/public/posts/modular-app-1/index.html new file mode 100644 index 0000000..919a31f --- /dev/null +++ b/public/posts/modular-app-1/index.html @@ -0,0 +1,314 @@ + + + + + #1 Plugin-Based Web App in Dotnet - The Idea :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + + + +
+ +
+

Chapters

+

Writing those takes time. Expect to see one published per one-two weeks.

+
    +
  1. +

    Idea, Stack

    +
  2. +
  3. +

    Loading plugins

    +
  4. +
  5. +

    PluginBase, IPlugin

    +
  6. +
  7. +

    Creating plugin, DependencyInjection

    +
  8. +
  9. +

    Controllers, Views

    +
  10. +
  11. +

    Hooks and Triggers - better event system

    +
  12. +
  13. +

    Advanced: Unit tests, unloading plugins

    +
  14. +
+

Introduction

+

Have you ever heard of plugins? These are loadable libraries, extending your application.
+This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it’s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.

+

I assume some that readers have some knowledge of C# and design patterns

+

Problem

+

Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn’t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.

+

Choosing my stack

+

C#, MVC, HTMX

+
+

C#

+

I’m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn’t been described in detail as much online.

+

I haven’t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture… Well, there’s even a Microsoft Learn Article about building such an app!

+
+

Q: Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?

+
+
+

A: You see… there’s a problem: Neither learn.microsoft.com nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it’s the right place. Also just loading libraries isn’t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!

+
+
+

MVC with HTMX

+

ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.

+
+ +
+
+

HTMX uses Hypermedia as the Engine of Application State (HATEOAS) - it’s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won’t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won’t give the link to withdraw money, making this action impossible in the first place.

+

HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.

+
+

Have you heard about Blazor WASM? You can just write client code in C#!

+
+

Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won’t be able to extend the client. Also it’s initial load time is stupidly slow.

+
+

The next article will cover the following topocs: Loading plugins in runtime, creating plugin’s instances, app-plugin communication. I’ll have the link here when I’m done writing it!

+ +
+ + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/modular-app/createdwith.jpeg b/public/posts/modular-app/createdwith.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8acd8c06ee7f2c8c62eddc0cefb3458a0136f469 GIT binary patch literal 29823 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�e%IJ-538 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 V&Ozd#<$>$}v68Zh#=E!G{{!u-(`Enw literal 0 HcmV?d00001 diff --git a/public/posts/modular-app/mvc.png b/public/posts/modular-app/mvc.png new file mode 100644 index 0000000000000000000000000000000000000000..c0885df799d7fb08162d881d6d95163176cc5f30 GIT binary patch literal 16393 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 literal 0 HcmV?d00001 diff --git a/public/posts/modular-app/stack.svg b/public/posts/modular-app/stack.svg new file mode 100644 index 0000000..c025f3f --- /dev/null +++ b/public/posts/modular-app/stack.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/posts/modular-app/title.svg b/public/posts/modular-app/title.svg new file mode 100644 index 0000000..1cb6750 --- /dev/null +++ b/public/posts/modular-app/title.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html new file mode 100644 index 0000000..1b88057 --- /dev/null +++ b/public/posts/page/1/index.html @@ -0,0 +1,10 @@ + + + + the1mason.com/posts/ + + + + + + diff --git a/public/semitcrab.png b/public/semitcrab.png new file mode 100644 index 0000000000000000000000000000000000000000..7aeb905a93332114c15b06361fbf2a6499d03602 GIT binary patch literal 12775 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 literal 0 HcmV?d00001 diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..6162757 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,28 @@ + + + + the1mason.com/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/posts/modular-app-1/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/tags/dotnet/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/posts/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/tags/prototype/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/tags/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/tags/web/ + 2024-01-20T00:00:00+00:00 + + the1mason.com/categories/ + + diff --git a/public/styles.css b/public/styles.css new file mode 100644 index 0000000..eec46bc --- /dev/null +++ b/public/styles.css @@ -0,0 +1,3 @@ +:root{--phoneWidth: (max-width: 684px);--tabletWidth: (max-width: 900px)}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin-bottom:5px;text-decoration:none;text-align:center;border-radius:8;border:1px solid #FF6266;background:#FF6266;color:#221f29;font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:rgba(255,98,102,0.9)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:#FF6266;background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:#FF6266;border:1px solid #FF6266;border-radius:0;padding:10px;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:#fff;outline:1px solid #fff}input:active,textarea:active,select:active{box-shadow:none}select{background:#221f29}select option{background:#221f29}::placeholder{color:rgba(255,98,102,0.5)}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, #FF6266, #FF6266 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:#FF6266;user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:#221f29;box-shadow:0 10px rgba(34,31,41,0.8),-10px 10px rgba(34,31,41,0.8),10px 10px rgba(34,31,41,0.8);color:white;border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;background:#FF6266;color:black;padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:#221f29;color:#fff;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:#FF6266;color:#221f29}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:rgba(255,98,102,0.2);color:#FF6266;padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid #FF6266;border-bottom:1px solid #FF6266;margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:#FF6266}blockquote.twitter-tweet{position:relative;background:rgba(255,98,102,0.1);font:inherit;color:inherit;border:1px solid #FF6266;padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:#FF6266;font-weight:bold}blockquote.twitter-tweet a{color:#FF6266}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed #FF6266;padding:10px}th{color:#FF6266}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol li{counter-increment:li}ol li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:#FF6266;display:inline-block;text-align:right}ol ol{margin-left:38px}ol ol li{counter-increment:li}ol ol li:before{content:counters(li, ".") " "}mark{background:#FF6266;color:#221f29}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:rgba(255,255,255,0.1);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid #FF6266;padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid rgba(255,255,255,0.1)}.post-meta{font-size:1rem;margin-bottom:10px;color:rgba(255,98,102,0.7)}.post-title{position:relative;color:#FF6266;margin:0 0 15px;padding-bottom:15px;border-bottom:3px dotted #FF6266}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted #FF6266}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-cover{border:20px solid #FF6266;background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:rgba(255,98,102,0.9);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:rgba(255,255,255,0.5)}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:#221f29;color:rgba(255,255,255,0.3);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:#FF6266 !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:rgba(255,98,102,0.7) !important}.token.property,.token.function,.token.function-name,.token.deleted,code.language-javascript,code.language-html,.command-line-prompt>span:before{color:#9a9999 !important}.token.selector,.token.tag,.token.punctuation{color:white}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:rgba(255,255,255,0.3) !important}.token.namespace{opacity:.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:rgba(245,104,107,0.08);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{position:relative;margin:40px 0;padding:20px;border:1px solid rgba(255,255,255,0.1)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * $code-margin)}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:.8em !important;background:rgba(224,224,224,0.2) !important;color:#bbb !important;box-shadow:0 2px 0 0 rgba(0,0,0,0.2) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid #f5686b;cursor:pointer}.collapsable-code__title{flex:1;color:#FF6266;padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:#FF6266;border:1px solid #f5686b;border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:#FF6266;font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h1{color:#FF6266}.terms h3{font-size:initial}body .gist .blob-num,body .gist .blob-code-inner{border:none} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/public/styles.css.map b/public/styles.css.map new file mode 100644 index 0000000..4d033ee --- /dev/null +++ b/public/styles.css.map @@ -0,0 +1,45 @@ +{ + "version": 3, + "file": "styles.css", + "sourceRoot": "C:/Users/the1m/OneDrive/Desktop/hugo-site/website-hugo", + "sources": [ + "css/base.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/variables.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/font.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/buttons.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/form.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/header.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/menu.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/logo.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/main.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/post.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/pagination.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/footer.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/prism.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/syntax.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/code.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/terms.scss", + "../../../../AppData/Local/hugo_cache/modules/filecache/modules/pkg/mod/github.com/panr/hugo-theme-terminal/v3@v3.1.2/assets/css/gist.scss" + ], + "sourcesContent": [ + "$accent: #FF6266;\n@import \"variables\";\n\n@import \"font\";\n@import \"buttons\";\n@import \"form\";\n\n@import \"header\";\n@import \"menu\";\n@import \"logo\";\n@import \"main\";\n@import \"post\";\n@import \"pagination\";\n@import \"footer\";\n\n@import \"prism\";\n@import \"syntax\";\n@import \"code\";\n@import \"terms\";\n@import \"gist\";\n", + "/* COLOR VARIABLES */\n$background: mix($accent, #1D1E28, 2%);\n$color: white;\n$border-color: rgba(255, 255, 255, .1);\n\n/* MEDIA QUERIES */\n$phone: \"max-width: 684px\";\n$tablet: \"max-width: 900px\";\n\n/* variables for js, must be the same as these in @custom-media queries */\n:root {\n --phoneWidth: (max-width: 684px);\n --tabletWidth: (max-width: 900px);\n}\n", + "@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/FiraCode-Regular.woff\") format(\"woff\");\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 800;\n src: url(\"../fonts/FiraCode-Bold.woff\") format(\"woff\");\n}\n", + ".button-container {\n display: table;\n margin-left: auto;\n margin-right: auto;\n}\n\nbutton,\n.button,\na.button {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 18px;\n margin-bottom: 5px;\n text-decoration: none;\n text-align: center;\n border-radius: 8;\n border: 1px solid $accent;\n background: $accent;\n color: $background;\n font: inherit;\n font-weight: bold;\n appearance: none;\n cursor: pointer;\n outline: none;\n\n &:hover {\n background: transparentize($accent, .1);\n }\n\n /* variants */\n\n &.outline {\n background: transparent;\n box-shadow: none;\n padding: 8px 18px;\n\n :hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n &.link {\n background: none;\n font-size: 1rem;\n }\n\n /* sizes */\n\n &.small {\n font-size: .8rem;\n }\n\n &.wide {\n min-width: 200px;\n padding: 14px 24px;\n }\n}\n\na.read-more,\na.read-more:hover,\na.read-more:active {\n display: inline-flex;\n border: none;\n color: $accent;\n background: none;\n box-shadow: none;\n padding: 0;\n margin: 20px 0;\n max-width: 100%;\n}\n\n.code-toolbar {\n margin-bottom: 20px;\n\n .toolbar-item a {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 8px;\n margin-bottom: 5px;\n text-decoration: none;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n border-radius: 8px;\n border: 1px solid transparent;\n appearance: none;\n cursor: pointer;\n outline: none;\n }\n}\n", + "input, textarea, select {\n background: transparent;\n color: $accent;\n border: 1px solid $accent;\n border-radius: 0;\n padding: 10px;\n font: inherit;\n appearance: none;\n\n &:focus, :active {\n border-color: $color;\n outline: 1px solid $color;\n }\n\n &:active {\n box-shadow: none;\n }\n}\n\nselect {\n background: $background;\n\n option {\n background: $background;\n }\n}\n\n::placeholder {\n color: transparentize($accent, .5);\n}\n", + ".header {\n display: flex;\n flex-direction: column;\n position: relative;\n\n @media print {\n display: none;\n }\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n &__logo {\n display: flex;\n flex: 1;\n\n &:after {\n content: '';\n background: repeating-linear-gradient(90deg, $accent, $accent 2px, transparent 0, transparent 10px);\n display: block;\n width: 100%;\n right: 10px;\n }\n\n a {\n flex: 0 0 auto;\n max-width: 100%;\n text-decoration: none;\n }\n }\n}\n", + "@mixin menu {\n display: none;\n flex-direction: column;\n $shadow-color: transparentize($background, .2);\n $shadow: 0 10px $shadow-color, -10px 10px $shadow-color, 10px 10px $shadow-color;\n position: absolute;\n background: $background;\n box-shadow: $shadow;\n color: white;\n border: 2px solid;\n margin: 0;\n padding: 10px;\n top: 10px;\n left: 0;\n list-style: none;\n z-index: 99;\n}\n\n@mixin header-menu-trigger {\n color: $accent;\n border: 2px solid;\n margin-left: 10px;\n height: 100%;\n padding: 3px 8px;\n margin-bottom: 0 !important;\n position: relative;\n cursor: pointer;\n}\n\n.navigation-menu {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin: 20px 1px;\n\n @media ($phone) {\n margin: 0;\n }\n\n &__inner {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n > li {\n flex: 0 0 auto;\n margin-bottom: 10px;\n white-space: nowrap;\n\n &:not(:last-of-type) {\n margin-right: 20px;\n }\n }\n\n @media ($phone) {\n flex-direction: column;\n align-items: flex-start;\n padding: 0;\n\n li {\n margin: 0;\n padding: 5px;\n }\n }\n }\n\n .spacer {\n flex-grow: 1 !important;\n }\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n position: relative;\n list-style: none;\n padding: 0;\n margin: 0;\n\n &__trigger {\n margin-right: 0 !important;\n color: $accent;\n user-select: none;\n cursor: pointer;\n }\n\n &__dropdown {\n @include menu;\n\n .open & {\n display: flex;\n }\n\n > li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n\n a {\n display: flex;\n padding: 5px;\n }\n }\n }\n\n &--desktop {\n @media ($phone) {\n display: none\n }\n }\n\n &--mobile {\n .menu__trigger {\n @include header-menu-trigger;\n display: none;\n\n @media ($phone) {\n display: block;\n }\n }\n\n .menu__dropdown {\n @media ($phone) {\n left: auto;\n right: 0;\n }\n }\n\n li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n }\n }\n\n &--language-selector {\n .menu__trigger {\n @include header-menu-trigger;\n\n @media ($phone) {\n display: none;\n }\n }\n\n .menu__dropdown {\n left: auto;\n right: 0;\n }\n }\n}\n", + ".logo {\n display: flex;\n align-items: center;\n text-decoration: none;\n background: $accent;\n color: black;\n padding: 5px 10px;\n}\n", + "html {\n box-sizing: border-box;\n}\n\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;\n font-size: 1rem;\n line-height: 1.54;\n letter-spacing: -0.02em;\n background-color: $background;\n color: $color;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n font-feature-settings: \"liga\", \"tnum\", \"zero\", \"ss01\", \"locl\";\n font-variant-ligatures: contextual;\n -webkit-overflow-scrolling: touch;\n -webkit-text-size-adjust: 100%;\n\n @media ($phone) {\n font-size: 1rem;\n }\n}\n\n.headings--one-size {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n line-height: 1.3;\n\n &:not(first-child) {\n margin-top: 40px;\n }\n }\n\n h1,\n h2,\n h3 {\n font-size: 1.4rem;\n }\n\n h4,\n h5,\n h6 {\n font-size: 1.2rem;\n }\n}\n\na {\n color: inherit;\n\n /* Waiting for a better times... */\n /* &:has(code) {\n text-decoration-color: $accent;\n } */\n}\n\nimg {\n display: block;\n max-width: 100%;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n}\n\np {\n margin-bottom: 20px;\n}\n\nfigure {\n display: table;\n max-width: 100%;\n margin: 25px 0;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n\n figcaption {\n font-size: 14px;\n padding: 5px 10px;\n margin-top: 5px;\n background: $accent;\n color: $background;\n /* opacity: .8; */\n\n &.left {\n text-align: left;\n }\n\n &.center {\n text-align: center;\n }\n\n &.right {\n text-align: right;\n }\n }\n}\n\ncode, kbd {\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;\n font-feature-settings: normal;\n background: transparentize($accent, .8);\n color: $accent;\n padding: 1px 6px;\n margin: 0 2px;\n font-size: .95rem;\n\n code, kbd {\n background: transparent;\n padding: 0;\n margin: 0;\n }\n}\n\npre {\n background: transparent !important;\n padding: 20px 10px;\n margin: 40px 0;\n font-size: .95rem !important;\n overflow: auto;\n border-top: 1px solid rgba(255, 255, 255, .1);\n border-bottom: 1px solid rgba(255, 255, 255, .1);\n\n + pre {\n border-top: 0;\n margin-top: -40px;\n }\n\n @media ($phone) {\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n code {\n background: none !important;\n margin: 0;\n padding: 0;\n font-size: inherit;\n border: none;\n }\n}\n\nblockquote {\n border-top: 1px solid $accent;\n border-bottom: 1px solid $accent;\n margin: 40px 0;\n padding: 25px;\n\n @media ($phone) {\n padding-right: 0;\n }\n\n p:first-of-type {\n margin-top: 0;\n }\n\n p:last-of-type {\n margin-bottom: 0;\n }\n\n p {\n position: relative;\n }\n\n p:first-of-type:before {\n content: '>';\n display: block;\n position: absolute;\n left: -25px;\n color: $accent;\n }\n\n &.twitter-tweet {\n position: relative;\n background: transparentize($accent, .9);\n font: inherit;\n color: inherit;\n border: 1px solid $accent;\n padding-top: 60px;\n\n p:before {\n content: '';\n }\n\n &:before {\n content: '> From Twitter:';\n position: absolute;\n top: 20px;\n color: $accent;\n font-weight: bold;\n }\n\n a {\n color: $accent;\n }\n }\n}\n\ntable {\n table-layout: auto;\n border-collapse: collapse;\n width: 100%;\n margin: 40px 0;\n}\n\ntable,\nth,\ntd {\n border: 1px dashed $accent;\n padding: 10px;\n}\n\nth {\n color: $accent;\n}\n\nul,\nol {\n margin-left: 22px;\n padding: 0;\n\n li {\n position: relative;\n }\n\n @media ($phone) {\n margin-left: 20px;\n }\n}\n\nol {\n list-style: none;\n counter-reset: li;\n\n li {\n counter-increment: li;\n }\n\n li:before {\n content: counter(li);\n position: absolute;\n right: calc(100% + 10px);\n color: $accent;\n display: inline-block;\n text-align: right;\n }\n\n ol {\n margin-left: 38px;\n\n li {\n counter-increment: li;\n }\n\n li:before {\n content: counters(li, \".\") \" \";\n }\n }\n}\n\nmark {\n background: $accent;\n color: $background;\n}\n\n.container {\n display: flex;\n flex-direction: column;\n padding: 40px;\n max-width: 864px;\n min-height: 100vh;\n border-right: 1px solid rgba(255, 255, 255, 0.1);\n\n &.full,\n &.center {\n border: none;\n margin: 0 auto;\n }\n\n &.full {\n max-width: 100%;\n }\n\n @media ($phone) {\n padding: 20px;\n }\n\n @media print {\n display: initial;\n }\n}\n\n.content {\n display: flex;\n flex-direction: column;\n\n @media print {\n display: initial;\n }\n}\n\nhr {\n width: 100%;\n border: none;\n background: $border-color;\n height: 1px;\n}\n\n.hidden {\n display: none;\n}\n\nsup {\n line-height: 0;\n}\n", + ".index-content {\n margin-top: 20px;\n}\n\n.framed {\n border: 1px solid $accent;\n padding: 20px;\n\n *:first-child {\n margin-top: 0;\n }\n\n *:last-child {\n margin-bottom: 0;\n }\n}\n\n.posts {\n width: 100%;\n}\n\n.post {\n width: 100%;\n text-align: left;\n margin: 20px auto;\n padding: 20px 0;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid $border-color;\n }\n\n &-meta {\n font-size: 1rem;\n margin-bottom: 10px;\n color: transparentize($accent, .3);\n }\n\n &-title {\n $border: 3px dotted $accent;\n position: relative;\n color: $accent;\n margin: 0 0 15px;\n padding-bottom: 15px;\n border-bottom: $border;\n\n &:after {\n content: '';\n position: absolute;\n bottom: 2px;\n display: block;\n width: 100%;\n border-bottom: $border;\n }\n\n a {\n text-decoration: none;\n }\n }\n\n &-tags {\n display: block;\n margin-bottom: 20px;\n font-size: 1rem;\n opacity: .5;\n\n a {\n text-decoration: none;\n }\n }\n\n &-content {\n margin-top: 30px;\n }\n\n &-cover {\n border: 20px solid $accent;\n background: transparent;\n margin: 40px 0;\n padding: 20px;\n\n @media ($phone) {\n padding: 10px;\n border-width: 10px;\n }\n }\n\n ul {\n list-style: none;\n\n li:not(:empty):before {\n content: '-';\n position: absolute;\n left: -20px;\n color: $accent;\n }\n }\n}\n\n.post--regulation {\n h1 {\n justify-content: center;\n }\n\n h2 {\n justify-content: center;\n margin-bottom: 10px;\n\n & + h2 {\n margin-top: -10px;\n margin-bottom: 20px;\n }\n }\n}\n\n.hanchor {\n color: transparentize($accent, .1);\n text-decoration: none;\n margin-left: 10px;\n visibility: hidden;\n}\n\nh1:hover a, h2:hover a, h3:hover a, h4:hover a {\n visibility: visible;\n}\n\n.footnotes {\n color: transparentize($color, .5);\n}\n", + ".pagination {\n margin-top: 50px;\n\n @media print {\n display: none;\n }\n\n &__title {\n display: flex;\n text-align: center;\n position: relative;\n margin: 100px 0 20px;\n\n &-h {\n text-align: center;\n margin: 0 auto;\n padding: 5px 10px;\n background: $background;\n color: transparentize($color, .7);\n font-size: .8rem;\n text-transform: uppercase;\n text-decoration: none;\n letter-spacing: .1em;\n z-index: 1;\n }\n\n hr {\n position: absolute;\n left: 0;\n right: 0;\n width: 100%;\n margin-top: 15px;\n z-index: 0;\n }\n }\n\n &__buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-flow: row wrap;\n gap: 10px;\n\n a {\n text-decoration: none;\n }\n }\n}\n\n.button {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 1rem;\n padding: 0;\n appearance: none;\n\n @media($phone) {\n flex: 1;\n }\n\n a {\n display: flex;\n justify-content: center;\n flex: 1;\n padding: 8px 16px;\n text-decoration: none;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &.next .button__icon {\n margin-left: 8px;\n }\n\n &.previous .button__icon {\n margin-right: 8px;\n }\n}\n", + ".footer {\n padding: 40px 0;\n flex-grow: 0;\n opacity: .5;\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0;\n width: 760px;\n max-width: 100%;\n\n @media ($tablet) {\n flex-direction: column;\n }\n }\n\n a {\n color: inherit;\n }\n\n .copyright {\n display: flex;\n flex-flow: row wrap;\n flex: 1;\n align-items: center;\n font-size: 1rem;\n justify-content: center;\n\n &--user {\n margin: auto;\n text-align: center;\n }\n\n & > *:first-child:not(:only-child) {\n margin-right: 10px;\n }\n\n span {\n white-space: nowrap;\n }\n }\n}\n", + "/* PrismJS 1.24.1\nhttps://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */\n/**\n * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML\n * Based on https://github.com/chriskempson/tomorrow-theme\n * @author Rose Pritchard\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: #ccc;\n\tbackground: none;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #2d2d2d;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.block-comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: #999;\n}\n\n.token.punctuation {\n\tcolor: #ccc;\n}\n\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted {\n\tcolor: #e2777a;\n}\n\n.token.function-name {\n\tcolor: #6196cc;\n}\n\n.token.boolean,\n.token.number,\n.token.function {\n\tcolor: #f08d49;\n}\n\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n\tcolor: #f8c555;\n}\n\n.token.selector,\n.token.important,\n.token.atrule,\n.token.keyword,\n.token.builtin {\n\tcolor: #cc99cd;\n}\n\n.token.string,\n.token.char,\n.token.attr-value,\n.token.regex,\n.token.variable {\n\tcolor: #7ec699;\n}\n\n.token.operator,\n.token.entity,\n.token.url {\n\tcolor: #67cdcc;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n\n.token.inserted {\n\tcolor: green;\n}\n\npre[data-line] {\n\tposition: relative;\n\tpadding: 1em 0 1em 3em;\n}\n\n.line-highlight {\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\tpadding: inherit 0;\n\tmargin-top: 1em; /* Same as .prism’s padding-top */\n\n\tbackground: hsla(24, 20%, 50%,.08);\n\tbackground: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));\n\n\tpointer-events: none;\n\n\tline-height: inherit;\n\twhite-space: pre;\n}\n\n@media print {\n\t.line-highlight {\n\t\t/*\n\t\t * This will prevent browsers from replacing the background color with white.\n\t\t * It's necessary because the element is layered on top of the displayed code.\n\t\t */\n\t\t-webkit-print-color-adjust: exact;\n\t\tcolor-adjust: exact;\n\t}\n}\n\n\t.line-highlight:before,\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-start);\n\t\tposition: absolute;\n\t\ttop: .4em;\n\t\tleft: .6em;\n\t\tmin-width: 1em;\n\t\tpadding: 0 .5em;\n\t\tbackground-color: hsla(24, 20%, 50%,.4);\n\t\tcolor: hsl(24, 20%, 95%);\n\t\tfont: bold 65%/1.5 sans-serif;\n\t\ttext-align: center;\n\t\tvertical-align: .3em;\n\t\tborder-radius: 999px;\n\t\ttext-shadow: none;\n\t\tbox-shadow: 0 1px white;\n\t}\n\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-end);\n\t\ttop: auto;\n\t\tbottom: .4em;\n\t}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n\tcontent: none;\n}\n\npre[id].linkable-line-numbers span.line-numbers-rows {\n\tpointer-events: all;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:before {\n\tcursor: pointer;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {\n\tbackground-color: rgba(128, 128, 128, .2);\n}\n\npre[class*=\"language-\"].line-numbers {\n\tposition: relative;\n\tpadding-left: 3.8em;\n\tcounter-reset: linenumber;\n}\n\npre[class*=\"language-\"].line-numbers > code {\n\tposition: relative;\n\twhite-space: inherit;\n}\n\n.line-numbers .line-numbers-rows {\n\tposition: absolute;\n\tpointer-events: none;\n\ttop: 0;\n\tfont-size: 100%;\n\tleft: -3.8em;\n\twidth: 3em; /* works for line-numbers below 1000 lines */\n\tletter-spacing: -1px;\n\tborder-right: 1px solid #999;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n}\n\n\t.line-numbers-rows > span {\n\t\tdisplay: block;\n\t\tcounter-increment: linenumber;\n\t}\n\n\t\t.line-numbers-rows > span:before {\n\t\t\tcontent: counter(linenumber);\n\t\t\tcolor: #999;\n\t\t\tdisplay: block;\n\t\t\tpadding-right: 0.8em;\n\t\t\ttext-align: right;\n\t\t}\n\n.command-line-prompt {\n\tborder-right: 1px solid #999;\n\tdisplay: block;\n\tfloat: left;\n\tfont-size: 100%;\n\tletter-spacing: -1px;\n\tmargin-right: 1em;\n\tpointer-events: none;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.command-line-prompt > span:before {\n\tcolor: #999;\n\tcontent: ' ';\n\tdisplay: block;\n\tpadding-right: 0.8em;\n}\n\n.command-line-prompt > span[data-user]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] $\";\n}\n\n.command-line-prompt > span[data-user=\"root\"]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] #\";\n}\n\n.command-line-prompt > span[data-prompt]:before {\n\tcontent: attr(data-prompt);\n}\n\ndiv.code-toolbar {\n\tposition: relative;\n}\n\ndiv.code-toolbar > .toolbar {\n\tposition: absolute;\n\ttop: .3em;\n\tright: .2em;\n\ttransition: opacity 0.3s ease-in-out;\n\topacity: 0;\n}\n\ndiv.code-toolbar:hover > .toolbar {\n\topacity: 1;\n}\n\n/* Separate line b/c rules are thrown out if selector is invalid.\n IE11 and old Edge versions don't support :focus-within. */\ndiv.code-toolbar:focus-within > .toolbar {\n\topacity: 1;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item {\n\tdisplay: inline-block;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a {\n\tcursor: pointer;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > button {\n\tbackground: none;\n\tborder: 0;\n\tcolor: inherit;\n\tfont: inherit;\n\tline-height: normal;\n\toverflow: visible;\n\tpadding: 0;\n\t-webkit-user-select: none; /* for button */\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n\tcolor: #bbb;\n\tfont-size: .8em;\n\tpadding: 0 .5em;\n\tbackground: #f5f2f0;\n\tbackground: rgba(224, 224, 224, 0.2);\n\tbox-shadow: 0 2px 0 0 rgba(0,0,0,0.2);\n\tborder-radius: .5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > a:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:focus {\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n", + "code.language-css,\ncode.language-scss,\n.token.boolean,\n.token.string,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.language-scss .token.string,\n.style .token.string,\n.token.attr-value,\n.token.keyword,\n.token.control,\n.token.directive,\n.token.statement,\n.token.regex,\n.token.atrule,\n.token.number,\n.token.inserted,\n.token.important {\n color: $accent !important;\n}\n\n.token.tag-id,\n.token.atrule-id,\n.token.operator,\n.token.unit,\n.token.placeholder,\n.token.variable,\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted,\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n color: transparentize($accent, .3) !important;\n}\n\n.token.property,\n.token.function,\n.token.function-name,\n.token.deleted,\ncode.language-javascript,\ncode.language-html,\n.command-line-prompt > span:before {\n color: mix($accent, #999, .9) !important;\n}\n\n.token.selector,\n.token.tag,\n.token.punctuation {\n color: white;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: rgba(255, 255, 255, .3) !important;\n}\n\n.token.namespace {\n opacity: .7 !important;\n}\n\npre[data-line] {\n position: relative;\n}\n\npre[class*=\"language-\"] {\n margin: 0;\n padding: 0;\n overflow: auto;\n}\n\n.line-highlight {\n position: absolute;\n left: 0;\n right: 0;\n padding: 0;\n margin: 0;\n background: transparentize(mix($accent, #999, 90%), .92);\n pointer-events: none;\n line-height: inherit;\n white-space: pre;\n}\n\n.line-highlight:before,\n.line-highlight[data-end]:after {\n content: attr(data-start);\n position: absolute;\n /* top: .4em; */\n left: .6em;\n min-width: 1em;\n padding: 0 .5em;\n background-color: hsla(24, 20%, 50%, .4);\n color: hsl(24, 20%, 95%);\n font: bold 65%/1.5 sans-serif;\n text-align: center;\n vertical-align: .3em;\n border-radius: 999px;\n text-shadow: none;\n box-shadow: 0 1px white;\n}\n\n.line-highlight[data-end]:after {\n content: attr(data-end);\n top: auto;\n bottom: .4em;\n}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n content: none;\n}\n\n.code-toolbar {\n $code-margin: 40px;\n\tposition: relative;\n\tmargin: $code-margin 0;\n\tpadding: 20px;\n\tborder: 1px solid rgba(255, 255, 255, .1);\n\n\t+ .code-toolbar,\n\t+ .highlight,\n\t+ .highlight .code-toolbar {\n\t\tborder-top: 0;\n\t\tmargin-top: calc(-1 * $code-margin);\n\t}\n\n\tpre, code {\n\t\tborder: none;\n\t}\n\n\tcode {\n\t\tdisplay: block;\n\t\tcolor: inherit;\n\t}\n\n > .toolbar {\n button {\n font-size: .8em !important;\n background: hsla(0,0%,87.8%,.2) !important;\n color: #bbb !important;\n box-shadow: 0 2px 0 0 rgba(0,0,0,.2) !important;\n border-radius: 0 !important;\n margin: 6px !important;\n padding: 10px !important;\n user-select:none\n }\n }\n}\n", + ".collapsable-code {\n $border-color: mix($accent, #999, 90%);\n\n position: relative;\n width: 100%;\n margin: 40px 0;\n\n input[type=\"checkbox\"] {\n position: absolute;\n visibility: hidden;\n }\n\n input[type=\"checkbox\"]:checked {\n ~ pre,\n ~ .code-toolbar pre {\n height: 0;\n padding: 0;\n border-top: none;\n }\n\n ~ .code-toolbar {\n padding: 0;\n border-top: none;\n\n .toolbar {\n display: none;\n }\n }\n\n ~ label .collapsable-code__toggle:after {\n content: attr(data-label-expand);\n }\n }\n\n label {\n position: relative;\n display: flex;\n justify-content: space-between;\n min-width: 30px;\n min-height: 30px;\n margin: 0;\n border-bottom: 1px solid $border-color;\n cursor: pointer;\n }\n\n &__title {\n flex: 1;\n color: $accent;\n padding: 3px 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__language {\n color: $accent;\n border: 1px solid $border-color;\n border-bottom: none;\n text-transform: uppercase;\n padding: 3px 10px;\n }\n\n &__toggle {\n color: $accent;\n font-size: 16px;\n padding: 3px 10px;\n\n &:after {\n content: attr(data-label-collapse);\n }\n }\n\n pre {\n margin-top: 0;\n\n &::first-line {\n line-height: 0;\n }\n }\n\n .code-toolbar {\n margin: 0;\n }\n}\n", + ".terms {\n h1 {\n color: $accent;\n }\n\n h3 {\n font-size: initial;\n }\n}\n", + "body .gist .blob-num /* line numbers */,\nbody .gist .blob-code-inner\n{\n border: none;\n}\n\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/public/tags/dotnet/index.html b/public/tags/dotnet/index.html new file mode 100644 index 0000000..a3fa521 --- /dev/null +++ b/public/tags/dotnet/index.html @@ -0,0 +1,228 @@ + + + + + dotnet :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+
+ + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + +
+ + Have you ever thought about making a web application, that could be easily extended by third-party developers? I’ve been thinking about making this app for a while, so here’s my experience… + +
+ + + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/dotnet/index.xml b/public/tags/dotnet/index.xml new file mode 100644 index 0000000..bb8964b --- /dev/null +++ b/public/tags/dotnet/index.xml @@ -0,0 +1,123 @@ + + + + dotnet on the1mason + the1mason.com/tags/dotnet/ + Recent content in dotnet on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + #1 Plugin-Based Web App in Dotnet - The Idea + the1mason.com/posts/modular-app-1/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/posts/modular-app-1/ + Chapters Writing those takes time. Expect to see one published per one-two weeks. +Idea, Stack +Loading plugins +PluginBase, IPlugin +Creating plugin, DependencyInjection +Controllers, Views +Hooks and Triggers - better event system +Advanced: Unit tests, unloading plugins +Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. + <script src="the1mason.com/js/repo-card.js"></script> +<div class="repo-card" data-repo="the1mason/Prototype.ModularMVC" data-theme="dark-theme"></div> +<h1 id="chapters">Chapters</h1> +<p>Writing those takes time. Expect to see one published per one-two weeks.</p> +<ol> +<li> +<p>Idea, Stack</p> +</li> +<li> +<p><del>Loading plugins</del></p> +</li> +<li> +<p><del>PluginBase, IPlugin</del></p> +</li> +<li> +<p><del>Creating plugin, DependencyInjection</del></p> +</li> +<li> +<p><del>Controllers, Views</del></p> +</li> +<li> +<p><del>Hooks and Triggers - better event system</del></p> +</li> +<li> +<p><del>Advanced: Unit tests, unloading plugins</del></p> +</li> +</ol> +<h1 id="introduction">Introduction</h1> +<p>Have you ever heard of plugins? These are loadable libraries, extending your application.<br> +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.</p> +<p><em>I assume some that readers have some knowledge of C# and design patterns</em></p> +<h1 id="problem">Problem</h1> +<p>Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn&rsquo;t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.</p> +<h1 id="choosing-my-stack">Choosing my stack</h1> +<p><img src="the1mason.com/posts/modular-app/stack.svg" alt="C#, MVC, HTMX"></p> +<hr> +<p><strong>C#</strong></p> +<p>I&rsquo;m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn&rsquo;t been described in detail as much online.</p> +<p>I haven&rsquo;t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture&hellip; Well, there&rsquo;s even a <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Microsoft Learn Article</a> about building such an app!</p> +<blockquote> +<p><strong>Q:</strong> Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?</p> +</blockquote> +<blockquote> +<p><strong>A:</strong> You see&hellip; there&rsquo;s a problem: Neither <code>learn.microsoft.com</code> nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it&rsquo;s the right place. Also just loading libraries isn&rsquo;t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!</p> +</blockquote> +<hr> +<p><strong>MVC with HTMX</strong></p> +<p>ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.</p> +<div style="display: flex; justify-content: center"> + <img src="the1mason.com/posts/modular-app/createdwith.jpeg" style="height: 100px;"/> +</div> +<br> +<p>HTMX uses <a href="https://htmx.org/essays/hateoas/">Hypermedia as the Engine of Application State (HATEOAS)</a> - it&rsquo;s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won&rsquo;t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won&rsquo;t give the link to withdraw money, making this action impossible in the first place.</p> +<p>HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.</p> +<blockquote> +<p>Have you heard about Blazor WASM? You can just write client code in C#!</p> +</blockquote> +<p>Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won&rsquo;t be able to extend the client. Also it&rsquo;s initial load time is stupidly slow.</p> +<hr> +<p>The next article will cover the following topocs: Loading plugins in runtime, creating plugin&rsquo;s instances, app-plugin communication. I&rsquo;ll have the link here when I&rsquo;m done writing it!</p> +<!-- +--- + +# Loading plugins + +C#, being a compiled language, can't be extended as easily as interpreted languages like Pytnon or PHP. To load plugins, we will need to load precompiled libraries dynamically after the app is compiled. To do this, [Microsoft Learn Article, mentioned before](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) suggests using custom AssemblyLoadContext with AssemblyDependencyResolver. + +> Wait, wait, wait! Using... what? I'm pretty sure you could just `Assembly.Load()` stuff, right? + +Not so easy! If you want to build a really working plugin system, you need a way to determine: whether this assembly has dependencies or not, and what are they. + +Let's imagine, that our plugin uses `Newtonsoft.Json` library - one of the all-time most popular C# libraries. Should we load it together with the plugin and how do we find it? +C# has a built-in mechanism to resolve dependencies. When you compile your project, aside from `Project.Name.dll` you would have `Project.Name.deps.json` file, that will include paths to all it's dependencies! That's where `AssemblyDependencyResolver` comes in. It'll find all of plugin's `.dll` dependencies and load those as well. + +> And also! What it two plugins will have the same library, but conflicting versions? Would we be able to load to of the same assemblies? + +No! And yes. +`AssemblyLoadContext` is used exactly for this. Along with `AssemblyDependencyResolver`, it will create an isolated context with current assembly and all it's dependencies. This will allow multiple plugins to have same dependencies with different versions. + +There's an example of such custom AssemblyLoadContext [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/PluginLoadContext.cs) and also an example of this context being used [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/Impl/PluginLoaders/ManifestBasedPluginLoader.cs#L89). + +--- + + +# Plugin - App interaction + +So now we figured out how we load stuff. Now: how do we interact with the app from out plugins? + +First, we make all plugins to referense the `Prototype.PluginBase` project. This project will provide types that both plugin and our server can understand. We'll build communication using those. + +**Dependency Injection** + +Before the app is built and ran, --> + + + + diff --git a/public/tags/dotnet/page/1/index.html b/public/tags/dotnet/page/1/index.html new file mode 100644 index 0000000..7f3c2cd --- /dev/null +++ b/public/tags/dotnet/page/1/index.html @@ -0,0 +1,10 @@ + + + + the1mason.com/tags/dotnet/ + + + + + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..31cfd5f --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,200 @@ + + + + + Tags :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ +
+

Tags

+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..7048b00 --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,41 @@ + + + + Tags on the1mason + the1mason.com/tags/ + Recent content in Tags on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + dotnet + the1mason.com/tags/dotnet/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/tags/dotnet/ + + + + + + prototype + the1mason.com/tags/prototype/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/tags/prototype/ + + + + + + web + the1mason.com/tags/web/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/tags/web/ + + + + + + diff --git a/public/tags/prototype/index.html b/public/tags/prototype/index.html new file mode 100644 index 0000000..60d88c7 --- /dev/null +++ b/public/tags/prototype/index.html @@ -0,0 +1,228 @@ + + + + + prototype :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + +
+ + Have you ever thought about making a web application, that could be easily extended by third-party developers? I’ve been thinking about making this app for a while, so here’s my experience… + +
+ + + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/prototype/index.xml b/public/tags/prototype/index.xml new file mode 100644 index 0000000..ff4395a --- /dev/null +++ b/public/tags/prototype/index.xml @@ -0,0 +1,123 @@ + + + + prototype on the1mason + the1mason.com/tags/prototype/ + Recent content in prototype on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + #1 Plugin-Based Web App in Dotnet - The Idea + the1mason.com/posts/modular-app-1/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/posts/modular-app-1/ + Chapters Writing those takes time. Expect to see one published per one-two weeks. +Idea, Stack +Loading plugins +PluginBase, IPlugin +Creating plugin, DependencyInjection +Controllers, Views +Hooks and Triggers - better event system +Advanced: Unit tests, unloading plugins +Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. + <script src="the1mason.com/js/repo-card.js"></script> +<div class="repo-card" data-repo="the1mason/Prototype.ModularMVC" data-theme="dark-theme"></div> +<h1 id="chapters">Chapters</h1> +<p>Writing those takes time. Expect to see one published per one-two weeks.</p> +<ol> +<li> +<p>Idea, Stack</p> +</li> +<li> +<p><del>Loading plugins</del></p> +</li> +<li> +<p><del>PluginBase, IPlugin</del></p> +</li> +<li> +<p><del>Creating plugin, DependencyInjection</del></p> +</li> +<li> +<p><del>Controllers, Views</del></p> +</li> +<li> +<p><del>Hooks and Triggers - better event system</del></p> +</li> +<li> +<p><del>Advanced: Unit tests, unloading plugins</del></p> +</li> +</ol> +<h1 id="introduction">Introduction</h1> +<p>Have you ever heard of plugins? These are loadable libraries, extending your application.<br> +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.</p> +<p><em>I assume some that readers have some knowledge of C# and design patterns</em></p> +<h1 id="problem">Problem</h1> +<p>Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn&rsquo;t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.</p> +<h1 id="choosing-my-stack">Choosing my stack</h1> +<p><img src="the1mason.com/posts/modular-app/stack.svg" alt="C#, MVC, HTMX"></p> +<hr> +<p><strong>C#</strong></p> +<p>I&rsquo;m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn&rsquo;t been described in detail as much online.</p> +<p>I haven&rsquo;t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture&hellip; Well, there&rsquo;s even a <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Microsoft Learn Article</a> about building such an app!</p> +<blockquote> +<p><strong>Q:</strong> Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?</p> +</blockquote> +<blockquote> +<p><strong>A:</strong> You see&hellip; there&rsquo;s a problem: Neither <code>learn.microsoft.com</code> nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it&rsquo;s the right place. Also just loading libraries isn&rsquo;t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!</p> +</blockquote> +<hr> +<p><strong>MVC with HTMX</strong></p> +<p>ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.</p> +<div style="display: flex; justify-content: center"> + <img src="the1mason.com/posts/modular-app/createdwith.jpeg" style="height: 100px;"/> +</div> +<br> +<p>HTMX uses <a href="https://htmx.org/essays/hateoas/">Hypermedia as the Engine of Application State (HATEOAS)</a> - it&rsquo;s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won&rsquo;t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won&rsquo;t give the link to withdraw money, making this action impossible in the first place.</p> +<p>HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.</p> +<blockquote> +<p>Have you heard about Blazor WASM? You can just write client code in C#!</p> +</blockquote> +<p>Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won&rsquo;t be able to extend the client. Also it&rsquo;s initial load time is stupidly slow.</p> +<hr> +<p>The next article will cover the following topocs: Loading plugins in runtime, creating plugin&rsquo;s instances, app-plugin communication. I&rsquo;ll have the link here when I&rsquo;m done writing it!</p> +<!-- +--- + +# Loading plugins + +C#, being a compiled language, can't be extended as easily as interpreted languages like Pytnon or PHP. To load plugins, we will need to load precompiled libraries dynamically after the app is compiled. To do this, [Microsoft Learn Article, mentioned before](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) suggests using custom AssemblyLoadContext with AssemblyDependencyResolver. + +> Wait, wait, wait! Using... what? I'm pretty sure you could just `Assembly.Load()` stuff, right? + +Not so easy! If you want to build a really working plugin system, you need a way to determine: whether this assembly has dependencies or not, and what are they. + +Let's imagine, that our plugin uses `Newtonsoft.Json` library - one of the all-time most popular C# libraries. Should we load it together with the plugin and how do we find it? +C# has a built-in mechanism to resolve dependencies. When you compile your project, aside from `Project.Name.dll` you would have `Project.Name.deps.json` file, that will include paths to all it's dependencies! That's where `AssemblyDependencyResolver` comes in. It'll find all of plugin's `.dll` dependencies and load those as well. + +> And also! What it two plugins will have the same library, but conflicting versions? Would we be able to load to of the same assemblies? + +No! And yes. +`AssemblyLoadContext` is used exactly for this. Along with `AssemblyDependencyResolver`, it will create an isolated context with current assembly and all it's dependencies. This will allow multiple plugins to have same dependencies with different versions. + +There's an example of such custom AssemblyLoadContext [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/PluginLoadContext.cs) and also an example of this context being used [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/Impl/PluginLoaders/ManifestBasedPluginLoader.cs#L89). + +--- + + +# Plugin - App interaction + +So now we figured out how we load stuff. Now: how do we interact with the app from out plugins? + +First, we make all plugins to referense the `Prototype.PluginBase` project. This project will provide types that both plugin and our server can understand. We'll build communication using those. + +**Dependency Injection** + +Before the app is built and ran, --> + + + + diff --git a/public/tags/prototype/page/1/index.html b/public/tags/prototype/page/1/index.html new file mode 100644 index 0000000..9d47cfe --- /dev/null +++ b/public/tags/prototype/page/1/index.html @@ -0,0 +1,10 @@ + + + + the1mason.com/tags/prototype/ + + + + + + diff --git a/public/tags/web/index.html b/public/tags/web/index.html new file mode 100644 index 0000000..6f18839 --- /dev/null +++ b/public/tags/web/index.html @@ -0,0 +1,228 @@ + + + + + web :: the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ #1 Plugin-Based Web App in Dotnet - The Idea +

+ + + + + + + + #1 Plugin-Based Web App in Dotnet - The Idea + + +
+ + Have you ever thought about making a web application, that could be easily extended by third-party developers? I’ve been thinking about making this app for a while, so here’s my experience… + +
+ + + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/web/index.xml b/public/tags/web/index.xml new file mode 100644 index 0000000..34db6a2 --- /dev/null +++ b/public/tags/web/index.xml @@ -0,0 +1,123 @@ + + + + web on the1mason + the1mason.com/tags/web/ + Recent content in web on the1mason + Hugo -- gohugo.io + en + Sat, 20 Jan 2024 00:00:00 +0000 + + #1 Plugin-Based Web App in Dotnet - The Idea + the1mason.com/posts/modular-app-1/ + Sat, 20 Jan 2024 00:00:00 +0000 + + the1mason.com/posts/modular-app-1/ + Chapters Writing those takes time. Expect to see one published per one-two weeks. +Idea, Stack +Loading plugins +PluginBase, IPlugin +Creating plugin, DependencyInjection +Controllers, Views +Hooks and Triggers - better event system +Advanced: Unit tests, unloading plugins +Introduction Have you ever heard of plugins? These are loadable libraries, extending your application. +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. + <script src="the1mason.com/js/repo-card.js"></script> +<div class="repo-card" data-repo="the1mason/Prototype.ModularMVC" data-theme="dark-theme"></div> +<h1 id="chapters">Chapters</h1> +<p>Writing those takes time. Expect to see one published per one-two weeks.</p> +<ol> +<li> +<p>Idea, Stack</p> +</li> +<li> +<p><del>Loading plugins</del></p> +</li> +<li> +<p><del>PluginBase, IPlugin</del></p> +</li> +<li> +<p><del>Creating plugin, DependencyInjection</del></p> +</li> +<li> +<p><del>Controllers, Views</del></p> +</li> +<li> +<p><del>Hooks and Triggers - better event system</del></p> +</li> +<li> +<p><del>Advanced: Unit tests, unloading plugins</del></p> +</li> +</ol> +<h1 id="introduction">Introduction</h1> +<p>Have you ever heard of plugins? These are loadable libraries, extending your application.<br> +This series of articles is an overview of my plugin-based web application prototype and mechanisms behind it&rsquo;s features, as well as my thought process and decision making during development. These articles are a step by step guide to making your own plugin-based web app prototype.</p> +<p><em>I assume some that readers have some knowledge of C# and design patterns</em></p> +<h1 id="problem">Problem</h1> +<p>Self-hosted web applications can solve different problems and be of use to a variety of different people with slightly different needs. For this to work, I think that such an application should provide an option to extend its functionality. This would allow other people to build an ecosystem of different extensions around it. For example, a shopping website might have plugins for different payment systems, or a comment section under the product page. For me this also means, that instead of making one feature-rich website, that would be so specific to my needs, that it wouldn&rsquo;t of any use to anyone but me, I can write a bunch of smaller modules, that could be used by someone, without having to configure other modules.</p> +<h1 id="choosing-my-stack">Choosing my stack</h1> +<p><img src="the1mason.com/posts/modular-app/stack.svg" alt="C#, MVC, HTMX"></p> +<hr> +<p><strong>C#</strong></p> +<p>I&rsquo;m a dotnet developer and I write C# code for living. This project is as much of an excersise for me as it is an interesting design prototype for C#, that hasn&rsquo;t been described in detail as much online.</p> +<p>I haven&rsquo;t seen such plugin-based sites written in C#. There are some projects, using plugin based architecture&hellip; Well, there&rsquo;s even a <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Microsoft Learn Article</a> about building such an app!</p> +<blockquote> +<p><strong>Q:</strong> Why would I even bother to write all these posts and making prototypes? Even more: Why would someone be interested in such post?</p> +</blockquote> +<blockquote> +<p><strong>A:</strong> You see&hellip; there&rsquo;s a problem: Neither <code>learn.microsoft.com</code> nor any other webside covers dynamically updating web interface with plugins! If you want to learn about it, it&rsquo;s the right place. Also just loading libraries isn&rsquo;t enough because app also has to provide some ways for plugins to interact with it, which is also covered here!</p> +</blockquote> +<hr> +<p><strong>MVC with HTMX</strong></p> +<p>ASP.NET MVC is a web framework, that incorporates the MVC design pattern and uses SSR (Server Side Rendering) to serve content. It is a perfect fit for the HTMX library. This is a compact JavaScript library that extends basic HTML by adding some custom attributes just enough to build your app around it. You can distribute events, make AJAX requests and build truly dynamic app by using as little JS as possible.</p> +<div style="display: flex; justify-content: center"> + <img src="the1mason.com/posts/modular-app/createdwith.jpeg" style="height: 100px;"/> +</div> +<br> +<p>HTMX uses <a href="https://htmx.org/essays/hateoas/">Hypermedia as the Engine of Application State (HATEOAS)</a> - it&rsquo;s a principle that leaves all state handling to the server, providing the client only with a set of actions that it can take. +Your regular SPA will get raw data from the server (like bank balance) and based on it, it will show or hide certain actions (like we won&rsquo;t show the withdrawal option if balance is 0 or less). With HATEOAS, the server just won&rsquo;t give the link to withdraw money, making this action impossible in the first place.</p> +<p>HTMX would allow this app to be extended more easily as well. Most of the modern JS frameworks require transpiling, bundling and other sorts of stuff. This means that when a plugin is installed the client is most likely will have to be rebuilt. This is slow and needs additional dependencies.</p> +<blockquote> +<p>Have you heard about Blazor WASM? You can just write client code in C#!</p> +</blockquote> +<p>Blazor WASM does not support dynamic loading for plugins. Because of that, plugins won&rsquo;t be able to extend the client. Also it&rsquo;s initial load time is stupidly slow.</p> +<hr> +<p>The next article will cover the following topocs: Loading plugins in runtime, creating plugin&rsquo;s instances, app-plugin communication. I&rsquo;ll have the link here when I&rsquo;m done writing it!</p> +<!-- +--- + +# Loading plugins + +C#, being a compiled language, can't be extended as easily as interpreted languages like Pytnon or PHP. To load plugins, we will need to load precompiled libraries dynamically after the app is compiled. To do this, [Microsoft Learn Article, mentioned before](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) suggests using custom AssemblyLoadContext with AssemblyDependencyResolver. + +> Wait, wait, wait! Using... what? I'm pretty sure you could just `Assembly.Load()` stuff, right? + +Not so easy! If you want to build a really working plugin system, you need a way to determine: whether this assembly has dependencies or not, and what are they. + +Let's imagine, that our plugin uses `Newtonsoft.Json` library - one of the all-time most popular C# libraries. Should we load it together with the plugin and how do we find it? +C# has a built-in mechanism to resolve dependencies. When you compile your project, aside from `Project.Name.dll` you would have `Project.Name.deps.json` file, that will include paths to all it's dependencies! That's where `AssemblyDependencyResolver` comes in. It'll find all of plugin's `.dll` dependencies and load those as well. + +> And also! What it two plugins will have the same library, but conflicting versions? Would we be able to load to of the same assemblies? + +No! And yes. +`AssemblyLoadContext` is used exactly for this. Along with `AssemblyDependencyResolver`, it will create an isolated context with current assembly and all it's dependencies. This will allow multiple plugins to have same dependencies with different versions. + +There's an example of such custom AssemblyLoadContext [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/PluginLoadContext.cs) and also an example of this context being used [Click Me](https://github.com/the1mason/Prototype.ModularMVC/blob/main/Prototype.ModularMVC.App/Prototype.ModularMVC.PluginBase/Impl/PluginLoaders/ManifestBasedPluginLoader.cs#L89). + +--- + + +# Plugin - App interaction + +So now we figured out how we load stuff. Now: how do we interact with the app from out plugins? + +First, we make all plugins to referense the `Prototype.PluginBase` project. This project will provide types that both plugin and our server can understand. We'll build communication using those. + +**Dependency Injection** + +Before the app is built and ran, --> + + + + diff --git a/public/tags/web/page/1/index.html b/public/tags/web/page/1/index.html new file mode 100644 index 0000000..779ce3f --- /dev/null +++ b/public/tags/web/page/1/index.html @@ -0,0 +1,10 @@ + + + + the1mason.com/tags/web/ + + + + + + diff --git a/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.content b/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.content new file mode 100644 index 0000000..eec46bc --- /dev/null +++ b/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.content @@ -0,0 +1,3 @@ +:root{--phoneWidth: (max-width: 684px);--tabletWidth: (max-width: 900px)}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin-bottom:5px;text-decoration:none;text-align:center;border-radius:8;border:1px solid #FF6266;background:#FF6266;color:#221f29;font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:rgba(255,98,102,0.9)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:#FF6266;background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:#FF6266;border:1px solid #FF6266;border-radius:0;padding:10px;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:#fff;outline:1px solid #fff}input:active,textarea:active,select:active{box-shadow:none}select{background:#221f29}select option{background:#221f29}::placeholder{color:rgba(255,98,102,0.5)}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, #FF6266, #FF6266 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:#FF6266;user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:#221f29;box-shadow:0 10px rgba(34,31,41,0.8),-10px 10px rgba(34,31,41,0.8),10px 10px rgba(34,31,41,0.8);color:white;border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;background:#FF6266;color:black;padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:#221f29;color:#fff;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:#FF6266;color:#221f29}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:rgba(255,98,102,0.2);color:#FF6266;padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid #FF6266;border-bottom:1px solid #FF6266;margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:#FF6266}blockquote.twitter-tweet{position:relative;background:rgba(255,98,102,0.1);font:inherit;color:inherit;border:1px solid #FF6266;padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:#FF6266;font-weight:bold}blockquote.twitter-tweet a{color:#FF6266}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed #FF6266;padding:10px}th{color:#FF6266}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol li{counter-increment:li}ol li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:#FF6266;display:inline-block;text-align:right}ol ol{margin-left:38px}ol ol li{counter-increment:li}ol ol li:before{content:counters(li, ".") " "}mark{background:#FF6266;color:#221f29}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:rgba(255,255,255,0.1);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid #FF6266;padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid rgba(255,255,255,0.1)}.post-meta{font-size:1rem;margin-bottom:10px;color:rgba(255,98,102,0.7)}.post-title{position:relative;color:#FF6266;margin:0 0 15px;padding-bottom:15px;border-bottom:3px dotted #FF6266}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted #FF6266}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-cover{border:20px solid #FF6266;background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:rgba(255,98,102,0.9);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:rgba(255,255,255,0.5)}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:#221f29;color:rgba(255,255,255,0.3);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:#FF6266 !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:rgba(255,98,102,0.7) !important}.token.property,.token.function,.token.function-name,.token.deleted,code.language-javascript,code.language-html,.command-line-prompt>span:before{color:#9a9999 !important}.token.selector,.token.tag,.token.punctuation{color:white}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:rgba(255,255,255,0.3) !important}.token.namespace{opacity:.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:rgba(245,104,107,0.08);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{position:relative;margin:40px 0;padding:20px;border:1px solid rgba(255,255,255,0.1)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * $code-margin)}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:.8em !important;background:rgba(224,224,224,0.2) !important;color:#bbb !important;box-shadow:0 2px 0 0 rgba(0,0,0,0.2) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid #f5686b;cursor:pointer}.collapsable-code__title{flex:1;color:#FF6266;padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:#FF6266;border:1px solid #f5686b;border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:#FF6266;font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h1{color:#FF6266}.terms h3{font-size:initial}body .gist .blob-num,body .gist .blob-code-inner{border:none} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.json b/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.json new file mode 100644 index 0000000..e7b8e7c --- /dev/null +++ b/resources/_gen/assets/scss/the1mason.com/css/base.scss_3b33337114e481782feeb60752452e17.json @@ -0,0 +1 @@ +{"Target":"styles.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.content b/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.content new file mode 100644 index 0000000..02d3ba1 --- /dev/null +++ b/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.content @@ -0,0 +1,1191 @@ +@charset "UTF-8"; +/* COLOR VARIABLES */ +/* MEDIA QUERIES */ +/* variables for js, must be the same as these in @custom-media queries */ +:root { + --phoneWidth: (max-width: 684px); + --tabletWidth: (max-width: 900px); } + +@font-face { + font-display: swap; + font-family: 'Fira Code'; + font-style: normal; + font-weight: 400; + src: url("../fonts/FiraCode-Regular.woff") format("woff"); } + +@font-face { + font-display: swap; + font-family: 'Fira Code'; + font-style: normal; + font-weight: 800; + src: url("../fonts/FiraCode-Bold.woff") format("woff"); } + +.button-container { + display: table; + margin-left: auto; + margin-right: auto; } + +button, +.button, +a.button { + position: relative; + display: flex; + align-items: center; + justify-content: center; + padding: 8px 18px; + margin-bottom: 5px; + text-decoration: none; + text-align: center; + border-radius: 8; + border: 1px solid #FF6266; + background: #FF6266; + color: #221f29; + font: inherit; + font-weight: bold; + appearance: none; + cursor: pointer; + outline: none; + /* variants */ + /* sizes */ } + button:hover, + .button:hover, + a.button:hover { + background: rgba(255, 98, 102, 0.9); } + button.outline, + .button.outline, + a.button.outline { + background: transparent; + box-shadow: none; + padding: 8px 18px; } + button.outline :hover, + .button.outline :hover, + a.button.outline :hover { + transform: none; + box-shadow: none; } + button.link, + .button.link, + a.button.link { + background: none; + font-size: 1rem; } + button.small, + .button.small, + a.button.small { + font-size: .8rem; } + button.wide, + .button.wide, + a.button.wide { + min-width: 200px; + padding: 14px 24px; } + +a.read-more, +a.read-more:hover, +a.read-more:active { + display: inline-flex; + border: none; + color: #FF6266; + background: none; + box-shadow: none; + padding: 0; + margin: 20px 0; + max-width: 100%; } + +.code-toolbar { + margin-bottom: 20px; } + .code-toolbar .toolbar-item a { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 3px 8px; + margin-bottom: 5px; + text-decoration: none; + text-align: center; + font-size: 13px; + font-weight: 500; + border-radius: 8px; + border: 1px solid transparent; + appearance: none; + cursor: pointer; + outline: none; } + +input, textarea, select { + background: transparent; + color: #FF6266; + border: 1px solid #FF6266; + border-radius: 0; + padding: 10px; + font: inherit; + appearance: none; } + input:focus, input :active, textarea:focus, textarea :active, select:focus, select :active { + border-color: white; + outline: 1px solid white; } + input:active, textarea:active, select:active { + box-shadow: none; } + +select { + background: #221f29; } + select option { + background: #221f29; } + +::placeholder { + color: rgba(255, 98, 102, 0.5); } + +.header { + display: flex; + flex-direction: column; + position: relative; } + @media print { + .header { + display: none; } } + .header__inner { + display: flex; + align-items: center; + justify-content: space-between; } + .header__logo { + display: flex; + flex: 1; } + .header__logo:after { + content: ''; + background: repeating-linear-gradient(90deg, #FF6266, #FF6266 2px, transparent 0, transparent 10px); + display: block; + width: 100%; + right: 10px; } + .header__logo a { + flex: 0 0 auto; + max-width: 100%; + text-decoration: none; } + +.navigation-menu { + display: flex; + align-items: flex-start; + justify-content: space-between; + margin: 20px 1px; } + @media (max-width: 684px) { + .navigation-menu { + margin: 0; } } + .navigation-menu__inner { + display: flex; + flex: 1; + flex-wrap: wrap; + list-style: none; + margin: 0; + padding: 0; } + .navigation-menu__inner > li { + flex: 0 0 auto; + margin-bottom: 10px; + white-space: nowrap; } + .navigation-menu__inner > li:not(:last-of-type) { + margin-right: 20px; } + @media (max-width: 684px) { + .navigation-menu__inner { + flex-direction: column; + align-items: flex-start; + padding: 0; } + .navigation-menu__inner li { + margin: 0; + padding: 5px; } } + .navigation-menu .spacer { + flex-grow: 1 !important; } + +.menu { + display: flex; + flex-direction: column; + position: relative; + list-style: none; + padding: 0; + margin: 0; } + .menu__trigger { + margin-right: 0 !important; + color: #FF6266; + user-select: none; + cursor: pointer; } + .menu__dropdown { + display: none; + flex-direction: column; + position: absolute; + background: #221f29; + box-shadow: 0 10px rgba(34, 31, 41, 0.8), -10px 10px rgba(34, 31, 41, 0.8), 10px 10px rgba(34, 31, 41, 0.8); + color: white; + border: 2px solid; + margin: 0; + padding: 10px; + top: 10px; + left: 0; + list-style: none; + z-index: 99; } + .open .menu__dropdown { + display: flex; } + .menu__dropdown > li { + flex: 0 0 auto; } + .menu__dropdown > li:not(:last-of-type) { + margin-bottom: 10px; } + .menu__dropdown > li a { + display: flex; + padding: 5px; } + @media (max-width: 684px) { + .menu--desktop { + display: none; } } + .menu--mobile .menu__trigger { + color: #FF6266; + border: 2px solid; + margin-left: 10px; + height: 100%; + padding: 3px 8px; + margin-bottom: 0 !important; + position: relative; + cursor: pointer; + display: none; } + @media (max-width: 684px) { + .menu--mobile .menu__trigger { + display: block; } } + @media (max-width: 684px) { + .menu--mobile .menu__dropdown { + left: auto; + right: 0; } } + .menu--mobile li { + flex: 0 0 auto; } + .menu--mobile li:not(:last-of-type) { + margin-bottom: 10px; } + .menu--language-selector .menu__trigger { + color: #FF6266; + border: 2px solid; + margin-left: 10px; + height: 100%; + padding: 3px 8px; + margin-bottom: 0 !important; + position: relative; + cursor: pointer; } + @media (max-width: 684px) { + .menu--language-selector .menu__trigger { + display: none; } } + .menu--language-selector .menu__dropdown { + left: auto; + right: 0; } + +.logo { + display: flex; + align-items: center; + text-decoration: none; + background: #FF6266; + color: black; + padding: 5px 10px; } + +html { + box-sizing: border-box; } + +*, +*:before, +*:after { + box-sizing: inherit; } + +body { + margin: 0; + padding: 0; + font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace; + font-size: 1rem; + line-height: 1.54; + letter-spacing: -0.02em; + background-color: #221f29; + color: white; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + font-feature-settings: "liga", "tnum", "zero", "ss01", "locl"; + font-variant-ligatures: contextual; + -webkit-overflow-scrolling: touch; + -webkit-text-size-adjust: 100%; } + @media (max-width: 684px) { + body { + font-size: 1rem; } } +.headings--one-size h1, +.headings--one-size h2, +.headings--one-size h3, +.headings--one-size h4, +.headings--one-size h5, +.headings--one-size h6 { + line-height: 1.3; } + .headings--one-size h1:not(first-child), + .headings--one-size h2:not(first-child), + .headings--one-size h3:not(first-child), + .headings--one-size h4:not(first-child), + .headings--one-size h5:not(first-child), + .headings--one-size h6:not(first-child) { + margin-top: 40px; } + +.headings--one-size h1, +.headings--one-size h2, +.headings--one-size h3 { + font-size: 1.4rem; } + +.headings--one-size h4, +.headings--one-size h5, +.headings--one-size h6 { + font-size: 1.2rem; } + +a { + color: inherit; + /* Waiting for a better times... */ + /* &:has(code) { + text-decoration-color: $accent; + } */ } + +img { + display: block; + max-width: 100%; } + img.left { + margin-right: auto; } + img.center { + margin-left: auto; + margin-right: auto; } + img.right { + margin-left: auto; } + +p { + margin-bottom: 20px; } + +figure { + display: table; + max-width: 100%; + margin: 25px 0; } + figure.left { + margin-right: auto; } + figure.center { + margin-left: auto; + margin-right: auto; } + figure.right { + margin-left: auto; } + figure figcaption { + font-size: 14px; + padding: 5px 10px; + margin-top: 5px; + background: #FF6266; + color: #221f29; + /* opacity: .8; */ } + figure figcaption.left { + text-align: left; } + figure figcaption.center { + text-align: center; } + figure figcaption.right { + text-align: right; } + +code, kbd { + font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important; + font-feature-settings: normal; + background: rgba(255, 98, 102, 0.2); + color: #FF6266; + padding: 1px 6px; + margin: 0 2px; + font-size: .95rem; } + code code, code kbd, kbd code, kbd kbd { + background: transparent; + padding: 0; + margin: 0; } + +pre { + background: transparent !important; + padding: 20px 10px; + margin: 40px 0; + font-size: .95rem !important; + overflow: auto; + border-top: 1px solid rgba(255, 255, 255, 0.1); + border-bottom: 1px solid rgba(255, 255, 255, 0.1); } + pre + pre { + border-top: 0; + margin-top: -40px; } + @media (max-width: 684px) { + pre { + white-space: pre-wrap; + word-wrap: break-word; } } + pre code { + background: none !important; + margin: 0; + padding: 0; + font-size: inherit; + border: none; } + +blockquote { + border-top: 1px solid #FF6266; + border-bottom: 1px solid #FF6266; + margin: 40px 0; + padding: 25px; } + @media (max-width: 684px) { + blockquote { + padding-right: 0; } } + blockquote p:first-of-type { + margin-top: 0; } + blockquote p:last-of-type { + margin-bottom: 0; } + blockquote p { + position: relative; } + blockquote p:first-of-type:before { + content: '>'; + display: block; + position: absolute; + left: -25px; + color: #FF6266; } + blockquote.twitter-tweet { + position: relative; + background: rgba(255, 98, 102, 0.1); + font: inherit; + color: inherit; + border: 1px solid #FF6266; + padding-top: 60px; } + blockquote.twitter-tweet p:before { + content: ''; } + blockquote.twitter-tweet:before { + content: '> From Twitter:'; + position: absolute; + top: 20px; + color: #FF6266; + font-weight: bold; } + blockquote.twitter-tweet a { + color: #FF6266; } + +table { + table-layout: auto; + border-collapse: collapse; + width: 100%; + margin: 40px 0; } + +table, +th, +td { + border: 1px dashed #FF6266; + padding: 10px; } + +th { + color: #FF6266; } + +ul, +ol { + margin-left: 22px; + padding: 0; } + ul li, + ol li { + position: relative; } + @media (max-width: 684px) { + ul, + ol { + margin-left: 20px; } } +ol { + list-style: none; + counter-reset: li; } + ol li { + counter-increment: li; } + ol li:before { + content: counter(li); + position: absolute; + right: calc(100% + 10px); + color: #FF6266; + display: inline-block; + text-align: right; } + ol ol { + margin-left: 38px; } + ol ol li { + counter-increment: li; } + ol ol li:before { + content: counters(li, ".") " "; } + +mark { + background: #FF6266; + color: #221f29; } + +.container { + display: flex; + flex-direction: column; + padding: 40px; + max-width: 864px; + min-height: 100vh; + border-right: 1px solid rgba(255, 255, 255, 0.1); } + .container.full, .container.center { + border: none; + margin: 0 auto; } + .container.full { + max-width: 100%; } + @media (max-width: 684px) { + .container { + padding: 20px; } } + @media print { + .container { + display: initial; } } +.content { + display: flex; + flex-direction: column; } + @media print { + .content { + display: initial; } } +hr { + width: 100%; + border: none; + background: rgba(255, 255, 255, 0.1); + height: 1px; } + +.hidden { + display: none; } + +sup { + line-height: 0; } + +.index-content { + margin-top: 20px; } + +.framed { + border: 1px solid #FF6266; + padding: 20px; } + .framed *:first-child { + margin-top: 0; } + .framed *:last-child { + margin-bottom: 0; } + +.posts { + width: 100%; } + +.post { + width: 100%; + text-align: left; + margin: 20px auto; + padding: 20px 0; } + .post:not(:last-of-type) { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); } + .post-meta { + font-size: 1rem; + margin-bottom: 10px; + color: rgba(255, 98, 102, 0.7); } + .post-title { + position: relative; + color: #FF6266; + margin: 0 0 15px; + padding-bottom: 15px; + border-bottom: 3px dotted #FF6266; } + .post-title:after { + content: ''; + position: absolute; + bottom: 2px; + display: block; + width: 100%; + border-bottom: 3px dotted #FF6266; } + .post-title a { + text-decoration: none; } + .post-tags { + display: block; + margin-bottom: 20px; + font-size: 1rem; + opacity: .5; } + .post-tags a { + text-decoration: none; } + .post-content { + margin-top: 30px; } + .post-cover { + border: 20px solid #FF6266; + background: transparent; + margin: 40px 0; + padding: 20px; } + @media (max-width: 684px) { + .post-cover { + padding: 10px; + border-width: 10px; } } + .post ul { + list-style: none; } + .post ul li:not(:empty):before { + content: '-'; + position: absolute; + left: -20px; + color: #FF6266; } + +.post--regulation h1 { + justify-content: center; } + +.post--regulation h2 { + justify-content: center; + margin-bottom: 10px; } + .post--regulation h2 + h2 { + margin-top: -10px; + margin-bottom: 20px; } + +.hanchor { + color: rgba(255, 98, 102, 0.9); + text-decoration: none; + margin-left: 10px; + visibility: hidden; } + +h1:hover a, h2:hover a, h3:hover a, h4:hover a { + visibility: visible; } + +.footnotes { + color: rgba(255, 255, 255, 0.5); } + +.pagination { + margin-top: 50px; } + @media print { + .pagination { + display: none; } } + .pagination__title { + display: flex; + text-align: center; + position: relative; + margin: 100px 0 20px; } + .pagination__title-h { + text-align: center; + margin: 0 auto; + padding: 5px 10px; + background: #221f29; + color: rgba(255, 255, 255, 0.3); + font-size: .8rem; + text-transform: uppercase; + text-decoration: none; + letter-spacing: .1em; + z-index: 1; } + .pagination__title hr { + position: absolute; + left: 0; + right: 0; + width: 100%; + margin-top: 15px; + z-index: 0; } + .pagination__buttons { + display: flex; + align-items: center; + justify-content: center; + flex-flow: row wrap; + gap: 10px; } + .pagination__buttons a { + text-decoration: none; } + +.button { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 1rem; + padding: 0; + appearance: none; } + @media (max-width: 684px) { + .button { + flex: 1; } } + .button a { + display: flex; + justify-content: center; + flex: 1; + padding: 8px 16px; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .button__text { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .button.next .button__icon { + margin-left: 8px; } + .button.previous .button__icon { + margin-right: 8px; } + +.footer { + padding: 40px 0; + flex-grow: 0; + opacity: .5; } + .footer__inner { + display: flex; + align-items: center; + justify-content: space-between; + margin: 0; + width: 760px; + max-width: 100%; } + @media (max-width: 900px) { + .footer__inner { + flex-direction: column; } } + .footer a { + color: inherit; } + .footer .copyright { + display: flex; + flex-flow: row wrap; + flex: 1; + align-items: center; + font-size: 1rem; + justify-content: center; } + .footer .copyright--user { + margin: auto; + text-align: center; } + .footer .copyright > *:first-child:not(:only-child) { + margin-right: 10px; } + .footer .copyright span { + white-space: nowrap; } + +/* PrismJS 1.24.1 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */ +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML + * Based on https://github.com/chriskempson/tomorrow-theme + * @author Rose Pritchard + */ +code[class*="language-"], +pre[class*="language-"] { + color: #ccc; + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; } + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; } + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #2d2d2d; } + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; } + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; } + +.token.punctuation { + color: #ccc; } + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; } + +.token.function-name { + color: #6196cc; } + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; } + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; } + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; } + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; } + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; } + +.token.important, +.token.bold { + font-weight: bold; } + +.token.italic { + font-style: italic; } + +.token.entity { + cursor: help; } + +.token.inserted { + color: green; } + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; } + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; + /* Same as .prism’s padding-top */ + background: rgba(153, 122, 102, 0.08); + background: linear-gradient(to right, rgba(153, 122, 102, 0.1) 70%, rgba(153, 122, 102, 0)); + pointer-events: none; + line-height: inherit; + white-space: pre; } + +@media print { + .line-highlight { + /* + * This will prevent browsers from replacing the background color with white. + * It's necessary because the element is layered on top of the displayed code. + */ + -webkit-print-color-adjust: exact; + color-adjust: exact; } } + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: rgba(153, 122, 102, 0.4); + color: #f5f2f0; + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; } + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; } + +pre[id].linkable-line-numbers span.line-numbers-rows { + pointer-events: all; } + +pre[id].linkable-line-numbers span.line-numbers-rows > span:before { + cursor: pointer; } + +pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { + background-color: rgba(128, 128, 128, 0.2); } + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; } + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; } + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; + /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; } + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; } + +.command-line-prompt { + border-right: 1px solid #999; + display: block; + float: left; + font-size: 100%; + letter-spacing: -1px; + margin-right: 1em; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.command-line-prompt > span:before { + color: #999; + content: ' '; + display: block; + padding-right: 0.8em; } + +.command-line-prompt > span[data-user]:before { + content: "[" attr(data-user) "@" attr(data-host) "] $"; } + +.command-line-prompt > span[data-user="root"]:before { + content: "[" attr(data-user) "@" attr(data-host) "] #"; } + +.command-line-prompt > span[data-prompt]:before { + content: attr(data-prompt); } + +div.code-toolbar { + position: relative; } + +div.code-toolbar > .toolbar { + position: absolute; + top: .3em; + right: .2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; } + +div.code-toolbar:hover > .toolbar { + opacity: 1; } + +/* Separate line b/c rules are thrown out if selector is invalid. + IE11 and old Edge versions don't support :focus-within. */ +div.code-toolbar:focus-within > .toolbar { + opacity: 1; } + +div.code-toolbar > .toolbar > .toolbar-item { + display: inline-block; } + +div.code-toolbar > .toolbar > .toolbar-item > a { + cursor: pointer; } + +div.code-toolbar > .toolbar > .toolbar-item > button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; + /* for button */ + -moz-user-select: none; + -ms-user-select: none; } + +div.code-toolbar > .toolbar > .toolbar-item > a, +div.code-toolbar > .toolbar > .toolbar-item > button, +div.code-toolbar > .toolbar > .toolbar-item > span { + color: #bbb; + font-size: .8em; + padding: 0 .5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: .5em; } + +div.code-toolbar > .toolbar > .toolbar-item > a:hover, +div.code-toolbar > .toolbar > .toolbar-item > a:focus, +div.code-toolbar > .toolbar > .toolbar-item > button:hover, +div.code-toolbar > .toolbar > .toolbar-item > button:focus, +div.code-toolbar > .toolbar > .toolbar-item > span:hover, +div.code-toolbar > .toolbar > .toolbar-item > span:focus { + color: inherit; + text-decoration: none; } + +code.language-css, +code.language-scss, +.token.boolean, +.token.string, +.token.entity, +.token.url, +.language-css .token.string, +.language-scss .token.string, +.style .token.string, +.token.attr-value, +.token.keyword, +.token.control, +.token.directive, +.token.statement, +.token.regex, +.token.atrule, +.token.number, +.token.inserted, +.token.important { + color: #FF6266 !important; } + +.token.tag-id, +.token.atrule-id, +.token.operator, +.token.unit, +.token.placeholder, +.token.variable, +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted, +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: rgba(255, 98, 102, 0.7) !important; } + +.token.property, +.token.function, +.token.function-name, +.token.deleted, +code.language-javascript, +code.language-html, +.command-line-prompt > span:before { + color: #9a9999 !important; } + +.token.selector, +.token.tag, +.token.punctuation { + color: white; } + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: rgba(255, 255, 255, 0.3) !important; } + +.token.namespace { + opacity: .7 !important; } + +pre[data-line] { + position: relative; } + +pre[class*="language-"] { + margin: 0; + padding: 0; + overflow: auto; } + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: 0; + margin: 0; + background: rgba(245, 104, 107, 0.08); + pointer-events: none; + line-height: inherit; + white-space: pre; } + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + /* top: .4em; */ + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: rgba(153, 122, 102, 0.4); + color: #f5f2f0; + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; } + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; } + +.code-toolbar { + position: relative; + margin: 40px 0; + padding: 20px; + border: 1px solid rgba(255, 255, 255, 0.1); } + .code-toolbar + .code-toolbar, + .code-toolbar + .highlight, + .code-toolbar + .highlight .code-toolbar { + border-top: 0; + margin-top: calc(-1 * $code-margin); } + .code-toolbar pre, .code-toolbar code { + border: none; } + .code-toolbar code { + display: block; + color: inherit; } + .code-toolbar > .toolbar button { + font-size: .8em !important; + background: rgba(224, 224, 224, 0.2) !important; + color: #bbb !important; + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2) !important; + border-radius: 0 !important; + margin: 6px !important; + padding: 10px !important; + user-select: none; } + +.collapsable-code { + position: relative; + width: 100%; + margin: 40px 0; } + .collapsable-code input[type="checkbox"] { + position: absolute; + visibility: hidden; } + .collapsable-code input[type="checkbox"]:checked ~ pre, + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar pre { + height: 0; + padding: 0; + border-top: none; } + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar { + padding: 0; + border-top: none; } + .collapsable-code input[type="checkbox"]:checked ~ .code-toolbar .toolbar { + display: none; } + .collapsable-code input[type="checkbox"]:checked ~ label .collapsable-code__toggle:after { + content: attr(data-label-expand); } + .collapsable-code label { + position: relative; + display: flex; + justify-content: space-between; + min-width: 30px; + min-height: 30px; + margin: 0; + border-bottom: 1px solid #f5686b; + cursor: pointer; } + .collapsable-code__title { + flex: 1; + color: #FF6266; + padding: 3px 10px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .collapsable-code__language { + color: #FF6266; + border: 1px solid #f5686b; + border-bottom: none; + text-transform: uppercase; + padding: 3px 10px; } + .collapsable-code__toggle { + color: #FF6266; + font-size: 16px; + padding: 3px 10px; } + .collapsable-code__toggle:after { + content: attr(data-label-collapse); } + .collapsable-code pre { + margin-top: 0; } + .collapsable-code pre::first-line { + line-height: 0; } + .collapsable-code .code-toolbar { + margin: 0; } + +.terms h1 { + color: #FF6266; } + +.terms h3 { + font-size: initial; } + +body .gist .blob-num, +body .gist .blob-code-inner { + border: none; } diff --git a/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.json b/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.json new file mode 100644 index 0000000..77df676 --- /dev/null +++ b/resources/_gen/assets/scss/the1mason.com/css/red-local.scss_f120a3f402b106f64b18d498afd3d82e.json @@ -0,0 +1 @@ +{"Target":"css/red-local.css","MediaType":"text/css","Data":{}} \ No newline at end of file

-)m^#{IPs3A! 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 aR3GSJEiz648hltsV)pni+|;b={r>=`f+|V? literal 0 HcmV?d00001 diff --git a/public/img/theme-colors/blue.png b/public/img/theme-colors/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5fd9960d0086cb792f348447b655632ec033e2 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?3oVGw3ym^DWND9BhG zLF`I5%edj39bOujXKbLh*2~7aa+&duv literal 0 HcmV?d00001 diff --git a/public/img/theme-colors/green.png b/public/img/theme-colors/green.png new file mode 100644 index 0000000000000000000000000000000000000000..490979290cfff1aed10757350935c5485d670e2b GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?3oVGw3ym^DWND9BhG zgTe~DWM4f5u`Tg literal 0 HcmV?d00001 diff --git a/public/img/theme-colors/orange.png b/public/img/theme-colors/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac2c2772a6d8d5905459c349e848c297c9bd86d GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?3oVGw3ym^DWND9BhG zGQmYp^O8qeVA>gTe~DWM4f7lb!O literal 0 HcmV?d00001 diff --git a/public/img/theme-colors/pink.png b/public/img/theme-colors/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..96d49eca2576e0126bd016b55b4bbe32399a372e GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?3oVGw3ym^DWND9BhG zzT9m6h}9o k-F;qGKH{;kk|}ABe={$$R?!r`TA=9+p00i_>zopr0JSYDoB#j- literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..d6c9cd3 --- /dev/null +++ b/public/index.html @@ -0,0 +1,256 @@ + + + + + + the1mason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +