aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.yml2
-rw-r--r--.github/labeler.yml6
-rw-r--r--.github/workflows/test-and-deploy.yml1
-rw-r--r--.github/workflows/test-win.yml1
-rw-r--r--CONTRIBUTORS.md1
-rw-r--r--Makefile1
-rw-r--r--docs/SystemdSocketActivation.md1
-rw-r--r--etc/config/carbon.amazon.properties10
-rw-r--r--etc/config/carbon.defaults.properties12
-rw-r--r--etc/config/crystal.amazon.properties7
-rw-r--r--etc/config/jakt.amazon.properties19
-rw-r--r--etc/config/jakt.defaults.properties14
-rw-r--r--etc/config/kotlin.amazon.properties4
-rw-r--r--etc/config/pony.amazon.properties48
-rw-r--r--etc/config/pony.defaults.properties4
-rw-r--r--etc/config/sponsors.yaml1
-rw-r--r--examples/carbon/default.carbon9
-rw-r--r--examples/jakt/default.jakt7
-rw-r--r--examples/jakt/hello_world.jakt7
-rw-r--r--examples/pony/default.pony9
-rw-r--r--lib/base-compiler.ts2
-rw-r--r--lib/compilers/_all.js3
-rw-r--r--lib/compilers/carbon.js94
-rw-r--r--lib/compilers/jakt.ts83
-rw-r--r--lib/compilers/pony.ts103
-rw-r--r--lib/languages.ts30
-rw-r--r--lib/llvm-ast.js23
-rw-r--r--lib/parsers/llvm-pass-dump-parser.ts31
-rwxr-xr-xlib/tooling/base-tool.js13
-rw-r--r--package-lock.json1494
-rw-r--r--package.json4
-rw-r--r--static/event-map.ts4
-rw-r--r--static/modes/_all.ts2
-rw-r--r--static/modes/carbon-mode.ts173
-rw-r--r--static/modes/jakt-mode.ts205
-rw-r--r--static/panes/compiler.js3
-rw-r--r--static/panes/conformance-view.js18
-rw-r--r--static/panes/editor.js38
-rw-r--r--static/panes/executor.js25
-rw-r--r--static/panes/gccdump-view.ts4
-rw-r--r--static/panes/llvm-opt-pipeline.ts3
-rw-r--r--static/panes/tool.js24
-rw-r--r--static/settings.ts2
-rw-r--r--static/themes/dark-theme.scss12
-rw-r--r--static/themes/default-theme.scss10
-rw-r--r--static/widgets/load-save.ts22
-rw-r--r--test/ast/bug-3849a.ast57
-rw-r--r--test/ast/bug-3849a.cpp10
-rw-r--r--test/ast/bug-3849b.ast571
-rw-r--r--test/ast/bug-3849b.cpp22
-rw-r--r--test/check-img.js46
-rw-r--r--test/llvm-ast-parser-tests.js47
-rw-r--r--types/languages.interfaces.ts5
-rw-r--r--types/resultline/resultline.interfaces.ts14
-rw-r--r--views/_layout.pug2
-rw-r--r--views/index.pug2
-rw-r--r--views/popups.pug420
-rw-r--r--views/popups/alert.pug11
-rw-r--r--views/popups/enter-something.pug14
-rw-r--r--views/popups/history.pug35
-rw-r--r--views/popups/jsbeebemu.pug5
-rw-r--r--views/popups/library-selection.pug38
-rw-r--r--views/popups/load-save.pug48
-rw-r--r--views/popups/notifications.pug1
-rw-r--r--views/popups/popups.pug25
-rw-r--r--views/popups/renamepanemodal.pug17
-rw-r--r--views/popups/settings.pug167
-rw-r--r--views/popups/sharelinkdialog.pug28
-rw-r--r--views/popups/simplecook.pug14
-rw-r--r--views/popups/site-template-loader.pug18
-rw-r--r--views/popups/timing.pug12
-rw-r--r--views/popups/yes-no.pug12
-rw-r--r--views/resources/logos/carbon.svg63
-rw-r--r--views/resources/logos/pony.svg307
-rw-r--r--views/resources/template_screenshots/LLVMIr.dark.pngbin258907 -> 0 bytes
-rw-r--r--views/resources/template_screenshots/LLVMIr.darkplus.pngbin258941 -> 0 bytes
-rw-r--r--views/resources/template_screenshots/LLVMIr.default.pngbin265937 -> 0 bytes
-rw-r--r--views/templates.pug624
-rw-r--r--views/templates/panes/cfg.pug14
-rw-r--r--views/templates/panes/codeEditor.pug41
-rw-r--r--views/templates/panes/compiler-output.pug12
-rw-r--r--views/templates/panes/compiler.pug94
-rw-r--r--views/templates/panes/conformance.pug11
-rw-r--r--views/templates/panes/device.pug6
-rw-r--r--views/templates/panes/diff.pug18
-rw-r--r--views/templates/panes/executor.pug59
-rw-r--r--views/templates/panes/gccdump.pug37
-rw-r--r--views/templates/panes/llvm-opt-pipeline.pug40
-rw-r--r--views/templates/panes/pp.pug15
-rw-r--r--views/templates/panes/tool-output.pug23
-rw-r--r--views/templates/panes/tree.pug43
-rw-r--r--views/templates/templates.pug75
-rw-r--r--views/templates/widgets/compiler-selector.pug15
-rw-r--r--views/templates/widgets/lib-favorite-tpl.pug3
-rw-r--r--views/templates/widgets/lib-search-result-tpl.pug17
-rw-r--r--views/templates/widgets/lib-selected-tpl.pug5
-rw-r--r--views/templates/widgets/libs-dropdown.pug6
-rw-r--r--views/templates/widgets/libs-entry.pug5
-rw-r--r--views/templates/widgets/share-item.pug3
-rw-r--r--views/templates/widgets/tree-editor-tpl.pug7
-rw-r--r--webpack.config.esm.js2
101 files changed, 4162 insertions, 1613 deletions
diff --git a/.eslintrc.yml b/.eslintrc.yml
index cd5e073e4..1212ccaf0 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -6,6 +6,7 @@ plugins:
- node
- promise
- sonarjs
+ - prettier
- unicorn
- '@typescript-eslint'
extends:
@@ -23,6 +24,7 @@ env:
node: true
es6: true
rules:
+ prettier/prettier: error
comma-dangle:
- error
- arrays: always-multiline
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 2ed3caf05..242d05c3d 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -55,6 +55,9 @@ lang-fortran:
- lib/compilers/flang.ts
- lib/compilers/fortran.js
- etc/config/fortran.*.properties
+lang-jakt:
+ - lib/compilers/jakt.ts
+ - etc/config/jakt.*.properties
lang-go:
- lib/compilers/golang.js
- etc/config/go.*.properties
@@ -93,6 +96,9 @@ lang-opencl-c:
lang-pascal:
- lib/compilers/pascal.js
- etc/config/pascal.*.properties
+lang-pony:
+ - lib/compilers/pony.ts
+ - etc/config/pony.*.properties
lang-python:
- lib/compilers/python.js
- etc/config/python.*.properties
diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml
index 40bc72b98..42e6ca05f 100644
--- a/.github/workflows/test-and-deploy.yml
+++ b/.github/workflows/test-and-deploy.yml
@@ -21,7 +21,6 @@ jobs:
run: |
npm run lint-check
npm run ci-test
- npm run format-check
npm run ts-check
python3 ./etc/scripts/util/orphancompiler.py
- name: Code coverage
diff --git a/.github/workflows/test-win.yml b/.github/workflows/test-win.yml
index d7604c115..332115d4a 100644
--- a/.github/workflows/test-win.yml
+++ b/.github/workflows/test-win.yml
@@ -21,5 +21,4 @@ jobs:
run: |
npm run lint-check
npm run ci-test
- npm run format-check
npm run ts-check
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 1d57d93d4..807d5f434 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -119,3 +119,4 @@ From oldest to newest contributor, we would like to thank:
- [Anders-T](https://github.com/anders-torbjornsen)
- [Adam Sandberg Eriksson](https://github.com/adamse)
- [Ofek Shilon](https://github.com/ofekshilon)
+- [Ross Smyth](https://github.com/RossSmyth)
diff --git a/Makefile b/Makefile
index 5b9b1eece..3957f5b93 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,6 @@ $(NODE_MODULES): package.json | node-installed
.PHONY: lint
lint: $(NODE_MODULES) ## Checks if the source currently matches code conventions
- $(NPM) run format-check
$(NPM) run ts-check
$(NPM) run lint-check
diff --git a/docs/SystemdSocketActivation.md b/docs/SystemdSocketActivation.md
index eae67d190..d0b410e20 100644
--- a/docs/SystemdSocketActivation.md
+++ b/docs/SystemdSocketActivation.md
@@ -24,7 +24,6 @@ WorkingDirectory={{path_to_installation_directory}}/compiler-explorer
ExecStart=/usr/bin/node {{path_to_installation_directory}}/compiler-explorer/app.js
TimeoutStartSec=60
TimeoutStopSec=60
-StandardOutput=syslog
User={{run_as_this_user}}
Group={{run_as_this_group}}
```
diff --git a/etc/config/carbon.amazon.properties b/etc/config/carbon.amazon.properties
new file mode 100644
index 000000000..8d8a10132
--- /dev/null
+++ b/etc/config/carbon.amazon.properties
@@ -0,0 +1,10 @@
+# Amazon prod environment settings
+compilers=carbon-trunk
+defaultCompiler=carbon-trunk
+compilerType=carbon
+needsMulti=false
+
+compiler.carbon-trunk.exe=/opt/compiler-explorer/carbon-trunk/bin/carbon-explorer
+compiler.carbon-trunk.name=Explorer (trunk)
+
+libs=
diff --git a/etc/config/carbon.defaults.properties b/etc/config/carbon.defaults.properties
new file mode 100644
index 000000000..81ef3ec22
--- /dev/null
+++ b/etc/config/carbon.defaults.properties
@@ -0,0 +1,12 @@
+# Default settings for carbon
+compilers=carbon-trunk
+defaultCompiler=carbon-trunk
+compilerType=carbon
+needsMulti=false
+supportsExecute=false
+supportsBinary=false
+
+compiler.carbon-trunk.exe=todo-default-path
+compiler.carbon-trunk.name=Explorer (trunk)
+
+libs=
diff --git a/etc/config/crystal.amazon.properties b/etc/config/crystal.amazon.properties
index f109f656f..a6e3ee4b7 100644
--- a/etc/config/crystal.amazon.properties
+++ b/etc/config/crystal.amazon.properties
@@ -1,7 +1,7 @@
compilers=&crystal
-defaultCompiler=crystal141
+defaultCompiler=crystal150
-group.crystal.compilers=crystal141:crystal132:crystal122:crystal11:crystal10:crystal036:crystal035:crystal034:crystal033:crystal032:crystal031:crystal030:crystal029
+group.crystal.compilers=crystal150:crystal141:crystal132:crystal122:crystal11:crystal10:crystal036:crystal035:crystal034:crystal033:crystal032:crystal031:crystal030:crystal029
group.crystal.isSemVer=true
group.crystal.baseName=Crystal
group.crystal.groupName=Crystal x86-64
@@ -10,6 +10,9 @@ group.crystal.supportsExecute=true
group.crystal.compilerType=crystal
group.crystal.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump
+compiler.crystal150.semver=1.5.0
+compiler.crystal150.exe=/opt/compiler-explorer/crystal-1.5.0/bin/crystal
+compiler.crystal150.cc=/opt/compiler-explorer/gcc-snapshot/bin/gcc
compiler.crystal141.semver=1.4.1
compiler.crystal141.exe=/opt/compiler-explorer/crystal-1.4.1/bin/crystal
compiler.crystal141.cc=/opt/compiler-explorer/gcc-snapshot/bin/gcc
diff --git a/etc/config/jakt.amazon.properties b/etc/config/jakt.amazon.properties
new file mode 100644
index 000000000..3bfbbecb8
--- /dev/null
+++ b/etc/config/jakt.amazon.properties
@@ -0,0 +1,19 @@
+compilers=rustbased:selfhosted
+defaultCompiler=selfhosted
+
+externalparser=CEAsmParser
+externalparser.exe=/usr/local/bin/asm-parser
+
+objdumper=/opt/compiler-explorer/gcc-12.1.0/bin/objdump
+supportsBinary=true
+supportsExecute=true
+versionFlag=--version
+compilerType=jakt
+
+compiler.rustbased.exe=/opt/compiler-explorer/jakt-trunk/jakt-rs
+compiler.rustbased.name=jakt (Written in Rust)
+compiler.rustbased.options=--runtime-path /opt/compiler-explorer/jakt-trunk/runtime --prettify-cpp-source --clang-format-path /opt/compiler-explorer/clang-trunk/bin/clang-format --dot-clang-format-path /opt/compiler-explorer/jakt-trunk/.clang-format --cxx-compiler-path /opt/compiler-explorer/clang-trunk/bin/clang++
+
+compiler.selfhosted.exe=/opt/compiler-explorer/jakt-trunk/jakt-selfhost
+compiler.selfhosted.name=jakt (Selfhosted)
+compiler.selfhosted.options=-b --runtime-path /opt/compiler-explorer/jakt-trunk/runtime --prettify-cpp-source --clang-format-path /opt/compiler-explorer/clang-trunk/bin/clang-format --dot-clang-format-path /opt/compiler-explorer/jakt-trunk/.clang-format --cxx-compiler-path /opt/compiler-explorer/clang-trunk/bin/clang++
diff --git a/etc/config/jakt.defaults.properties b/etc/config/jakt.defaults.properties
new file mode 100644
index 000000000..e8dc0b484
--- /dev/null
+++ b/etc/config/jakt.defaults.properties
@@ -0,0 +1,14 @@
+# Default settings for Jakt
+
+objdumper=objdump
+supportsBinary=true
+supportsExecute=true
+versionFlag=--version
+compilerType=jakt
+
+compilers=jakt
+defaultCompiler=jakt
+
+compiler.jakt.exe=/usr/bin/jakt
+compiler.jakt.name=jakt
+compiler.jakt.options=--prettify-cpp-source \ No newline at end of file
diff --git a/etc/config/kotlin.amazon.properties b/etc/config/kotlin.amazon.properties
index ba931b9e7..3da6545de 100644
--- a/etc/config/kotlin.amazon.properties
+++ b/etc/config/kotlin.amazon.properties
@@ -82,5 +82,5 @@ compiler.kotlinc1620.java_home=/opt/compiler-explorer/jdk-16.0.1
compiler.kotlinc1620.runtime=/opt/compiler-explorer/jdk-16.0.1/bin/java
compiler.kotlinc1700.exe=/opt/compiler-explorer/kotlin-jvm-1.7.0/bin/kotlinc-jvm
compiler.kotlinc1700.semver=1.7.0
-compiler.kotlinc1700.java_home=/opt/compiler-explorer/jdk-18.0.1
-compiler.kotlinc1700.runtime=/opt/compiler-explorer/jdk-18.0.1/bin/java
+compiler.kotlinc1700.java_home=/opt/compiler-explorer/jdk-18.0.0
+compiler.kotlinc1700.runtime=/opt/compiler-explorer/jdk-18.0.0/bin/java
diff --git a/etc/config/pony.amazon.properties b/etc/config/pony.amazon.properties
new file mode 100644
index 000000000..513ff5d2c
--- /dev/null
+++ b/etc/config/pony.amazon.properties
@@ -0,0 +1,48 @@
+compilers=&pony
+defaultCompiler=p0511
+group.pony.isSemVer=true
+
+group.pony.compilers=ponynightly:p0332:p0341:p0351:p0360:p0370:p0383:p0391:p0400:p0412:p0420:p0432:p0440:p0452:p0460:p0470:p0480:p0491:p0500:p0511
+group.pony.compilerType=pony
+group.pony.isSemVer=true
+group.pony.baseName=ponyc
+compiler.p0511.exe=/opt/compiler-explorer/ponyc-0.51.1/bin/ponyc
+compiler.p0511.semver=0.51.1
+compiler.p0500.exe=/opt/compiler-explorer/ponyc-0.50.0/bin/ponyc
+compiler.p0500.semver=0.50.0
+compiler.p0491.exe=/opt/compiler-explorer/ponyc-0.49.1/bin/ponyc
+compiler.p0491.semver=0.49.1
+compiler.p0480.exe=/opt/compiler-explorer/ponyc-0.48.0/bin/ponyc
+compiler.p0480.semver=0.48.0
+compiler.p0470.exe=/opt/compiler-explorer/ponyc-0.47.0/bin/ponyc
+compiler.p0470.semver=0.47.0
+compiler.p0460.exe=/opt/compiler-explorer/ponyc-0.46.0/bin/ponyc
+compiler.p0460.semver=0.46.0
+compiler.p0452.exe=/opt/compiler-explorer/ponyc-0.45.2/bin/ponyc
+compiler.p0452.semver=0.45.2
+compiler.p0440.exe=/opt/compiler-explorer/ponyc-0.44.0/bin/ponyc
+compiler.p0440.semver=0.44.0
+compiler.p0432.exe=/opt/compiler-explorer/ponyc-0.43.2/bin/ponyc
+compiler.p0432.semver=0.43.2
+compiler.p0420.exe=/opt/compiler-explorer/ponyc-0.42.0/bin/ponyc
+compiler.p0420.semver=0.42.0
+compiler.p0412.exe=/opt/compiler-explorer/ponyc-0.41.2/bin/ponyc
+compiler.p0412.semver=0.41.2
+compiler.p0400.exe=/opt/compiler-explorer/ponyc-0.40.0/bin/ponyc
+compiler.p0400.semver=0.40.0
+compiler.p0391.exe=/opt/compiler-explorer/ponyc-0.39.1/bin/ponyc
+compiler.p0391.semver=0.39.1
+compiler.p0383.exe=/opt/compiler-explorer/ponyc-0.38.3/bin/ponyc
+compiler.p0383.semver=0.38.3
+compiler.p0370.exe=/opt/compiler-explorer/ponyc-0.37.0/bin/ponyc
+compiler.p0370.semver=0.37.0
+compiler.p0360.exe=/opt/compiler-explorer/ponyc-0.36.0/bin/ponyc
+compiler.p0360.semver=0.36.0
+compiler.p0351.exe=/opt/compiler-explorer/ponyc-0.35.1/bin/ponyc
+compiler.p0351.semver=0.35.1
+compiler.p0341.exe=/opt/compiler-explorer/ponyc-0.34.1/bin/ponyc
+compiler.p0341.semver=0.34.1
+compiler.p0332.exe=/opt/compiler-explorer/ponyc-0.33.2/bin/ponyc
+compiler.p0332.semver=0.33.2
+compiler.ponynightly.exe=/opt/compiler-explorer/ponyc-nightly/bin/ponyc
+compiler.ponynightly.semver=nightly
diff --git a/etc/config/pony.defaults.properties b/etc/config/pony.defaults.properties
new file mode 100644
index 000000000..9d0ff67ca
--- /dev/null
+++ b/etc/config/pony.defaults.properties
@@ -0,0 +1,4 @@
+compilers=/usr/local/bin/ponyc
+supportsBinary=false
+compilerType=pony
+stubText=actor Main new create(env: Env) => /* stub provided by Compiler Explorer */ env
diff --git a/etc/config/sponsors.yaml b/etc/config/sponsors.yaml
index ef53d42c3..92f3864eb 100644
--- a/etc/config/sponsors.yaml
+++ b/etc/config/sponsors.yaml
@@ -378,3 +378,4 @@ levels:
- Neil Bickford
- Unstillable
- cedric chanoine
+ - Cristian Kocza
diff --git a/examples/carbon/default.carbon b/examples/carbon/default.carbon
new file mode 100644
index 000000000..ca7414b35
--- /dev/null
+++ b/examples/carbon/default.carbon
@@ -0,0 +1,9 @@
+package sample api;
+
+fn Square(x: i32) -> i32 {
+ return x * x;
+}
+
+fn Main() -> i32 {
+ return Square(12);
+}
diff --git a/examples/jakt/default.jakt b/examples/jakt/default.jakt
new file mode 100644
index 000000000..f2f29d0e9
--- /dev/null
+++ b/examples/jakt/default.jakt
@@ -0,0 +1,7 @@
+function square(num: i32) -> i32 {
+ return num * num
+}
+
+function main() {
+ return square(num: 3)
+}
diff --git a/examples/jakt/hello_world.jakt b/examples/jakt/hello_world.jakt
new file mode 100644
index 000000000..07e7ec76d
--- /dev/null
+++ b/examples/jakt/hello_world.jakt
@@ -0,0 +1,7 @@
+function hello() throws -> String {
+ return "Well, hello friends."
+}
+
+function main() {
+ println("{}", hello())
+}
diff --git a/examples/pony/default.pony b/examples/pony/default.pony
new file mode 100644
index 000000000..b41edf35a
--- /dev/null
+++ b/examples/pony/default.pony
@@ -0,0 +1,9 @@
+actor Main
+ var _env: Env
+
+ new create(env: Env) =>
+ _env = env
+ square(3)
+
+ fun square(num: I32): I32 =>
+ num * num
diff --git a/lib/base-compiler.ts b/lib/base-compiler.ts
index 29fbcd7d6..d39f06893 100644
--- a/lib/base-compiler.ts
+++ b/lib/base-compiler.ts
@@ -942,7 +942,7 @@ export class BaseCompiler {
}
}
- async generateIR(inputFilename, options, filters: ParseFilters) {
+ async generateIR(inputFilename: string, options: string[], filters: ParseFilters) {
// These options make Clang produce an IR
const newOptions = _.filter(options, option => option !== '-fcolor-diagnostics').concat(this.compiler.irArg);
diff --git a/lib/compilers/_all.js b/lib/compilers/_all.js
index fa21a6d86..8cf645a04 100644
--- a/lib/compilers/_all.js
+++ b/lib/compilers/_all.js
@@ -27,6 +27,7 @@ export {AnalysisTool} from './analysis-tool';
export {AssemblyCompiler} from './assembly';
export {BeebAsmCompiler} from './beebasm';
export {NasmCompiler} from './nasm';
+export {CarbonCompiler} from './carbon';
export {Cc65Compiler} from './cc65';
export {CircleCompiler} from './circle';
export {ClangCompiler} from './clang';
@@ -52,6 +53,7 @@ export {GCCRSCompiler} from './gccrs';
export {GolangCompiler} from './golang';
export {HaskellCompiler} from './haskell';
export {ISPCCompiler} from './ispc';
+export {JaktCompiler} from './jakt';
export {JavaCompiler} from './java';
export {KotlinCompiler} from './kotlin';
export {LDCCompiler} from './ldc';
@@ -65,6 +67,7 @@ export {OptCompiler} from './opt';
export {OSACATool} from './osaca';
export {FPCCompiler} from './pascal';
export {PascalWinCompiler} from './pascal-win';
+export {PonyCompiler} from './pony';
export {PPCICompiler} from './ppci';
export {PtxAssembler} from './ptxas';
export {PythonCompiler} from './python';
diff --git a/lib/compilers/carbon.js b/lib/compilers/carbon.js
new file mode 100644
index 000000000..d6c865939
--- /dev/null
+++ b/lib/compilers/carbon.js
@@ -0,0 +1,94 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+import {BaseCompiler} from '../base-compiler';
+
+import {BaseParser} from './argument-parsers';
+
+export class CarbonCompiler extends BaseCompiler {
+ static get key() {
+ return 'carbon';
+ }
+
+ constructor(compilerInfo, env) {
+ super(compilerInfo, env);
+ this.compiler.demangler = null;
+ this.demanglerClass = null;
+ }
+
+ optionsForFilter(filters, outputFilename) {
+ return ['--color', `--trace_file=${outputFilename}`];
+ }
+
+ processAsm(result, filters, options) {
+ // Really should write a custom parser, but for now just don't filter anything.
+ return super.processAsm(result, {}, options);
+ }
+
+ async afterCompilation(
+ result,
+ doExecute,
+ key,
+ executeParameters,
+ tools,
+ backendOptions,
+ filters,
+ options,
+ optOutput,
+ customBuildPath,
+ ) {
+ result = await super.afterCompilation(
+ result,
+ doExecute,
+ key,
+ executeParameters,
+ tools,
+ backendOptions,
+ filters,
+ options,
+ optOutput,
+ customBuildPath,
+ );
+ if (result.code === 0) {
+ // Hook to parse out the "result: 123" line at the end of the interpreted execution run.
+ const re = /^result: (\d+)$/;
+ const match = re.exec(result.asm.at(-1).text);
+ const code = match ? parseInt(match[1]) : -1;
+ result.execResult = {
+ stdout: result.stdout,
+ stderr: [],
+ code: code,
+ didExecute: true,
+ buildResult: {code: 0},
+ };
+ result.stdout = [];
+ }
+ return result;
+ }
+
+ getArgumentParser() {
+ // TODO: may need a custom one, based on/borrowing from ClangParser
+ return BaseParser;
+ }
+}
diff --git a/lib/compilers/jakt.ts b/lib/compilers/jakt.ts
new file mode 100644
index 000000000..b212c6369
--- /dev/null
+++ b/lib/compilers/jakt.ts
@@ -0,0 +1,83 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+import path from 'path';
+
+import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
+import {ParseFilters} from '../../types/features/filters.interfaces';
+import {BaseCompiler} from '../base-compiler';
+import * as exec from '../exec';
+
+export class JaktCompiler extends BaseCompiler {
+ static get key() {
+ return 'jakt';
+ }
+
+ constructor(info, env) {
+ super(info, env);
+
+ // TODO: The jakt compiler emits a file by the same name as the input,
+ // so this won't work if we have another input file that isn't called example.jakt
+ this.outputFilebase = 'example';
+ }
+
+ override optionsForFilter(filters: ParseFilters, outputFilename: any) {
+ return ['--binary-dir', path.dirname(outputFilename)];
+ }
+
+ override getObjdumpOutputFilename(defaultOutputFilename) {
+ const parsed_path = path.parse(defaultOutputFilename);
+
+ return path.join(parsed_path.dir, parsed_path.name);
+ }
+
+ override getExecutableFilename(dirPath, outputFilebase, key?) {
+ return path.join(dirPath, outputFilebase);
+ }
+
+ // We have no dynamic linking in Jakt
+ override getSharedLibraryPathsAsArguments(libraries, libDownloadPath) {
+ return [];
+ }
+
+ // We have no dynamic linking in Jakt
+ override getSharedLibraryLinks(libraries): string[] {
+ return [];
+ }
+
+ override getOutputFilename(dirPath: string, outputFilebase: string, key?: any): string {
+ return path.join(dirPath, `${outputFilebase}.cpp`);
+ }
+
+ override async exec(filepath: string, args: string[], execOptions: ExecutionOptions) {
+ return exec.execute(filepath, args, execOptions).then(result => {
+ if (result.code !== 0) {
+ // We still want to display the transpiled C++, even if it can't execute.
+ // So fake a successful execute here.
+ result.code = 0;
+ }
+ return result;
+ });
+ }
+}
diff --git a/lib/compilers/pony.ts b/lib/compilers/pony.ts
new file mode 100644
index 000000000..7909064ee
--- /dev/null
+++ b/lib/compilers/pony.ts
@@ -0,0 +1,103 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+import path from 'path';
+
+import _ from 'underscore';
+
+import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
+import {ParseFilters} from '../../types/features/filters.interfaces';
+import {BaseCompiler} from '../base-compiler';
+
+export class PonyCompiler extends BaseCompiler {
+ static get key() {
+ return 'pony';
+ }
+
+ /* constructor(info: any, env: any) {
+ super(info, env);
+
+ this.compiler.supportsIrView = true;
+ this.compiler.irArg = ['--pass', 'ir'];
+ } */
+
+ override optionsForFilter(filters: ParseFilters, outputFilename: any, userOptions?: any): string[] {
+ let options = ['-d', '-b', path.parse(outputFilename).name];
+
+ if (!filters.binary) {
+ options = options.concat(['--pass', 'asm']);
+ }
+
+ return options;
+ }
+
+ override preProcess(source: string, filters: any) {
+ // I do not think you can make a Pony "library", so you must always have a main.
+ // Looking at the stdlib, the main is used as a test harness.
+ if (!this.stubRe.test(source)) {
+ source += `\n${this.stubText}\n`;
+ }
+ return source;
+ }
+
+ override async generateIR(inputFilename: string, options: string[], filters: ParseFilters) {
+ const newOptions = _.filter(options, option => !['--pass', 'asm'].includes(option)).concat(this.compiler.irArg);
+
+ const execOptions = this.getDefaultExecOptions();
+ // A higher max output is needed for when the user includes headers
+ execOptions.maxOutput = 1024 * 1024 * 1024;
+
+ const output = await this.runCompiler(this.compiler.exe, newOptions, this.filename(inputFilename), execOptions);
+ if (output.code !== 0) {
+ return [{text: 'Failed to run compiler to get IR code'}];
+ }
+ const ir = await this.processIrOutput(output, filters);
+ return ir.asm;
+ }
+
+ override async runCompiler(
+ compiler: string,
+ options: string[],
+ inputFilename: string,
+ execOptions: ExecutionOptions,
+ ): Promise<CompilationResult> {
+ if (!execOptions) {
+ execOptions = this.getDefaultExecOptions();
+ }
+
+ if (!execOptions.customCwd) {
+ execOptions.customCwd = path.dirname(inputFilename);
+ }
+
+ // Pony operates upon the directory as a whole, not files it seems
+ // So we must set the input to the directory rather than a file.
+ options = _.map(options, arg => (arg.includes(inputFilename) ? path.dirname(arg) : arg));
+
+ const result = await this.exec(compiler, options, execOptions);
+ result.inputFilename = inputFilename;
+ const transformedInput = result.filenameTransform(inputFilename);
+ this.parseCompilationOutput(result, transformedInput);
+ return result;
+ }
+}
diff --git a/lib/languages.ts b/lib/languages.ts
index cb03dab4e..747f9bb91 100644
--- a/lib/languages.ts
+++ b/lib/languages.ts
@@ -33,6 +33,16 @@ type DefKeys = 'name' | 'monaco' | 'extensions' | 'alias' | 'previewFilter' | 'f
type LanguageDefinition = Pick<Language, DefKeys>;
const definitions: Record<LanguageKey, LanguageDefinition> = {
+ jakt: {
+ name: 'Jakt',
+ monaco: 'jakt',
+ extensions: ['.jakt'],
+ alias: [],
+ logoUrl: '',
+ logoUrlDark: null,
+ formatter: null,
+ previewFilter: null,
+ },
'c++': {
name: 'C++',
monaco: 'cppp',
@@ -83,6 +93,16 @@ const definitions: Record<LanguageKey, LanguageDefinition> = {
formatter: 'clangformat',
previewFilter: /^\s*#include/,
},
+ carbon: {
+ name: 'Carbon',
+ monaco: 'carbon',
+ extensions: ['.carbon'],
+ alias: [],
+ logoUrl: 'carbon.svg',
+ logoUrlDark: null,
+ formatter: null,
+ previewFilter: null,
+ },
circle: {
name: 'C++ (Circle)',
monaco: 'cppcircle',
@@ -343,6 +363,16 @@ const definitions: Record<LanguageKey, LanguageDefinition> = {
formatter: null,
previewFilter: null,
},
+ pony: {
+ name: 'Pony',
+ monaco: 'pony',
+ extensions: ['.pony'],
+ alias: [],
+ logoUrl: 'pony.svg',
+ logoUrlDark: null,
+ formatter: null,
+ previewFilter: null,
+ },
python: {
name: 'Python',
monaco: 'python',
diff --git a/lib/llvm-ast.js b/lib/llvm-ast.js
index b3d239c01..0ccbd3e31 100644
--- a/lib/llvm-ast.js
+++ b/lib/llvm-ast.js
@@ -103,6 +103,17 @@ export class LlvmAstParser {
// Refers to the user's source file rather than a system header
const sourceRegex = /<source>/g;
+ const slocRegex = /<<invalid sloc>>/;
+
+ // <<invalid sloc>, /app/hell.hpp:5:1>
+ const userSource = /<<invalid sloc>, \/app\/.*:\d+:\d+>/;
+
+ // </usr/include/x86_64-linux-gnu/bits/types.h:31:1, col:23>
+ // <line:229:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:229:12
+ // </usr/include/x86_64-linux-gnu/sys/cdefs.h:293:44, /usr/include/time.h:258:27> 1
+ // </opt/compiler-explorer/gcc-11.2.0/lib/gcc/x86_64-linux-gnu/11.2.0/etc...
+ const systemSource = /(<\/usr\/|,\s\/usr\/|<\/opt\/)/;
+
// Refers to whatever the most recent file specified was
const lineRegex = /<(col|line):/;
@@ -117,9 +128,13 @@ export class LlvmAstParser {
// This is a system header or implicit definition,
// remove everything up to the next top level decl
// Top level decls with invalid sloc as the file don't change the most recent file
- const slocRegex = /<<invalid sloc>>/;
- if (!slocRegex.test(output[i].text)) {
+ if (systemSource.test(output[i].text)) {
+ // skip ast from this source
+ } else if (userSource.test(output[i].text)) {
+ continue;
+ } else if (!slocRegex.test(output[i].text)) {
mostRecentIsSource = false;
+ continue;
}
let spliceMax = i + 1;
@@ -137,8 +152,8 @@ export class LlvmAstParser {
output[i].text = output[i].text.replace(addressRegex, '$1');
// Filter out <invalid sloc> and <<invalid sloc>>
- const slocRegex = / ?<?<invalid sloc>>?/g;
- output[i].text = output[i].text.replace(slocRegex, '');
+ const slocRegex2 = / ?<?<invalid sloc>>?/g;
+ output[i].text = output[i].text.replace(slocRegex2, '');
// Unify file references
output[i].text = output[i].text.replace(sourceRegex, 'line');
diff --git a/lib/parsers/llvm-pass-dump-parser.ts b/lib/parsers/llvm-pass-dump-parser.ts
index 9e8d5f03d..dc9ca637e 100644
--- a/lib/parsers/llvm-pass-dump-parser.ts
+++ b/lib/parsers/llvm-pass-dump-parser.ts
@@ -31,7 +31,6 @@ import {
} from '../../types/compilation/llvm-opt-pipeline-output.interfaces';
import {ParseFilters} from '../../types/features/filters.interfaces';
import {ResultLine} from '../../types/resultline/resultline.interfaces';
-import {logger} from '../logger';
// Note(jeremy-rifkin):
// For now this filters out a bunch of metadata we aren't interested in
@@ -42,14 +41,30 @@ import {logger} from '../logger';
// TODO(jeremy-rifkin): Doe we already have an assert utility
function assert(condition: boolean, message?: string, ...args: any[]): asserts condition {
if (!condition) {
- const error = message
- ? `Assertion error in llvm-print-after-all-parser: ${message}`
- : `Assertion error in llvm-print-after-all-parser`;
- logger.error(error + ' ' + JSON.stringify(args));
- throw error;
+ const stack = new Error('Assertion Error').stack;
+ throw (
+ (message
+ ? `Assertion error in llvm-print-after-all-parser: ${message}`
+ : `Assertion error in llvm-print-after-all-parser`) +
+ (args.length > 0 ? `\n${JSON.stringify(args)}\n` : '') +
+ `\n${stack}`
+ );
}
}
+// Just a sanity check
+function passesMatch(before: string, after: string) {
+ assert(before.startsWith('IR Dump Before '));
+ assert(after.startsWith('IR Dump After '));
+ before = before.slice('IR Dump Before '.length);
+ after = after.slice('IR Dump After '.length);
+ // Observed to happen in clang 13+ for LoopDeletionPass
+ if (after.endsWith(' (invalidated)')) {
+ after = after.slice(0, after.length - ' (invalidated)'.length);
+ }
+ return before === after;
+}
+
// Ir Dump for a pass with raw lines
type PassDump = {
header: string;
@@ -367,8 +382,8 @@ export class LlvmPassDumpParser {
} else if (current_dump.header.startsWith('IR Dump Before ')) {
if (next_dump !== null && next_dump.header.startsWith('IR Dump After ')) {
assert(
- current_dump.header.slice('IR Dump Before '.length) ===
- next_dump.header.slice('IR Dump After '.length),
+ passesMatch(current_dump.header, next_dump.header),
+ '',
current_dump.header,
next_dump.header,
);
diff --git a/lib/tooling/base-tool.js b/lib/tooling/base-tool.js
index 96d21fe70..b31bc2787 100755
--- a/lib/tooling/base-tool.js
+++ b/lib/tooling/base-tool.js
@@ -24,12 +24,19 @@
import path from 'path';
+import PromClient from 'prom-client';
import _ from 'underscore';
import * as exec from '../exec';
import {logger} from '../logger';
import * as utils from '../utils';
+const toolCounter = new PromClient.Counter({
+ name: 'tool_invocations_total',
+ help: 'Number of tool invocations',
+ labelNames: ['language', 'name'],
+});
+
export class BaseTool {
constructor(toolInfo, env) {
this.tool = toolInfo;
@@ -121,6 +128,12 @@ export class BaseTool {
}
async runTool(compilationInfo, inputFilepath, args, stdin /*, supportedLibraries*/) {
+ if (this.tool.name) {
+ toolCounter.inc({
+ language: compilationInfo.compiler.lang,
+ name: this.tool.name,
+ });
+ }
let execOptions = this.getDefaultExecOptions();
if (inputFilepath) execOptions.customCwd = path.dirname(inputFilepath);
execOptions.input = stdin;
diff --git a/package-lock.json b/package-lock.json
index cf3ec208e..43d538e8b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,6 +23,7 @@
"cross-env": "^7.0.3",
"es6-promise": "^4.2.8",
"eslint-plugin-header": "^3.1.1",
+ "eslint-plugin-prettier": "^4.2.1",
"esm": "^3.2.25",
"express": "^4.17.2",
"file-saver": "^2.0.5",
@@ -167,30 +168,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
- "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==",
+ "version": "7.18.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
+ "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
- "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
+ "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.18.6",
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helpers": "^7.18.6",
- "@babel/parser": "^7.18.6",
+ "@babel/generator": "^7.18.9",
+ "@babel/helper-compilation-targets": "^7.18.9",
+ "@babel/helper-module-transforms": "^7.18.9",
+ "@babel/helpers": "^7.18.9",
+ "@babel/parser": "^7.18.9",
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6",
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -215,12 +216,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.18.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
- "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz",
+ "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.7",
+ "@babel/types": "^7.18.9",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
},
@@ -255,12 +256,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
- "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
+ "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.18.6",
+ "@babel/compat-data": "^7.18.8",
"@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.20.2",
"semver": "^6.3.0"
@@ -282,17 +283,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz",
- "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz",
+ "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-function-name": "^7.18.6",
- "@babel/helper-member-expression-to-functions": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
"@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.9",
"@babel/helper-split-export-declaration": "^7.18.6"
},
"engines": {
@@ -303,22 +304,22 @@
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
- "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
- "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
+ "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
"dev": true,
"dependencies": {
"@babel/template": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.18.9"
},
"engines": {
"node": ">=6.9.0"
@@ -337,12 +338,12 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz",
- "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
+ "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.18.9"
},
"engines": {
"node": ">=6.9.0"
@@ -361,19 +362,19 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
- "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
+ "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
"@babel/helper-simple-access": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/helper-validator-identifier": "^7.18.6",
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
},
"engines": {
"node": ">=6.9.0"
@@ -392,25 +393,25 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
- "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz",
+ "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz",
- "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz",
+ "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-member-expression-to-functions": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
"@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
},
"engines": {
"node": ">=6.9.0"
@@ -458,14 +459,14 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
- "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
+ "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
"dev": true,
"dependencies": {
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
},
"engines": {
"node": ">=6.9.0"
@@ -486,9 +487,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
- "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
+ "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -512,9 +513,9 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.6.tgz",
- "integrity": "sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w==",
+ "version": "7.18.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz",
+ "integrity": "sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==",
"dev": true,
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.18.6",
@@ -560,19 +561,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
- "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz",
+ "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-function-name": "^7.18.6",
+ "@babel/generator": "^7.18.9",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.18.6",
- "@babel/types": "^7.18.6",
+ "@babel/parser": "^7.18.9",
+ "@babel/types": "^7.18.9",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -581,9 +582,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.18.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
- "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
+ "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
@@ -757,9 +758,9 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
- "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "version": "13.16.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
+ "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -953,9 +954,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
- "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"engines": {
"node": ">=6.0.0"
}
@@ -1268,27 +1269,83 @@
"dev": true
},
"node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.0.tgz",
+ "integrity": "sha512-MDNFUBcJIptB9At7HiV7VCvU3NcL4GnfCQaP8C5lrxWrRPMJBnemYtehaKSOlaM7AYxeRyj9etenu8LVpSpVaQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"@octokit/types": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.4.tgz",
+ "integrity": "sha512-sUpR/hc4Gc7K34o60bWC7WUH6Q7T6ftZ2dUmepSyJr9PRF76/qqkWjE2SOEzCqLA5W83SaISymwKtxks+96hPQ==",
"dev": true,
+ "peer": true,
"dependencies": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
"@octokit/types": "^6.0.3",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/core/node_modules/@octokit/endpoint": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz",
+ "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/core/node_modules/@octokit/request": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz",
+ "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/core/node_modules/@octokit/request-error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz",
+ "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/@octokit/endpoint": {
@@ -1303,32 +1360,84 @@
}
},
"node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.0.tgz",
+ "integrity": "sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ==",
"dev": true,
+ "peer": true,
"dependencies": {
- "@octokit/request": "^5.6.0",
+ "@octokit/request": "^6.0.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/graphql/node_modules/@octokit/endpoint": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz",
+ "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/graphql/node_modules/@octokit/request": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz",
+ "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/graphql/node_modules/@octokit/request-error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz",
+ "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/@octokit/openapi-types": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.6.0.tgz",
- "integrity": "sha512-7uS/1woIC7FvIxNSTcY4BLnNFbPtv/iteW041u7EfrZxFrUzB6C402sLyCEezl89HPHRjQet9Q1SHLMe0StITg==",
+ "version": "12.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.10.0.tgz",
+ "integrity": "sha512-xsgA7LKuQ/2QReMZQXNlBP68ferPlqw66Jmx5/J399Cn5EgIDaHXou6Rgn1GkpDNjkPji67fTlC2rz6ABaVFKw==",
"dev": true
},
"node_modules/@octokit/plugin-paginate-rest": {
- "version": "2.21.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.0.tgz",
- "integrity": "sha512-MoGEKjvDpTOCVb5gbeiW7kZm/cRfT256UJwHEuy+y+gTUuKziyXaiOkt5rM/4nzhp8UxVgvok9Tu7dMMpUybiQ==",
+ "version": "2.21.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.2.tgz",
+ "integrity": "sha512-S24H0a6bBVreJtoTaRHT/gnVASbOHVTRMOVIqd9zrJBP3JozsxJB56TDuTUmd1xLI4/rAE2HNmThvVKtIdLLEw==",
"dev": true,
"dependencies": {
- "@octokit/types": "^6.38.1"
+ "@octokit/types": "^6.39.0"
},
"peerDependencies": {
- "@octokit/core": ">=2"
+ "@octokit/core": ">=4"
}
},
"node_modules/@octokit/plugin-request-log": {
@@ -1341,12 +1450,12 @@
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.0.tgz",
- "integrity": "sha512-mvdwq+LvhR2GRDY82FgSZ52xX6wkOCpjiI3amiKbzKHd9nyKeFdXLsIQ3Go12tWRtvo+HwqoypLHDjRrgMFDQA==",
+ "version": "5.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
+ "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
"dev": true,
"dependencies": {
- "@octokit/types": "^6.38.0",
+ "@octokit/types": "^6.39.0",
"deprecation": "^2.3.1"
},
"peerDependencies": {
@@ -1390,19 +1499,54 @@
"@octokit/plugin-rest-endpoint-methods": "^5.12.0"
}
},
+ "node_modules/@octokit/rest/node_modules/@octokit/auth-token": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "node_modules/@octokit/rest/node_modules/@octokit/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/rest/node_modules/@octokit/graphql": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
"node_modules/@octokit/types": {
- "version": "6.38.1",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.38.1.tgz",
- "integrity": "sha512-kWMohLCIvnwApRmxRFDOqve7puiNNdtVfgwdDOm6QyJNorWOgKv2/AodCcGqx63o28kF7Dr4/nJCatrwwqhULg==",
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.40.0.tgz",
+ "integrity": "sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw==",
"dev": true,
"dependencies": {
- "@octokit/openapi-types": "^12.5.0"
+ "@octokit/openapi-types": "^12.10.0"
}
},
"node_modules/@orchidjs/sifter": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.9.1.tgz",
- "integrity": "sha512-bdW8vKTlWXfoAvUud0a4OeVPrtdvHH8gTshKqndzxAI6bXGPBejgry2wvIz0OZOqOuWuFAJWgNCjq/6S85U77A=="
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.9.2.tgz",
+ "integrity": "sha512-8eR1aNWPhDt+cqOevGUajriiZbMzs6nGGdErUjSr99vMAxwMBRztnJu72OT8M7emyHTVjBB8BPjj4rJIoXQgKA=="
},
"node_modules/@popperjs/core": {
"version": "2.11.5",
@@ -1724,9 +1868,9 @@
"dev": true
},
"node_modules/@types/eslint": {
- "version": "8.4.3",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz",
- "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==",
+ "version": "8.4.5",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz",
+ "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -1825,9 +1969,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz",
- "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA=="
+ "version": "18.0.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz",
+ "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw=="
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
@@ -1954,14 +2098,14 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.0.tgz",
- "integrity": "sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz",
+ "integrity": "sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/type-utils": "5.30.0",
- "@typescript-eslint/utils": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/type-utils": "5.30.6",
+ "@typescript-eslint/utils": "5.30.6",
"debug": "^4.3.4",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.2.0",
@@ -1987,14 +2131,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.0.tgz",
- "integrity": "sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.6.tgz",
+ "integrity": "sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/typescript-estree": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/typescript-estree": "5.30.6",
"debug": "^4.3.4"
},
"engines": {
@@ -2014,13 +2158,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.0.tgz",
- "integrity": "sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz",
+ "integrity": "sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/visitor-keys": "5.30.0"
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/visitor-keys": "5.30.6"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2031,12 +2175,12 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.0.tgz",
- "integrity": "sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz",
+ "integrity": "sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/utils": "5.30.0",
+ "@typescript-eslint/utils": "5.30.6",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -2057,9 +2201,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.0.tgz",
- "integrity": "sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.6.tgz",
+ "integrity": "sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2070,13 +2214,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz",
- "integrity": "sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz",
+ "integrity": "sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/visitor-keys": "5.30.0",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/visitor-keys": "5.30.6",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -2097,15 +2241,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.0.tgz",
- "integrity": "sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.6.tgz",
+ "integrity": "sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/typescript-estree": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/typescript-estree": "5.30.6",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
@@ -2121,12 +2265,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.0.tgz",
- "integrity": "sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz",
+ "integrity": "sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.30.0",
+ "@typescript-eslint/types": "5.30.6",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -2801,6 +2945,17 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/await-to-js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-2.1.1.tgz",
@@ -2811,9 +2966,9 @@
}
},
"node_modules/aws-sdk": {
- "version": "2.1166.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1166.0.tgz",
- "integrity": "sha512-9CJQpMtIv2sxvwYTcMCfuCGU8t5qEppnvmo0uFFOm+1Q1uEv5sPg95wQH3Gfj4Mmv4FKWFofgTLksn0u2pDxsw==",
+ "version": "2.1176.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1176.0.tgz",
+ "integrity": "sha512-jinSKjACYHIkkz0UlFwQXwz8HAHZIeJg5wOnZoMTKU3/WM6Vh26hZJJ6XkwDAfBmyWp3V9qFdQoSAiO8SeXKjw==",
"dependencies": {
"buffer": "4.9.2",
"events": "1.1.1",
@@ -2822,6 +2977,7 @@
"querystring": "0.2.0",
"sax": "1.2.1",
"url": "0.10.3",
+ "util": "^0.12.4",
"uuid": "8.0.0",
"xml2js": "0.4.19"
},
@@ -3116,9 +3272,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
- "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz",
+ "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==",
"funding": [
{
"type": "opencollective",
@@ -3130,9 +3286,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001359",
- "electron-to-chromium": "^1.4.172",
- "node-releases": "^2.0.5",
+ "caniuse-lite": "^1.0.30001366",
+ "electron-to-chromium": "^1.4.188",
+ "node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.4"
},
"bin": {
@@ -3306,9 +3462,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001361",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
- "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==",
+ "version": "1.0.30001367",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz",
+ "integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==",
"funding": [
{
"type": "opencollective",
@@ -3522,9 +3678,9 @@
"dev": true
},
"node_modules/clean-css": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz",
- "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
+ "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==",
"dependencies": {
"source-map": "~0.6.0"
},
@@ -4350,9 +4506,9 @@
}
},
"node_modules/cypress/node_modules/@types/node": {
- "version": "14.18.21",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz",
- "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==",
+ "version": "14.18.22",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz",
+ "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==",
"dev": true
},
"node_modules/cypress/node_modules/ansi-styles": {
@@ -4534,9 +4690,9 @@
}
},
"node_modules/deep-equal-in-any-order": {
- "version": "1.1.19",
- "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.19.tgz",
- "integrity": "sha512-7R7lJt8PwUtDp+qOx/9fXjvkitEPLoogMb1B2G2Ibcfq3EHZdWZGZzgbwznN/LimgfFbyekupMPItTCsQ1k9nQ==",
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.20.tgz",
+ "integrity": "sha512-GTpQxcQx28KvV6ChrHb4AcL5z+eFEymtoSUaWe+FEakEpZ/66jTvz52xLUym/sK4Pn1sbYLsCV5rEURDeiFl3w==",
"dev": true,
"dependencies": {
"lodash.mapvalues": "^4.6.0",
@@ -4629,7 +4785,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "dev": true,
"dependencies": {
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
@@ -4837,9 +4992,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.176",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
- "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw=="
+ "version": "1.4.192",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.192.tgz",
+ "integrity": "sha512-8nCXyIQY9An88NXAp+PuPy5h3/w5ZY7Iu2lag65Q0XREprcat5F8gKhoHsBUnQcFuCRnmevpR8yEBYRU3d2HDw=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
@@ -4902,9 +5057,9 @@
}
},
"node_modules/entities": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz",
- "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz",
+ "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==",
"dev": true,
"engines": {
"node": ">=0.12"
@@ -4996,7 +5151,6 @@
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
"integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
@@ -5047,7 +5201,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -5094,9 +5247,9 @@
}
},
"node_modules/eslint": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz",
- "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
+ "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
"dependencies": {
"@eslint/eslintrc": "^1.3.0",
"@humanwhocodes/config-array": "^0.9.2",
@@ -5581,6 +5734,26 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.28.0",
+ "prettier": ">=2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
"node_modules/eslint-plugin-promise": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz",
@@ -5803,9 +5976,9 @@
}
},
"node_modules/eslint/node_modules/globals": {
- "version": "13.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
- "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "version": "13.16.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
+ "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -6135,6 +6308,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
+ "node_modules/fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w=="
+ },
"node_modules/fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -6406,6 +6584,14 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/foreground-child": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
@@ -6544,7 +6730,6 @@
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
@@ -6567,7 +6752,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6640,7 +6824,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
@@ -6847,7 +7030,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6865,7 +7047,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.1.1"
},
@@ -7310,7 +7491,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.1.0",
"has": "^1.0.3",
@@ -7355,6 +7535,21 @@
"node": ">=6"
}
},
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -7365,7 +7560,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
"dependencies": {
"has-bigints": "^1.0.1"
},
@@ -7389,7 +7583,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -7417,7 +7610,6 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -7452,7 +7644,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7518,6 +7709,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -7561,7 +7766,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -7581,7 +7785,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7646,7 +7849,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -7669,7 +7871,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7684,7 +7885,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
"dependencies": {
"has-symbols": "^1.0.2"
},
@@ -7695,6 +7895,24 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+ "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -7716,7 +7934,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -7893,9 +8110,9 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
- "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -8219,9 +8436,9 @@
}
},
"node_modules/lilconfig": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
- "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
"dev": true,
"engines": {
"node": ">=10"
@@ -8297,9 +8514,9 @@
"dev": true
},
"node_modules/lint-staged/node_modules/commander": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz",
- "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz",
+ "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==",
"dev": true,
"engines": {
"node": "^12.20.0 || >=14"
@@ -8370,6 +8587,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lint-staged/node_modules/lilconfig": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/lint-staged/node_modules/listr2": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz",
@@ -8907,9 +9133,9 @@
}
},
"node_modules/logform": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.1.tgz",
- "integrity": "sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz",
+ "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==",
"dependencies": {
"@colors/colors": "1.5.0",
"fecha": "^4.2.0",
@@ -8997,9 +9223,9 @@
"dev": true
},
"node_modules/marked": {
- "version": "4.0.17",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz",
- "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz",
+ "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==",
"dev": true,
"bin": {
"marked": "bin/marked.js"
@@ -9811,9 +10037,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
- "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q=="
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
},
"node_modules/node-targz": {
"version": "0.2.0",
@@ -10164,7 +10390,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -10173,7 +10398,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3",
@@ -11253,7 +11477,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true,
"bin": {
"prettier": "bin-prettier.js"
},
@@ -11264,6 +11487,17 @@
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/pretty-bytes": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
@@ -11374,9 +11608,9 @@
"dev": true
},
"node_modules/psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
"node_modules/pug": {
"version": "3.0.2",
@@ -11765,7 +11999,6 @@
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
@@ -12071,9 +12304,9 @@
}
},
"node_modules/rxjs": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
- "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+ "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"dev": true,
"dependencies": {
"tslib": "^2.1.0"
@@ -12955,7 +13188,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
"integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
@@ -12969,7 +13201,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
"integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
@@ -13409,9 +13640,9 @@
}
},
"node_modules/terser": {
- "version": "5.14.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
- "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
"dependencies": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -13566,11 +13797,11 @@
"integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
},
"node_modules/tom-select": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.0.3.tgz",
- "integrity": "sha512-IHcVHVb4/+I+4pAuXjEFVoH97mOvjp8CQ45PemnapcoRY46LqmH07hBwvRIIEznsXqBlFgZH7Uw7Cjh45mNlTA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.1.0.tgz",
+ "integrity": "sha512-NtE8kACBlMv4QaDakYfnXtEAgM/AVmM7Hw5FNQmij0uwgRgyXC/2kpNJPD1AdT5q/l6mUNkTnInQpTmrwX/tWQ==",
"dependencies": {
- "@orchidjs/sifter": "^0.9.1"
+ "@orchidjs/sifter": "^0.9.2"
},
"engines": {
"node": "*"
@@ -13715,9 +13946,9 @@
}
},
"node_modules/ts-node": {
- "version": "10.8.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz",
- "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==",
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -13908,7 +14139,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -14048,6 +14278,19 @@
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
"integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
},
+ "node_modules/util": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
+ "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "safe-buffer": "^5.1.2",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -14614,7 +14857,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -14632,6 +14874,25 @@
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
"dev": true
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+ "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -14873,9 +15134,9 @@
}
},
"node_modules/ws": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
- "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+ "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -15088,27 +15349,27 @@
}
},
"@babel/compat-data": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
- "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==",
+ "version": "7.18.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
+ "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
"dev": true
},
"@babel/core": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
- "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
+ "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
"dev": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.18.6",
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helpers": "^7.18.6",
- "@babel/parser": "^7.18.6",
+ "@babel/generator": "^7.18.9",
+ "@babel/helper-compilation-targets": "^7.18.9",
+ "@babel/helper-module-transforms": "^7.18.9",
+ "@babel/helpers": "^7.18.9",
+ "@babel/parser": "^7.18.9",
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6",
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -15125,12 +15386,12 @@
}
},
"@babel/generator": {
- "version": "7.18.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
- "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz",
+ "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==",
"dev": true,
"requires": {
- "@babel/types": "^7.18.7",
+ "@babel/types": "^7.18.9",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
},
@@ -15158,12 +15419,12 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
- "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
+ "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.18.6",
+ "@babel/compat-data": "^7.18.8",
"@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.20.2",
"semver": "^6.3.0"
@@ -15178,34 +15439,34 @@
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz",
- "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz",
+ "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-function-name": "^7.18.6",
- "@babel/helper-member-expression-to-functions": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
"@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.9",
"@babel/helper-split-export-declaration": "^7.18.6"
}
},
"@babel/helper-environment-visitor": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
- "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
"dev": true
},
"@babel/helper-function-name": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
- "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
+ "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
"dev": true,
"requires": {
"@babel/template": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-hoist-variables": {
@@ -15218,12 +15479,12 @@
}
},
"@babel/helper-member-expression-to-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz",
- "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
+ "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
"dev": true,
"requires": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-module-imports": {
@@ -15236,19 +15497,19 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
- "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
+ "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
"@babel/helper-simple-access": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/helper-validator-identifier": "^7.18.6",
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-optimise-call-expression": {
@@ -15261,22 +15522,22 @@
}
},
"@babel/helper-plugin-utils": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
- "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz",
+ "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==",
"dev": true
},
"@babel/helper-replace-supers": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz",
- "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz",
+ "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-member-expression-to-functions": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
"@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-simple-access": {
@@ -15309,14 +15570,14 @@
"dev": true
},
"@babel/helpers": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
- "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
+ "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
"dev": true,
"requires": {
"@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.6",
- "@babel/types": "^7.18.6"
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
}
},
"@babel/highlight": {
@@ -15331,9 +15592,9 @@
}
},
"@babel/parser": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
- "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw=="
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
+ "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg=="
},
"@babel/plugin-syntax-typescript": {
"version": "7.18.6",
@@ -15345,9 +15606,9 @@
}
},
"@babel/plugin-transform-typescript": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.6.tgz",
- "integrity": "sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w==",
+ "version": "7.18.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz",
+ "integrity": "sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==",
"dev": true,
"requires": {
"@babel/helper-create-class-features-plugin": "^7.18.6",
@@ -15378,27 +15639,27 @@
}
},
"@babel/traverse": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
- "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz",
+ "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.6",
- "@babel/helper-function-name": "^7.18.6",
+ "@babel/generator": "^7.18.9",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.18.6",
- "@babel/types": "^7.18.6",
+ "@babel/parser": "^7.18.9",
+ "@babel/types": "^7.18.9",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.18.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
- "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
+ "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"requires": {
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
@@ -15547,9 +15808,9 @@
}
},
"globals": {
- "version": "13.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
- "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "version": "13.16.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
+ "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -15692,9 +15953,9 @@
}
},
"@jridgewell/resolve-uri": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
- "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w=="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
},
"@jridgewell/set-array": {
"version": "1.1.2",
@@ -15872,27 +16133,70 @@
}
},
"@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.0.tgz",
+ "integrity": "sha512-MDNFUBcJIptB9At7HiV7VCvU3NcL4GnfCQaP8C5lrxWrRPMJBnemYtehaKSOlaM7AYxeRyj9etenu8LVpSpVaQ==",
"dev": true,
+ "peer": true,
"requires": {
"@octokit/types": "^6.0.3"
}
},
"@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.4.tgz",
+ "integrity": "sha512-sUpR/hc4Gc7K34o60bWC7WUH6Q7T6ftZ2dUmepSyJr9PRF76/qqkWjE2SOEzCqLA5W83SaISymwKtxks+96hPQ==",
"dev": true,
+ "peer": true,
"requires": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
"@octokit/types": "^6.0.3",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
+ },
+ "dependencies": {
+ "@octokit/endpoint": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz",
+ "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz",
+ "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request-error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz",
+ "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ }
}
},
"@octokit/endpoint": {
@@ -15907,29 +16211,71 @@
}
},
"@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.0.tgz",
+ "integrity": "sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ==",
"dev": true,
+ "peer": true,
"requires": {
- "@octokit/request": "^5.6.0",
+ "@octokit/request": "^6.0.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
+ },
+ "dependencies": {
+ "@octokit/endpoint": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz",
+ "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz",
+ "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request-error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz",
+ "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ }
}
},
"@octokit/openapi-types": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.6.0.tgz",
- "integrity": "sha512-7uS/1woIC7FvIxNSTcY4BLnNFbPtv/iteW041u7EfrZxFrUzB6C402sLyCEezl89HPHRjQet9Q1SHLMe0StITg==",
+ "version": "12.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.10.0.tgz",
+ "integrity": "sha512-xsgA7LKuQ/2QReMZQXNlBP68ferPlqw66Jmx5/J399Cn5EgIDaHXou6Rgn1GkpDNjkPji67fTlC2rz6ABaVFKw==",
"dev": true
},
"@octokit/plugin-paginate-rest": {
- "version": "2.21.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.0.tgz",
- "integrity": "sha512-MoGEKjvDpTOCVb5gbeiW7kZm/cRfT256UJwHEuy+y+gTUuKziyXaiOkt5rM/4nzhp8UxVgvok9Tu7dMMpUybiQ==",
+ "version": "2.21.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.2.tgz",
+ "integrity": "sha512-S24H0a6bBVreJtoTaRHT/gnVASbOHVTRMOVIqd9zrJBP3JozsxJB56TDuTUmd1xLI4/rAE2HNmThvVKtIdLLEw==",
"dev": true,
"requires": {
- "@octokit/types": "^6.38.1"
+ "@octokit/types": "^6.39.0"
}
},
"@octokit/plugin-request-log": {
@@ -15940,12 +16286,12 @@
"requires": {}
},
"@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.0.tgz",
- "integrity": "sha512-mvdwq+LvhR2GRDY82FgSZ52xX6wkOCpjiI3amiKbzKHd9nyKeFdXLsIQ3Go12tWRtvo+HwqoypLHDjRrgMFDQA==",
+ "version": "5.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
+ "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
"dev": true,
"requires": {
- "@octokit/types": "^6.38.0",
+ "@octokit/types": "^6.39.0",
"deprecation": "^2.3.1"
}
},
@@ -15984,21 +16330,58 @@
"@octokit/plugin-paginate-rest": "^2.16.8",
"@octokit/plugin-request-log": "^1.0.4",
"@octokit/plugin-rest-endpoint-methods": "^5.12.0"
+ },
+ "dependencies": {
+ "@octokit/auth-token": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "dev": true,
+ "requires": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "@octokit/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "dev": true,
+ "requires": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/graphql": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "dev": true,
+ "requires": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ }
}
},
"@octokit/types": {
- "version": "6.38.1",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.38.1.tgz",
- "integrity": "sha512-kWMohLCIvnwApRmxRFDOqve7puiNNdtVfgwdDOm6QyJNorWOgKv2/AodCcGqx63o28kF7Dr4/nJCatrwwqhULg==",
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.40.0.tgz",
+ "integrity": "sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw==",
"dev": true,
"requires": {
- "@octokit/openapi-types": "^12.5.0"
+ "@octokit/openapi-types": "^12.10.0"
}
},
"@orchidjs/sifter": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.9.1.tgz",
- "integrity": "sha512-bdW8vKTlWXfoAvUud0a4OeVPrtdvHH8gTshKqndzxAI6bXGPBejgry2wvIz0OZOqOuWuFAJWgNCjq/6S85U77A=="
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.9.2.tgz",
+ "integrity": "sha512-8eR1aNWPhDt+cqOevGUajriiZbMzs6nGGdErUjSr99vMAxwMBRztnJu72OT8M7emyHTVjBB8BPjj4rJIoXQgKA=="
},
"@popperjs/core": {
"version": "2.11.5",
@@ -16301,9 +16684,9 @@
"dev": true
},
"@types/eslint": {
- "version": "8.4.3",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz",
- "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==",
+ "version": "8.4.5",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz",
+ "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==",
"requires": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -16402,9 +16785,9 @@
"dev": true
},
"@types/node": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz",
- "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA=="
+ "version": "18.0.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz",
+ "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw=="
},
"@types/normalize-package-data": {
"version": "2.4.1",
@@ -16531,14 +16914,14 @@
}
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.0.tgz",
- "integrity": "sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz",
+ "integrity": "sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/type-utils": "5.30.0",
- "@typescript-eslint/utils": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/type-utils": "5.30.6",
+ "@typescript-eslint/utils": "5.30.6",
"debug": "^4.3.4",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.2.0",
@@ -16548,52 +16931,52 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.0.tgz",
- "integrity": "sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.6.tgz",
+ "integrity": "sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/typescript-estree": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/typescript-estree": "5.30.6",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.0.tgz",
- "integrity": "sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz",
+ "integrity": "sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/visitor-keys": "5.30.0"
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/visitor-keys": "5.30.6"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.0.tgz",
- "integrity": "sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz",
+ "integrity": "sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA==",
"dev": true,
"requires": {
- "@typescript-eslint/utils": "5.30.0",
+ "@typescript-eslint/utils": "5.30.6",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.0.tgz",
- "integrity": "sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.6.tgz",
+ "integrity": "sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz",
- "integrity": "sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz",
+ "integrity": "sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/visitor-keys": "5.30.0",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/visitor-keys": "5.30.6",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -16602,26 +16985,26 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.0.tgz",
- "integrity": "sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.6.tgz",
+ "integrity": "sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.30.0",
- "@typescript-eslint/types": "5.30.0",
- "@typescript-eslint/typescript-estree": "5.30.0",
+ "@typescript-eslint/scope-manager": "5.30.6",
+ "@typescript-eslint/types": "5.30.6",
+ "@typescript-eslint/typescript-estree": "5.30.6",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.0.tgz",
- "integrity": "sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw==",
+ "version": "5.30.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz",
+ "integrity": "sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.30.0",
+ "@typescript-eslint/types": "5.30.6",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -17138,6 +17521,11 @@
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true
},
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
+ },
"await-to-js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-2.1.1.tgz",
@@ -17145,9 +17533,9 @@
"dev": true
},
"aws-sdk": {
- "version": "2.1166.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1166.0.tgz",
- "integrity": "sha512-9CJQpMtIv2sxvwYTcMCfuCGU8t5qEppnvmo0uFFOm+1Q1uEv5sPg95wQH3Gfj4Mmv4FKWFofgTLksn0u2pDxsw==",
+ "version": "2.1176.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1176.0.tgz",
+ "integrity": "sha512-jinSKjACYHIkkz0UlFwQXwz8HAHZIeJg5wOnZoMTKU3/WM6Vh26hZJJ6XkwDAfBmyWp3V9qFdQoSAiO8SeXKjw==",
"requires": {
"buffer": "4.9.2",
"events": "1.1.1",
@@ -17156,6 +17544,7 @@
"querystring": "0.2.0",
"sax": "1.2.1",
"url": "0.10.3",
+ "util": "^0.12.4",
"uuid": "8.0.0",
"xml2js": "0.4.19"
},
@@ -17389,13 +17778,13 @@
"dev": true
},
"browserslist": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
- "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz",
+ "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==",
"requires": {
- "caniuse-lite": "^1.0.30001359",
- "electron-to-chromium": "^1.4.172",
- "node-releases": "^2.0.5",
+ "caniuse-lite": "^1.0.30001366",
+ "electron-to-chromium": "^1.4.188",
+ "node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.4"
}
},
@@ -17527,9 +17916,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001361",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
- "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ=="
+ "version": "1.0.30001367",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz",
+ "integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw=="
},
"cardinal": {
"version": "2.1.1",
@@ -17694,9 +18083,9 @@
"dev": true
},
"clean-css": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz",
- "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
+ "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==",
"requires": {
"source-map": "~0.6.0"
}
@@ -18313,9 +18702,9 @@
},
"dependencies": {
"@types/node": {
- "version": "14.18.21",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz",
- "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==",
+ "version": "14.18.22",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz",
+ "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==",
"dev": true
},
"ansi-styles": {
@@ -18440,9 +18829,9 @@
}
},
"deep-equal-in-any-order": {
- "version": "1.1.19",
- "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.19.tgz",
- "integrity": "sha512-7R7lJt8PwUtDp+qOx/9fXjvkitEPLoogMb1B2G2Ibcfq3EHZdWZGZzgbwznN/LimgfFbyekupMPItTCsQ1k9nQ==",
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.20.tgz",
+ "integrity": "sha512-GTpQxcQx28KvV6ChrHb4AcL5z+eFEymtoSUaWe+FEakEpZ/66jTvz52xLUym/sK4Pn1sbYLsCV5rEURDeiFl3w==",
"dev": true,
"requires": {
"lodash.mapvalues": "^4.6.0",
@@ -18513,7 +18902,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "dev": true,
"requires": {
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
@@ -18675,9 +19063,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"electron-to-chromium": {
- "version": "1.4.176",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
- "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw=="
+ "version": "1.4.192",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.192.tgz",
+ "integrity": "sha512-8nCXyIQY9An88NXAp+PuPy5h3/w5ZY7Iu2lag65Q0XREprcat5F8gKhoHsBUnQcFuCRnmevpR8yEBYRU3d2HDw=="
},
"emoji-regex": {
"version": "8.0.0",
@@ -18728,9 +19116,9 @@
}
},
"entities": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz",
- "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz",
+ "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==",
"dev": true
},
"env-ci": {
@@ -18794,7 +19182,6 @@
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
"integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
@@ -18839,7 +19226,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -18874,9 +19260,9 @@
"dev": true
},
"eslint": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz",
- "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
+ "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
"requires": {
"@eslint/eslintrc": "^1.3.0",
"@humanwhocodes/config-array": "^0.9.2",
@@ -18976,9 +19362,9 @@
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
},
"globals": {
- "version": "13.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
- "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "version": "13.16.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
+ "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -19348,6 +19734,14 @@
}
}
},
+ "eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
"eslint-plugin-promise": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz",
@@ -19649,6 +20043,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w=="
+ },
"fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -19860,6 +20259,14 @@
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
"integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
},
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
"foreground-child": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
@@ -19955,7 +20362,6 @@
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
@@ -19971,8 +20377,7 @@
"functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
},
"gensync": {
"version": "1.0.0-beta.2",
@@ -20021,7 +20426,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
@@ -20179,8 +20583,7 @@
"has-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
},
"has-flag": {
"version": "3.0.0",
@@ -20192,7 +20595,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
"requires": {
"get-intrinsic": "^1.1.1"
}
@@ -20508,7 +20910,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "dev": true,
"requires": {
"get-intrinsic": "^1.1.0",
"has": "^1.0.3",
@@ -20538,6 +20939,15 @@
"integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==",
"dev": true
},
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -20548,7 +20958,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
"requires": {
"has-bigints": "^1.0.1"
}
@@ -20566,7 +20975,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -20584,8 +20992,7 @@
"is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
- "dev": true
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
},
"is-ci": {
"version": "3.0.1",
@@ -20608,7 +21015,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
@@ -20646,6 +21052,14 @@
"integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
"dev": true
},
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -20676,8 +21090,7 @@
"is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
},
"is-number": {
"version": "7.0.0",
@@ -20688,7 +21101,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
@@ -20729,7 +21141,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2"
}
@@ -20743,7 +21154,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
@@ -20752,11 +21162,22 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
"requires": {
"has-symbols": "^1.0.2"
}
},
+ "is-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+ "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -20772,7 +21193,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2"
}
@@ -20913,9 +21333,9 @@
}
},
"istanbul-reports": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
- "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
"html-escaper": "^2.0.0",
@@ -21177,9 +21597,9 @@
}
},
"lilconfig": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
- "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
"dev": true
},
"lines-and-columns": {
@@ -21234,9 +21654,9 @@
"dev": true
},
"commander": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz",
- "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz",
+ "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==",
"dev": true
},
"execa": {
@@ -21280,6 +21700,12 @@
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true
},
+ "lilconfig": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
+ "dev": true
+ },
"listr2": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz",
@@ -21679,9 +22105,9 @@
}
},
"logform": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.1.tgz",
- "integrity": "sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz",
+ "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==",
"requires": {
"@colors/colors": "1.5.0",
"fecha": "^4.2.0",
@@ -21759,9 +22185,9 @@
"dev": true
},
"marked": {
- "version": "4.0.17",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz",
- "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz",
+ "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==",
"dev": true
},
"marked-terminal": {
@@ -22350,9 +22776,9 @@
}
},
"node-releases": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
- "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q=="
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
},
"node-targz": {
"version": "0.2.0",
@@ -22619,14 +23045,12 @@
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"object.assign": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
"requires": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3",
@@ -23358,8 +23782,15 @@
"prettier": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
- "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g=="
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
},
"pretty-bytes": {
"version": "5.6.0",
@@ -23444,9 +23875,9 @@
"dev": true
},
"psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
"pug": {
"version": "3.0.2",
@@ -23761,7 +24192,6 @@
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
@@ -23977,9 +24407,9 @@
}
},
"rxjs": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
- "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+ "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
@@ -24697,7 +25127,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
"integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
@@ -24708,7 +25137,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
"integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
@@ -25050,9 +25478,9 @@
}
},
"terser": {
- "version": "5.14.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
- "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
"requires": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -25167,11 +25595,11 @@
"integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
},
"tom-select": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.0.3.tgz",
- "integrity": "sha512-IHcVHVb4/+I+4pAuXjEFVoH97mOvjp8CQ45PemnapcoRY46LqmH07hBwvRIIEznsXqBlFgZH7Uw7Cjh45mNlTA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.1.0.tgz",
+ "integrity": "sha512-NtE8kACBlMv4QaDakYfnXtEAgM/AVmM7Hw5FNQmij0uwgRgyXC/2kpNJPD1AdT5q/l6mUNkTnInQpTmrwX/tWQ==",
"requires": {
- "@orchidjs/sifter": "^0.9.1"
+ "@orchidjs/sifter": "^0.9.2"
}
},
"tough-cookie": {
@@ -25277,9 +25705,9 @@
}
},
"ts-node": {
- "version": "10.8.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz",
- "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==",
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"requires": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -25414,7 +25842,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -25512,6 +25939,19 @@
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
"integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
},
+ "util": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
+ "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "safe-buffer": "^5.1.2",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -25898,7 +26338,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
"requires": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -25913,6 +26352,19 @@
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
"dev": true
},
+ "which-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+ "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.9"
+ }
+ },
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -26109,9 +26561,9 @@
}
},
"ws": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
- "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+ "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
"dev": true,
"requires": {}
},
diff --git a/package.json b/package.json
index c50e7b421..f1c4b6982 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"cross-env": "^7.0.3",
"es6-promise": "^4.2.8",
"eslint-plugin-header": "^3.1.1",
+ "eslint-plugin-prettier": "^4.2.1",
"esm": "^3.2.25",
"express": "^4.17.2",
"file-saver": "^2.0.5",
@@ -163,7 +164,7 @@
"test": "mocha -b",
"test-min": "mocha -b --config .mocharc-min.yml",
"fix": "npm run lint && npm run format && npm run ts-check",
- "check": "npm run format-check && npm run ts-check && npm run lint-check && npm run test-min -- --reporter min",
+ "check": "npm run npm run ts-check && npm run lint-check && npm run test-min -- --reporter min",
"dev": "cross-env NODE_ENV=DEV node -r esm -r ts-node/register app.js",
"debugger": "cross-env NODE_ENV=DEV node --inspect -r esm -r ts-node/register app.js --debug",
"debug": "cross-env NODE_ENV=DEV node -r esm -r ts-node/register app.js --debug",
@@ -173,7 +174,6 @@
"update-browserslist": "npx browserslist@latest -- --update-db",
"prepare": "husky install",
"format": "prettier --write .",
- "format-check": "prettier --check .",
"format-files": "prettier --write --ignore-unknown",
"ts-compile": "tsc",
"ts-check": "tsc -p ./tsconfig.backend.json --noEmit --module esnext && tsc -p ./tsconfig.frontend.json --noEmit",
diff --git a/static/event-map.ts b/static/event-map.ts
index e76fef04b..478b19d8e 100644
--- a/static/event-map.ts
+++ b/static/event-map.ts
@@ -24,6 +24,7 @@
import {Language} from '../types/languages.interfaces';
import {CompilerFilters} from '../types/features/filters.interfaces';
+import {MessageWithLocation} from '../types/resultline/resultline.interfaces';
import {SiteSettings} from './settings';
import {Theme} from './themes';
import {PPOptions} from './panes/pp-view.interfaces';
@@ -48,7 +49,7 @@ export type EventMap = {
compilerFlagsChange: (compilerId: number, options: string) => void;
compilerOpen: (compilerId: number, editorId: number, treeId: number | boolean) => void;
// Right now nothing emits this event, but it might be useful at some point so we keep it
- compilerSetDecorations: (compilerId: number, lineNums: number[], revealLine: boolean) => void;
+ compilerSetDecorations: (compilerId: number, lineNums: number[], revealLine: boolean, column?: number) => void;
compiling: (compilerId: number, compiler: unknown) => void;
conformanceViewClose: (editorId: number) => void;
conformanceViewOpen: (editorId: number) => void;
@@ -58,6 +59,7 @@ export type EventMap = {
displaySharingPopover: () => void;
editorChange: (editorId: number, source: string, langId: string, compilerId?: number) => void;
editorClose: (editorId: number) => void;
+ editorDisplayFlow: (editorId: number, flow: MessageWithLocation[]) => void;
editorLinkLine: (editorId: number, lineNumber: number, colBegin: number, colEnd: number, reveal: boolean) => void;
editorOpen: (editorId: number) => void;
editorSetDecoration: (editorId: number, lineNumber: number, reveal: boolean) => void;
diff --git a/static/modes/_all.ts b/static/modes/_all.ts
index a3f5d8c9e..a290c1487 100644
--- a/static/modes/_all.ts
+++ b/static/modes/_all.ts
@@ -26,6 +26,7 @@ import './ada-mode';
import './asm6502-mode';
import './asm-mode';
import './asmruby-mode';
+import './carbon-mode';
import './clean-mode';
import './cmake-mode';
import './cpp-for-opencl-mode';
@@ -41,6 +42,7 @@ import './fortran-mode';
import './gccdump-rtl-gimple-mode';
import './haskell-mode';
import './ispc-mode';
+import './jakt-mode';
import './llvm-ir-mode';
import './mlir-mode';
import './nc-mode';
diff --git a/static/modes/carbon-mode.ts b/static/modes/carbon-mode.ts
new file mode 100644
index 000000000..c05e1c4b1
--- /dev/null
+++ b/static/modes/carbon-mode.ts
@@ -0,0 +1,173 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+'use strict';
+
+const monaco = require('monaco-editor');
+const cpp = require('monaco-editor/esm/vs/basic-languages/cpp/cpp');
+
+function definition() {
+ return {
+ defaultToken: 'invalid', // for debugging
+
+ keywords: [
+ 'and',
+ 'api',
+ 'as',
+ 'auto',
+ '__await',
+ 'break',
+ 'case',
+ 'choice',
+ 'class',
+ '__continuation',
+ 'continue',
+ 'default',
+ 'else',
+ 'external',
+ 'false',
+ 'fn',
+ 'if',
+ 'impl',
+ 'import',
+ 'interface',
+ 'let',
+ 'library',
+ 'match',
+ 'not',
+ 'or',
+ 'package',
+ 'return',
+ '__run',
+ 'String',
+ 'then',
+ 'true',
+ 'var',
+ 'while',
+ ],
+
+ typeKeywords: ['Bool', '__Continuation', '__Fn', 'String', 'Type'],
+
+ operators: [
+ '&',
+ '->',
+ ':',
+ ':!',
+ ',',
+ '=>',
+ '=',
+ '==',
+ '-',
+ '.',
+ '+',
+ ';',
+ '/',
+ '_', // not sure _ is an operator really
+ ],
+
+ // we include these common regular expressions
+ symbols: /[=><!~?:&|+\-*/^%]+/,
+
+ // C# style strings (TODO)
+ escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
+
+ // The main tokenizer for our languages
+ tokenizer: {
+ root: [
+ // identifiers and keywords
+ [
+ /[a-z_$][\w$]*/,
+ {
+ cases: {
+ '@typeKeywords': 'keyword',
+ '@keywords': 'keyword',
+ '@default': 'identifier',
+ },
+ },
+ ],
+ [/[A-Z][\w$]*/, 'type.identifier'], // to show class names nicely
+
+ // whitespace
+ {include: '@whitespace'},
+
+ // delimiters and operators
+ [/[{}()[\]]/, '@brackets'],
+ [/[<>](?!@symbols)/, '@brackets'],
+ [
+ /@symbols/,
+ {
+ cases: {
+ '@operators': 'operator',
+ '@default': '',
+ },
+ },
+ ],
+
+ // numbers
+ [/\d*\.\d+([eE][-+]?\d+)?/, 'number.float'],
+ [/0[xX][0-9a-fA-F]+/, 'number.hex'],
+ [/\d+/, 'number'],
+
+ // delimiter: after number because of .\d floats
+ [/[;,.]/, 'delimiter'],
+
+ // strings
+ [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-terminated string
+ [/"/, {token: 'string.quote', bracket: '@open', next: '@string'}],
+
+ // characters
+ [/'[^\\']'/, 'string'],
+ [/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
+ [/'/, 'string.invalid'],
+ ],
+
+ comment: [
+ [/[^/*]+/, 'comment'],
+ [/\/\*/, 'comment', '@push'], // nested comment
+ ['\\*/', 'comment', '@pop'],
+ [/[/*]/, 'comment'],
+ ],
+
+ string: [
+ [/[^\\"]+/, 'string'],
+ [/@escapes/, 'string.escape'],
+ [/\\./, 'string.escape.invalid'],
+ [/"/, {token: 'string.quote', bracket: '@close', next: '@pop'}],
+ ],
+
+ whitespace: [
+ [/[ \t\r\n]+/, 'white'],
+ [/\/\*/, 'comment', '@comment'],
+ [/\/\/.*$/, 'comment'],
+ ],
+ },
+ };
+}
+
+const def = definition();
+monaco.languages.register({id: 'carbon'});
+monaco.languages.setMonarchTokensProvider('carbon', def);
+monaco.languages.setLanguageConfiguration('carbon', cpp.conf);
+
+export = def;
diff --git a/static/modes/jakt-mode.ts b/static/modes/jakt-mode.ts
new file mode 100644
index 000000000..c2f7fec48
--- /dev/null
+++ b/static/modes/jakt-mode.ts
@@ -0,0 +1,205 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+'use strict';
+const monaco = require('monaco-editor');
+
+function definition() {
+ return {
+ defaultToken: 'invalid',
+
+ keywords: [
+ 'struct',
+ 'class',
+ 'enum',
+ 'namespace',
+ 'if',
+ 'else',
+ 'match',
+ 'while',
+ 'for',
+ 'loop',
+ 'return',
+ 'break',
+ 'continue',
+ 'throw',
+ 'yield',
+ 'function',
+ 'extern',
+ 'import',
+ 'throws',
+ 'defer',
+ 'unsafe',
+ 'cpp',
+ 'try',
+ 'catch',
+ 'mut',
+ 'let',
+ 'anon',
+ 'raw',
+ 'private',
+ 'public',
+ 'true',
+ 'false',
+ 'weak',
+ ],
+ typeKeywords: [
+ 'Optional',
+ 'String',
+ 'i8',
+ 'i16',
+ 'i32',
+ 'i64',
+ 'f32',
+ 'f64',
+ 'bool',
+ 'c_int',
+ 'c_char',
+ 'usize',
+ 'void',
+ ],
+ operators: [
+ '=>',
+ '..',
+ '?',
+ 'and',
+ 'not',
+ 'or',
+ 'as',
+ 'in',
+ '+',
+ '-',
+ '/',
+ '*',
+ '=',
+ '^',
+ '&',
+ '!',
+ '>',
+ '<',
+ '%',
+ '<<',
+ '>>',
+ '+=',
+ '-=',
+ '/=',
+ '*=',
+ '==',
+ '^=',
+ '&=',
+ '?=',
+ '|=',
+ '!=',
+ '>=',
+ '<=',
+ '%=',
+ '<<=',
+ '>>=',
+ ],
+
+ symbols: /[=><!~?:&|+\-*/^%]+/,
+
+ escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
+
+ tokenizer: {
+ root: [
+ // identifiers and keywords
+ [
+ /[a-z_$][\w$]*/,
+ {
+ cases: {
+ '@typeKeywords': 'keyword',
+ '@keywords': 'keyword',
+ '@default': 'identifier',
+ },
+ },
+ ],
+
+ [/[A-Z][\w$]*/, 'type.identifier'], // to show class names nicely
+
+ // whitespace
+ {include: '@whitespace'},
+
+ // delimiters and operators
+ [/[{}()[\]]/, '@brackets'],
+ [/[<>](?!@symbols)/, '@brackets'],
+ [
+ /@symbols/,
+ {
+ cases: {
+ '@operators': 'operator',
+ '@default': '',
+ },
+ },
+ ],
+
+ // numbers
+ [/\d*\.\d+([eE][-+]?\d+)?[fFdD]?/, 'number.float'],
+ [/0[xX][0-9a-fA-F_]*[0-9a-fA-F][Ll]?/, 'number.hex'],
+ [/0o[0-7_]*[0-7][Ll]?/, 'number.octal'],
+ [/0[bB][0-1_]*[0-1][Ll]?/, 'number.binary'],
+ [/\d+/, 'number'],
+
+ // delimiter: after number because of .\d floats
+ [/[;,.]/, 'delimiter'],
+
+ // strings
+ [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-teminated string
+ [/c?\\\\.*$/, 'string'],
+ [/c?"/, 'string', '@string'],
+
+ // characters
+ [/'[^\\']'/, 'string'],
+ [/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
+ [/'/, 'string.invalid'],
+ ],
+
+ whitespace: [
+ [/[ \r\n]+/, 'white'],
+ [/\/\*/, 'comment', '@comment'],
+ [/\/\+/, 'comment', '@comment'],
+ [/\/\/.*$/, 'comment'],
+ [/\t/, 'comment.invalid'],
+ ],
+
+ comment: [
+ [/[^/*]+/, 'comment'],
+ [/\/\*/, 'comment.invalid'],
+ [/[/*]/, 'comment'],
+ ],
+
+ string: [
+ [/[^\\"]+/, 'string'],
+ [/@escapes/, 'string.escape'],
+ [/\\./, 'string.escape.invalid'],
+ [/"/, 'string', '@pop'],
+ ],
+ },
+ };
+}
+
+monaco.languages.register({id: 'jakt'});
+monaco.languages.setMonarchTokensProvider('jakt', definition());
+
+export {};
diff --git a/static/panes/compiler.js b/static/panes/compiler.js
index 51fbf3882..fb49504dd 100644
--- a/static/panes/compiler.js
+++ b/static/panes/compiler.js
@@ -2191,6 +2191,7 @@ Compiler.prototype.updateButtons = function () {
this.optButton.toggle(!!this.compiler.supportsOptOutput);
this.ppButton.toggle(!!this.compiler.supportsPpView);
this.astButton.toggle(!!this.compiler.supportsAstView);
+ this.irButton.toggle(!!this.compiler.supportsIrView);
this.llvmOptPipelineButton.toggle(!!this.compiler.supportsLLVMOptPipelineView);
this.deviceButton.toggle(!!this.compiler.supportsDeviceAsmView);
this.rustMirButton.toggle(!!this.compiler.supportsRustMirView);
@@ -2788,7 +2789,7 @@ Compiler.prototype.setCompilerVersionPopover = function (version, notification)
var bodyContent = $('<div>');
var versionContent = $('<div>').html(_.escape(version.version));
bodyContent.append(versionContent);
- if (version.fullVersion) {
+ if (version.fullVersion && version.fullVersion.trim() !== version.version.trim()) {
var hiddenSection = $('<div>');
var lines = _.map(version.fullVersion.split('\n'), function (line) {
return _.escape(line);
diff --git a/static/panes/conformance-view.js b/static/panes/conformance-view.js
index cc788cb10..c26b935e1 100644
--- a/static/panes/conformance-view.js
+++ b/static/panes/conformance-view.js
@@ -214,6 +214,7 @@ Conformance.prototype.addCompilerPicker = function (config) {
newSelector
.find('.close')
.not('.extract-compiler')
+ .not('.copy-compiler')
.on(
'click',
_.bind(function () {
@@ -221,6 +222,17 @@ Conformance.prototype.addCompilerPicker = function (config) {
}, this)
);
+ newSelector.find('.close.copy-compiler').on(
+ 'click',
+ _.bind(function () {
+ var config = {
+ compilerId: newCompilerEntry.picker.lastCompilerId,
+ options: newCompilerEntry.optionsField.val() || '',
+ };
+ this.copyCompilerPicker(config);
+ }, this)
+ );
+
newCompilerEntry.statusIcon = newSelector.find('.status-icon');
newCompilerEntry.prependOptions = newSelector.find('.prepend-options');
var popCompilerButton = newSelector.find('.extract-compiler');
@@ -295,6 +307,12 @@ Conformance.prototype.removeCompilerPicker = function (compilerEntry) {
this.saveState();
};
+Conformance.prototype.copyCompilerPicker = function (config) {
+ this.addCompilerPicker(config);
+ this.compileChild(this.compilerPickers.at(-1));
+ this.saveState();
+};
+
Conformance.prototype.expandSource = function () {
if (this.sourceNeedsExpanding || !this.expandedSource) {
return this.compilerService.expand(this.source).then(
diff --git a/static/panes/editor.js b/static/panes/editor.js
index f60a611b9..eb5227e70 100644
--- a/static/panes/editor.js
+++ b/static/panes/editor.js
@@ -311,6 +311,7 @@ Editor.prototype.initCallbacks = function () {
this.eventHub.on('compileResult', this.onCompileResponse, this);
this.eventHub.on('selectLine', this.onSelectLine, this);
this.eventHub.on('editorSetDecoration', this.onEditorSetDecoration, this);
+ this.eventHub.on('editorDisplayFlow', this.onEditorDisplayFlow, this);
this.eventHub.on('editorLinkLine', this.onEditorLinkLine, this);
this.eventHub.on('settingsChange', this.onSettingsChange, this);
this.eventHub.on('conformanceViewOpen', this.onConformanceViewOpen, this);
@@ -1410,6 +1411,13 @@ Editor.prototype.onCompileResponse = function (compilerId, compiler, result) {
if (colEnd === obj.tag.column) colEnd = -1;
}
}
+ let link;
+ if (obj.tag.link) {
+ link = {
+ value: obj.tag.link.text,
+ target: obj.tag.link.url,
+ };
+ }
return {
severity: obj.tag.severity,
message: obj.tag.text,
@@ -1418,6 +1426,7 @@ Editor.prototype.onCompileResponse = function (compilerId, compiler, result) {
startColumn: colBegin,
endLineNumber: lineEnd,
endColumn: colEnd,
+ code: link,
};
},
this
@@ -1562,11 +1571,13 @@ Editor.prototype.onEditorLinkLine = function (editorId, lineNum, columnBegin, co
}
};
-Editor.prototype.onEditorSetDecoration = function (id, lineNum, reveal) {
+Editor.prototype.onEditorSetDecoration = function (id, lineNum, reveal, column) {
if (Number(id) === this.id) {
if (reveal && lineNum) {
this.pushRevealJump();
this.editor.revealLineInCenter(lineNum);
+ this.editor.focus();
+ this.editor.setPosition({column: column || 0, lineNumber: lineNum});
}
this.decorations.linkedCode = [];
if (lineNum && lineNum !== -1) {
@@ -1583,6 +1594,31 @@ Editor.prototype.onEditorSetDecoration = function (id, lineNum, reveal) {
}
};
+Editor.prototype.onEditorDisplayFlow = function (id, flow) {
+ if (Number(id) === this.id) {
+ if (this.decorations.flows && this.decorations.flows.length) {
+ this.decorations.flows = [];
+ } else {
+ this.decorations.flows = flow.map((ri, ind) => {
+ return {
+ range: new monaco.Range(ri.line, ri.column, ri.endline || ri.line, ri.endcolumn || ri.column),
+ options: {
+ before: {
+ content: ' ' + (ind + 1).toString() + ' ',
+ inlineClassName: 'flow-decoration',
+ cursorStops: monaco.editor.InjectedTextCursorStops.None,
+ },
+ inlineClassName: 'flow-highlight',
+ isWholeLine: false,
+ hoverMessage: {value: ri.text},
+ },
+ };
+ });
+ }
+ this.updateDecorations();
+ }
+};
+
Editor.prototype.updateDecorations = function () {
this.prevDecorations = this.editor.deltaDecorations(
this.prevDecorations,
diff --git a/static/panes/executor.js b/static/panes/executor.js
index 0174bb74a..6a06266ec 100644
--- a/static/panes/executor.js
+++ b/static/panes/executor.js
@@ -688,6 +688,8 @@ Executor.prototype.initButtons = function (state) {
this.wrapButton = this.domRoot.find('.wrap-lines');
this.wrapTitle = this.wrapButton.prop('title');
+ this.triggerCompilationButton = this.bottomBar.find('.trigger-compilation');
+
this.initToggleButtons(state);
};
@@ -875,6 +877,13 @@ Executor.prototype.initCallbacks = function () {
}, this)
);
+ this.triggerCompilationButton.on(
+ 'click',
+ _.bind(function () {
+ this.compile(true);
+ }, this)
+ );
+
// Dismiss on any click that isn't either in the opening element, inside
// the popover or on any alert
$(document).on(
@@ -898,22 +907,32 @@ Executor.prototype.initCallbacks = function () {
}
};
+Executor.prototype.shouldEmitExecutionOnFieldChange = function () {
+ return this.settings.executorCompileOnChange;
+};
+
Executor.prototype.onOptionsChange = function (options) {
this.options = options;
this.saveState();
- this.compile();
+ if (this.shouldEmitExecutionOnFieldChange()) {
+ this.compile();
+ }
};
Executor.prototype.onExecArgsChange = function (args) {
this.executionArguments = args;
this.saveState();
- this.compile();
+ if (this.shouldEmitExecutionOnFieldChange()) {
+ this.compile();
+ }
};
Executor.prototype.onExecStdinChange = function (newStdin) {
this.executionStdin = newStdin;
this.saveState();
- this.compile();
+ if (this.shouldEmitExecutionOnFieldChange()) {
+ this.compile();
+ }
};
Executor.prototype.onRequestCompilation = function (editorId, treeId) {
diff --git a/static/panes/gccdump-view.ts b/static/panes/gccdump-view.ts
index a4a54ae51..fad433937 100644
--- a/static/panes/gccdump-view.ts
+++ b/static/panes/gccdump-view.ts
@@ -83,7 +83,7 @@ export class GccDump extends MonacoPane<monaco.editor.IStandaloneCodeEditor, Gcc
if (state._treeid) state.treeid = state._treeid;
super(hub, container, state);
- if (state.selectedPass) {
+ if (state.selectedPass && typeof state.selectedPass === 'string') {
// To keep URL format stable wrt GccDump, only a string of the form 'r.expand' is stored.
// Old links also have the pass number prefixed but this can be ignored.
// Create the object that will be used instead of this bare string.
@@ -290,7 +290,7 @@ export class GccDump extends MonacoPane<monaco.editor.IStandaloneCodeEditor, Gcc
this.inhibitPassSelect = true;
selectize.clear(true);
- selectize.clearOptions(true);
+ selectize.clearOptions();
for (const p of passes) {
selectize.addOption(p);
diff --git a/static/panes/llvm-opt-pipeline.ts b/static/panes/llvm-opt-pipeline.ts
index 1ab4bcc84..dbdd97a19 100644
--- a/static/panes/llvm-opt-pipeline.ts
+++ b/static/panes/llvm-opt-pipeline.ts
@@ -78,9 +78,8 @@ export class LLVMOptPipeline extends MonacoPane<monaco.editor.IStandaloneDiffEdi
this.body = this.domRoot.find('.llvm-opt-pipeline-body');
if (state.sidebarWidth === 0) {
_.defer(() => {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
state.sidebarWidth = parseInt(
- document.defaultView!.getComputedStyle(this.passesColumn.get()[0]).width,
+ (document.defaultView as Window).getComputedStyle(this.passesColumn.get()[0]).width,
10
);
state.sidebarWidth = Math.max(state.sidebarWidth, MIN_SIDEBAR_WIDTH);
diff --git a/static/panes/tool.js b/static/panes/tool.js
index ec07eedc6..eafa859c0 100644
--- a/static/panes/tool.js
+++ b/static/panes/tool.js
@@ -403,6 +403,14 @@ Tool.prototype.setLanguage = function (languageId) {
}
};
+Tool.prototype.clickableUrls = function (text) {
+ return text.replace(
+ // URL detection regex grabbed from https://stackoverflow.com/a/3809435
+ /(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*))/,
+ '<a href="$1" target="_blank">$1</a>'
+ );
+};
+
Tool.prototype.onCompileResult = function (id, compiler, result) {
try {
if (id !== this.compilerId) return;
@@ -485,7 +493,12 @@ Tool.prototype.onCompileResult = function (id, compiler, result) {
if (obj.text === '') {
this.add('<br/>');
} else {
- this.add(this.normalAnsiToHtml.toHtml(obj.text), obj.tag ? obj.tag.line : obj.line);
+ this.add(
+ this.clickableUrls(this.normalAnsiToHtml.toHtml(obj.text)),
+ obj.tag ? obj.tag.line : obj.line,
+ obj.tag ? obj.tag.column : 0,
+ obj.tag ? obj.tag.flow : null
+ );
}
},
this
@@ -507,7 +520,7 @@ Tool.prototype.onCompileResult = function (id, compiler, result) {
}
};
-Tool.prototype.add = function (msg, lineNum) {
+Tool.prototype.add = function (msg, lineNum, column, flow) {
var elem = $('<div/>').appendTo(this.plainContentRoot);
if (lineNum && this.editorId) {
elem.html(
@@ -517,7 +530,10 @@ Tool.prototype.add = function (msg, lineNum) {
.on(
'click',
_.bind(function (e) {
- this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, true);
+ this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, true, column);
+ if (flow) {
+ this.eventHub.emit('editorDisplayFlow', this.editorId, flow);
+ }
e.preventDefault();
return false;
}, this)
@@ -525,7 +541,7 @@ Tool.prototype.add = function (msg, lineNum) {
.on(
'mouseover',
_.bind(function () {
- this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, false);
+ this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, false, column);
}, this)
)
);
diff --git a/static/settings.ts b/static/settings.ts
index ec750e37d..adcfbd423 100644
--- a/static/settings.ts
+++ b/static/settings.ts
@@ -50,6 +50,7 @@ export interface SiteSettings {
enableCtrlStree: boolean;
editorsFFont: string;
editorsFLigatures: boolean;
+ executorCompileOnChange: boolean;
defaultFontScale?: number; // the font scale widget can check this setting before the default has been populated
formatBase: FormatBase;
formatOnCompile: boolean;
@@ -259,6 +260,7 @@ export class Settings {
['.enableCommunityAds', 'enableCommunityAds', true],
['.enableCtrlStree', 'enableCtrlStree', true],
['.enableSharingPopover', 'enableSharingPopover', true],
+ ['.executorCompileOnChange', 'executorCompileOnChange', true],
['.formatOnCompile', 'formatOnCompile', false],
['.hoverShowAsmDoc', 'hoverShowAsmDoc', true],
['.hoverShowSource', 'hoverShowSource', true],
diff --git a/static/themes/dark-theme.scss b/static/themes/dark-theme.scss
index f8ce86d5f..b871f22b6 100644
--- a/static/themes/dark-theme.scss
+++ b/static/themes/dark-theme.scss
@@ -127,7 +127,7 @@ a.navbar-brand img.logo.normal {
}
.linked-code-decoration-inline {
- background: #121212;
+ background: #444444;
}
.linked-code-decoration-margin {
@@ -142,6 +142,16 @@ a.navbar-brand img.logo.normal {
color: #007bfd !important;
}
+.flow-decoration {
+ background-color: #b4131f !important;
+ color: white !important;
+ font-weight: bold;
+}
+
+.flow-highlight {
+ background-color: rgba(180, 19, 31, 0.4) !important;
+}
+
.rainbow-decoration {
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
diff --git a/static/themes/default-theme.scss b/static/themes/default-theme.scss
index f947f519e..9f70c7f55 100644
--- a/static/themes/default-theme.scss
+++ b/static/themes/default-theme.scss
@@ -105,6 +105,16 @@ a.navbar-brand img.logo.normal {
background: lightblue !important;
}
+.flow-decoration {
+ background-color: #b4131f !important;
+ color: white !important;
+ font-weight: bold;
+}
+
+.flow-highlight {
+ background-color: rgba(180, 19, 31, 0.4) !important;
+}
+
.rainbow-decoration {
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
diff --git a/static/widgets/load-save.ts b/static/widgets/load-save.ts
index afcf80f29..8ae1fd103 100644
--- a/static/widgets/load-save.ts
+++ b/static/widgets/load-save.ts
@@ -31,6 +31,8 @@ import {Language} from '../../types/languages.interfaces';
const history = require('../history');
+type PopulateItem = {name: string; load: () => void; delete?: () => void; overwrite?: () => void};
+
export class LoadSave {
private modal: JQuery | null = null;
private alertSystem: Alert;
@@ -95,16 +97,20 @@ export class LoadSave {
this.modal?.modal('hide');
}
- private static populate(root: JQuery, list: {name: string; load: () => void; delete?: () => void}[]) {
+ private static populate(root: JQuery, list: PopulateItem[]) {
root.find('li:not(.template)').remove();
const template = root.find('.template');
for (const elem of list) {
const clone = template.clone();
clone.removeClass('template').appendTo(root).find('a').text(elem.name).on('click', elem.load);
- const deleteButton = clone.find('button');
+ const deleteButton = clone.find('button.delete');
if (elem.delete !== undefined) {
deleteButton.on('click', () => elem.delete?.());
}
+ const overwriteButton = clone.find('button.overwrite');
+ if (elem.overwrite !== undefined) {
+ overwriteButton.on('click', () => elem.overwrite?.());
+ }
}
}
@@ -149,6 +155,18 @@ export class LoadSave {
}
);
},
+ overwrite: () => {
+ this.alertSystem.ask(
+ `Overwrite ${_.escape(name)}?`,
+ `Do you want to overwrite '${_.escape(name)}'?`,
+ {
+ yes: () => {
+ LoadSave.setLocalFile(name, this.editorText);
+ this.populateLocalStorage();
+ },
+ }
+ );
+ },
};
})
);
diff --git a/test/ast/bug-3849a.ast b/test/ast/bug-3849a.ast
new file mode 100644
index 000000000..aa88108b6
--- /dev/null
+++ b/test/ast/bug-3849a.ast
@@ -0,0 +1,57 @@
+TranslationUnitDecl 0x55ef9e924298 <<invalid sloc>> <invalid sloc>
+|-TypedefDecl 0x55ef9e924b20 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+| `-BuiltinType 0x55ef9e924860 '__int128'
+|-TypedefDecl 0x55ef9e924b98 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+| `-BuiltinType 0x55ef9e924880 'unsigned __int128'
+|-TypedefDecl 0x55ef9e924f50 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag'
+| `-RecordType 0x55ef9e924ca0 '__NSConstantString_tag'
+| `-CXXRecord 0x55ef9e924bf8 '__NSConstantString_tag'
+|-TypedefDecl 0x55ef9e924ff8 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+| `-PointerType 0x55ef9e924fb0 'char *'
+| `-BuiltinType 0x55ef9e924340 'char'
+|-TypedefDecl 0x55ef9e9700d0 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag[1]'
+| `-ConstantArrayType 0x55ef9e970070 '__va_list_tag[1]' 1
+| `-RecordType 0x55ef9e925100 '__va_list_tag'
+| `-CXXRecord 0x55ef9e925058 '__va_list_tag'
+|-FunctionDecl 0x55ef9e970180 <<source>:1:1, col:8> col:6 f 'void ()'
+|-FunctionTemplateDecl 0x55ef9e9705b8 <<invalid sloc>, line:5:1> line:3:7 Bar
+| |-TemplateTypeParmDecl 0x55ef9e9702c8 <col:11, col:16> col:16 implicit class depth 0 index 0 auto:1
+| |-FunctionDecl 0x55ef9e970510 <col:2, line:5:1> line:3:7 Bar 'char (auto)'
+| | |-ParmVarDecl 0x55ef9e9703e0 <col:11> col:16 'auto'
+| | `-CompoundStmt 0x55ef9e970738 <col:18, line:5:1>
+| | `-ReturnStmt 0x55ef9e970728 <line:4:5, col:13>
+| | `-InitListExpr 0x55ef9e9706e8 <col:12, col:13> 'char'
+| `-FunctionDecl 0x55ef9e99e510 <line:3:2, line:5:1> line:3:7 used Bar 'char ((lambda at <source>:8:18))'
+| |-TemplateArgument type '(lambda at <source>:8:18)'
+| | `-RecordType 0x55ef9e970b40 '(lambda at <source>:8:18)'
+| | `-CXXRecord 0x55ef9e970a10 ''
+| |-ParmVarDecl 0x55ef9e99e410 <col:11> col:16 '(lambda at <source>:8:18)':'(lambda at <source>:8:18)'
+| `-CompoundStmt 0x55ef9e99e828 <col:18, line:5:1>
+| `-ReturnStmt 0x55ef9e99e818 <line:4:5, col:13>
+| `-InitListExpr 0x55ef9e99e7d8 <col:12, col:13> 'char'
+`-FunctionDecl 0x55ef9e9707a8 <line:7:1, line:10:1> line:7:5 main 'int ()'
+ `-CompoundStmt 0x55ef9e99e778 <col:12, line:10:1>
+ |-DeclStmt 0x55ef9e99e700 <line:8:5, col:23>
+ | `-VarDecl 0x55ef9e9708a8 <col:5, col:22> col:10 used c 'char' cinit
+ | `-CallExpr 0x55ef9e99e6c0 <col:14, col:22> 'char'
+ | |-ImplicitCastExpr 0x55ef9e99e6a8 <col:14> 'char (*)((lambda at <source>:8:18))' <FunctionToPointerDecay>
+ | | `-DeclRefExpr 0x55ef9e99e610 <col:14> 'char ((lambda at <source>:8:18))' lvalue Function 0x55ef9e99e510 'Bar' 'char ((lambda at <source>:8:18))' (FunctionTemplate 0x55ef9e9705b8 'Bar')
+ | `-LambdaExpr 0x55ef9e99e218 <col:18, col:21> '(lambda at <source>:8:18)'
+ | |-CXXRecordDecl 0x55ef9e970a10 <col:18> col:18 implicit class definition
+ | | |-DefinitionData lambda pass_in_registers empty standard_layout trivially_copyable trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+ | | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+ | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+ | | | |-MoveConstructor exists simple trivial needs_implicit
+ | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+ | | | |-MoveAssignment exists simple trivial needs_implicit
+ | | | `-Destructor simple irrelevant trivial constexpr
+ | | |-CXXMethodDecl 0x55ef9e970b68 <col:19, col:21> col:18 constexpr operator() 'auto () const -> void' inline
+ | | | `-CompoundStmt 0x55ef9e970c18 <col:20, col:21>
+ | | |-CXXConversionDecl 0x55ef9e99e078 <col:18, col:21> col:18 implicit constexpr operator void (*)() 'auto (*() const noexcept)() -> void' inline
+ | | |-CXXMethodDecl 0x55ef9e99e130 <col:18, col:21> col:18 implicit __invoke 'auto () -> void' static inline
+ | | `-CXXDestructorDecl 0x55ef9e99e248 <col:18> col:18 implicit referenced constexpr ~ 'void () noexcept' inline default trivial
+ | `-CompoundStmt 0x55ef9e970c18 <col:20, col:21>
+ `-ReturnStmt 0x55ef9e99e768 <line:9:5, col:12>
+ `-ImplicitCastExpr 0x55ef9e99e750 <col:12> 'int' <IntegralCast>
+ `-ImplicitCastExpr 0x55ef9e99e738 <col:12> 'char' <LValueToRValue>
+ `-DeclRefExpr 0x55ef9e99e718 <col:12> 'char' lvalue Var 0x55ef9e9708a8 'c' 'char' \ No newline at end of file
diff --git a/test/ast/bug-3849a.cpp b/test/ast/bug-3849a.cpp
new file mode 100644
index 000000000..21566f645
--- /dev/null
+++ b/test/ast/bug-3849a.cpp
@@ -0,0 +1,10 @@
+void f();
+
+ char Bar(auto ) {
+ return {};
+}
+
+int main() {
+ char c = Bar([]{});
+ return c;
+} \ No newline at end of file
diff --git a/test/ast/bug-3849b.ast b/test/ast/bug-3849b.ast
new file mode 100644
index 000000000..2db422b86
--- /dev/null
+++ b/test/ast/bug-3849b.ast
@@ -0,0 +1,571 @@
+TranslationUnitDecl 0x560fa93d3228 <<invalid sloc>> <invalid sloc>
+|-TypedefDecl 0x560fa93d3ab0 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+| `-BuiltinType 0x560fa93d37f0 '__int128'
+|-TypedefDecl 0x560fa93d3b28 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+| `-BuiltinType 0x560fa93d3810 'unsigned __int128'
+|-TypedefDecl 0x560fa93d3ee0 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag'
+| `-RecordType 0x560fa93d3c30 '__NSConstantString_tag'
+| `-CXXRecord 0x560fa93d3b88 '__NSConstantString_tag'
+|-TypedefDecl 0x560fa93d3f88 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+| `-PointerType 0x560fa93d3f40 'char *'
+| `-BuiltinType 0x560fa93d32d0 'char'
+|-TypedefDecl 0x560fa941e340 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag[1]'
+| `-ConstantArrayType 0x560fa941e2e0 '__va_list_tag[1]' 1
+| `-RecordType 0x560fa93d4090 '__va_list_tag'
+| `-CXXRecord 0x560fa93d3fe8 '__va_list_tag'
+|-FunctionTemplateDecl 0x560fa941e6c8 <<invalid sloc>, /app/hell.hpp:5:1> line:3:6 Bar
+| |-TemplateTypeParmDecl 0x560fa941e3d8 <col:10, col:15> col:15 implicit class depth 0 index 0 auto:1
+| |-FunctionDecl 0x560fa941e620 <col:1, line:5:1> line:3:6 Bar 'char (auto)'
+| | |-ParmVarDecl 0x560fa941e4f0 <col:10> col:15 'auto'
+| | `-CompoundStmt 0x560fa941e898 <col:17, line:5:1>
+| | `-ReturnStmt 0x560fa941e888 <line:4:5, col:13>
+| | `-InitListExpr 0x560fa941e848 <col:12, col:13> 'char'
+| `-FunctionDecl 0x560fa944b770 <line:3:1, line:5:1> line:3:6 used Bar 'char ((lambda at <source>:4:18))'
+| |-TemplateArgument type '(lambda at <source>:4:18)'
+| | `-RecordType 0x560fa941edb0 '(lambda at <source>:4:18)'
+| | `-CXXRecord 0x560fa941ec80 ''
+| |-ParmVarDecl 0x560fa944b670 <col:10> col:15 '(lambda at <source>:4:18)':'(lambda at <source>:4:18)'
+| `-CompoundStmt 0x560fa94d1f48 <col:17, line:5:1>
+| `-ReturnStmt 0x560fa94d1f38 <line:4:5, col:13>
+| `-InitListExpr 0x560fa94d1ef8 <col:12, col:13> 'char'
+|-FunctionDecl 0x560fa941e900 <line:7:1, col:8> col:6 f 'void ()'
+|-FunctionDecl 0x560fa941ea18 <<source>:3:1, line:6:1> line:3:5 main 'int ()'
+| `-CompoundStmt 0x560fa944b9d8 <col:12, line:6:1>
+| |-DeclStmt 0x560fa944b960 <line:4:5, col:23>
+| | `-VarDecl 0x560fa941eb18 <col:5, col:22> col:10 used c 'char' cinit
+| | `-CallExpr 0x560fa944b920 <col:14, col:22> 'char'
+| | |-ImplicitCastExpr 0x560fa944b908 <col:14> 'char (*)((lambda at <source>:4:18))' <FunctionToPointerDecay>
+| | | `-DeclRefExpr 0x560fa944b870 <col:14> 'char ((lambda at <source>:4:18))' lvalue Function 0x560fa944b770 'Bar' 'char ((lambda at <source>:4:18))' (FunctionTemplate 0x560fa941e6c8 'Bar')
+| | `-LambdaExpr 0x560fa944b478 <col:18, col:21> '(lambda at <source>:4:18)'
+| | |-CXXRecordDecl 0x560fa941ec80 <col:18> col:18 implicit class definition
+| | | |-DefinitionData lambda pass_in_registers empty standard_layout trivially_copyable trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+| | | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | | | |-MoveConstructor exists simple trivial needs_implicit
+| | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | | | |-MoveAssignment exists simple trivial needs_implicit
+| | | | `-Destructor simple irrelevant trivial constexpr
+| | | |-CXXMethodDecl 0x560fa941edd8 <col:19, col:21> col:18 constexpr operator() 'auto () const -> void' inline
+| | | | `-CompoundStmt 0x560fa941ee88 <col:20, col:21>
+| | | |-CXXConversionDecl 0x560fa944b2d8 <col:18, col:21> col:18 implicit constexpr operator void (*)() 'auto (*() const noexcept)() -> void' inline
+| | | |-CXXMethodDecl 0x560fa944b390 <col:18, col:21> col:18 implicit __invoke 'auto () -> void' static inline
+| | | `-CXXDestructorDecl 0x560fa944b4a8 <col:18> col:18 implicit referenced constexpr ~ 'void () noexcept' inline default trivial
+| | `-CompoundStmt 0x560fa941ee88 <col:20, col:21>
+| `-ReturnStmt 0x560fa944b9c8 <line:5:5, col:12>
+| `-ImplicitCastExpr 0x560fa944b9b0 <col:12> 'int' <IntegralCast>
+| `-ImplicitCastExpr 0x560fa944b998 <col:12> 'char' <LValueToRValue>
+| `-DeclRefExpr 0x560fa944b978 <col:12> 'char' lvalue Var 0x560fa941eb18 'c' 'char'
+|-NamespaceDecl 0x560fa944ba00 </opt/compiler-explorer/gcc-11.2.0/lib/gcc/x86_64-linux-gnu/11.2.0/../../../../include/c++/11.2.0/x86_64-linux-gnu/bits/c++config.h:278:1, line:286:1> line:278:11 std
+| |-TypedefDecl 0x560fa944baa8 <line:280:3, col:26> col:26 size_t 'unsigned long'
+| | `-BuiltinType 0x560fa93d33f0 'unsigned long'
+| |-TypedefDecl 0x560fa944bb20 <line:281:3, col:28> col:28 ptrdiff_t 'long'
+| | `-BuiltinType 0x560fa93d3350 'long'
+| `-TypedefDecl 0x560fa944bbd0 <line:284:3, col:29> col:29 nullptr_t 'decltype(nullptr)':'std::nullptr_t'
+| `-DecltypeType 0x560fa944bb90 'decltype(nullptr)' sugar
+| |-CXXNullPtrLiteralExpr 0x560fa944bb78 <col:20> 'std::nullptr_t'
+| `-BuiltinType 0x560fa93d3a20 'std::nullptr_t'
+|-NamespaceDecl 0x560fa944bc78 prev 0x560fa944ba00 <line:300:1, line:303:1> line:300:11 std
+| |-original Namespace 0x560fa944ba00 'std'
+| `-NamespaceDecl 0x560fa944bd90 <line:302:3, col:69> col:20 __cxx11 inline
+| `-AbiTagAttr 0x560fa944be18 <col:43, col:63> cxx11
+|-NamespaceDecl 0x560fa944bea0 <line:304:1, line:307:1> line:304:11 __gnu_cxx
+| `-NamespaceDecl 0x560fa944bf50 <line:306:3, col:69> col:20 __cxx11 inline
+| `-AbiTagAttr 0x560fa944bfd8 <col:43, col:63> cxx11
+|-TypedefDecl 0x560fa944c078 </opt/compiler-explorer/clang-14.0.0/lib/clang/14.0.0/include/stddef.h:46:1, col:23> col:23 referenced size_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa944c0f0 </usr/include/x86_64-linux-gnu/bits/types.h:31:1, col:23> col:23 __u_char 'unsigned char'
+| `-BuiltinType 0x560fa93d3390 'unsigned char'
+|-TypedefDecl 0x560fa944c168 <line:32:1, col:28> col:28 __u_short 'unsigned short'
+| `-BuiltinType 0x560fa93d33b0 'unsigned short'
+|-TypedefDecl 0x560fa944c1e0 <line:33:1, col:22> col:22 __u_int 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa944c258 <line:34:1, col:27> col:27 __u_long 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa949fca8 <line:37:1, col:21> col:21 referenced __int8_t 'signed char'
+| `-BuiltinType 0x560fa93d32f0 'signed char'
+|-TypedefDecl 0x560fa949fd20 <line:38:1, col:23> col:23 referenced __uint8_t 'unsigned char'
+| `-BuiltinType 0x560fa93d3390 'unsigned char'
+|-TypedefDecl 0x560fa949fd98 <line:39:1, col:26> col:26 referenced __int16_t 'short'
+| `-BuiltinType 0x560fa93d3310 'short'
+|-TypedefDecl 0x560fa949fe10 <line:40:1, col:28> col:28 referenced __uint16_t 'unsigned short'
+| `-BuiltinType 0x560fa93d33b0 'unsigned short'
+|-TypedefDecl 0x560fa949fe88 <line:41:1, col:20> col:20 referenced __int32_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa949ff00 <line:42:1, col:22> col:22 referenced __uint32_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa949ff78 <line:44:1, col:25> col:25 referenced __int64_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa949fff0 <line:45:1, col:27> col:27 referenced __uint64_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a0088 <line:52:1, col:18> col:18 __int_least8_t '__int8_t':'signed char'
+| `-TypedefType 0x560fa94a0050 '__int8_t' sugar
+| |-Typedef 0x560fa949fca8 '__int8_t'
+| `-BuiltinType 0x560fa93d32f0 'signed char'
+|-TypedefDecl 0x560fa94a0118 <line:53:1, col:19> col:19 __uint_least8_t '__uint8_t':'unsigned char'
+| `-TypedefType 0x560fa94a00e0 '__uint8_t' sugar
+| |-Typedef 0x560fa949fd20 '__uint8_t'
+| `-BuiltinType 0x560fa93d3390 'unsigned char'
+|-TypedefDecl 0x560fa94a01a8 <line:54:1, col:19> col:19 __int_least16_t '__int16_t':'short'
+| `-TypedefType 0x560fa94a0170 '__int16_t' sugar
+| |-Typedef 0x560fa949fd98 '__int16_t'
+| `-BuiltinType 0x560fa93d3310 'short'
+|-TypedefDecl 0x560fa94a0238 <line:55:1, col:20> col:20 __uint_least16_t '__uint16_t':'unsigned short'
+| `-TypedefType 0x560fa94a0200 '__uint16_t' sugar
+| |-Typedef 0x560fa949fe10 '__uint16_t'
+| `-BuiltinType 0x560fa93d33b0 'unsigned short'
+|-TypedefDecl 0x560fa94a02c8 <line:56:1, col:19> col:19 __int_least32_t '__int32_t':'int'
+| `-TypedefType 0x560fa94a0290 '__int32_t' sugar
+| |-Typedef 0x560fa949fe88 '__int32_t'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa94a0358 <line:57:1, col:20> col:20 __uint_least32_t '__uint32_t':'unsigned int'
+| `-TypedefType 0x560fa94a0320 '__uint32_t' sugar
+| |-Typedef 0x560fa949ff00 '__uint32_t'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a03e8 <line:58:1, col:19> col:19 __int_least64_t '__int64_t':'long'
+| `-TypedefType 0x560fa94a03b0 '__int64_t' sugar
+| |-Typedef 0x560fa949ff78 '__int64_t'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a0478 <line:59:1, col:20> col:20 __uint_least64_t '__uint64_t':'unsigned long'
+| `-TypedefType 0x560fa94a0440 '__uint64_t' sugar
+| |-Typedef 0x560fa949fff0 '__uint64_t'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a04f0 <line:63:1, col:18> col:18 __quad_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a0568 <line:64:1, col:27> col:27 __u_quad_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a05e0 <line:72:1, col:18> col:18 __intmax_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a0658 <line:73:1, col:27> col:27 __uintmax_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a06d0 <line:137:22, line:145:25> col:25 __dev_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a0748 <line:137:22, line:146:25> col:25 __uid_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a07c0 <line:137:22, line:147:25> col:25 __gid_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a0838 <line:137:22, line:148:25> col:25 __ino_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a08b0 <line:137:22, line:149:27> col:27 __ino64_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a0928 <line:137:22, line:150:26> col:26 __mode_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a09a0 <line:137:22, line:151:27> col:27 __nlink_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a0a18 <line:137:22, line:152:25> col:25 __off_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a0a90 <line:137:22, line:153:27> col:27 referenced __off64_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a0b08 <line:137:22, line:154:25> col:25 referenced __pid_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-CXXRecordDecl 0x560fa94a0b68 </usr/include/x86_64-linux-gnu/bits/typesizes.h:72:24, col:47> col:24 struct definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| `-FieldDecl 0x560fa94a92a8 <col:33, col:44> col:37 __val 'int[2]'
+|-TypedefDecl 0x560fa94a9370 </usr/include/x86_64-linux-gnu/bits/types.h:137:22, line:155:26> col:26 __fsid_t 'struct __fsid_t':'__fsid_t'
+| `-ElaboratedType 0x560fa94a9310 'struct __fsid_t' sugar
+| `-RecordType 0x560fa94a0c10 '__fsid_t'
+| `-CXXRecord 0x560fa94a0b68 ''
+|-TypedefDecl 0x560fa94a9400 <line:137:22, line:156:27> col:27 referenced __clock_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9478 <line:137:22, line:157:26> col:26 __rlim_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a94f0 <line:137:22, line:158:28> col:28 __rlim64_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9568 <line:137:22, line:159:24> col:24 __id_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a95e0 <line:137:22, line:160:26> col:26 referenced __time_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9658 <line:137:22, line:161:30> col:30 __useconds_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94a96d0 <line:137:22, line:162:31> col:31 referenced __suseconds_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9748 <line:137:22, line:164:27> col:27 __daddr_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa94a97c0 <line:137:22, line:165:25> col:25 __key_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa94a9838 <line:137:22, line:168:29> col:29 referenced __clockid_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa94a98b0 <line:137:22, line:171:27> col:27 referenced __timer_t 'void *'
+| `-PointerType 0x560fa93d39f0 'void *'
+| `-BuiltinType 0x560fa93d3290 'void'
+|-TypedefDecl 0x560fa94a9928 <line:137:22, line:174:29> col:29 __blksize_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a99a0 <line:137:22, line:179:28> col:28 __blkcnt_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9a18 <line:137:22, line:180:30> col:30 __blkcnt64_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9a90 <line:137:22, line:183:30> col:30 __fsblkcnt_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9b08 <line:137:22, line:184:32> col:32 __fsblkcnt64_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9b80 <line:137:22, line:187:30> col:30 __fsfilcnt_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9bf8 <line:137:22, line:188:32> col:32 __fsfilcnt64_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9c70 <line:137:22, line:191:28> col:28 __fsword_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9ce8 <line:137:22, line:193:27> col:27 __ssize_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9d60 <line:137:22, line:196:33> col:33 referenced __syscall_slong_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9dd8 <line:137:22, line:198:33> col:33 __syscall_ulong_t 'unsigned long'
+| `-BuiltinType 0x560fa93d33f0 'unsigned long'
+|-TypedefDecl 0x560fa94a9e68 <line:202:1, col:19> col:19 __loff_t '__off64_t':'long'
+| `-TypedefType 0x560fa94a9e30 '__off64_t' sugar
+| |-Typedef 0x560fa94a0a90 '__off64_t'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9ee0 <line:203:1, col:15> col:15 __caddr_t 'char *'
+| `-PointerType 0x560fa93d3f40 'char *'
+| `-BuiltinType 0x560fa93d32d0 'char'
+|-TypedefDecl 0x560fa94a9f58 <line:137:22, line:206:25> col:25 __intptr_t 'long'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94a9fd0 <line:137:22, line:209:23> col:23 __socklen_t 'unsigned int'
+| `-BuiltinType 0x560fa93d33d0 'unsigned int'
+|-TypedefDecl 0x560fa94aa048 <line:214:1, col:13> col:13 __sig_atomic_t 'int'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-CXXRecordDecl 0x560fa94aa0a8 </usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:8:1, line:12:1> line:8:8 struct timeval definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94b02b8 <col:1, col:8> col:8 implicit struct timeval
+| |-FieldDecl 0x560fa94b0398 <line:10:3, col:12> col:12 tv_sec '__time_t':'long'
+| `-FieldDecl 0x560fa94b0428 <line:11:3, col:17> col:17 tv_usec '__suseconds_t':'long'
+|-CXXRecordDecl 0x560fa94b0498 </usr/include/x86_64-linux-gnu/bits/timex.h:26:1, line:54:1> line:26:8 struct timex definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94b05d0 <col:1, col:8> col:8 implicit struct timex
+| |-FieldDecl 0x560fa94b0698 <line:28:3, col:16> col:16 modes 'unsigned int'
+| |-FieldDecl 0x560fa94b0728 <line:29:3, col:21> col:21 offset '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0790 <line:30:3, col:21> col:21 freq '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b07f8 <line:31:3, col:21> col:21 maxerror '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0860 <line:32:3, col:21> col:21 esterror '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b08d0 <line:33:3, col:7> col:7 status 'int'
+| |-FieldDecl 0x560fa94b0938 <line:34:3, col:21> col:21 constant '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b09a0 <line:35:3, col:21> col:21 precision '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0a08 <line:36:3, col:21> col:21 tolerance '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0ab8 <line:37:3, col:18> col:18 time 'struct timeval':'timeval'
+| |-FieldDecl 0x560fa94b0b20 <line:38:3, col:21> col:21 tick '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0b88 <line:39:3, col:21> col:21 ppsfreq '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0bf0 <line:40:3, col:21> col:21 jitter '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0c60 <line:41:3, col:7> col:7 shift 'int'
+| |-FieldDecl 0x560fa94b0cc8 <line:42:3, col:21> col:21 stabil '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0d30 <line:43:3, col:21> col:21 jitcnt '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0d98 <line:44:3, col:21> col:21 calcnt '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0e00 <line:45:3, col:21> col:21 errcnt '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0e68 <line:46:3, col:21> col:21 stbcnt '__syscall_slong_t':'long'
+| |-FieldDecl 0x560fa94b0ed8 <line:48:3, col:7> col:7 tai 'int'
+| |-FieldDecl 0x560fa94b0f88 <line:51:3, col:9> col:8 'int'
+| | `-ConstantExpr 0x560fa94b0f60 <col:9> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b0f28 <col:9> 'int' 32
+| |-FieldDecl 0x560fa94b1038 <col:13, col:19> col:18 'int'
+| | `-ConstantExpr 0x560fa94b1010 <col:19> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b0fd8 <col:19> 'int' 32
+| |-FieldDecl 0x560fa94b10e8 <col:23, col:29> col:28 'int'
+| | `-ConstantExpr 0x560fa94b10c0 <col:29> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b1088 <col:29> 'int' 32
+| |-FieldDecl 0x560fa94b1198 <col:33, col:39> col:38 'int'
+| | `-ConstantExpr 0x560fa94b1170 <col:39> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b1138 <col:39> 'int' 32
+| |-FieldDecl 0x560fa94b1248 <line:52:3, col:9> col:8 'int'
+| | `-ConstantExpr 0x560fa94b1220 <col:9> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b11e8 <col:9> 'int' 32
+| |-FieldDecl 0x560fa94b5740 <col:13, col:19> col:18 'int'
+| | `-ConstantExpr 0x560fa94b5718 <col:19> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b56e0 <col:19> 'int' 32
+| |-FieldDecl 0x560fa94b57f0 <col:23, col:29> col:28 'int'
+| | `-ConstantExpr 0x560fa94b57c8 <col:29> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b5790 <col:29> 'int' 32
+| |-FieldDecl 0x560fa94b58a0 <col:33, col:39> col:38 'int'
+| | `-ConstantExpr 0x560fa94b5878 <col:39> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b5840 <col:39> 'int' 32
+| |-FieldDecl 0x560fa94b5950 <line:53:3, col:9> col:8 'int'
+| | `-ConstantExpr 0x560fa94b5928 <col:9> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b58f0 <col:9> 'int' 32
+| |-FieldDecl 0x560fa94b5a00 <col:13, col:19> col:18 'int'
+| | `-ConstantExpr 0x560fa94b59d8 <col:19> 'int'
+| | |-value: Int 32
+| | `-IntegerLiteral 0x560fa94b59a0 <col:19> 'int' 32
+| `-FieldDecl 0x560fa94b5ab0 <col:23, col:29> col:28 'int'
+| `-ConstantExpr 0x560fa94b5a88 <col:29> 'int'
+| |-value: Int 32
+| `-IntegerLiteral 0x560fa94b5a50 <col:29> 'int' 32
+|-LinkageSpecDecl 0x560fa94b5bc0 </usr/include/x86_64-linux-gnu/sys/cdefs.h:114:24, line:115:22> line:114:31 C
+| `-FunctionDecl 0x560fa94b5ec0 </usr/include/x86_64-linux-gnu/bits/time.h:78:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/x86_64-linux-gnu/bits/time.h:78:12 clock_adjtime 'int (__clockid_t, struct timex *) throw()' extern
+| |-ParmVarDecl 0x560fa94b5c48 <col:27, col:39> col:39 __clock_id '__clockid_t':'int'
+| `-ParmVarDecl 0x560fa94b5d68 <col:51, col:65> col:65 __utx 'struct timex *'
+|-TypedefDecl 0x560fa94b5fc8 </usr/include/x86_64-linux-gnu/bits/types/clock_t.h:7:1, col:19> col:19 referenced clock_t '__clock_t':'long'
+| `-TypedefType 0x560fa94b5f90 '__clock_t' sugar
+| |-Typedef 0x560fa94a9400 '__clock_t'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-TypedefDecl 0x560fa94b6038 </usr/include/x86_64-linux-gnu/bits/types/time_t.h:7:1, col:18> col:18 referenced time_t '__time_t':'long'
+| `-TypedefType 0x560fa94b0360 '__time_t' sugar
+| |-Typedef 0x560fa94a95e0 '__time_t'
+| `-BuiltinType 0x560fa93d3350 'long'
+|-CXXRecordDecl 0x560fa94b6098 </usr/include/x86_64-linux-gnu/bits/types/struct_tm.h:7:1, line:26:1> line:7:8 struct tm definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94b61d0 <col:1, col:8> col:8 implicit struct tm
+| |-FieldDecl 0x560fa94b6298 <line:9:3, col:7> col:7 tm_sec 'int'
+| |-FieldDecl 0x560fa94b6308 <line:10:3, col:7> col:7 tm_min 'int'
+| |-FieldDecl 0x560fa94b6378 <line:11:3, col:7> col:7 tm_hour 'int'
+| |-FieldDecl 0x560fa94b63e8 <line:12:3, col:7> col:7 tm_mday 'int'
+| |-FieldDecl 0x560fa94b6458 <line:13:3, col:7> col:7 tm_mon 'int'
+| |-FieldDecl 0x560fa94b64c8 <line:14:3, col:7> col:7 tm_year 'int'
+| |-FieldDecl 0x560fa94b6538 <line:15:3, col:7> col:7 tm_wday 'int'
+| |-FieldDecl 0x560fa94b65a8 <line:16:3, col:7> col:7 tm_yday 'int'
+| |-FieldDecl 0x560fa94b6618 <line:17:3, col:7> col:7 tm_isdst 'int'
+| |-FieldDecl 0x560fa94b6688 <line:20:3, col:12> col:12 tm_gmtoff 'long'
+| `-FieldDecl 0x560fa94bb390 <line:21:3, col:15> col:15 tm_zone 'const char *'
+|-CXXRecordDecl 0x560fa94bb400 </usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:10:1, line:26:1> line:10:8 struct timespec definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94bb540 <col:1, col:8> col:8 implicit struct timespec
+| |-FieldDecl 0x560fa94bb600 <line:12:3, col:12> col:12 tv_sec '__time_t':'long'
+| `-FieldDecl 0x560fa94bb668 <line:16:3, col:21> col:21 tv_nsec '__syscall_slong_t':'long'
+|-TypedefDecl 0x560fa94bb6e8 </usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:7:1, col:21> col:21 referenced clockid_t '__clockid_t':'int'
+| `-TypedefType 0x560fa94b5c10 '__clockid_t' sugar
+| |-Typedef 0x560fa94a9838 '__clockid_t'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-TypedefDecl 0x560fa94bb778 </usr/include/x86_64-linux-gnu/bits/types/timer_t.h:7:1, col:19> col:19 referenced timer_t '__timer_t':'void *'
+| `-TypedefType 0x560fa94bb740 '__timer_t' sugar
+| |-Typedef 0x560fa94a98b0 '__timer_t'
+| `-PointerType 0x560fa93d39f0 'void *'
+| `-BuiltinType 0x560fa93d3290 'void'
+|-CXXRecordDecl 0x560fa94bb7d8 </usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h:8:1, line:12:3> line:8:8 struct itimerspec definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94bb910 <col:1, col:8> col:8 implicit struct itimerspec
+| |-FieldDecl 0x560fa94bba18 <line:10:5, col:21> col:21 it_interval 'struct timespec':'timespec'
+| `-FieldDecl 0x560fa94bba90 <line:11:5, col:21> col:21 it_value 'struct timespec':'timespec'
+|-CXXRecordDecl 0x560fa94bbb00 </usr/include/time.h:49:1, col:8> col:8 struct sigevent
+|-TypedefDecl 0x560fa94bbc08 <line:54:1, col:17> col:17 referenced pid_t '__pid_t':'int'
+| `-TypedefType 0x560fa94bbbd0 '__pid_t' sugar
+| |-Typedef 0x560fa94a0b08 '__pid_t'
+| `-BuiltinType 0x560fa93d3330 'int'
+|-CXXRecordDecl 0x560fa94bbc68 </usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:28:1, line:40:1> line:28:8 struct __locale_struct definition
+| |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor
+| | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+| | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveConstructor exists simple trivial needs_implicit
+| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+| | |-MoveAssignment exists simple trivial needs_implicit
+| | `-Destructor simple irrelevant trivial constexpr needs_implicit
+| |-CXXRecordDecl 0x560fa94bbda0 <col:1, col:8> col:8 implicit struct __locale_struct
+| |-CXXRecordDecl 0x560fa94bbe50 parent 0x560fa93d3228 <line:31:3, col:10> col:10 struct __locale_data
+| |-FieldDecl 0x560fa94bc0c8 <col:3, col:37> col:25 __locales 'struct __locale_data *[13]'
+| |-FieldDecl 0x560fa94bc178 <line:34:3, col:29> col:29 __ctype_b 'const unsigned short *'
+| |-FieldDecl 0x560fa94bc1e8 <line:35:3, col:14> col:14 __ctype_tolower 'const int *'
+| |-FieldDecl 0x560fa94bc258 <line:36:3, col:14> col:14 __ctype_toupper 'const int *'
+| `-FieldDecl 0x560fa949c1c8 <line:39:3, col:25> col:15 __names 'const char *[13]'
+|-TypedefDecl 0x560fa949c2e8 <line:42:1, col:33> col:33 referenced __locale_t 'struct __locale_struct *'
+| `-PointerType 0x560fa949c290 'struct __locale_struct *'
+| `-ElaboratedType 0x560fa949c230 'struct __locale_struct' sugar
+| `-RecordType 0x560fa94bbd10 '__locale_struct'
+| `-CXXRecord 0x560fa94bbc68 '__locale_struct'
+|-TypedefDecl 0x560fa949c378 </usr/include/x86_64-linux-gnu/bits/types/locale_t.h:24:1, col:20> col:20 referenced locale_t '__locale_t':'struct __locale_struct *'
+| `-TypedefType 0x560fa949c340 '__locale_t' sugar
+| |-Typedef 0x560fa949c2e8 '__locale_t'
+| `-PointerType 0x560fa949c290 'struct __locale_struct *'
+| `-ElaboratedType 0x560fa949c230 'struct __locale_struct' sugar
+| `-RecordType 0x560fa94bbd10 '__locale_struct'
+| `-CXXRecord 0x560fa94bbc68 '__locale_struct'
+|-LinkageSpecDecl 0x560fa949c3f8 </usr/include/x86_64-linux-gnu/sys/cdefs.h:114:24, line:115:22> line:114:31 C
+| |-FunctionDecl 0x560fa949c598 </usr/include/time.h:72:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:72:16 used clock 'clock_t () throw()' extern
+| |-FunctionDecl 0x560fa949c7f8 <line:75:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:75:15 time 'time_t (time_t *) throw()' extern
+| | `-ParmVarDecl 0x560fa949c6e0 <col:21, col:29> col:29 __timer 'time_t *'
+| |-FunctionDecl 0x560fa949cab0 <line:78:1, line:79:40> line:78:15 difftime 'double (time_t, time_t) throw()' extern
+| | |-ParmVarDecl 0x560fa949c8d0 <col:25, col:32> col:32 __time1 'time_t':'long'
+| | |-ParmVarDecl 0x560fa949c950 <col:41, col:48> col:48 __time0 'time_t':'long'
+| | `-ConstAttr 0x560fa949cb60 <line:79:30>
+| |-FunctionDecl 0x560fa949cda8 <line:82:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:82:15 mktime 'time_t (struct tm *) throw()' extern
+| | `-ParmVarDecl 0x560fa949cc88 <col:23, col:34> col:34 __tp 'struct tm *'
+| |-FunctionDecl 0x560fa94c9438 <line:88:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:88:15 strftime 'size_t (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa949ceb0 <col:25, col:42> col:42 __s 'char *__restrict'
+| | |-ParmVarDecl 0x560fa949cf30 <col:47, col:54> col:54 __maxsize 'size_t':'unsigned long'
+| | |-ParmVarDecl 0x560fa949cfb8 <line:89:4, col:27> col:27 __format 'const char *__restrict'
+| | `-ParmVarDecl 0x560fa949d0a8 <line:90:4, col:32> col:32 __tp 'const struct tm *__restrict'
+| |-FunctionDecl 0x560fa94c97d0 <line:95:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:95:14 strptime 'char *(const char *__restrict, const char *__restrict, struct tm *) throw()' extern
+| | |-ParmVarDecl 0x560fa94c9530 <col:24, col:47> col:47 __s 'const char *__restrict'
+| | |-ParmVarDecl 0x560fa94c95b8 <line:96:10, col:33> col:33 __fmt 'const char *__restrict'
+| | `-ParmVarDecl 0x560fa94c9650 <col:40, col:51> col:51 __tp 'struct tm *'
+| |-FunctionDecl 0x560fa94c9ce8 <line:104:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:104:15 strftime_l 'size_t (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict, locale_t) throw()' extern
+| | |-ParmVarDecl 0x560fa94c98c0 <col:27, col:44> col:44 __s 'char *__restrict'
+| | |-ParmVarDecl 0x560fa94c9940 <col:49, col:56> col:56 __maxsize 'size_t':'unsigned long'
+| | |-ParmVarDecl 0x560fa94c99c8 <line:105:6, col:29> col:29 __format 'const char *__restrict'
+| | |-ParmVarDecl 0x560fa94c9a60 <line:106:6, col:34> col:34 __tp 'const struct tm *__restrict'
+| | `-ParmVarDecl 0x560fa94c9b08 <line:107:6, col:15> col:15 __loc 'locale_t':'struct __locale_struct *'
+| |-FunctionDecl 0x560fa94ca140 <line:111:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:111:14 strptime_l 'char *(const char *__restrict, const char *__restrict, struct tm *, locale_t) throw()' extern
+| | |-ParmVarDecl 0x560fa94c9de8 <col:26, col:49> col:49 __s 'const char *__restrict'
+| | |-ParmVarDecl 0x560fa94c9e70 <line:112:5, col:28> col:28 __fmt 'const char *__restrict'
+| | |-ParmVarDecl 0x560fa94c9f08 <col:35, col:46> col:46 __tp 'struct tm *'
+| | `-ParmVarDecl 0x560fa94c9f88 <line:113:5, col:14> col:14 __loc 'locale_t':'struct __locale_struct *'
+| |-FunctionDecl 0x560fa94cb410 <line:119:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:119:19 gmtime 'struct tm *(const time_t *) throw()' extern
+| | `-ParmVarDecl 0x560fa94ca290 <col:27, col:41> col:41 __timer 'const time_t *'
+| |-FunctionDecl 0x560fa94cb5b8 <line:123:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:123:19 localtime 'struct tm *(const time_t *) throw()' extern
+| | `-ParmVarDecl 0x560fa94cb4e8 <col:30, col:44> col:44 __timer 'const time_t *'
+| |-FunctionDecl 0x560fa94cb890 <line:128:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:128:19 gmtime_r 'struct tm *(const time_t *__restrict, struct tm *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94cb690 <col:29, col:54> col:54 __timer 'const time_t *__restrict'
+| | `-ParmVarDecl 0x560fa94cb728 <line:129:8, col:30> col:30 __tp 'struct tm *__restrict'
+| |-FunctionDecl 0x560fa94cbaf8 <line:133:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:133:19 localtime_r 'struct tm *(const time_t *__restrict, struct tm *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94cb970 <col:32, col:57> col:57 __timer 'const time_t *__restrict'
+| | `-ParmVarDecl 0x560fa94cba08 <line:134:11, col:33> col:33 __tp 'struct tm *__restrict'
+| |-FunctionDecl 0x560fa94cbd10 <line:139:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:139:14 asctime 'char *(const struct tm *) throw()' extern
+| | `-ParmVarDecl 0x560fa94cbbf0 <col:23, col:40> col:40 __tp 'const struct tm *'
+| |-FunctionDecl 0x560fa94cbf10 <line:142:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:142:14 ctime 'char *(const time_t *) throw()' extern
+| | `-ParmVarDecl 0x560fa94cbde8 <col:21, col:35> col:35 __timer 'const time_t *'
+| |-FunctionDecl 0x560fa94cc1e0 <line:149:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:149:14 asctime_r 'char *(const struct tm *__restrict, char *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94cc000 <col:25, col:53> col:53 __tp 'const struct tm *__restrict'
+| | `-ParmVarDecl 0x560fa94cc088 <line:150:4, col:21> col:21 __buf 'char *__restrict'
+| |-FunctionDecl 0x560fa94cc4c0 <line:153:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:153:14 ctime_r 'char *(const time_t *__restrict, char *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94cc2c0 <col:23, col:48> col:48 __timer 'const time_t *__restrict'
+| | `-ParmVarDecl 0x560fa94cc348 <line:154:9, col:26> col:26 __buf 'char *__restrict'
+| |-VarDecl 0x560fa94cc638 <line:159:1, col:24> col:14 __tzname 'char *[2]' extern
+| |-VarDecl 0x560fa94cc6d8 <line:160:1, col:12> col:12 __daylight 'int' extern
+| |-VarDecl 0x560fa94cc778 <line:161:1, col:17> col:17 __timezone 'long' extern
+| |-VarDecl 0x560fa94cc868 <line:166:1, col:22> col:14 tzname 'char *[2]' extern
+| |-FunctionDecl 0x560fa94cc9d8 <line:170:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:170:13 tzset 'void () throw()' extern
+| |-VarDecl 0x560fa94ccab0 <line:174:1, col:12> col:12 daylight 'int' extern
+| |-VarDecl 0x560fa94ccb50 <line:175:1, col:17> col:17 timezone 'long' extern
+| |-FunctionDecl 0x560fa94cccb8 <line:190:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:190:15 timegm 'time_t (struct tm *) throw()' extern
+| | `-ParmVarDecl 0x560fa94ccc00 <col:23, col:34> col:34 __tp 'struct tm *'
+| |-FunctionDecl 0x560fa94cce60 <line:193:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:193:15 timelocal 'time_t (struct tm *) throw()' extern
+| | `-ParmVarDecl 0x560fa94ccda8 <col:26, col:37> col:37 __tp 'struct tm *'
+| |-FunctionDecl 0x560fa94cd060 <line:196:1, col:67> col:12 dysize 'int (int) throw()' extern
+| | |-ParmVarDecl 0x560fa94ccf40 <col:20, col:24> col:24 __year 'int'
+| | `-ConstAttr 0x560fa94cd108 <col:57>
+| |-FunctionDecl 0x560fa94cd458 <line:205:1, line:206:37> line:205:12 nanosleep 'int (const struct timespec *, struct timespec *)' extern
+| | |-ParmVarDecl 0x560fa94cd208 <col:23, col:46> col:46 __requested_time 'const struct timespec *'
+| | `-ParmVarDecl 0x560fa94cd2f8 <line:206:9, col:26> col:26 __remaining 'struct timespec *'
+| |-FunctionDecl 0x560fa94cd750 <line:210:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:210:12 clock_getres 'int (clockid_t, struct timespec *) throw()' extern
+| | |-ParmVarDecl 0x560fa94cd558 <col:26, col:36> col:36 __clock_id 'clockid_t':'int'
+| | `-ParmVarDecl 0x560fa94cd5f0 <col:48, col:65> col:65 __res 'struct timespec *'
+| |-FunctionDecl 0x560fa94cd9a8 <line:213:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:213:12 clock_gettime 'int (clockid_t, struct timespec *) throw()' extern
+| | |-ParmVarDecl 0x560fa94cd830 <col:27, col:37> col:37 __clock_id 'clockid_t':'int'
+| | `-ParmVarDecl 0x560fa94cd8c8 <col:49, col:66> col:66 __tp 'struct timespec *'
+| |-FunctionDecl 0x560fa94cdc80 <line:216:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:216:12 clock_settime 'int (clockid_t, const struct timespec *) throw()' extern
+| | |-ParmVarDecl 0x560fa94cda88 <col:27, col:37> col:37 __clock_id 'clockid_t':'int'
+| | `-ParmVarDecl 0x560fa94cdb20 <col:49, col:72> col:72 __tp 'const struct timespec *'
+| |-FunctionDecl 0x560fa94ce0c8 <line:224:1, line:226:30> line:224:12 clock_nanosleep 'int (clockid_t, int, const struct timespec *, struct timespec *)' extern
+| | |-ParmVarDecl 0x560fa94cdd60 <col:29, col:39> col:39 __clock_id 'clockid_t':'int'
+| | |-ParmVarDecl 0x560fa94cdde8 <col:51, col:55> col:55 __flags 'int'
+| | |-ParmVarDecl 0x560fa94cde80 <line:225:8, col:31> col:31 __req 'const struct timespec *'
+| | `-ParmVarDecl 0x560fa94cdf18 <line:226:8, col:25> col:25 __rem 'struct timespec *'
+| |-FunctionDecl 0x560fa94ce438 <line:229:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:229:12 clock_getcpuclockid 'int (pid_t, clockid_t *) throw()' extern
+| | |-ParmVarDecl 0x560fa94ce1d8 <col:33, col:39> col:39 __pid 'pid_t':'int'
+| | `-ParmVarDecl 0x560fa94ce2b0 <col:46, col:57> col:57 __clock_id 'clockid_t *'
+| |-FunctionDecl 0x560fa94ce8b0 <line:234:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:234:12 timer_create 'int (clockid_t, struct sigevent *__restrict, timer_t *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94ce518 <col:26, col:36> col:36 __clock_id 'clockid_t':'int'
+| | |-ParmVarDecl 0x560fa94ce638 <line:235:5, col:33> col:33 __evp 'struct sigevent *__restrict'
+| | `-ParmVarDecl 0x560fa94ce730 <line:236:5, col:25> col:25 __timerid 'timer_t *__restrict'
+| |-FunctionDecl 0x560fa94ceac0 <line:239:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:239:12 timer_delete 'int (timer_t) throw()' extern
+| | `-ParmVarDecl 0x560fa94ce998 <col:26, col:34> col:34 __timerid 'timer_t':'void *'
+| |-FunctionDecl 0x560fa94ceff0 <line:242:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:242:12 timer_settime 'int (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict) throw()' extern
+| | |-ParmVarDecl 0x560fa94ceb98 <col:27, col:35> col:35 __timerid 'timer_t':'void *'
+| | |-ParmVarDecl 0x560fa94cec20 <col:46, col:50> col:50 __flags 'int'
+| | |-ParmVarDecl 0x560fa94ced48 <line:243:6, col:42> col:42 __value 'const struct itimerspec *__restrict'
+| | `-ParmVarDecl 0x560fa94cee38 <line:244:6, col:36> col:36 __ovalue 'struct itimerspec *__restrict'
+| |-FunctionDecl 0x560fa94cf2d0 <line:247:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:247:12 timer_gettime 'int (timer_t, struct itimerspec *) throw()' extern
+| | |-ParmVarDecl 0x560fa94cf0e0 <col:27, col:35> col:35 __timerid 'timer_t':'void *'
+| | `-ParmVarDecl 0x560fa94cf178 <col:46, col:65> col:65 __value 'struct itimerspec *'
+| |-FunctionDecl 0x560fa94d04d8 <line:251:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:61:27> /usr/include/time.h:251:12 timer_getoverrun 'int (timer_t) throw()' extern
+| | `-ParmVarDecl 0x560fa94d0418 <col:30, col:38> col:38 __timerid 'timer_t':'void *'
+| |-FunctionDecl 0x560fa94d07d0 <line:257:1, /usr/include/x86_64-linux-gnu/sys/cdefs.h:293:63> /usr/include/time.h:257:12 timespec_get 'int (struct timespec *, int) throw()' extern
+| | |-ParmVarDecl 0x560fa94d05c8 <col:26, col:43> col:43 __ts 'struct timespec *'
+| | |-ParmVarDecl 0x560fa94d0650 <col:49, col:53> col:53 __base 'int'
+| | `-NonNullAttr 0x560fa94d0880 </usr/include/x86_64-linux-gnu/sys/cdefs.h:293:44, /usr/include/time.h:258:27> 1
+| |-VarDecl 0x560fa94d0920 <line:274:1, col:12> col:12 getdate_err 'int' extern
+| |-FunctionDecl 0x560fa94d0ae8 <line:283:1, col:48> col:19 getdate 'struct tm *(const char *)' extern
+| | `-ParmVarDecl 0x560fa94d09c0 <col:28, col:40> col:40 __string 'const char *'
+| `-FunctionDecl 0x560fa94d0db8 <line:297:1, line:298:40> line:297:12 getdate_r 'int (const char *__restrict, struct tm *__restrict)' extern
+| |-ParmVarDecl 0x560fa94d0bc8 <col:23, col:46> col:46 __string 'const char *__restrict'
+| `-ParmVarDecl 0x560fa94d0c60 <line:298:9, col:31> col:31 __resbufp 'struct tm *__restrict'
+|-NamespaceDecl 0x560fa94d0e88 prev 0x560fa944bc78 </opt/compiler-explorer/gcc-11.2.0/lib/gcc/x86_64-linux-gnu/11.2.0/../../../../include/c++/11.2.0/ctime:58:1, line:73:1> line:58:11 std
+| |-original Namespace 0x560fa944ba00 'std'
+| |-UsingDecl 0x560fa94d0f20 <line:60:3, col:11> col:11 ::clock_t
+| |-UsingShadowDecl 0x560fa94d0f80 <col:11> col:11 implicit Typedef 0x560fa94b5fc8 'clock_t'
+| | `-TypedefType 0x560fa949c450 'clock_t' sugar
+| | |-Typedef 0x560fa94b5fc8 'clock_t'
+| | `-TypedefType 0x560fa94b5f90 '__clock_t' sugar
+| | |-Typedef 0x560fa94a9400 '__clock_t'
+| | `-BuiltinType 0x560fa93d3350 'long'
+| |-UsingDecl 0x560fa94d1008 <line:61:3, col:11> col:11 ::time_t
+| |-UsingShadowDecl 0x560fa94d1068 <col:11> col:11 implicit Typedef 0x560fa94b6038 'time_t'
+| | `-TypedefType 0x560fa949c650 'time_t' sugar
+| | |-Typedef 0x560fa94b6038 'time_t'
+| | `-TypedefType 0x560fa94b0360 '__time_t' sugar
+| | |-Typedef 0x560fa94a95e0 '__time_t'
+| | `-BuiltinType 0x560fa93d3350 'long'
+| |-UsingDecl 0x560fa94d10f0 <line:62:3, col:11> col:11 ::tm
+| |-UsingShadowDecl 0x560fa94d1150 <col:11> col:11 implicit CXXRecord 0x560fa94b6098 'tm'
+| | `-RecordType 0x560fa94b6140 'tm'
+| | `-CXXRecord 0x560fa94b6098 'tm'
+| |-UsingDecl 0x560fa94d11d8 <line:64:3, col:11> col:11 ::clock
+| |-UsingShadowDecl 0x560fa94d1238 <col:11> col:11 implicit Function 0x560fa949c598 'clock' 'clock_t () throw()'
+| |-UsingDecl 0x560fa94d12c0 <line:65:3, col:11> col:11 ::difftime
+| |-UsingShadowDecl 0x560fa94d1320 <col:11> col:11 implicit Function 0x560fa949cab0 'difftime' 'double (time_t, time_t) throw()'
+| |-UsingDecl 0x560fa94d13a8 <line:66:3, col:11> col:11 ::mktime
+| |-UsingShadowDecl 0x560fa94d1428 <col:11> col:11 implicit Function 0x560fa949cda8 'mktime' 'time_t (struct tm *) throw()'
+| |-UsingDecl 0x560fa94d14b0 <line:67:3, col:11> col:11 ::time
+| |-UsingShadowDecl 0x560fa94d1510 <col:11> col:11 implicit Function 0x560fa949c7f8 'time' 'time_t (time_t *) throw()'
+| |-UsingDecl 0x560fa94d1598 <line:68:3, col:11> col:11 ::asctime
+| |-UsingShadowDecl 0x560fa94d15f8 <col:11> col:11 implicit Function 0x560fa94cbd10 'asctime' 'char *(const struct tm *) throw()'
+| |-UsingDecl 0x560fa94d1680 <line:69:3, col:11> col:11 ::ctime
+| |-UsingShadowDecl 0x560fa94d16e0 <col:11> col:11 implicit Function 0x560fa94cbf10 'ctime' 'char *(const time_t *) throw()'
+| |-UsingDecl 0x560fa94d1768 <line:70:3, col:11> col:11 ::gmtime
+| |-UsingShadowDecl 0x560fa94d17c8 <col:11> col:11 implicit Function 0x560fa94cb410 'gmtime' 'struct tm *(const time_t *) throw()'
+| |-UsingDecl 0x560fa94d1850 <line:71:3, col:11> col:11 ::localtime
+| |-UsingShadowDecl 0x560fa94d18b0 <col:11> col:11 implicit Function 0x560fa94cb5b8 'localtime' 'struct tm *(const time_t *) throw()'
+| |-UsingDecl 0x560fa94d1938 <line:72:3, col:11> col:11 ::strftime
+| `-UsingShadowDecl 0x560fa94d1998 <col:11> col:11 implicit Function 0x560fa94c9438 'strftime' 'size_t (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict) throw()'
+|-NamespaceDecl 0x560fa94d1a18 prev 0x560fa94d0e88 <line:77:1, line:81:1> line:77:11 std
+| |-original Namespace 0x560fa944ba00 'std'
+| |-UsingDecl 0x560fa94d1a98 <line:79:3, col:11> col:11 ::timespec
+| |-UsingShadowDecl 0x560fa94d1af8 <col:11> col:11 implicit CXXRecord 0x560fa94bb400 'timespec'
+| | `-RecordType 0x560fa94bb4b0 'timespec'
+| | `-CXXRecord 0x560fa94bb400 'timespec'
+| |-UsingDecl 0x560fa94d1b80 <line:80:3, col:11> col:11 ::timespec_get
+| `-UsingShadowDecl 0x560fa94d1be0 <col:11> col:11 implicit Function 0x560fa94d07d0 'timespec_get' 'int (struct timespec *, int) throw()'
+`-FunctionDecl 0x560fa94d1ce0 <<source>:10:1, line:12:1> line:10:9 myClock 'clock_t ()'
+ `-CompoundStmt 0x560fa94d1ea0 <col:19, line:12:1>
+ `-ReturnStmt 0x560fa94d1e90 <line:11:3, col:16>
+ `-CallExpr 0x560fa94d1e70 <col:10, col:16> 'clock_t':'long'
+ `-ImplicitCastExpr 0x560fa94d1e58 <col:10> 'clock_t (*)() throw()' <FunctionToPointerDecay>
+ `-DeclRefExpr 0x560fa94d1de0 <col:10> 'clock_t () throw()' lvalue Function 0x560fa949c598 'clock' 'clock_t () throw()' \ No newline at end of file
diff --git a/test/ast/bug-3849b.cpp b/test/ast/bug-3849b.cpp
new file mode 100644
index 000000000..bfaa8d3fd
--- /dev/null
+++ b/test/ast/bug-3849b.cpp
@@ -0,0 +1,22 @@
+/*
+#include "hell.hpp"
+
+#pragma once
+
+char Bar(auto ) {
+ return {};
+}
+
+void f();
+*/
+
+int main() {
+ char c = Bar([]{});
+ return c;
+}
+
+#include <ctime>
+
+clock_t myClock() {
+ return clock();
+} \ No newline at end of file
diff --git a/test/check-img.js b/test/check-img.js
new file mode 100644
index 000000000..16cae636e
--- /dev/null
+++ b/test/check-img.js
@@ -0,0 +1,46 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+import fs from 'fs';
+import path from 'path';
+
+import {assert} from 'chai';
+
+import {languages} from '../lib/languages';
+
+const img_dir = path.resolve('views/resources/logos');
+
+function checkImage(lang) {
+ let result = fs.existsSync(img_dir + '/' + lang.logoUrl);
+ if (lang.logoUrlDark !== null) {
+ result = result && fs.existsSync(img_dir + '/' + lang.logoUrlDark);
+ }
+ return result;
+}
+
+describe('Image-checks', () => {
+ for (const lang in languages) {
+ it('check if ' + lang + ' image exists', () => assert.isOk(checkImage(languages[lang])));
+ }
+});
diff --git a/test/llvm-ast-parser-tests.js b/test/llvm-ast-parser-tests.js
index d51f05b68..07c8f1b8b 100644
--- a/test/llvm-ast-parser-tests.js
+++ b/test/llvm-ast-parser-tests.js
@@ -71,11 +71,11 @@ describe('llvm-ast', function () {
});
it('keeps reasonable-sized output', () => {
- astDumpWithCTime.length.should.be.above(100);
+ astDumpWithCTime.length.should.be.above(200);
let output = mockAstOutput(astDumpWithCTime);
let processed = astParser.processAst(output);
- processed.length.should.be.below(100);
+ processed.length.should.be.below(200);
});
it('links some source lines', () => {
@@ -106,3 +106,46 @@ describe('llvm-ast', function () {
should.exist(processed.find(l => l.text.match(/CXXRecord/)));
});
});
+
+describe('llvm-ast bug-3849a', function () {
+ let compilerProps;
+ let astParser;
+ let astDump;
+ let compilerOutput;
+
+ before(() => {
+ let fakeProps = new properties.CompilerProps(languages, properties.fakeProps({}));
+ compilerProps = fakeProps.get.bind(fakeProps, 'c++');
+
+ astParser = new LlvmAstParser(compilerProps);
+ astDump = utils.splitLines(fs.readFileSync('test/ast/bug-3849a.ast').toString());
+ compilerOutput = mockAstOutput(astDump);
+ });
+
+ it('should have more than 2 lines', () => {
+ let processed = astParser.processAst(compilerOutput);
+ processed.length.should.be.above(2);
+ });
+});
+
+describe('llvm-ast bug-3849b', function () {
+ let compilerProps;
+ let astParser;
+ let astDump;
+ let compilerOutput;
+
+ before(() => {
+ let fakeProps = new properties.CompilerProps(languages, properties.fakeProps({}));
+ compilerProps = fakeProps.get.bind(fakeProps, 'c++');
+
+ astParser = new LlvmAstParser(compilerProps);
+ astDump = utils.splitLines(fs.readFileSync('test/ast/bug-3849b.ast').toString());
+ compilerOutput = mockAstOutput(astDump);
+ });
+
+ it('should have not too many lines', () => {
+ let processed = astParser.processAst(compilerOutput);
+ processed.length.should.be.above(200);
+ processed.length.should.be.below(300);
+ });
+});
diff --git a/types/languages.interfaces.ts b/types/languages.interfaces.ts
index f5dd7320c..f4ea75d28 100644
--- a/types/languages.interfaces.ts
+++ b/types/languages.interfaces.ts
@@ -24,6 +24,7 @@
export type LanguageKey =
| 'mlir'
+ | 'jakt'
| 'c++'
| 'llvm'
| 'cppx'
@@ -42,6 +43,7 @@ export type LanguageKey =
| 'kotlin'
| 'scala'
| 'ocaml'
+ | 'pony'
| 'python'
| 'swift'
| 'pascal'
@@ -63,7 +65,8 @@ export type LanguageKey =
| 'dart'
| 'typescript'
| 'solidity'
- | 'toit';
+ | 'toit'
+ | 'carbon';
export interface Language {
/** Id of language. Added programmatically based on CELanguages key */
diff --git a/types/resultline/resultline.interfaces.ts b/types/resultline/resultline.interfaces.ts
index d848d7e31..d7898c3de 100644
--- a/types/resultline/resultline.interfaces.ts
+++ b/types/resultline/resultline.interfaces.ts
@@ -1,13 +1,23 @@
-export type ResultLineTag = {
+export type Link = {
+ text: string;
+ url: string;
+};
+
+export type MessageWithLocation = {
line?: number;
column?: number;
file?: string;
text: string;
- severity: number;
endline?: number;
endcolumn?: number;
};
+export type ResultLineTag = MessageWithLocation & {
+ severity: number;
+ link?: Link;
+ flow?: MessageWithLocation[];
+};
+
export type ResultLine = {
text: string;
tag?: ResultLineTag;
diff --git a/views/_layout.pug b/views/_layout.pug
index 18ef51317..81ee61248 100644
--- a/views/_layout.pug
+++ b/views/_layout.pug
@@ -46,7 +46,7 @@ html(lang="en")
a(href=`${httpRoot}noscript`) click here
block footer
- include templates.pug
+ include templates/templates
block scripts
script(src=`${httpRoot}client-options.js?hash=${optionsHash}`)
diff --git a/views/index.pug b/views/index.pug
index 8d844709b..390677a77 100644
--- a/views/index.pug
+++ b/views/index.pug
@@ -100,4 +100,4 @@ block prepend content
include menu-other.pug
block append footer
- include popups.pug
+ include popups/popups
diff --git a/views/popups.pug b/views/popups.pug
deleted file mode 100644
index e6122e400..000000000
--- a/views/popups.pug
+++ /dev/null
@@ -1,420 +0,0 @@
-#load-save.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg(style="max-width: unset")
- .modal-content(style="max-width: unset")
- .modal-header
- h5.modal-title Load and save editor text
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .card
- .card-header
- ul.nav.nav-tabs.card-header-tabs(role="tablist")
- li.nav-item(role="presentation"): a.nav-link.active(href="#load-examples" role="tab" data-toggle="tab") Examples
- li.nav-item(role="presentation"): a.nav-link(href="#load-browser-local" role="tab" data-toggle="tab") Browser-local storage
- li.nav-item(role="presentation"): a.nav-link(href="#load-browser-local-history" role="tab" data-toggle="tab") Browser-local history
- li.nav-item(role="presentation"): a.nav-link(href="#load-file-system" role="tab" data-toggle="tab") File system
- .card-body.tab-content
- #load-examples.tab-pane.active(role="tabpanel")
- h4.card-title Load from examples:
- ul.examples.small-v-scrollable
- li.template: a(href="javascript:;")
- #load-browser-local.tab-pane(role="tabpanel")
- h4.card-title Load from browser-local storage:
- ul.local-storage.small-v-scrollable
- li.template
- a(href="javascript:;")
- button.btn.btn-sm.ml-5
- span.fa.fa-trash
- .input-group
- input.save-name(type="text" size="20" placeholder="Set name of state")
- .input-group-append
- button.btn.btn-light.save-button(type="button") Save to browser-local storage
- #load-browser-local-history.tab-pane(role="tabpanel")
- h4.card-title Load from browser-local history:
- ul.local-history.small-v-scrollable
- li.template: a(href="javascript:;")
- #load-file-system.tab-pane(role="tabpanel")
- h4.card-title Load/save to your system
- label.btn.btn-outline-secondary.btn-file(role="button") Load from a local file
- input.local-file(type="file")
- label.btn.btn-outline-secondary.btn-file.save-btn(role="button") Save to file
- input.save-file(type="button")
- .modal-footer
- button.btn.btn-outline-primary(type="button" data-dismiss="modal" aria-label="Close") Close
-
-#alert.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Something alert worthy
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .modal-footer
- button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
-
-#yes-no.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Well, do you or not?
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .modal-footer
- button.btn.btn-link.no(type="button" data-dismiss="modal") No
- button.btn.btn-link.yes(type="button" data-dismiss="modal") Yes
-
-#enter-something.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Enter something here
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .question
- input.question-answer
- .modal-footer
- button.btn.btn-light.no(type="button" data-dismiss="modal") Cancel
- button.btn.btn-light.yes(type="button" data-dismiss="modal") Ok
-
-#settings.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg(role="document")
- .modal-content
- .modal-header
- h5.modal-title
- | Compiler Explorer Settings
- button.close(type="button" data-dismiss="modal" aria-label="Close")
- span(aria-hidden="true") &times;
- .modal-body
- .card
- .card-header
- | These settings control how Compiler Explorer acts for you. They are not
- | preserved as part of shared URLs, and are persisted locally using browser
- | local storage.
- ul.nav.nav-tabs.card-header-tabs(role="tablist")
- li.nav-item(role="presentation"): a.nav-link.active(href="#colouring" role="tab" data-toggle="tab") Colouring
- li.nav-item(role="presentation"): a.nav-link(href="#site-behaviour" role="tab" data-toggle="tab") Site behaviour
- li.nav-item(role="presentation"): a.nav-link(href="#keybindings" role="tab" data-toggle="tab") Keybindings
- li.nav-item(role="presentation"): a.nav-link(href="#editor" role="tab" data-toggle="tab") Editor
- li.nav-item(role="presentation"): a.nav-link(href="#compilation" role="tab" data-toggle="tab") Compilation
- .card-body.tab-content
- #colouring.tab-pane.active.form-group(role="group")
- div
- label
- | Site theme
- select.theme
- .checkbox
- label
- input.colourise(type="checkbox")
- | Colourise lines to show how the source maps to the output
- .checkbox
- label
- input.alwaysEnableAllSchemes(type="checkbox")
- | Make all colour schemes available regardless of theme
- label
- | Line highlighting colour scheme&nbsp;
- select.colourScheme
- #site-behaviour.tab-pane.form-group(role="group")
- label
- | Default language
- small(style="margin-left: 3px")
- span.fas.fa-info-circle(title="New editors only (Reset UI to clear yours)" aria-label="New editors only (Reset UI to clear yours)")
- select.defaultLanguage
- .checkbox
- label
- input.allowStoreCodeDebug(type="checkbox")
- | Allow my source code to be temporarily stored for diagnostic purposes in the event of an error
- .checkbox
- label
- input.newEditorLastLang(type="checkbox")
- | Use last selected language when opening new Editors
- .checkbox
- label
- input.enableCommunityAds(type="checkbox")
- | Show community events
- #keybindings.tab-pane.form-group(role="group")
- .checkbox
- label
- input.useVim(type="checkbox")
- | Vim editor mode
- .the-save-option-to-auto-share
- label
- kbd Ctrl
- | +
- kbd S
- | &nbsp;behaviour
- select.enableCtrlS
- .checkbox.the-save-option-to-tree-save
- label
- input.enableCtrlStree(type="checkbox")
- | Make
- kbd Ctrl
- | +
- kbd S
- | &nbsp;include and save the file to a Tree if that's added to the UI
- .checkbox.the-popup-dialog-box-option
- label
- input.enableSharingPopover(type="checkbox")
- | Pop up a dialog box when
- kbd Ctrl
- | +
- kbd S
- | &nbsp; is set to create a short link.
- #editor.tab-pane.form-group(role="group")
- div
- label
- | Desired Font Family in editors
- input.editorsFFont(type="text" style="width:100%")
- label Default font scale
- select.defaultFontScale
- .checkbox
- label
- input.editorsFLigatures(type="checkbox")
- | Enable font ligatures
- .checkbox
- label
- input.autoCloseBrackets(type="checkbox")
- | Automatically insert matching brackets and parentheses
- .checkbox
- label
- input.autoIndent(type="checkbox")
- | Automatically indent code (reload page after changing)
- .checkbox
- label
- input.hoverShowSource(type="checkbox")
- | Highlight linked code lines on hover
- .checkbox
- label
- input.hoverShowAsmDoc(type="checkbox")
- | Show asm description on hover
- .checkbox
- label
- input.showQuickSuggestions(type="checkbox")
- | Show quick suggestions
- .checkbox
- label
- input.useCustomContextMenu(type="checkbox")
- | Use custom context menu
- .checkbox
- label
- input.showMinimap(type="checkbox")
- | Show editor minimap
- .checkbox
- label
- input.keepSourcesOnLangChange(type="checkbox")
- | Keep editor source on language change
- .checkbox
- label
- input.useSpaces(type="checkbox")
- | Use spaces for indentation
- div
- label Tab width
- input.tabWidth(type="number")
- div
- label Format based on
- select.formatBase
- .checkbox
- label
- input.wordWrap(type="checkbox")
- | Enable Word Wrapping
- .checkbox
- label
- input.enableCodeLens(type="checkbox")
- | Enable CodeLens features (requires refresh to take effect)
- #compilation.tab-pane.form-group(role="group")
- div
- .checkbox
- label
- input.compileOnChange(type="checkbox")
- | Compile automatically when source changes
- .checkbox
- label
- input.formatOnCompile(type="checkbox")
- | Enable formatting on compilation (for supported languages)
- div
- label Delay before compiling:&nbsp;
- span.delay-current-value &nbsp;
- .slider-input
- b 0.25s
- input.delay(type="range")
- b 3s
- .modal-footer
- button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
-
-#simplecook.gl_keep(tabindex="-1" role="dialog" style="display:none")
- .message
- .btn-group.btn-group-sm
- button.btn.btn-light.btn-sm.cookies(title="Read cookie policy" aria-label="Read new cookie policy")
- span.fas.fa-info-circle
- | &nbsp;Read the new cookie policy
- p.new-cookie-msg Compiler Explorer uses cookies and other related techs to serve you
- .btn-group.btn-group-sm(role="group" aria-label="Consent options" style="float:right")
- button.btn.btn-secondary.btn-sm.cook-dont-consent(title="Do not consent cookie policy" aria-label="Oppose cookie policy")
- span.fas.fa-thumbs-down
- | &nbsp;Don't consent
- button.btn.btn-primary.btn-sm.cook-do-consent(title="Consent cookie policy" aria-label="Consent cookie policy")
- span.fas.fa-thumbs-up
- | &nbsp;Consent
-
-#notifications(aria-live="polite" aria-atomic="true")
-
-#sharelinkdialog.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Share
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .card
- .card-body
- .container
- .input-group
- input.form-control.permalink(type="text" placeholder="Loading" readonly size="1024")
- .input-group-append
- button.btn.btn-outline-secondary.clippy(type="button" data-clipboard-target="#sharelinkdialog .permalink" title="Copy to clipboard")
- span.fa.fa-clipboard
- #embedsettings.form-group(role="group")
- .checkbox
- label
- input.readOnly(type="checkbox")
- | Read Only
- .checkbox
- label
- input.hideEditorToolbars(type="checkbox")
- | Hide Editor Toolbars
- if sharingEnabled
- .socialsharing.mt-2
-
-#renamepanemodal.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Rename Pane
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .card
- .card-body
- .container
- .input-group
- input#renamepaneinput.form-control.panename(type="text" placeholder="New pane name" size="1024")
- .modal-footer
- button.btn.btn-outline-secondary(type="button" data-dismiss="modal") Close
- button#renamepanesubmit.btn.btn-outline-primary(type="submit" data-dismiss="modal" value="Save Changes") Save Changes
-
-#history.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title History
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .card
- .card-body
- ul.nav.nav-tabs(role="tablist")
- li.nav-item
- a.nav-link.active(data-toggle="tab" role="tab" href="#load-history" aria-controls="load-history" aria-selected="true")
- | History
- li.nav-item
- a.nav-link(data-toggle="tab" role="tab" href="#load-history-diff-display" aria-controls="load-history-diff-display" aria-selected="false")
- | Diff
-
- div.tab-content#historyTabs(style="height:600px;overflow-y:scroll")
- div.tab-pane.show.active#load-history(role="tabpanel")
- ul.historiccode
- li.template
- input.base(type="radio" name="base")
- input.comp(type="radio" name="comp")
- | &nbsp;
- a(href="javascript:;")
- div.tab-pane#load-history-diff-display(role="tabpanel")
- .checkbox
- label.control-label(for="inline-diff-checkbox")
- input.inline-diff-checkbox(type="checkbox" value="")
- | Inline diff
- div.monaco-placeholder#history-diff
- .modal-footer
- button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
-
-#library-selection.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Libraries
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .card
- .card-body
- .container
- .row
- .col-lg
- div(style='text-align: center')
- input.lib-search-input(value="" placeholder="Search text")
- button.btn.btn-primary.lib-search-button(type="button") Search
- hr
- .row
- .col-lg.libs-how-to-use To add a library, search for one you want and select the version in the dropdown. Or if you have favorited it before, just click the library name in the Favorites section.
- .row
- .col-lg &nbsp;
- .row
- .libs-selected-col.col-md
- div
- h6 Selected
- .libs-selected-items
- .libs-results-col.col-md
- h6 Results
- .lib-results-items
- .libs-favorites-col.col-md
- h6 Favorites
- .lib-favorites
-
-#timing-info.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Timing
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- #chart
- .modal-footer
- button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
-
-#jsbeebemu.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-xl
- .modal-content
- .modal-body
- iframe#jsbeebemuframe(src="about:blank" width="1280" height="768")
-
-#site-template-loader.modal.fade.gl_keep(tabindex="-1" role="dialog")
- .modal-dialog.modal-lg
- .modal-content
- .modal-header
- h5.modal-title Load Site Template
- button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
- span(aria-hidden="true")
- | &times;
- .modal-body
- .container
- .row(id="site-template-modal-row")
- .site-templates-list-col
- h5 Templates
- ul#site-templates-list
- li Loading.....
- .site-template-preview-col
- h5 Preview
- <img id="site-template-preview" src=""/>
diff --git a/views/popups/alert.pug b/views/popups/alert.pug
new file mode 100644
index 000000000..ed6269152
--- /dev/null
+++ b/views/popups/alert.pug
@@ -0,0 +1,11 @@
+#alert.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Something alert worthy
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .modal-footer
+ button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
diff --git a/views/popups/enter-something.pug b/views/popups/enter-something.pug
new file mode 100644
index 000000000..db2336eb3
--- /dev/null
+++ b/views/popups/enter-something.pug
@@ -0,0 +1,14 @@
+#enter-something.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Enter something here
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .question
+ input.question-answer
+ .modal-footer
+ button.btn.btn-light.no(type="button" data-dismiss="modal") Cancel
+ button.btn.btn-light.yes(type="button" data-dismiss="modal") Ok
diff --git a/views/popups/history.pug b/views/popups/history.pug
new file mode 100644
index 000000000..d867dd759
--- /dev/null
+++ b/views/popups/history.pug
@@ -0,0 +1,35 @@
+#history.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title History
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .card
+ .card-body
+ ul.nav.nav-tabs(role="tablist")
+ li.nav-item
+ a.nav-link.active(data-toggle="tab" role="tab" href="#load-history" aria-controls="load-history" aria-selected="true")
+ | History
+ li.nav-item
+ a.nav-link(data-toggle="tab" role="tab" href="#load-history-diff-display" aria-controls="load-history-diff-display" aria-selected="false")
+ | Diff
+
+ div.tab-content#historyTabs(style="height:600px;overflow-y:scroll")
+ div.tab-pane.show.active#load-history(role="tabpanel")
+ ul.historiccode
+ li.template
+ input.base(type="radio" name="base")
+ input.comp(type="radio" name="comp")
+ | &nbsp;
+ a(href="javascript:;")
+ div.tab-pane#load-history-diff-display(role="tabpanel")
+ .checkbox
+ label.control-label
+ input.inline-diff-checkbox(type="checkbox" value="")
+ | Inline diff
+ div.monaco-placeholder#history-diff
+ .modal-footer
+ button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
diff --git a/views/popups/jsbeebemu.pug b/views/popups/jsbeebemu.pug
new file mode 100644
index 000000000..6ff20459c
--- /dev/null
+++ b/views/popups/jsbeebemu.pug
@@ -0,0 +1,5 @@
+#jsbeebemu.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-xl
+ .modal-content
+ .modal-body
+ iframe#jsbeebemuframe(src="about:blank" width="1280" height="768")
diff --git a/views/popups/library-selection.pug b/views/popups/library-selection.pug
new file mode 100644
index 000000000..604c746b6
--- /dev/null
+++ b/views/popups/library-selection.pug
@@ -0,0 +1,38 @@
+#library-selection.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Libraries
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .card
+ .card-body
+ .container
+ .row
+ .col-lg
+ div(style='text-align: center')
+ input.lib-search-input(value="" placeholder="Search text")
+ button.btn.btn-primary.lib-search-button(type="button") Search
+ hr
+ .row
+ .col-lg.libs-how-to-use
+ | To add a library, search for one you want and select the version in the dropdown. Or if you have
+ | favorited it before, just click the library name in the Favorites section. Libraries are
+ | installed |using the #[a(href="https://conan.io/", target="_blank") conan.io] package manager,
+ | except for Microsoft compilers, where #[a(href="https://vcpkg.io/", target="_blank") vcpkg] is
+ | used.
+ .row
+ .col-lg &nbsp;
+ .row
+ .libs-selected-col.col-md
+ div
+ h6 Selected
+ .libs-selected-items
+ .libs-results-col.col-md
+ h6 Results
+ .lib-results-items
+ .libs-favorites-col.col-md
+ h6 Favorites
+ .lib-favorites
diff --git a/views/popups/load-save.pug b/views/popups/load-save.pug
new file mode 100644
index 000000000..96fda1090
--- /dev/null
+++ b/views/popups/load-save.pug
@@ -0,0 +1,48 @@
+#load-save.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg(style="max-width: unset")
+ .modal-content(style="max-width: unset")
+ .modal-header
+ h5.modal-title Load and save editor text
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .card
+ .card-header
+ ul.nav.nav-tabs.card-header-tabs(role="tablist")
+ li.nav-item(role="presentation"): a.nav-link.active(href="#load-examples" role="tab" data-toggle="tab") Examples
+ li.nav-item(role="presentation"): a.nav-link(href="#load-browser-local" role="tab" data-toggle="tab") Browser-local storage
+ li.nav-item(role="presentation"): a.nav-link(href="#load-browser-local-history" role="tab" data-toggle="tab") Browser-local history
+ li.nav-item(role="presentation"): a.nav-link(href="#load-file-system" role="tab" data-toggle="tab") File system
+ .card-body.tab-content
+ #load-examples.tab-pane.active(role="tabpanel")
+ h4.card-title Load from examples:
+ ul.examples.small-v-scrollable
+ li.template: a(href="javascript:;")
+ #load-browser-local.tab-pane(role="tabpanel")
+ h4.card-title Load from browser-local storage:
+ ul.local-storage.small-v-scrollable
+ li.template
+ a.mr-3(href="javascript:;")
+ button.overwrite.btn.btn-sm.btn-light.mr-1
+ span.fa.fa-edit.mr-1
+ | Overwrite
+ button.delete.btn.btn-sm.btn-light
+ span.fa.fa-trash.mr-1
+ | Delete
+ .input-group
+ input.save-name(type="text" size="20" placeholder="Set name of state")
+ .input-group-append
+ button.btn.btn-light.save-button(type="button") Save to browser-local storage
+ #load-browser-local-history.tab-pane(role="tabpanel")
+ h4.card-title Load from browser-local history:
+ ul.local-history.small-v-scrollable
+ li.template: a(href="javascript:;")
+ #load-file-system.tab-pane(role="tabpanel")
+ h4.card-title Load/save to your system
+ label.btn.btn-outline-secondary.btn-file(role="button") Load from a local file
+ input.local-file(type="file")
+ label.btn.btn-outline-secondary.btn-file.save-btn(role="button") Save to file
+ input.save-file(type="button")
+ .modal-footer
+ button.btn.btn-outline-primary(type="button" data-dismiss="modal" aria-label="Close") Close
diff --git a/views/popups/notifications.pug b/views/popups/notifications.pug
new file mode 100644
index 000000000..b949fb7f3
--- /dev/null
+++ b/views/popups/notifications.pug
@@ -0,0 +1 @@
+#notifications(aria-live="polite" aria-atomic="true")
diff --git a/views/popups/popups.pug b/views/popups/popups.pug
new file mode 100644
index 000000000..e1c4fe9a6
--- /dev/null
+++ b/views/popups/popups.pug
@@ -0,0 +1,25 @@
+include load-save
+
+include alert
+
+include yes-no
+
+include enter-something
+
+include settings
+
+include notifications
+
+include sharelinkdialog
+
+include renamepanemodal
+
+include history
+
+include library-selection
+
+include timing
+
+include jsbeebemu
+
+include site-template-loader
diff --git a/views/popups/renamepanemodal.pug b/views/popups/renamepanemodal.pug
new file mode 100644
index 000000000..006698209
--- /dev/null
+++ b/views/popups/renamepanemodal.pug
@@ -0,0 +1,17 @@
+#renamepanemodal.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Rename Pane
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .card
+ .card-body
+ .container
+ .input-group
+ input#renamepaneinput.form-control.panename(type="text" placeholder="New pane name" size="1024")
+ .modal-footer
+ button.btn.btn-outline-secondary(type="button" data-dismiss="modal") Close
+ button#renamepanesubmit.btn.btn-outline-primary(type="submit" data-dismiss="modal" value="Save Changes") Save Changes
diff --git a/views/popups/settings.pug b/views/popups/settings.pug
new file mode 100644
index 000000000..2d3d6e201
--- /dev/null
+++ b/views/popups/settings.pug
@@ -0,0 +1,167 @@
+#settings.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg(role="document")
+ .modal-content
+ .modal-header
+ h5.modal-title
+ | Compiler Explorer Settings
+ button.close(type="button" data-dismiss="modal" aria-label="Close")
+ span(aria-hidden="true") &times;
+ .modal-body
+ .card
+ .card-header
+ | These settings control how Compiler Explorer acts for you. They are not
+ | preserved as part of shared URLs, and are persisted locally using browser
+ | local storage.
+ ul.nav.nav-tabs.card-header-tabs(role="tablist")
+ li.nav-item(role="presentation"): a.nav-link.active(href="#colouring" role="tab" data-toggle="tab") Colouring
+ li.nav-item(role="presentation"): a.nav-link(href="#site-behaviour" role="tab" data-toggle="tab") Site behaviour
+ li.nav-item(role="presentation"): a.nav-link(href="#keybindings" role="tab" data-toggle="tab") Keybindings
+ li.nav-item(role="presentation"): a.nav-link(href="#editor" role="tab" data-toggle="tab") Editor
+ li.nav-item(role="presentation"): a.nav-link(href="#compilation" role="tab" data-toggle="tab") Compilation
+ .card-body.tab-content
+ #colouring.tab-pane.active.form-group(role="group")
+ div
+ label
+ | Site theme
+ select.theme
+ .checkbox
+ label
+ input.colourise(type="checkbox")
+ | Colourise lines to show how the source maps to the output
+ .checkbox
+ label
+ input.alwaysEnableAllSchemes(type="checkbox")
+ | Make all colour schemes available regardless of theme
+ label
+ | Line highlighting colour scheme&nbsp;
+ select.colourScheme
+ #site-behaviour.tab-pane.form-group(role="group")
+ label
+ | Default language
+ small(style="margin-left: 3px")
+ span.fas.fa-info-circle(title="New editors only (Reset UI to clear yours)" aria-label="New editors only (Reset UI to clear yours)")
+ select.defaultLanguage
+ .checkbox
+ label
+ input.allowStoreCodeDebug(type="checkbox")
+ | Allow my source code to be temporarily stored for diagnostic purposes in the event of an error
+ .checkbox
+ label
+ input.newEditorLastLang(type="checkbox")
+ | Use last selected language when opening new Editors
+ .checkbox
+ label
+ input.enableCommunityAds(type="checkbox")
+ | Show community events
+ #keybindings.tab-pane.form-group(role="group")
+ .checkbox
+ label
+ input.useVim(type="checkbox")
+ | Vim editor mode
+ .the-save-option-to-auto-share
+ label
+ kbd Ctrl
+ | +
+ kbd S
+ | &nbsp;behaviour
+ select.enableCtrlS
+ .checkbox.the-save-option-to-tree-save
+ label
+ input.enableCtrlStree(type="checkbox")
+ | Make
+ kbd Ctrl
+ | +
+ kbd S
+ | &nbsp;include and save the file to a Tree if that's added to the UI
+ .checkbox.the-popup-dialog-box-option
+ label
+ input.enableSharingPopover(type="checkbox")
+ | Pop up a dialog box when
+ kbd Ctrl
+ | +
+ kbd S
+ | &nbsp; is set to create a short link.
+ #editor.tab-pane.form-group(role="group")
+ div
+ label
+ | Desired Font Family in editors
+ input.editorsFFont(type="text" style="width:100%")
+ label Default font scale
+ select.defaultFontScale
+ .checkbox
+ label
+ input.editorsFLigatures(type="checkbox")
+ | Enable font ligatures
+ .checkbox
+ label
+ input.autoCloseBrackets(type="checkbox")
+ | Automatically insert matching brackets and parentheses
+ .checkbox
+ label
+ input.autoIndent(type="checkbox")
+ | Automatically indent code (reload page after changing)
+ .checkbox
+ label
+ input.hoverShowSource(type="checkbox")
+ | Highlight linked code lines on hover
+ .checkbox
+ label
+ input.hoverShowAsmDoc(type="checkbox")
+ | Show asm description on hover
+ .checkbox
+ label
+ input.showQuickSuggestions(type="checkbox")
+ | Show quick suggestions
+ .checkbox
+ label
+ input.useCustomContextMenu(type="checkbox")
+ | Use custom context menu
+ .checkbox
+ label
+ input.showMinimap(type="checkbox")
+ | Show editor minimap
+ .checkbox
+ label
+ input.keepSourcesOnLangChange(type="checkbox")
+ | Keep editor source on language change
+ .checkbox
+ label
+ input.useSpaces(type="checkbox")
+ | Use spaces for indentation
+ div
+ label Tab width
+ input.tabWidth(type="number")
+ div
+ label Format based on
+ select.formatBase
+ .checkbox
+ label
+ input.wordWrap(type="checkbox")
+ | Enable Word Wrapping
+ .checkbox
+ label
+ input.enableCodeLens(type="checkbox")
+ | Enable CodeLens features (requires refresh to take effect)
+ #compilation.tab-pane.form-group(role="group")
+ div
+ .checkbox
+ label
+ input.compileOnChange(type="checkbox")
+ | Compile automatically when source changes
+ div
+ label Delay before compiling:&nbsp;
+ span.delay-current-value &nbsp;
+ .slider-input
+ b 0.25s
+ input.delay(type="range")
+ b 3s
+ .checkbox
+ label
+ input.formatOnCompile(type="checkbox")
+ | Enable formatting on compilation (for supported languages)
+ .checkbox
+ label
+ input.executorCompileOnChange(type="checkbox")
+ | Compile executor automatically when arguments change
+ .modal-footer
+ button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
diff --git a/views/popups/sharelinkdialog.pug b/views/popups/sharelinkdialog.pug
new file mode 100644
index 000000000..38b0077b3
--- /dev/null
+++ b/views/popups/sharelinkdialog.pug
@@ -0,0 +1,28 @@
+#sharelinkdialog.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Share
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .card
+ .card-body
+ .container
+ .input-group
+ input.form-control.permalink(type="text" placeholder="Loading" readonly size="1024")
+ .input-group-append
+ button.btn.btn-outline-secondary.clippy(type="button" data-clipboard-target="#sharelinkdialog .permalink" title="Copy to clipboard")
+ span.fa.fa-clipboard
+ #embedsettings.form-group(role="group")
+ .checkbox
+ label
+ input.readOnly(type="checkbox")
+ | Read Only
+ .checkbox
+ label
+ input.hideEditorToolbars(type="checkbox")
+ | Hide Editor Toolbars
+ if sharingEnabled
+ .socialsharing.mt-2
diff --git a/views/popups/simplecook.pug b/views/popups/simplecook.pug
new file mode 100644
index 000000000..8da46a6c3
--- /dev/null
+++ b/views/popups/simplecook.pug
@@ -0,0 +1,14 @@
+#simplecook.gl_keep(tabindex="-1" role="dialog" style="display:none")
+ .message
+ .btn-group.btn-group-sm
+ button.btn.btn-light.btn-sm.cookies(title="Read cookie policy" aria-label="Read new cookie policy")
+ span.fas.fa-info-circle
+ | &nbsp;Read the new cookie policy
+ p.new-cookie-msg Compiler Explorer uses cookies and other related techs to serve you
+ .btn-group.btn-group-sm(role="group" aria-label="Consent options" style="float:right")
+ button.btn.btn-secondary.btn-sm.cook-dont-consent(title="Do not consent cookie policy" aria-label="Oppose cookie policy")
+ span.fas.fa-thumbs-down
+ | &nbsp;Don't consent
+ button.btn.btn-primary.btn-sm.cook-do-consent(title="Consent cookie policy" aria-label="Consent cookie policy")
+ span.fas.fa-thumbs-up
+ | &nbsp;Consent
diff --git a/views/popups/site-template-loader.pug b/views/popups/site-template-loader.pug
new file mode 100644
index 000000000..2b6db64d3
--- /dev/null
+++ b/views/popups/site-template-loader.pug
@@ -0,0 +1,18 @@
+#site-template-loader.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Load Site Template
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .container
+ .row(id="site-template-modal-row")
+ .site-templates-list-col
+ h5 Templates
+ ul#site-templates-list
+ li Loading.....
+ .site-template-preview-col
+ h5 Preview
+ <img id="site-template-preview" src=""/>
diff --git a/views/popups/timing.pug b/views/popups/timing.pug
new file mode 100644
index 000000000..9cbc22d44
--- /dev/null
+++ b/views/popups/timing.pug
@@ -0,0 +1,12 @@
+#timing-info.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Timing
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ #chart
+ .modal-footer
+ button.btn.btn-outline-primary(type="button" data-dismiss="modal") Close
diff --git a/views/popups/yes-no.pug b/views/popups/yes-no.pug
new file mode 100644
index 000000000..e03a26fc9
--- /dev/null
+++ b/views/popups/yes-no.pug
@@ -0,0 +1,12 @@
+#yes-no.modal.fade.gl_keep(tabindex="-1" role="dialog")
+ .modal-dialog.modal-lg
+ .modal-content
+ .modal-header
+ h5.modal-title Well, do you or not?
+ button.close(type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close")
+ span(aria-hidden="true")
+ | &times;
+ .modal-body
+ .modal-footer
+ button.btn.btn-link.no(type="button" data-dismiss="modal") No
+ button.btn.btn-link.yes(type="button" data-dismiss="modal") Yes
diff --git a/views/resources/logos/carbon.svg b/views/resources/logos/carbon.svg
new file mode 100644
index 000000000..1256f7630
--- /dev/null
+++ b/views/resources/logos/carbon.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ viewBox="0 0 38.000089 42.000031"
+ width="380.00089"
+ height="420.00031"
+ version="1.1"
+ id="svg10"
+ sodipodi:docname="carbon.svg"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata16">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs14" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1376"
+ id="namedview12"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="1.4895833"
+ inkscape:cx="55.048952"
+ inkscape:cy="209.79021"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg10"
+ inkscape:pagecheckerboard="0" />
+ <path
+ fill="#283593"
+ fill-rule="evenodd"
+ d="m 17.903,0.28628166 c 0.679,-0.381 1.515,-0.381 2.193,0 C 23.451,2.1692817 33.547,7.8372817 36.903,9.7202817 37.582,10.100282 38,10.804282 38,11.566282 c 0,3.766 0,15.101 0,18.867 0,0.762 -0.418,1.466 -1.097,1.847 -3.355,1.883 -13.451,7.551 -16.807,9.434 -0.679,0.381 -1.515,0.381 -2.193,0 -3.355,-1.883 -13.451,-7.551 -16.807,-9.434 -0.678,-0.381 -1.096,-1.084 -1.096,-1.846 0,-3.766 0,-15.101 0,-18.867 0,-0.762 0.418,-1.466 1.097,-1.8470003 3.354,-1.883 13.452,-7.551 16.806,-9.43400004 z"
+ clip-rule="evenodd"
+ id="path2"
+ style="fill:#868782;fill-opacity:1" />
+</svg>
diff --git a/views/resources/logos/pony.svg b/views/resources/logos/pony.svg
new file mode 100644
index 000000000..f48eaf81f
--- /dev/null
+++ b/views/resources/logos/pony.svg
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="2464.7444"
+ height="1970.7235"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="Galloping.svg">
+ <defs
+ id="defs4">
+ <filter
+ inkscape:collect="always"
+ id="filter4275"
+ x="-0.051658433"
+ width="1.1033169"
+ y="-0.43313608"
+ height="1.8662722"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="18.769231"
+ id="feGaussianBlur4277" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.1767767"
+ inkscape:cx="1332.1051"
+ inkscape:cy="829.74875"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ showborder="false"
+ inkscape:object-paths="false"
+ inkscape:snap-nodes="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1855"
+ inkscape:window-height="1056"
+ inkscape:window-x="65"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer9"
+ inkscape:label="Shadow"
+ transform="translate(457.79567,289.3152)">
+ <path
+ sodipodi:type="arc"
+ style="fill:#e9e9e9;fill-opacity:1;stroke:none;filter:url(#filter4275)"
+ id="path4253"
+ sodipodi:cx="956"
+ sodipodi:cy="1616.3622"
+ sodipodi:rx="436"
+ sodipodi:ry="52"
+ d="m 1392,1616.3622 c 0,28.7188 -195.2038,52 -436,52 -240.79615,0 -436,-23.2812 -436,-52 0,-28.7188 195.20385,-52 436,-52 240.7962,0 436,23.2812 436,52 z"
+ transform="translate(0,-32)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="Hair"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4004"
+ d="m 326.46249,-114.99446 c 1.5245,-4.27536 4.9735,-11.43667 7.6644,-15.91402 2.691,-4.47735 4.779,-8.21021 4.64,-8.29525 -3.7745,-2.30984 -21.6313,-16.37385 -26.9899,-21.25725 -12.5125,-11.40292 -17.7659,-19.53142 -17.759,-27.47798 0,-5.34485 2.6049,-9.74184 8.2132,-13.88842 7.1066,-5.25441 27.4492,-14.45173 41.7831,-18.89103 7.425,-2.29957 14.175,-4.41998 15,-4.71203 2.0052,-0.70984 -3.3653,-2.95438 -12.9098,-5.39544 -6.1433,-1.57121 -11.079,-1.8952 -28.8718,-1.8952 -14.3639,0 -24.9655,-0.52026 -32.056,-1.57309 -10.2826,-1.52682 -31.9589,-6.65404 -34.7611,-8.22223 -0.8227,-0.46037 17.1865,-5.18136 44.3569,-11.62793 36.5515,-8.67235 48.5546,-11.93678 59.7418,-16.2476 l 14,-5.39472 -9.5,0.5431 c -5.5176,0.31544 -15.1876,-0.0694 -23.0677,-0.91797 -27.124,-2.92093 -48.6973,-3.8079 -79.692,-3.27649 -26.3708,0.45214 -32.1466,0.83193 -40.6343,2.67195 -47.6492,10.32974 -82.8789,34.85738 -91.1329,63.44856 -2.433,8.42766 -1.6718,27.5348 1.4578,36.59642 6.2385,18.06285 20.6983,32.46957 40.0979,39.95085 14.1896,5.47208 19.098,6.14461 51.4712,7.05232 30.346,0.85088 40.2266,1.9035 57,6.07242 11.9129,2.96089 30.9392,9.55013 40,13.8529 4.4,2.08947 8.2647,3.52285 8.5882,3.18528 0.3235,-0.33758 1.8355,-4.11179 3.36,-8.38715 z"
+ style="fill:#ffb400;fill-opacity:1;display:inline" />
+ <path
+ style="fill:#ffb400;fill-opacity:1;display:inline"
+ d="m 1869.5143,380.86242 c 9.9592,-2.9827 25.049,-9.8861 38.7581,-17.7312 13.99,-8.0058 25.3498,-19.6179 45.8348,-46.8523 9.8875,-13.1453 37.0417,-53.19872 36.4602,-53.78019 -0.1866,-0.18666 -7.1349,3.06405 -15.4405,7.22379 -50.133,25.1083 -85.802,35.4335 -109.1126,31.5852 -29.5394,-4.8767 -69.141,-26.4457 -116.4644,-63.43234 -17.0699,-13.3414 -24.438,-18.16067 -38.3105,-25.05808 -34.2679,-17.03799 -73.2054,-24.6962 -101.9017,-20.04201 -29.358,4.76151 -57.3089,24.59214 -88.8024,63.00363 -9.7326,11.8705 -18.521,23.875 -18.521,25.2988 0,0.5607 3.441,4.1395 7.6466,7.9528 l 7.6466,6.9333 12.1034,-7.7284 c 35.9184,-22.93509 66.8225,-37.75061 82.4278,-39.51615 8.1966,-0.92734 19.218,1.61192 26.8021,6.17505 9.9312,5.97533 10.3906,6.35504 63.3735,52.3809 20.0643,17.4296 43.1358,36.5463 52.1724,43.2292 16.8251,12.4428 34.8475,22.3225 50.3276,27.5892 15.7191,5.348 21.307,6.1684 39.5,5.7992 14.4308,-0.2929 17.6287,-0.6729 25.5,-3.0304 z"
+ id="path3956"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffb400;fill-opacity:1;display:inline"
+ d="m 553.01429,103.24676 c 12.3048,-1.54754 30.0594,-4.591331 49.5,-8.486141 23.0748,-4.62291 37.3597,-5.88885 58,-5.13999 9.35,0.33923 18.7479,0.9198 20.8842,1.29015 2.6318,0.45626 3.7603,0.32118 3.5,-0.41892 -0.7166,-2.03743 -19.33,-18.37774 -30.3842,-26.67377 -16.6816,-12.51924 -38.1402,-24.85655 -57.5,-33.05874 -3.575,-1.51462 -8.075,-3.43558 -10,-4.2688 l -3.5,-1.51494 14.6172,-2.2895 c 19.0491,-2.98366 35.7348,-6.73985 49.3828,-11.11676 10.9281,-3.50462 35.0615,-13.45191 36.7622,-15.15258 0.5182,-0.51827 -1.9564,-1.1669 -5.9368,-1.55613 -44.1321,-4.3155 -76.8028,-13.3187 -112.2132,-30.92308 l -12.3879,-6.15864 3.8879,-0.68473 c 2.1383,-0.3766 8.6128,-1.44146 14.3878,-2.36636 21.4376,-3.43335 42.9139,-11.06487 68.5,-24.34119 14.8864,-7.72436 42.9667,-24.01779 42.3313,-24.56242 -0.1822,-0.15618 -6.0955,0.52692 -13.1406,1.51799 -26.8862,3.78219 -55.6126,4.85581 -77.6763,2.90308 -8.8408,-0.78245 -13.7915,-1.83931 -21.5,-4.58976 -43.819,-15.635019 -54.8541,-18.101209 -76.3139,-17.055039 -17.3981,0.84815 -28.1011,3.33822 -47.8474,11.13168 -9.2692,3.658369 -17.648,6.965499 -18.6196,7.349169 -1.427,0.56348 -0.4035,1.73665 5.3242,6.1029 3.8999,2.97293 11.1259,9.44046 16.0578,14.3723 21.6113,21.61132 35.8903,45.03694 47.3753,77.72238 10.6051,30.18126 21.1197,56.46451 33.6204,84.04075 l 7.284,16.068271 3.5524,-0.53608 c 1.9538,-0.29485 7.3774,-1.01714 12.0524,-1.6051 z"
+ id="path3950"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#de9d00;fill-opacity:1;display:inline"
+ d="m 1826.8283,383.26802 c -26.2143,-4.155 -53.5855,-17.805 -82.814,-41.2995 -9.1574,-7.3609 -38.3275,-32.2576 -80.9175,-69.0632 -6.9204,-5.9805 -14.8265,-12.39305 -17.5692,-14.25004 -5.9592,-4.03487 -5.1143,-4.17736 5.1851,-0.87442 4.9186,1.57739 10.708,4.49223 15.6666,7.88789 11.4403,7.83427 37.8048,28.44667 56.0018,43.78357 30.0948,25.3646 47.4682,37.2955 68.7355,47.2031 31.9858,14.9009 57.7098,20.2742 77.684,16.2269 14.5774,-2.9537 30.6717,-9.173 48.7137,-18.8243 l 7,-3.7446 -4.7143,4.2554 c -5.4453,4.9153 -26.4895,16.6699 -38.4205,21.4604 -13.5457,5.4389 -22.553,7.3638 -36.3652,7.7713 -6.875,0.2028 -15.0587,-0.037 -18.186,-0.5325 z"
+ id="path4112"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#8c8c8c;fill-opacity:1;display:inline"
+ d="m 1514.4193,293.02892 -1.905,-2.25 2.25,1.905 c 2.1144,1.7902 2.7052,2.595 1.905,2.595 -0.1898,0 -1.2023,-1.0125 -2.25,-2.25 z"
+ id="path4104"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#8c8c8c;fill-opacity:1;display:inline"
+ d="m 1529.0143,245.90136 c 0,-0.20765 0.7875,-0.99515 1.75,-1.75 1.5861,-1.24387 1.6214,-1.2085 0.3776,0.37756 -1.3064,1.66575 -2.1276,2.19548 -2.1276,1.37244 z"
+ id="path4102"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#8c8c8c;fill-opacity:1;display:inline"
+ d="m 1551.0143,223.90136 c 0,-0.20765 0.7875,-0.99515 1.75,-1.75 1.5861,-1.24387 1.6214,-1.2085 0.3776,0.37756 -1.3064,1.66575 -2.1276,2.19548 -2.1276,1.37244 z"
+ id="path4100"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#de9d00;fill-opacity:1;display:inline"
+ d="m 637.51339,63.599989 c -21.4623,-13.68662 -45.6572,-24.14417 -72.4991,-31.33567 -20.196,-5.41093 -44.543,-13.2757 -43.7018,-14.11691 0.1903,-0.19034 11.3386,1.19648 24.7739,3.08181 19.88352,2.241097 37.30343,5.174721 43.1681,2.95197 1.2429,0.80369 4.7348,2.41376 7.7598,3.57792 8.8923,3.42217 38,18.1603 38,19.24056 0,0.54529 1.2799,2.6312 2.8443,4.63535 3.2851,4.20863 11.4989,18.13403 10.994,18.63889 -0.1871,0.18713 -5.2898,-2.81613 -11.3392,-6.67392 z"
+ id="path4086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sscccssscs" />
+ <path
+ style="fill:#de9d00;fill-opacity:1;display:inline"
+ d="m 620.21119,4.309979 c -13.9135,-3.15022 -24.7234,-8.34629 -45.1969,-21.72521 -22.2376,-14.53166 -33.3183,-20.7369 -47.5,-26.60006 -7.15,-2.95604 -11.7852,-5.10876 -10.3005,-4.78382 1.4848,0.32494 8.0098,1.75437 14.5,3.17651 6.4903,1.42214 15.2397,2.65677 19.4432,2.74361 4.2034,0.0869 7.4955,0.40467 7.3156,0.70625 -0.5517,0.92487 16.3208,9.47546 30.0748,15.24127 19.183,8.04168 36.5163,13.37887 54.766,16.86332 20.4736,3.90905 19.6496,3.65948 17.4448,5.28321 -0.9659,0.71131 -6.4337,3.1564 -12.1507,5.43353 -12.0781,4.8108 -19.2408,5.73434 -28.3963,3.66139 z"
+ id="path4078"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#de9d00;fill-opacity:1;display:inline"
+ d="m 221.20029,-217.40777 c 3.8215,-6.91427 13.54243,-16.67017 20.19475,-20.45737 3.86477,-2.15997 7.67401,-4.61834 10.3423,-5.27748 1.8318,1.48021 20.78555,6.2791 33.27695,8.60078 7.3287,1.36212 14.6426,1.75855 32,1.73446 18.2733,-0.0254 20.9032,0.1293 14,0.82328 -17.1288,1.72195 -27.6333,3.90156 -41.9061,8.69523 -20.9719,7.04359 -39.3949,10.06779 -61.3316,10.06779 l -8.8903,0 z"
+ id="path4056"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sccssssscs" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Snout"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#806330;fill-opacity:1"
+ d="m -155.05037,645.76696 c -24.34749,-5.41245 -47.35731,-15.60256 -77.65015,-34.38807 -66.11575,-41.00023 -140.06213,-107.99501 -161.48652,-146.30546 -9.44266,-16.88502 -16.8243,-40.09376 -20.46317,-64.33842 -2.30932,-15.38626 -2.62875,-53.92067 -0.58241,-70.25845 l 1.37763,-10.9989 -11.22631,-15.05492 c -13.00024,-17.43399 -22.95393,-32.45539 -28.29428,-42.69989 -3.12265,-5.99024 -3.85039,-8.58391 -4.30017,-15.32578 -1.2892,-19.32431 7.96313,-49.52342 20.65813,-67.42701 10.75473,-15.16727 20.4778,-19.87142 41.07246,-19.87142 23.47307,0 42.93881,8.85414 79.06988,35.96553 9.53532,7.15495 17.71363,13.24179 18.17403,13.52633 0.46039,0.28454 5.84356,0.0879 11.9626,-0.43711 23.92597,-2.05262 47.22875,-3.25297 79.06979,-4.07296 25.79183,-0.66421 34.57458,-1.2351 39.33615,-2.55691 7.83443,-2.17483 25.0969,-10.45672 31.54307,-15.13321 l 4.97839,-3.61166 5.43919,4.43028 c 7.16314,5.83445 18.5137,12.40458 25.7697,14.91647 3.208346,1.11065 12.500077,3.87352 20.64828,6.1397 47.800517,13.29423 73.6952409,23.86715 97.574094,39.8399 16.96696,11.34933 30.144265,23.98496 40.66827,38.99655 12.395179,17.68053 16.590456,29.12694 25.886356,70.6276 16.40604,73.24361 20.85347,96.03376 22.34968,114.52614 1.64783,20.36591 -6.02599,34.25597 -35.774956,64.75436 -19.987568,20.49107 -38.686034,34.56892 -73.0528559,55.00063 -30.3050421,18.01698 -73.8184091,38.12337 -101.1501081,46.73891 -19.97495,6.29664 -41.6062,9.23868 -51.59677,7.01777 z"
+ id="path3916"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#70572a;fill-opacity:1;stroke:none;display:inline"
+ d="m -319,546.36218 c 122.76529,83.93363 181.59887,103.96361 336,31 -43.278287,31.44404 -94.169358,56.79785 -164,67 -68.75108,-16.3556 -121.68735,-55.30379 -172,-98 z"
+ id="path4250"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#70572a;fill-opacity:1;stroke:none;display:inline"
+ d="m -129.6149,330.47596 c 14.3404,-15.78191 28.836,-31.22984 55.154301,-21.2132 27.5262,27.5055 21.0622,46.51346 15.5563,65.76093 C -77.472497,332.2781 -111.7536,315.82907 -129.6149,330.47596 z"
+ id="path4248"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer8"
+ inkscape:label="Hooves"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#989590;fill-opacity:1;display:inline"
+ d="m 474.9286,1356.3156 c -0.85892,-0.8075 -8.28027,-7.4534 -16.49198,-14.7689 -20.60252,-18.3538 -51.2361,-48.905 -62.00271,-61.8358 -12.28055,-14.7491 -21.72475,-29.1691 -30.79505,-47.02 l -7.65736,-15.0701 -9.4939,10.4236 c -10.18582,11.1834 -29.22331,34.9011 -29.22331,36.4078 0,0.5031 6.83864,7.8095 15.19698,16.2364 33.50651,33.7811 68.76926,57.309 102.50069,68.3902 13.26723,4.3583 30.68478,8.4909 36.36696,8.6283 2.72031,0.066 2.94342,-0.1283 1.59968,-1.3915 z"
+ id="path3984"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#989590;fill-opacity:1;display:inline"
+ d="m 1681.9596,1170.1038 c 29.739,-26.5072 49.7736,-59.5311 61.5291,-101.4222 3.6491,-13.0037 6.9486,-27.7954 6.339,-28.4169 -0.2395,-0.2442 -3.7875,3.5902 -7.8844,8.5206 -11.8238,14.2296 -48.1683,50.8033 -60.2268,60.6066 -17.6952,14.3858 -41.2297,29.959 -64.0533,42.3847 l -11.2704,6.136 2.4744,2.7327 c 7.5052,8.2878 26.2426,19.6671 43.1685,26.2164 l 5.3545,2.0718 7.8782,-5.4873 c 4.3329,-3.0179 11.8441,-9.022 16.6912,-13.3424 z"
+ id="path3978"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#989590;fill-opacity:1;display:inline"
+ d="m 87.456415,998.70062 c -1.492722,-7.49186 -4.166656,-31.97896 -4.985511,-45.65643 -1.063168,-17.75538 2.070182,-43.75224 8.179344,-67.86385 1.205018,-4.75617 1.939152,-8.88711 1.631324,-9.1801 -1.020213,-0.97105 -22.93711,-1.49802 -31.295849,-0.75252 l -8.221433,0.73326 0,3.97307 c 0,5.45203 3.949175,40.57276 6.554511,58.29012 2.646885,18.0005 5.386281,28.20705 10.608857,39.52697 4.961164,10.7532 16.714555,27.81886 18.191262,26.41336 0.19887,-0.1893 -0.09954,-2.657 -0.662505,-5.48388 z"
+ id="path3976"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Body"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#fffef1;fill-opacity:1;display:inline"
+ d="m 489.04839,1334.5641 c 8.0953,-13.5899 16.685,-32.4244 21.793,-47.7852 3.8727,-11.6459 5.0281,-16.4519 14.6656,-61 5.4586,-25.2318 8.4307,-35.76 9.9166,-35.1273 0.5999,0.2555 7.1657,3.1433 14.5907,6.4174 70.9047,31.2659 168.3904,57.7013 260.5,70.6405 79.6219,11.1849 163.4289,13.9973 240.50001,8.0705 99.8895,-7.6814 192.3967,-29.0646 285.5,-65.9937 83.6483,-33.1788 158.044,-75.1688 221.0896,-124.786 l 2.26,-1.7787 5.7336,9.7787 c 10.5932,18.0665 28.3954,44.0374 39.1122,57.059 1.0175,1.2364 3.0264,0.4883 13.5,-5.0278 36.5251,-19.2362 58.6933,-35.5609 87.8693,-64.707 17.1744,-17.1567 38.9353,-41.2754 38.9353,-43.1538 0,-1.1813 -12.5233,-8.2929 -26.376,-14.9781 -16.2159,-7.8257 -27.607,-11.3552 -62.7706,-19.4493 l -29.6466,-6.82406 3.7681,-5.0702 c 5.8557,-7.879 14.8418,-23.7985 20.313,-35.9861 32.3319,-72.02092 41.2273,-163.39302 25.7094,-264.08402 -3.2768,-21.262 -13.963,-78.7533 -19.9428,-107.2909 -30.6491,-146.2682 -64.6253,-211.6401 -151.0545,-290.6366 -32.0415,-29.28608 -40.7264,-35.7788 -60.3121,-45.08855 -48.6466,-23.12342 -122.8338,-24.47168 -218.2019,-3.96553 -58.9315,12.67153 -113.5951,28.83628 -227.98601,67.41858 -120.3582,40.595 -154.5652,49.063 -198.1927,49.063 -66.6435,0 -117.3655,-26.5105 -170.1998,-88.957 -12.1574,-14.36922 -44.8127,-57.56424 -54.9424,-72.6755 -13.2959,-19.8343 -25.7416,-45.19305 -40.7032,-82.93467 -4.7043,-11.86695 -11.0421,-27.281501 -14.0841,-34.254551 -8.2053,-18.80903 -13.8728,-32.81301 -20.5101,-50.67828 -11.0841,-29.83464 -14.0859,-36.97938 -20.587,-49 -11.6901,-21.61521 -21.4131,-35.42599 -34.723,-49.32162 -6.3864,-6.66749 -19.8464,-17.71157 -26.1324,-21.44192 -0.591,-0.35077 -5.316,0.73247 -10.5,2.40719 -5.1839,1.67472 -16.8337,5.02799 -25.8885,7.45172 -14.6392,3.91851 -16.6296,4.24045 -17.9643,2.9057 -2.5155,-2.51551 0.195,-3.83171 17.4275,-8.46257 47.4187,-12.74278 81.3767,-26.827279 119.4724,-49.552729 54.1389,-32.29577 87.3373,-61.03322 79.5285,-68.84201 -2.5415,-2.54147 -7.7034,-1.97222 -17.7638,1.95897 -12.8269,5.01221 -19.1112,6.14663 -43.7371,7.89521 -29.3125,2.08137 -77.041,8.20007 -102.4134,13.12922 -28.9741,5.62884 -43.3543,12.67101 -60.322,29.54042 -12.5718,12.49899 -23.7113,31.22172 -27.864,46.83242 -2.0849,7.837499 -3.5951,9.913389 -5.8504,8.041649 -0.8526,-0.7076 -1.5502,-2.06355 -1.5502,-3.01322 0,-3.772909 -30.3034,-15.662359 -52,-20.402069 -16.0236,-3.50041 -27.9059,-4.58781 -54.5,-4.9875 -12.65,-0.19013 -26.375,-0.92206 -30.5,-1.62653 -7.4767,-1.27688 -7.545,-1.26821 -22,2.79343 -7.975,2.24085 -19.4832,6.04875 -25.5737,8.46199 -11.1501,4.41797 -30.2343,14.13671 -34.4283,17.532759 l -2.2601,1.8301 3.5153,4.9347 c 4.4846,6.29551 9.5817,16.38882 11.8345,23.43469 0.9672,3.025 2.1306,5.40332 2.5854,5.28516 0.4548,-0.11816 3.6233,-1.36703 7.0411,-2.77527 24.2744,-10.00186 54.8214,-10.7048 82.7858,-1.90503 36.0164,11.33357 65.4308,40.21158 77.4257,76.01385 7.0595,21.07135 8.5322,46.8254 3.8316,67.00605 -5.6287,24.164801 -15.2387,41.706741 -32.2573,58.882031 -15.4328,15.57487 -30.5634,24.94177 -50.5,31.26296 -13.7672,4.36512 -22.7648,5.69735 -38,5.62649 -33.2617,-0.1547 -60.9086,-11.48989 -84.7576,-34.75043 C 61.22549,116.4372 49.92799,91.597039 46.44199,56.979369 l -0.584,-5.79956 -4.6718,0.79956 c -12.6685,2.16811 -34.41187,-0.43293 -46.3033,-5.53901 l -4.63139,-1.98869 -3.46913,3.66363 c -3.26958,3.45288 -111.79023,128.803361 -114.56376,132.330761 -1.11292,1.41544 -0.78241,2.14634 2.34333,5.18202 4.48462,4.35541 15.515,11.10079 23.28407,14.23886 3.19915,1.29219 14.10826,4.64814 24.24246,7.45767 34.55141,9.57875 51.88151,15.8177 72.19971,25.99236 42.05771,21.06107 70.23751,51.65315 81.65771,88.64805 2.533,8.2054 17.3188,73.4773 23.6865,104.5639 0.9858,4.8125 2.1271,8.75 2.5362,8.75 0.4092,0 1.9579,-1.5917 3.4418,-3.537 3.9551,-5.1856 16.6416,-15.054 24.3305,-18.926 14.2691,-7.1858 27.1079,-8.8257 58.8926,-7.5223 29.5642,1.2123 34.5267,2.9955 66.6808,23.9601 23.1522,15.0953 30.5432,19.0771 44,23.7038 10.9755,3.7736 11.0368,3.7821 27.5,3.8017 15.0021,0.018 17.3979,-0.2312 26.391,-2.7441 47.0334,-13.1424 83.7078,-46.6674 96.7986,-88.4862 1.7148,-5.4778 2.71,-7.25 4.0714,-7.25 2.8656,0 3.0907,2.4846 0.8822,9.7361 -6.1283,20.1219 -21.6106,43.5119 -38.6759,58.4301 -18.4944,16.1674 -42.8644,28.5805 -66.8964,34.0743 -6.841,1.5639 -12.3896,2.0647 -22.5709,2.0371 -24.3922,-0.066 -40.0758,-6.0601 -74,-28.2819 -20.2223,-13.2464 -31.2757,-19.0707 -40.5,-21.3403 -6.4504,-1.5872 -23.5,-2.7484 -23.5,-1.6006 0,0.383 1.091,3.1633 2.4244,6.1784 6.8558,15.5021 10.6526,34.2555 10.6833,52.7668 0.041,24.9607 -4.9897,43.8012 -17.6819,66.2176 -27.0853,47.8365 -39.0538,90.8418 -44.8855,161.2824 -4.188,50.5871 -4.0912,66.7861 0.5737,96 5.0184,31.4277 15.8459,69.916 27.4904,97.7199 1.3176,3.1459 2.3956,5.8939 2.3956,6.1066 0,0.2128 -11.8125,-3.3137 -26.25,-7.8365 -25.0514,-7.8479 -34.8561,-10.5749 -42.8627,-11.9215 l -3.6128,-0.6076 -1.6135,5.7695 c -2.548,9.1105 -5.5308,24.4939 -7.1615,36.9335 -2.6309,20.069 -1.8006,41.67342 2.8374,73.83612 2.5294,17.53986 0.4584,16.32976 18.5684,10.84996 34.4878,-10.43526 65.6466,-24.71776 80.7341,-37.00666 3.0424,-2.4781 5.6505,-4.3566 5.7957,-4.1745 0.1453,0.1822 2.6698,3.9312 5.6101,8.3312 21.8036,32.62816 68.0198,87.72856 89.4548,106.65096 26.8695,23.7197 71.142,48.2046 129,71.3435 9.35,3.7393 19.925,7.7999 23.5,9.0235 l 6.5,2.2248 -6,1.7658 c -15.1854,4.469 -35.4946,15.2878 -53.2976,28.3916 -10.7643,7.9231 -29.2024,23.9793 -29.2024,25.43 0,0.5444 2.6493,6.4303 5.8873,13.0798 6.4826,13.3123 17.1079,30.0132 26.4601,41.59 12.3919,15.3394 46.4773,48.6063 74.1526,72.3718 l 9,7.7285 2.5829,-3.0623 c 1.4207,-1.6842 5.4487,-7.873 8.9512,-13.7528 z"
+ id="path3982"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#dbdacf;fill-opacity:1;stroke:none"
+ d="m 156.2706,865.33244 c 280.70944,394.17556 1125.333,477.88336 1492.1461,100.92567 l -15.3696,27.05295 73.916,20.73864 c -45.598,22.9936 -99.0682,73.8817 -108.9018,130.9434 l -38.8908,-57.2756 c -355.2519,251.5296 -719.47331,225.5117 -1023.89067,106.7731 l -16.97056,72.832 c -17.10638,-51.9544 -56.86715,-81.2543 -127.27922,-79.903 l 50.91169,-27.5772 c -96.78863,-25.97 -183.24582,-94.7963 -247.07316,-191.33303 -20.12445,20.96143 -47.03655,28.34757 -75.06245,33.50613 25.07217,-32.86081 17.95569,-89.03919 -3.92031,-122.23762 l 48.87006,13.48528 z"
+ id="path4229"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccc" />
+ <path
+ style="fill:#333333;fill-opacity:1;display:inline"
+ d="m 372.02179,-96.212001 c -1.9033,-2.29338 -0.3898,-9.474629 3.7394,-17.742119 2.618,-5.24167 5.9056,-9.54568 11.7962,-15.44323 16.5121,-16.53165 33.7961,-24.90386 71.9569,-34.85527 25.1017,-6.54592 36.2135,-10.45209 61.1222,-21.48652 12.3729,-5.48115 13.8645,-5.92379 15.2599,-4.52845 1.3575,1.35754 1.3675,1.72193 0.082,2.98212 -2.1314,2.08963 -33.7022,15.71673 -45.9643,19.8398 -5.775,1.94183 -19.95,6.08459 -31.5,9.20614 -24.857,6.71793 -38.1357,11.7034 -49.017,18.40323 -11.6892,7.1973 -27.985,22.75914 -24.9319,23.80887 0.5219,0.17944 3.4239,1.74841 6.4489,3.48661 l 5.5,3.16036 -3.3427,1.37038 c -3.0908,1.26713 -3.6694,1.17894 -7.6781,-1.17031 -2.3844,-1.39738 -4.5438,-2.54069 -4.7987,-2.54069 -1.0051,0 -3.6805,8.22871 -3.6805,11.32024 0,3.021379 -1.4404,5.679759 -3.0776,5.679759 -0.3726,0 -1.2343,-0.67091 -1.9149,-1.49092 z"
+ id="path3980"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#dbdacf;fill-opacity:1;stroke:none"
+ d="m 188.74018,521.60876 c 28.79548,-33.9998 74.52427,-67.19631 129.97971,-62.53917 -20.64918,1.58186 -41.29835,-11.91717 -61.94753,-26.00761 -21.51813,-15.47581 -47.27021,-24.60069 -76.78771,-28.07744 22.95157,35.85164 20.38144,83.43238 8.75553,116.62422 z"
+ id="path4231"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#dbdacf;fill-opacity:1;stroke:none;display:inline"
+ d="m 188.0904,-127.26871 c 29.92906,14.78483 31.10218,40.458859 67.06119,26.08973 28.08177,-11.56752 37.35442,-8.70405 60.21803,-3.99264 -19.56443,-8.37732 -40.33851,-15.87488 -65.05382,-20.5061 -21.35134,-2.78426 -44.13224,-2.53036 -62.2254,-1.59099 z"
+ id="path4233"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#dbdacf;fill-opacity:1;stroke:none"
+ d="m 368.04908,-77.948008 c 47.61166,3.712406 71.53087,19.27104 99.3485,32.880465 l -45.96194,-48.083261 z"
+ id="path4238"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#e8e8e8;fill-opacity:1;stroke:none"
+ d="M 87.681241,138.78022 C 180.35534,181.6724 283.79438,137.07862 282.84271,11.501 c 14.63663,55.80679 2.21668,101.99347 -43.13351,136.47161 -64.07938,34.91216 -111.87518,23.6875 -152.027959,-9.19239 z"
+ id="path4246"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;display:inline"
+ d="m 407.5,-289.3125 c -1.53796,0.0404 -6.81145,1.05905 -12.71875,2.5 -24.6785,6.01978 -40.914,7.20584 -63.4375,4.625 -28.716,-3.29041 -72.5383,-4.42931 -96.9375,-2.53125 -44.4552,3.45826 -89.4032,25.33506 -106.8125,52 -8.3777,12.83176 -11.267,23.98781 -10.25,39.46875 1.7246,26.2553 15.26595,46.15287 39.78125,58.46875 l 9.59375,4.8125 -11.03125,3.15625 c -18.2176,5.20331 -38.00725,13.80751 -53.28125,23.15625 l -6.59375,4.03125 -5.15625,-4.84375 c -29.2438,-27.52907 -74.30042,-31.668 -109.75,-10.0625 -11.22459,6.84105 -24.89757,20.67478 -30.78125,31.125 -23.45888,41.66622 -10.68347,95.58874 28.78125,121.375 l 5.96875,3.90625 -58,66.9375 c -31.89676,36.82656 -60.19405,69.28026 -62.875,72.125 -8.33346,8.84255 -24.25855,17.08719 -38.3125,19.8125 -4.6789,0.90733 -17.81082,1.56672 -37.6875,1.90625 -26.11972,0.44618 -68.32418,2.61532 -78.59375,4.03125 -2.68791,0.37059 -4.76819,-0.82694 -15,-8.625 -16.36491,-12.47231 -37.02313,-26.07418 -46.8125,-30.8125 -11.39401,-5.51502 -21.86509,-8.05141 -35.59375,-8.65625 -12.89886,-0.56828 -22.94982,1.04183 -30.625,4.875 -5.99775,2.99542 -17.12881,14.82979 -22.375,23.8125 -5.03612,8.62304 -11.17457,24.58162 -14.15625,36.71875 -1.59361,6.48687 -2.19,12.06631 -2.25,21.34375 l -0.0937,12.5625 4.25,8.59375 c 4.87594,9.8453 17.08121,28.4453 29.65625,45.1875 l 8.6875,11.53125 -1.2813,8.78125 c -1.9674,13.5497 -1.65089,55.04735 0.53125,69.28125 3.67357,23.9623 9.61658,43.2832 18.78125,61.125 9.03754,17.5942 23.13629,34.9538 49.0625,60.4375 63.15299,62.075 141.023,113.1019 187.71875,123 9.45095,2.0033 23.57424,1.79715 35,-0.53125 47.38221,-9.6559 127.3954,-49.8126 174.25,-87.4375 10.945,-8.7889 30.3446,-28.5998 40.8125,-41.6875 7.6629,-9.5807 13.55995,-20.74825 15.59375,-29.46875 1.7651,-7.5685 1.51945,-15.78375 -1.09375,-33.84375 l -1.4375,-9.875 4.6875,-5.5 c 9.9061,-11.5952 24.22195,-21.23345 36.78125,-24.71875 3.8133,-1.0582 11.76865,-1.86635 21.78125,-2.21875 l 15.75,-0.5625 3.4375,7.5 c 9.911,21.4511 13.8044,49.3666 10.0625,72.4375 -2.7977,17.2502 -6.67575,27.12615 -20.28125,51.84375 -22.5906,41.0409 -34.502,84.43875 -40.1875,146.34375 -5.737,62.4654 -5.22645,83.86235 2.90625,123.96875 3.8517,18.9949 9.714,40.2298 16.5625,59.9375 3.009,8.6586 5.46875,16.01965 5.46875,16.34375 0.003,0.324 -10.0125,-2.484 -22.25,-6.25 -24.8363,-7.6431 -31.9946,-9.32435 -46.9375,-10.96875 -11.1752,-1.2297 -41.4991,-0.59465 -43,0.90625 -1.5117,1.5117 4.10655,55.25965 8.21875,78.71875 3.8849,22.16182 12.64645,40.72229 27.28125,57.78125 6.2952,7.338 7.7244,8.1227 11.375,6.2187 1.5618,-0.8146 3.33415,-1.4998 3.96875,-1.5 2.8055,-0.015 32.48295,-9.4618 43.78125,-13.93745 19.8293,-7.8553 39.06405,-17.8172 48.71875,-25.25 l 3.65625,-2.8125 10.625,14.84375 c 32.814,45.7829 72.2465,89.7101 97.25,108.3438 25.8701,19.2788 69.6861,42.2163 114.3125,59.8124 7.425,2.9284 13.8707,5.6178 14.3125,6 0.4417,0.3827 -4.2833,3.2021 -10.5,6.25 -11.5712,5.6735 -27.6305,15.7904 -38.3125,24.1563 -21.9481,17.1893 -53.0731,50.0192 -66.25,69.8437 l -2.5,3.75 2.875,4.25 c 4.7605,6.9964 24.984,26.5551 39.375,38.0938 37.2467,29.8644 66.8077,43.9552 105.5,50.2188 4.4,0.7116 10.4803,1.1887 13.5,1.0937 l 5.5,-0.1563 6.75,-10 c 8.1892,-12.1065 21.1517,-37.9639 26.625,-53.0937 4.7671,-13.178 7.5585,-23.82 13.5625,-52.0937 6.8717,-32.3607 9.8274,-44.3053 11,-44.2813 0.5892,0.012 3.0875,0.9272 5.5625,2.0625 28.933,13.2726 80.1551,31.3132 121.5,42.7812 103.2237,28.6341 212.1123,42.5526 319.5,40.8126 113.6116,-1.8415 208.6409,-18.1659 312,-53.5626 87.2811,-29.8892 180.8385,-78.3249 246.5,-127.625 7.15,-5.3676 13.5206,-9.8078 14.1562,-9.875 0.6359,-0.067 5.4118,6.625 10.5938,14.875 32.2444,51.3361 49.19,67.4703 84.5,80.4376 l 6.25,2.3124 5.5,-3.3437 c 22.3302,-13.5335 46.5237,-39.2133 61,-64.7813 12.4547,-21.9961 23.5702,-56.0355 27,-82.6562 l 0.625,-5.0312 -9.8125,-5.625 c -27.9596,-16.052 -41.6646,-21.2374 -78.3125,-29.7188 -14.575,-3.3732 -27.0385,-6.35185 -27.7188,-6.59375 -0.8134,-0.2894 0.7071,-3.60685 4.4376,-9.71875 34.2681,-56.14772 51.7128,-143.50685 46.2812,-231.78125 -2.2886,-37.1948 -6.634,-66.7388 -20.0938,-136.5 -30.408,-157.6073 -60.1804,-225.3902 -131.4374,-299.3125 -8.1667,-8.4718 -14.3404,-15.64585 -13.8438,-16.09375 1.5202,-1.3715 29.4161,-18.57545 37.875,-23.34375 12.3631,-6.9691 26.1079,-13.65526 36,-17.5625 8.127,-3.21003 9.9725,-3.571 19,-3.625 9.1866,-0.0549 10.5287,0.18058 16.5,3.03125 7.6843,3.66843 19.1961,12.48785 38.9062,29.84375 20.2772,17.8547 50.2998,43.54595 65.5938,56.09375 52.0953,42.7409 96.14,55.356 141,40.375 9.7582,-3.2588 30.068,-13.49905 40.5938,-20.46875 17.0964,-11.3217 49.5087,-52.82152 80.5937,-103.1875 3.6462,-5.90778 7.2702,-11.75075 8.0625,-12.96875 1.0454,-1.60698 -1.951,-0.27784 -10.9062,4.8125 -16.7376,9.51292 -43.3729,22.40375 -60.3438,29.21875 -36.175,14.5269 -56.5507,17.72675 -77.75,12.21875 -27.5385,-7.1552 -63.0516,-27.77672 -106.5,-61.84375 -19.2449,-15.08956 -32.5302,-22.86651 -53.25,-31.1875 -35.4951,-14.2547 -71.8833,-18.46913 -99.5,-11.53125 -18.8776,4.74244 -39.9518,18.44472 -61.5,40 -12.0964,12.10033 -29.657,32.9295 -36.2812,43.0625 -1.7684,2.7037 -3.5122,4.9275 -3.875,4.9375 -0.3637,0.01 -5.0888,-3.8079 -10.5,-8.5 -21.8234,-18.92172 -42.0028,-29.47208 -70.6563,-36.9375 -58.3781,-15.2099 -137.1759,-8.8033 -244.9063,19.90625 -44.8143,11.94294 -85.0296,24.43105 -163.2812,50.78125 -104.09195,35.0517 -140.1457,45.5195 -174,50.4375 -14.8051,2.1507 -50.0399,2.432 -62,0.5 -49.7792,-8.0414 -89.47,-31.56745 -129.375,-76.65625 -13.0625,-14.75938 -22.96285,-27.20373 -40.21875,-50.5 C 576.02085,191.33496 569.1898,180.51122 557.5,155.8125 551.2028,142.50762 539,113.43517 539,111.71875 c 0,-0.52283 8.95795,-2.19281 19.90625,-3.71875 10.9482,-1.52594 28.3857,-4.53026 38.75,-6.65625 10.3642,-2.125991 23.29315,-4.41125 28.71875,-5.09375 12.499,-1.57226 53.47835,-0.65169 65.59375,1.46875 4.6547,0.81466 8.60935,1.32814 8.78125,1.15625 C 700.9219,98.7031 696.1143,93.58066 690.0625,87.5 677.2474,74.62378 663.193,62.6521 650.5,53.78125 641.1012,47.21269 619.449,34.75724 610,30.46875 l -5.5,-2.5 3,-0.78125 c 1.65,-0.43234 9.525,-2.20693 17.5,-3.9375 21.799,-4.73037 39.0241,-10.83474 60.8125,-21.53125 10.6151,-5.21121 19.06285,-9.85692 18.78125,-10.3125 C 704.31225,-9.04933 697.869,-9.68467 690.25,-10.03125 650.1252,-11.85652 613.5143,-20.53159 577.5625,-36.75 l -4.96875,-2.25 12.96875,-3.28125 c 28.5437,-7.21697 53.0322,-18.19757 88.6875,-39.8125 13.326,-8.07851 36.03555,-23.68321 35.40625,-24.3125 -0.2298,-0.22977 -4.40375,0.69788 -9.28125,2.0625 -21.4481,6.000719 -42.94665,8.61961 -76.46875,9.3125 -34.0954,0.70474 -38.7698,0.117549 -60.3125,-7.65625 -37.0118,-13.35593 -52.14465,-16.28908 -73.09375,-14.21875 -4.95,0.48919 -9.11725,0.78235 -9.28125,0.65625 -0.164,-0.1261 4.336,-2.81035 10,-5.96875 13.7969,-7.69348 40.04905,-24.1775 51.96875,-32.625 29.8402,-21.14782 43.8125,-35.60869 43.8125,-45.3125 0,-4.34757 -1.80705,-6.94 -6.65625,-9.4375 -3.6306,-1.86988 -6.8907,-1.31175 -19.125,3.25 -14.0807,5.25025 -19.58785,6.25084 -41.71875,7.65625 -24.818,1.57606 -71.21855,7.39771 -99.59375,12.5 -33.8271,6.08262 -51.1622,14.48656 -69.375,33.625 l -8.46875,8.90625 -7.78125,-5.75 c -18.7067,-13.83338 -28.6834,-23.54904 -32.875,-32 -3.3282,-6.71005 -2.6522,-10.0591 2.9375,-14.84375 9.6019,-8.21883 39.07295,-19.98816 62.15625,-24.8125 L 377.46875,-223.375 373,-226 c -6.5183,-3.81686 -15.07085,-7.43329 -23.28125,-9.875 -6.3972,-1.90247 -9.87965,-2.17717 -31.21875,-2.3125 -17.8274,-0.11306 -26.9038,-0.61218 -35.3125,-1.96875 -6.226,-1.00446 -10.951,-2.15362 -10.5,-2.5625 0.4511,-0.40888 16.3375,-4.39717 35.3125,-8.875 33.3771,-7.8765 35.6003,-8.56413 68.125,-20.78125 29.385,-11.03777 33.553,-12.86324 33.125,-14.5 -0.2694,-1.02992 -0.87385,-2.11583 -1.34375,-2.40625 -0.0587,-0.0363 -0.18654,-0.0371 -0.40625,-0.0312 z m -140.03125,9.75 c 25.26413,-0.1463 44.73525,0.85044 68.46875,3.40625 7.8801,0.84857 17.5449,1.22169 23.0625,0.90625 l 9.5,-0.53125 -14,5.375 c -11.1872,4.31082 -23.16725,7.57765 -59.71875,16.25 -27.1704,6.44657 -45.1977,11.16463 -44.375,11.625 2.8022,1.56819 24.49865,6.72318 34.78125,8.25 7.0905,1.05283 17.66735,1.5625 32.03125,1.5625 17.7928,0 22.7317,0.33504 28.875,1.90625 9.5445,2.44106 14.91145,4.66516 12.90625,5.375 -0.825,0.29205 -7.575,2.41918 -15,4.71875 -14.3339,4.4393 -34.67465,13.65184 -41.78125,18.90625 -5.6083,4.14658 -8.1875,8.53015 -8.1875,13.875 -0.007,7.94656 5.2375,16.06583 17.75,27.46875 5.3586,4.8834 23.2255,18.94016 27,21.25 0.139,0.085 -1.96525,3.83515 -4.65625,8.3125 -2.6909,4.47735 -6.13175,11.63089 -7.65625,15.90625 -1.5245,4.27536 -3.0515,8.06867 -3.375,8.40625 -0.3235,0.33757 -4.19375,-1.09803 -8.59375,-3.1875 -9.0608,-4.30277 -28.0871,-10.91411 -40,-13.875 -16.7734,-4.16892 -26.654,-5.21162 -57,-6.0625 -32.3732,-0.90771 -37.27915,-1.59042 -51.46875,-7.0625 -19.3996,-7.48128 -33.85525,-21.87465 -40.09375,-39.9375 -3.1296,-9.06162 -3.8705,-28.16609 -1.4375,-36.59375 8.254,-28.59118 43.4758,-53.13901 91.125,-63.46875 8.4877,-1.84002 14.2542,-2.20411 40.625,-2.65625 3.87434,-0.0664 7.60959,-0.1041 11.21875,-0.125 z m 308.96875,74.9375 c 1.81018,0.0649 3.10944,0.60945 4.0625,1.5625 7.8088,7.80879 -25.3611,36.51673 -79.5,68.8125 -38.0957,22.72545 -72.0813,36.81972 -119.5,49.5625 -17.2325,4.63086 -19.92175,5.95324 -17.40625,8.46875 1.3347,1.33475 3.32955,1.01226 17.96875,-2.90625 9.0548,-2.42373 20.6911,-5.76278 25.875,-7.4375 5.184,-1.67472 9.909,-2.78827 10.5,-2.4375 6.286,3.73035 19.7386,14.80126 26.125,21.46875 13.3099,13.89563 23.02865,27.69729 34.71875,49.3125 6.5011,12.02062 9.50965,19.16536 20.59375,49 6.6373,17.86527 12.32595,31.87847 20.53125,50.6875 3.042,6.97305 9.3582,22.38305 14.0625,34.25 14.9616,37.74162 27.42285,63.1032 40.71875,82.9375 10.1297,15.11126 42.7801,58.28703 54.9375,72.65625 52.8343,62.4465 103.544,88.96875 170.1875,88.96875 43.6275,0 77.8293,-8.4675 198.1875,-49.0625 114.3909,-38.5823 169.0685,-54.73472 228,-67.40625 95.3681,-20.50615 169.5409,-19.18592 218.1875,3.9375 19.5857,9.30975 28.271,15.80767 60.3125,45.09375 86.4292,78.9965 120.4134,144.38805 151.0625,290.65625 5.9798,28.5376 16.6607,86.01925 19.9375,107.28125 15.5179,100.691 6.6444,192.07283 -25.6875,264.09375 -5.4712,12.1876 -14.4568,28.08975 -20.3125,35.96875 l -3.7812,5.0625 29.6562,6.84375 c 35.1636,8.0941 46.5341,11.6118 62.75,19.4375 13.8527,6.6852 26.375,13.7877 26.375,14.9687 0,1.8791 -21.7318,25.9996 -38.9062,43.1563 -29.1768,29.1461 -51.3506,45.4828 -87.875,64.7187 -10.4742,5.5167 -12.4831,6.2677 -13.5,5.0313 -10.7174,-13.0216 -28.5322,-38.996 -39.125,-57.0625 l -5.7188,-9.7812 -2.2812,1.7812 c -63.0462,49.6172 -137.4455,91.6029 -221.0938,124.7812 -93.1033,36.9298 -185.6105,58.319 -285.5,66 -77.07111,5.9275 -160.8781,3.1218 -240.5,-8.0624 -92.1096,-12.9398 -189.5953,-39.3904 -260.5,-70.6563 -7.425,-3.2741 -13.9626,-6.1503 -14.5625,-6.4063 -1.4859,-0.6322 -4.4789,9.8932 -9.9375,35.125 -9.6375,44.5485 -10.78355,49.3545 -14.65625,61 -5.108,15.3616 -13.68595,34.1914 -21.78125,47.7813 -3.5025,5.8798 -7.54805,12.0658 -8.96875,13.75 l -2.59375,3.0625 -9,-7.7188 c -27.6753,-23.7649 -61.7331,-57.0353 -74.125,-72.375 -9.3522,-11.5764 -19.98615,-28.2814 -26.46875,-41.5937 -3.238,-6.6495 -5.90625,-12.5502 -5.90625,-13.0937 0,-1.4511 18.45445,-17.4832 29.21875,-25.4063 17.803,-13.1038 38.09585,-23.9367 53.28125,-28.4063 l 6,-1.75 -6.5,-2.2187 c -3.575,-1.2236 -14.15,-5.2915 -23.5,-9.0313 -57.858,-23.1382 -102.1305,-47.624 -129,-71.3437 -21.435,-18.9224 -67.6339,-74.0281 -89.4375,-106.65625 -2.9403,-4.4 -5.4797,-8.16155 -5.625,-8.34375 -0.1452,-0.1821 -2.73885,1.7094 -5.78125,4.1875 -15.0875,12.2889 -46.2622,26.56474 -80.75,37 -18.11,5.4798 -16.0331,6.6961 -18.5625,-10.84375 C 86.70575,961.61855 85.8691,940.0065 88.5,919.9375 90.1307,907.4979 93.1395,892.1105 95.6875,883 l 1.59375,-5.75 3.625,0.59375 c 8.0066,1.3466 17.79235,4.0896 42.84375,11.9375 14.4375,4.5228 26.25,8.0253 26.25,7.8125 0,-0.2127 -1.0574,-2.94785 -2.375,-6.09375 -11.6445,-27.8039 -22.4816,-66.29105 -27.5,-97.71875 -4.6649,-29.2139 -4.7505,-45.4129 -0.5625,-96 C 145.3942,627.34065 157.3522,584.3365 184.4375,536.5 197.1297,514.0836 202.166,495.24195 202.125,470.28125 202.0943,451.76995 198.2933,433.0021 191.4375,417.5 190.1041,414.4849 189,411.72675 189,411.34375 c 0,-1.1478 17.0496,0.007 23.5,1.59375 9.2243,2.2696 20.2777,8.09735 40.5,21.34375 33.9242,22.2218 49.6078,28.21525 74,28.28125 10.1813,0.0276 15.75275,-0.46735 22.59375,-2.03125 24.032,-5.4938 48.3806,-17.92635 66.875,-34.09375 17.0653,-14.9182 32.5592,-38.3156 38.6875,-58.4375 2.2085,-7.2515 1.9906,-9.71875 -0.875,-9.71875 -1.3614,0 -2.3477,1.7722 -4.0625,7.25 -13.0908,41.8188 -49.7791,75.32635 -96.8125,88.46875 -8.9931,2.5129 -11.40415,2.768 -26.40625,2.75 -16.4632,-0.0196 -16.5245,-0.008 -27.5,-3.78125 -13.4568,-4.6267 -20.8478,-8.62345 -44,-23.71875 -32.1541,-20.9646 -37.09205,-22.75645 -66.65625,-23.96875 -31.7847,-1.3034 -44.63715,0.34545 -58.90625,7.53125 -7.6889,3.872 -20.3574,13.7519 -24.3125,18.9375 -1.4839,1.9453 -3.05955,3.53125 -3.46875,3.53125 -0.4091,0 -1.54545,-3.9375 -2.53125,-8.75 -6.3677,-31.0866 -21.1545,-96.3571 -23.6875,-104.5625 -11.4202,-36.9949 -39.59854,-67.59518 -81.65625,-88.65625 -20.3182,-10.17466 -37.63609,-16.42125 -72.1875,-26 -10.1342,-2.80953 -21.05085,-6.14531 -24.25,-7.4375 -7.76907,-3.13807 -18.79663,-9.89459 -23.28125,-14.25 -3.12574,-3.03568 -3.45667,-3.77206 -2.34375,-5.1875 2.77353,-3.5274 111.29292,-128.85962 114.5625,-132.3125 l 3.46875,-3.6875 4.625,2 c 11.89143,5.10608 33.644,7.69936 46.3125,5.53125 l 4.65625,-0.78125 0.59375,5.78125 c 3.486,34.61767 14.7813,59.48122 36.8125,80.96875 23.849,23.26054 51.4883,34.5953 84.75,34.75 15.2352,0.0709 24.2328,-1.25988 38,-5.625 19.9366,-6.32119 35.0672,-15.70638 50.5,-31.28125 17.0186,-17.17529 26.65255,-34.7102 32.28125,-58.875 4.7006,-20.18065 3.21575,-45.92865 -3.84375,-67 C 272.9426,-25.89602 243.5164,-54.79143 207.5,-66.125 c -27.9644,-8.79977 -58.50685,-8.09561 -82.78125,1.90625 -3.4178,1.40824 -6.57645,2.66309 -7.03125,2.78125 -0.4548,0.11816 -1.62655,-2.25625 -2.59375,-5.28125 -2.2528,-7.04587 -7.3279,-17.14199 -11.8125,-23.4375 l -3.53125,-4.9375 2.25,-1.8125 c 4.194,-3.39605 23.2874,-13.14453 34.4375,-17.5625 6.0905,-2.41324 17.5875,-6.19665 25.5625,-8.4375 14.455,-4.06164 14.5233,-4.08938 22,-2.8125 4.125,0.70447 17.85,1.43487 30.5,1.625 26.5941,0.39969 38.4764,1.49959 54.5,5 21.6966,4.73971 52,16.63334 52,20.40625 0,0.94967 0.7099,2.2924 1.5625,3 2.2553,1.87174 3.75885,-0.193751 5.84375,-8.03125 4.1527,-15.6107 15.3032,-34.34476 27.875,-46.84375 16.9677,-16.86941 31.3384,-23.90241 60.3125,-29.53125 25.3724,-4.92915 73.09375,-11.04363 102.40625,-13.125 24.6259,-1.74858 30.9231,-2.89404 43.75,-7.90625 6.28775,-2.45699 10.67053,-3.60819 13.6875,-3.5 z m -545.59375,81.75 c 6.131486,0.0497 12.232741,0.77466 18.15625,2.1875 23.0966,5.50887 44.48515,22.06511 55.40625,42.90625 4.1899,7.99573 7.91105,18.81436 7.15625,20.78125 C 110.7969,-55.00503 49.0308,43.46011 47.5,45.125 45.938,46.82399 20.9325,47.61687 13.125,46.21875 -3.35661,43.26732 -17.89719,35.38406 -31,22.28125 -48.5996,4.68165 -55.94895,-13.38941 -55.96875,-39 c -0.01889,-24.49669 8.34251,-43.49975 26.8125,-60.875 15.191827,-14.29138 36.3284292,-22.49223 57.375,-22.96875 0.87694,-0.0199 1.749073,-0.0383 2.625,-0.0312 z m 471,11.28125 c 17.08766,-0.0151 30.34587,3.56936 68.6875,17.25 7.7085,2.75045 12.6592,3.8113 21.5,4.59375 22.0637,1.95273 50.8013,0.87594 77.6875,-2.90625 7.0451,-0.99107 12.9428,-1.68743 13.125,-1.53125 0.6354,0.54463 -27.45735,16.83814 -42.34375,24.5625 -25.5861,13.27632 -47.0624,20.9104 -68.5,24.34375 -5.775,0.9249 -12.2367,1.9984 -14.375,2.375 l -3.875,0.6875 12.375,6.15625 c 35.4104,17.60438 68.08665,26.622 112.21875,30.9375 3.9804,0.38923 6.4557,1.01298 5.9375,1.53125 -1.7007,1.70067 -25.85315,11.65163 -36.78125,15.15625 -13.648,4.37691 -30.3259,8.14134 -49.375,11.125 L 583.5,24.96875 587,26.5 c 1.925,0.83322 6.425,2.73538 10,4.25 19.3598,8.20219 40.8184,20.54326 57.5,33.0625 11.0542,8.29603 29.68965,24.65007 30.40625,26.6875 0.2603,0.7401 -0.8682,0.86251 -3.5,0.40625 C 679.26995,90.5359 669.85,89.96423 660.5,89.625 c -20.6403,-0.74886 -34.9252,0.50209 -58,5.125 -19.4406,3.89481 -37.1952,6.95246 -49.5,8.5 -4.675,0.58796 -10.07745,1.2989 -12.03125,1.59375 L 537.40625,105.375 530.125,89.3125 C 517.6243,61.73626 507.1051,35.46251 496.5,5.28125 485.015,-27.40419 470.7363,-50.82618 449.125,-72.4375 c -4.9319,-4.93184 -12.1626,-11.40207 -16.0625,-14.375 -5.7277,-4.36625 -6.7395,-5.53027 -5.3125,-6.09375 0.9716,-0.38367 9.3558,-3.716631 18.625,-7.375 19.7463,-7.79346 30.44565,-10.27685 47.84375,-11.125 2.68247,-0.13077 5.18391,-0.18535 7.625,-0.1875 z m -339.28125,45.5 c 1.76588,-0.0079 3.72609,-0.0029 5.9375,0 17.2052,0.02283 19.91415,0.26643 28.59375,2.59375 25.5872,6.86086 45.0765,18.64718 60.5,36.59375 20.3932,23.72922 29.4932,50.85725 28.125,83.6875 -1.9429,46.61991 -32.71895,87.89889 -77.46875,103.875 -3.9965,1.42678 -11.71635,3.48517 -17.15625,4.59375 -18.1373,3.69614 -41.71685,2.30271 -59.28125,-3.53125 C 91.2266,148.23827 60.33065,112.11341 53.53125,70.1875 52.69135,65.00843 52,58.03035 52,54.6875 l 0,-6.0625 32.25,-51.4375 32.25,-51.40625 6.53125,-3.1875 c 3.5805,-1.75508 11.0059,-4.42296 16.5,-5.9375 8.13864,-2.243517 10.67009,-2.69471 23.03125,-2.75 z m -558.09375,230.5 c 2.16812,-0.0206 4.50058,0.0282 7.03125,0.125 10.43411,0.39912 14.6777,1.04134 21.5,3.21875 14.53392,4.63865 31.0303,14.59502 58.09375,35.125 9.12425,6.92154 14.20794,10.16094 15.5,9.875 5.52461,-1.2226 53.1687,-3.75091 83.40625,-4.4375 31.07883,-0.70569 35.24183,-1.00993 41.9375,-2.96875 9.72426,-2.84484 19.9211,-7.65124 28.4375,-13.40625 l 6.875,-4.65625 4.625,3.78125 c 11.6631,9.51624 20.87686,13.93481 41.125,19.65625 41.71187,11.78637 57.95513,17.4772 77.75,27.34375 26.54851,13.2328 45.2465,28.04896 59.625,47.1875 15.4598,20.5777 18.9953,30.28715 31.125,85.09375 21.8925,98.9191 23.03855,109.1359 14.03125,126.875 -4.3881,8.6419 -9.1731,14.87795 -23.3125,30.46875 -21.6922,23.9188 -45.92212,42.2501 -85.75,64.875 -45.45103,25.8193 -89.97685,43.66955 -120.46875,48.28125 -9.30787,1.4078 -10.96642,1.50065 -14,0.90625 -0.825,-0.1616 -4.875,-0.8308 -9,-1.5 -11.22592,-1.8214 -23.6922,-6.2854 -41.5,-14.875 -29.50449,-14.2315 -58.17657,-32.94845 -93.21875,-60.78125 -36.97158,-29.3652 -69.98126,-61.48805 -88.03125,-85.71875 -17.33313,-23.2683 -27.99149,-53.9309 -31.3125,-89.9375 -1.35578,-14.6995 -0.74273,-48.11345 1.09375,-59.78125 l 1.1875,-7.59375 -9.65625,-12.8125 c -11.90123,-15.7655 -23.0049,-32.39345 -28.6875,-42.96875 -4.05657,-7.54924 -4.34303,-8.53528 -4.6875,-17.5 -0.87559,-22.78687 10.39461,-54.51643 25.03125,-70.53125 9.06539,-9.91899 16.07318,-13.19948 31.25,-13.34375 z M 1626.4688,191.4375 c 26.0096,-0.11386 56.9385,7.53163 84.7812,21.375 13.8725,6.89741 21.2426,11.7211 38.3125,25.0625 47.3234,36.98664 86.8981,58.5608 116.4375,63.4375 23.3106,3.8483 58.992,-6.48545 109.125,-31.59375 8.3056,-4.15974 15.2509,-7.40541 15.4375,-7.21875 0.5815,0.58147 -26.5812,40.63595 -36.4687,53.78125 -20.4857,27.2344 -31.8223,38.83795 -45.8126,46.84375 -13.7086,7.8451 -28.822,14.7673 -38.7812,17.75 -7.8713,2.3575 -11.0692,2.73835 -25.5,3.03125 -18.193,0.3692 -23.7809,-0.4645 -39.5,-5.8125 -15.4801,-5.2667 -33.4874,-15.15095 -50.3125,-27.59375 -9.0366,-6.6829 -32.1232,-25.78915 -52.1875,-43.21875 -52.9829,-46.02586 -53.4122,-46.39967 -63.3438,-52.375 -7.5836,-4.56313 -18.6159,-7.11484 -26.8124,-6.1875 -15.6057,1.76554 -46.5191,16.59616 -82.4376,39.53125 l -12.0937,7.71875 -7.6563,-6.9375 c -4.2056,-3.8133 -7.6562,-7.40805 -7.6562,-7.96875 0,-1.4238 8.799,-13.41075 18.5312,-25.28125 31.4937,-38.41149 59.4546,-58.23849 88.8126,-63 5.3804,-0.87266 11.122,-1.31747 17.125,-1.34375 z M 72.71875,876.375 c 8.254463,0.0216 17.193722,0.47497 17.8125,1.09375 0.2845,0.2845 -0.3863,4.28795 -1.5,8.90625 -5.6462,23.4127 -8.5451,48.66553 -7.5625,65.90625 0.7568,13.281 3.21415,37.06905 4.59375,44.34375 0.5203,2.7449 0.8088,5.1287 0.625,5.3125 -1.3648,1.3648 -12.2273,-15.21475 -16.8125,-25.65625 -4.8268,-10.9918 -7.3662,-20.89628 -9.8125,-38.375 C 57.6546,920.70245 54,886.6065 54,881.3125 l 0,-3.875 7.625,-0.6875 c 1.931325,-0.18097 4.624897,-0.30466 7.625,-0.34375 1.125039,-0.0147 2.289541,-0.0343 3.46875,-0.0312 z M 1744.75,1047.75 c 0.037,-0.014 0.08,-0.014 0.094,0 0.5691,0.5693 -2.53,14.1208 -5.9376,26.0312 -10.9773,38.3691 -29.667,68.6278 -57.4374,92.9063 -4.5263,3.9572 -11.5476,9.4544 -15.5938,12.2187 l -7.375,5.0313 -5,-1.9063 c -15.8056,-5.9987 -33.2731,-16.409 -40.2812,-24 l -2.3126,-2.5 10.5,-5.625 c 21.3128,-11.3811 43.2888,-25.6361 59.8126,-38.8124 11.2601,-8.9792 45.2089,-42.498 56.25,-55.5313 3.5865,-4.2337 6.7189,-7.5944 7.2812,-7.8125 z m -1387.4375,173.375 7.1875,14 c 8.5051,16.5767 17.3597,29.9601 28.875,43.6562 10.0957,12.0081 38.8063,40.3625 58.125,57.4063 7.7,6.7933 14.66335,12.9689 15.46875,13.7187 1.26,1.1732 1.0508,1.3734 -1.5,1.3126 -5.3281,-0.1278 -21.65325,-3.984 -34.09375,-8.0313 -31.6295,-10.2902 -64.7064,-32.1301 -96.125,-63.5 -7.8375,-7.8254 -14.25,-14.5953 -14.25,-15.0625 0,-1.3991 17.85515,-23.4274 27.40625,-33.8125 l 8.90625,-9.6875 z"
+ id="path3986"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="Mouth"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;display:inline"
+ d="m -43.810453,561.20956 c -1.60851,-0.21779 -6.872724,-0.86948 -11.698254,-1.44835 -22.081701,-2.64887 -60.093033,-13.21668 -83.837483,-23.30838 -5.3617,-2.27882 -9.82172,-4.20406 -9.91115,-4.27834 -0.0894,-0.0741 8.46491,-0.15218 19.00966,-0.17304 20.61514,-0.0409 30.03832,-1.23991 46.468193,-5.91278 17.471596,-4.96923 26.157189,-9.66968 44.35588,-24.00492 26.947239,-21.22638 42.8628695,-29.37763 53.764784,-27.53574 4.597219,0.77667 9.917,5.0983 12.494028,10.1496 3.746658,7.34407 5.21011,26.9754 2.853399,38.27649 -3.742856,17.94805 -17.013453,31.20861 -36.4545862,36.42681 -5.6456258,1.51541 -30.3134808,2.71974 -37.0444708,1.80865 z"
+ id="path4209"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#806330;fill-opacity:1;display:inline"
+ d="m 27.28669,508.27892 c 0,-2.475 0.195,-3.4875 0.4333,-2.25 0.2384,1.2375 0.2384,3.2625 0,4.5 -0.2383,1.2375 -0.4333,0.225 -0.4333,-2.25 z"
+ id="path3912"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4187"
+ d="m 27.28669,508.27892 c 0,-2.475 0.195,-3.4875 0.4333,-2.25 0.2384,1.2375 0.2384,3.2625 0,4.5 -0.2383,1.2375 -0.4333,0.225 -0.4333,-2.25 z"
+ style="fill:#806330;fill-opacity:1;display:inline" />
+ <path
+ style="fill:#000000;fill-opacity:1;display:inline"
+ d="m 12.546252,472.50113 c -11.0577898,0.0548 -26.82415,8.79865 -51.875,28.53125 -18.66811,14.705 -27.57774,19.5276 -45.5,24.625 -16.853672,4.7934 -26.509362,6.0205 -47.656252,6.0625 -10.81674,0.0214 -19.5917,0.0802 -19.5,0.15625 0.0917,0.0762 4.65625,2.06865 10.15625,4.40625 24.35692,10.352 63.348722,21.18905 86.000002,23.90625 4.95,0.5938 10.35,1.24535 12,1.46875 6.90461,0.9346 32.20875,-0.28925 38.0000002,-1.84375 19.9425998,-5.3528 33.5668498,-18.964 37.4062498,-37.375 2.4175,-11.5926 0.9058,-31.7165 -2.9375,-39.25 -2.6435,-5.1816 -8.0967,-9.60955 -12.8125,-10.40625 -1.04842,-0.17713 -2.13734,-0.28692 -3.28125,-0.28125 z m -0.96875,6.21875 c 3.48338,-0.13592 6.4722,0.53605 8.15625,2.03125 3.4086,3.0263 5.68705,9.0803 6.96875,18.5 1.8133,13.3274 -0.4231,25.9098 -6.3125,35.75 -1.7282,2.8875 -3.35995,5.25 -3.65625,5.25 -0.2963,-0.003 -4.80767,-11.141 -9.9999998,-24.75 -5.19234,-13.609 -10.04422,-26.22105 -10.78125,-28.03125 l -1.34375,-3.3125 5.78125003,-2.65625 C 4.0907922,479.79583 8.0941222,478.8558 11.577502,478.71988 z m -22.84375,9.09375 c 1.1093,-0.4081 4.0207302,6.1654 12.3125002,27.875 5.96931,15.6289 10.5477998,28.88585 10.1874998,29.46875 -1.0166,1.6448 -8.5770098,5.7613 -13.5624998,7.375 -8.5260102,2.7597 -9.8320202,2.86315 -10.8437502,0.96875 -0.51669,-0.9674 -5.26959,-12.55 -10.5625,-25.75 l -9.625,-24 2.78125,-2.25 c 4.89763,-3.9806 17.81301,-13.136 19.3125,-13.6875 z m -26.375,19.53125 9.28125,23.1875 c 5.10035,12.7605 9.47601,23.78125 9.75,24.46875 0.38441,0.9646 -2.42252,1.216 -12.34375,1.125 -20.18577,-0.1858 -18.04075,1.4443 -23.28125,-17.8125 -4.21003,-15.4704 -4.38506,-16.4839 -2.6875,-17.5 2.65709,-1.5904 13.03989,-8.74495 16.375,-11.28125 l 2.90625,-2.1875 z m -27.09375,17.375 c 1.01466,-0.13592 1.59991,1.21049 2.75,5.71875 0.88466,3.4677 2.7247,10.25 4.0625,15.0625 l 2.40625,8.75 -2.15625,-0.0937 c -4.0606,-0.1511 -24.7083,-4.5875 -25.59375,-5.5 -0.48653,-0.5013 -1.17663,-4.50625 -1.53125,-8.90625 l -0.65625,-8 9.3125,-3.0625 c 5.12481,-1.6896 10.04947,-3.4093 10.9375,-3.8125 0.16493,-0.0749 0.3238,-0.13683 0.46875,-0.15625 z m -27.75,8.8125 c 1.31953,-0.0902 1.72331,1.5323 2.6875,8.96875 0.76476,5.8984 1.16129,5.86525 -16.031252,0.59375 -14.40166,-4.4157 -17.05376,-5.84375 -10.8125,-5.84375 3.82017,0 19.750922,-2.43565 23.531252,-3.59375 0.23135,-0.0709 0.4365,-0.11212 0.625,-0.125 z"
+ id="path4189"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer6"
+ inkscape:label="Eyes"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#000000;fill-opacity:1;display:inline"
+ d="m 204.27029,73.719219 c -4.1911,-2.08852 -5.6078,-3.50522 -7.6963,-7.69634 -1.4078,-2.82516 -2.5597,-6.75994 -2.5597,-8.74396 0,-1.98402 1.1519,-5.9188 2.5597,-8.74396 2.0885,-4.19112 3.5052,-5.60782 7.6963,-7.69634 2.8252,-1.40784 6.76,-2.5597 8.744,-2.5597 1.984,0 5.9188,1.15186 8.744,2.5597 4.1911,2.08852 5.6078,3.50522 7.6963,7.69634 1.4078,2.82516 2.5597,6.75994 2.5597,8.74396 0,1.98402 -1.1519,5.9188 -2.5597,8.74396 -2.0885,4.19112 -3.5052,5.60782 -7.6963,7.69634 -2.8252,1.40784 -6.76,2.5597 -8.744,2.5597 -1.984,0 -5.9188,-1.15186 -8.744,-2.5597 z"
+ id="path3952"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:1;display:inline"
+ d="m 43.65559,-17.618971 c -4.3651,-2.87782 -6.6281,-7.00989 -6.6281,-12.10211 0,-8.047 5.9398,-13.98682 13.9868,-13.98682 8.047,0 13.9868,5.93982 13.9868,13.98682 0,8.047 -5.9398,13.98682 -13.9868,13.98682 -2.7304,0 -5.6242,-0.74116 -7.3587,-1.88471 z"
+ id="path3946"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Nostril"
+ style="display:inline"
+ transform="translate(457.79567,289.3152)">
+ <path
+ style="fill:#5c4722;fill-opacity:1"
+ d="m -71.70766,397.7142 c 10.03558,-20.0482 14.93788,-36.7307 15.11734,-51.4444 0.10411,-8.5361 -0.17151,-10.0852 -2.71638,-15.2678 -3.58461,-7.2999 -10.79024,-14.7345 -17.75715,-18.3213 -4.38024,-2.2551 -6.74364,-2.7901 -12.4106,-2.8091 -17.32118,-0.058 -29.21451,8.6134 -39.6504,28.9092 -3.10772,6.044 -6.89461,14.7015 -8.4153,19.239 -1.5207,4.5375 -3.12992,8.25 -3.57606,8.25 -1.83269,0 -13.15886,-15.0848 -17.26918,-23 -5.69207,-10.9612 -7.8574,-19.286 -7.80315,-30 0.055,-10.8669 2.50798,-18.7713 9.43032,-30.3884 12.12478,-20.34781 27.16702,-32.56921 46.48329,-37.76637 11.01209,-2.96287 29.6493,-2.94584 40.7465,0.0372 26.17515,7.03621 48.17143,25.99565 58.40195,50.33875 2.2089401,5.2561 2.6318201,7.7447 2.5962701,15.2788 -0.0368,7.7957 -0.47645,10.0613 -3.2856001,16.9311 -8.34509,20.4078 -30.28477,48.8216 -55.605,72.0133 l -9.76532,8.9444 5.47847,-10.9444 z"
+ id="path3992"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:1"
+ d="m -89.9375,242.90625 c -7.422964,-0.007 -14.8377,0.73731 -20.34375,2.21875 -19.31627,5.19716 -34.37522,17.40219 -46.5,37.75 -6.92234,11.6171 -9.35125,19.53935 -9.40625,30.40625 -0.0542,10.714 2.08918,19.0388 7.78125,30 4.11032,7.9152 15.44856,23 17.28125,23 0.44614,0 2.0418,-3.7125 3.5625,-8.25 1.52069,-4.5375 5.32978,-13.206 8.4375,-19.25 10.43589,-20.2958 22.30382,-28.96425 39.625,-28.90625 5.66696,0.019 8.05726,0.5574 12.4375,2.8125 6.96691,3.5868 14.16539,11.0126 17.75,18.3125 2.54487,5.1826 2.82286,6.74515 2.71875,15.28125 -0.17946,14.7137 -5.08942,31.3893 -15.125,51.4375 l -5.46875,10.9375 9.75,-8.9375 c 25.32023,-23.1917 47.27991,-51.5922 55.625,-72 2.80915,-6.8698 3.24445,-9.1418 3.28125,-16.9375 0.03555,-7.5341 -0.38481,-10.02515 -2.59375,-15.28125 -10.23052,-24.3431 -32.2311,-43.30754 -58.40625,-50.34375 -5.5486,-1.49152 -12.983286,-2.24322 -20.40625,-2.25 z m -3.90625,6.90625 c 1.322509,-0.011 2.74903,-0.002 4.34375,0 13.79886,0.0188 15.64061,0.21911 23,2.78125 13.00149,4.52643 21.95034,10.16892 32,20.1875 10.04235,10.0113 15.49705,18.4463 18.6875,28.875 1.92151,6.2808 1.98761,7.50565 0.84375,13.90625 -2.17887,12.1922 -12.5369,30.44365 -27.625,48.71875 -7.36755,8.9238 -14.29745,16.62115 -14.34375,15.90625 -0.02113,-0.3264 0.84102,-3.188 1.9375,-6.375 5.12296,-14.8902 6.37945,-35.02405 2.71875,-43.71875 -2.40902,-5.7218 -9.28677,-14.25295 -15.15625,-18.78125 -12.53873,-9.6736 -27.74119,-10.5631 -44.09375,-2.5625 -9.82479,4.8068 -20.3244,18.7482 -28.53125,37.875 l -3.375,7.875 -2.84375,-3.375 c -3.8003,-4.4894 -11.22149,-20.01905 -12.75,-26.71875 -1.92942,-8.4569 -0.782,-20.36295 2.78125,-28.84375 8.85369,-21.0724 25.78368,-37.55311 44.75,-43.5625 5.20942,-1.65058 8.39869,-2.11048 17.65625,-2.1875 z"
+ id="path3960"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/views/resources/template_screenshots/LLVMIr.dark.png b/views/resources/template_screenshots/LLVMIr.dark.png
deleted file mode 100644
index 45cc21762..000000000
--- a/views/resources/template_screenshots/LLVMIr.dark.png
+++ /dev/null
Binary files differ
diff --git a/views/resources/template_screenshots/LLVMIr.darkplus.png b/views/resources/template_screenshots/LLVMIr.darkplus.png
deleted file mode 100644
index a4ac4349c..000000000
--- a/views/resources/template_screenshots/LLVMIr.darkplus.png
+++ /dev/null
Binary files differ
diff --git a/views/resources/template_screenshots/LLVMIr.default.png b/views/resources/template_screenshots/LLVMIr.default.png
deleted file mode 100644
index 2bb01395d..000000000
--- a/views/resources/template_screenshots/LLVMIr.default.png
+++ /dev/null
Binary files differ
diff --git a/views/templates.pug b/views/templates.pug
deleted file mode 100644
index 251fd9218..000000000
--- a/views/templates.pug
+++ /dev/null
@@ -1,624 +0,0 @@
-.gl_keep.template
-
- #codeEditor
- .top-bar.btn-toolbar.bg-light(role="toolbar" aria-label="Editor toolbar" name="editor-btn-toolbar")
- include font-size.pug
- .btn-group.btn-group-sm(role="group" aria-label="Editor settings")
- button.btn.btn-sm.btn-light.load-save(title="Load or save text" aria-label="Load or save text")
- span.fa.fa-save
- span.hideable Save/Load
- button.dropdown-toggle.btn.btn-sm.btn-light.add-pane(type="button" title="Add a new pane" aria-label="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
- span.fa.fa-plus
- span.hideable Add new...
- .dropdown-menu
- button.dropdown-item.btn.btn-sm.btn-light.add-compiler(title="Add a new compiler for this source" aria-label="New compiler")
- span.dropdown-icon.fa.fa-cogs
- | Compiler
- button.dropdown-item.btn.btn-sm.btn-light.add-executor(title="Add a new executor for this source" aria-label="New executor")
- span.dropdown-icon.fas.fa-microchip
- | Execution only
- button.dropdown-item.btn.btn-sm.btn-light.conformance(title="Add a new conformance view" aria-label="New conformance view")
- span.dropdown-icon.fa.fa-list
- | Conformance view
- button.dropdown-item.btn.btn-sm.btn-light.add-editor(title="Add a new source editor view" aria-label="New source editor")
- span.dropdown-icon.fa.fa-code
- | Source editor
- button#vim-flag.btn.btn-sm.btn-light(title="Toggle Vim Keybindings")
- span.fab.fa-vimeo-v
- span.hideable Vim
- if thirdPartyIntegrationEnabled
- .btn-group.btn-group-sm(role="group" aria-label="External Sites")
- a.btn.btn-sm.btn-light.open-in-cppinsights(href="https://cppinsights.io/" target="_blank" title="Open in Cppinsights" aria-label="Open in Cppinsights")
- svg(height="16" width="16")
- include resources/cppinsights.svg
- span.hideable CppInsights
- a.btn.btn-sm.btn-light.open-in-quickbench(href="http://quick-bench.com/" target="_blank" title="Open in Quick-bench" aria-label="Open in Quick-bench")
- svg(height="16" width="16")
- include resources/quickbench.svg
- span.hideable Quick-bench
- .btn-group.btn-group-sm.mx-auto
- button.btn.btn-sm.btn-outline-info.ctrlSNothing(disabled=true style="display: none")
- span.fas.fa-smile
- .btn-group.btn-group-sm.ml-auto(role="group" aria-label="Editor language")
- select.change-language(title="Change this editor's (and associated panels) language" placeholder="Language" disabled=embedded && readOnly)
- div.currentCursorPosition
- div#v-status
- .monaco-placeholder
-
- #compiler
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- .btn-group.btn-group-sm(role="group" aria-label="Compiler picker")
- .input-group
- .input-group-prepend
- .input-group
- select.compiler-picker
- .input-group-append
- button.btn.btn-sm.btn-light.input-group-text.prepend-options(data-trigger="click" style="cursor: pointer;" role="button" title="All compilation options")
- span.status-icon
- input.options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .input-group-append.populararguments(title="Popular arguments")
- button.btn.btn-sm.btn-light.btn-outline-secondary.dropdown-toggle.dropdown-toggle-split.popular-arguments-btn(type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
- span.sr-only Popular arguments
- div.dropdown-menu.dropdown-menu-right
- button.dropdown-item.btn.btn-light.btn-sm
- .argmenuitem
- span.argtitle Detailed Compiler Flags
- span.argdescription Open a new window to edit verbose compiler flags
- include font-size
- .btn-group.btn-group-sm.filters(role="group")
- button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Compiler output options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Change how the compiler's output is generated")
- span.fas.fa-cog
- span.hideable Output...
- .dropdown-menu
- include options-output.pug
- .btn-group.btn-group-sm.filters(role="group")
- button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Compiler output filters" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Change how the compiler output is filtered")
- span.fas.fa-filter
- span.hideable Filter...
- .dropdown-menu
- include options-filters.pug
- .btn-group.btn-group-sm(role="group" aria-label="Compiler additions")
- button.btn.btn-sm.btn-light.show-libs(title="Include libs" aria-label="Toggle libraries dropdown")
- span.fas.fa-book
- span.dp-text.hideable Libraries
- .btn-group.btn-group-sm(role="group")
- button.btn.btn-sm.btn-light.dropdown-toggle.add-pane(type="button" title="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Add new element for this compiler")
- span.fas.fa-plus
- span.hideable Add new...
- .dropdown-menu.dropdown-menu-right
- button.dropdown-item.btn.btn-sm.btn-light.add-compiler(title="Clone this compiler window (click or drag)")
- span.dropdown-icon.far.fa-clone
- | Clone compiler
- button.dropdown-item.btn.btn-sm.btn-light.create-executor(title="Create executor from this compiler")
- span.dropdown-icon.fas.fa-microchip
- | Executor from this
- button.dropdown-item.btn.btn-sm.btn-light.view-optimization(title="Show optimization output")
- span.dropdown-icon.fas.fa-weight
- | Optimization output
- button.dropdown-item.btn.btn-sm.btn-light.view-pp(title="Show Preprocessor Output")
- span.dropdown-icon.fas.fa-hashtag
- | Preprocessor output
- button.dropdown-item.btn.btn-sm.btn-light.view-ast(title="Show AST output")
- span.dropdown-icon.fas.fa-leaf
- | AST output
- button.dropdown-item.btn.btn-sm.btn-light.view-ir(title="Show LLVM Intermediate Representation")
- span.dropdown-icon.fas.fa-align-center
- | LLVM IR output
- button.dropdown-item.btn.btn-sm.btn-light.view-llvm-opt-pipeline(title="Show LLVM Optimization Pipeline Output")
- span.dropdown-icon.fas.fa-compass
- | LLVM Opt Pipeline output
- button.dropdown-item.btn.btn-sm.btn-light.view-device(title="Show Device output")
- span.dropdown-icon.fas.fa-tv
- | Device output
- button.dropdown-item.btn.btn-sm.btn-light.view-rustmir(title="Show Rust Mid-level Intermediate Representation")
- span.dropdown-icon.fas.fa-water
- | Rust MIR output
- button.dropdown-item.btn.btn-sm.btn-light.view-rustmacroexp(title="Show Rust Macro Expansion")
- span.dropdown-icon.fas.fa-arrows-alt
- | Rust Macro Expansion output
- button.dropdown-item.btn.btn-sm.btn-light.view-rusthir(title="Show Rust HIR")
- span.dropdown-icon.fas.fa-arrows-alt
- | Rust HIR output
- button.dropdown-item.btn.btn-sm.btn-light.view-haskellCore(title="Show GHC Core Intermediate Representation")
- span.dropdown-icon.fas.fa-water
- | GHC Core output
- button.dropdown-item.btn.btn-sm.btn-light.view-haskellStg(title="Show GHC STG Intermediate Representation")
- span.dropdown-icon.fas.fa-water
- | GHC STG output
- button.dropdown-item.btn.btn-sm.btn-light.view-haskellCmm(title="Show GHC Cmm Intermediate Representation")
- span.dropdown-icon.fas.fa-water
- | GHC Cmm output
- button.dropdown-item.btn.btn-sm.btn-light.view-gccdump(title="Show Tree/RTL dump (GCC only)")
- span.dropdown-icon.fas.fa-tree
- | GCC Tree/RTL output
- button.dropdown-item.btn.btn-sm.btn-light.view-gnatdebugtree(title="Show GNAT Debug Tree")
- span.dropdown-icon.fas.fa-tree
- | GNAT Debug Tree
- button.dropdown-item.btn.btn-sm.btn-light.view-gnatdebug(title="Show GNAT Debug Expanded Code")
- span.dropdown-icon.fas.fa-tree
- | GNAT Debug Expanded Code
- button.dropdown-item.btn.btn-sm.btn-light.view-cfg(title="Show Graph Output")
- span.dropdown-icon.fas.fa-exchange-alt
- | Graph output
- .btn-group.btn-group-sm(role="group")
- button.btn.btn-sm.btn-light.dropdown-toggle.add-tool(type="button" title="Add tool" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Add tooling to this editor and compiler")
- span.fas.fa-screwdriver
- span.hideable Add tool...
- .dropdown-menu.dropdown-menu-right.toolsmenu
- .monaco-placeholder
- .bottom-bar.bg-light
- if !embedded
- .btn-group.btn-group-sm
- .input-group
- .input-group-prepend
- button.btn.btn-sm.btn-light.clear-cache(title="Clear cache & recompile")
- span.fas.fa-redo
- button.btn.btn-sm.btn-light.output-btn
- span.fas.fa-receipt.status-text
- | &nbsp;Output
- span.output-count
- | &nbsp;(
- span.text-count
- | 0
- | /
- span.err-count
- | 0
- | )
- span.short-compiler-name.mr-1
- button.btn.btn-sm.btn-light.full-compiler-name(data-trigger="click" style="cursor: pointer;" role="button")
- span.fas.fa-info
- span.compile-info.mr-1(title="Compilation info")
- button.btn.btn-sm.btn-light.full-timing-info(data-trigger="click" style="cursor: pointer;" role="button")
- span.fas.fa-chart-bar
-
- #executor
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .btn-group.btn-group-sm.options(role="group" aria-label="Output options")
- .button-checkbox
- button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
- span Wrap lines
- input.d-none(type="checkbox" checked=false)
- button.btn.btn-sm.btn-light.show-libs(title="Include libs" aria-label="Toggle libraries dropdown")
- span.fas.fa-book
- span.dp-text.hideable Libraries
- button.btn.btn-sm.btn-light.toggle-compilation.active(title="Compiler options" aria-label="Toggle compiler options input")
- span.fas.fa-cogs
- span.hideable Compilation
- button.btn.btn-sm.btn-light.toggle-args(title="Execution arguments" aria-label="Toggle execution arguments input")
- span.fas.fa-terminal
- span.hideable Arguments
- button.btn.btn-sm.btn-light.toggle-stdin(title="Execution stdin" aria-label="Toggle execution stdin input")
- span.fas.fa-sign-in-alt
- span.hideable Stdin
- button.btn.btn-sm.btn-light.toggle-compilerout.active(title="Compiler output" aria-label="Toggle showing compiler output")
- span.fas.fa-sign-out-alt
- span.hideable Compiler output
- button.btn.btn-sm.btn-light.clear-cache(title="Clear cache & recompile")
- span.fas.fa-redo
- .top-bar.btn-toolbar.bg-light.panel-compilation(role="toolbar")
- .btn-group.btn-group-sm(role="group" aria-label="Compiler picker")
- .input-group
- .input-group-prepend
- .input-group
- select.compiler-picker
- .input-group-append
- button.btn.btn-sm.btn-light.input-group-text.prepend-options(data-trigger="click" style="cursor: pointer;" role="button" title="All compilation options")
- span.btn.btn-sm.btn-light.status-icon
- input.compilation-options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- // TODO: Maybe enable this in the future?
- //.input-group-append.populararguments(title="Popular arguments")
- button.btn.btn-sm.btn-light.btn-outline-secondary.dropdown-toggle.dropdown-toggle-split.popular-arguments-btn(type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
- span.sr-only Popular arguments
- div.dropdown-menu.dropdown-menu-right
- button.dropdown-item.btn.btn-light.btn-sm
- .argmenuitem
- span.argtitle Detailed Compiler Flags
- span.argdescription Open a new window to edit verbose compiler flags
- .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
- input.execution-arguments.form-control(type="text" placeholder="Execution arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .top-bar.btn-toolbar.bg-light.panel-stdin.d-none(role="toolbar")
- textarea.execution-stdin.form-control(placeholder="Execution stdin..." cols="1024" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-multiline="false" style="resize: vertical")
- pre.content
- .execution-status
- .compiler-output
- .execution-output
- .bottom-bar.bg-light
- span.short-compiler-name
- button.btn.btn-sm.btn-light.fas.fa-info.full-compiler-name(data-trigger="click" style="cursor: pointer;" role="button")
- span.compile-time(title="Compilation time (Result size)")
- button.btn.btn-sm.btn-light.fas.fa-chart-bar.full-timing-info(data-trigger="click" style="cursor: pointer;" role="button")
-
- #compiler-output
- .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
- include font-size
- .btn-group.btn-group-sm.options(role="group" aria-label="Output options")
- .button-checkbox
- button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
- span Wrap lines
- input.d-none(type="checkbox" checked=false)
- .btn-group.btn-group-sm(role="group")
- button.btn.btn-sm.btn-light.select-all(type="button" title="Select all lines")
- span Select all
- pre.content.output-content
-
- #tool-input
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .monaco-placeholder
-
- #tool-output
- .top-bar.bad-lang.bg-warning(role="toolbar" style="display: none")
- p The current language or compiler does not support this tool
- .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
- include font-size
- .btn-group.btn-group-sm.options(role="group" aria-label="Tool options")
- .input-group.input-group-sm.mb-auto
- .button-checkbox
- button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
- span Wrap lines
- input.d-none(type="checkbox" checked=false)
- button.btn.btn-sm.btn-light.toggle-args
- span.fas.fa-terminal
- span.hideable Arguments
- button.btn.btn-sm.btn-light.toggle-stdin
- span.fas.fa-sign-in-alt
- span.hideable Stdin
- .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
- input.options.form-control(type="text" placeholder="Tool arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .top-bar.btn-toolbar.bg-light.panel-stdin.d-none(role="toolbar")
- textarea.tool-stdin.form-control(placeholder="Tool stdin..." cols="1024" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-multiline="false" style="resize: vertical")
- pre.content
- .monaco-placeholder
-
- #diff
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .btn-group.btn-group-sm
- .input-group.input-group-sm.mb-auto
- .input-group-prepend
- label.input-group-text
- | Left:&nbsp;
- select.diff-picker.lhs(placeholder="Select compiler...")
- select.difftype-picker.lhsdifftype(placeholder="...")
- .btn-group.btn-group-sm.ml-4
- .input-group.input-group-sm.mb-auto
- .input-group-prepend
- label.input-group-text
- | Right:&nbsp;
- select.diff-picker.rhs(placeholder="Select compiler...")
- select.difftype-picker.rhsdifftype(placeholder="...")
- .monaco-placeholder
-
- #opt
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .monaco-placeholder
-
- #flags
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .monaco-placeholder
-
- #pp
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .btn-group.btn-group-sm.options(role="group" aria-label="Panel options")
- .input-group.input-group-sm.mb-auto
- .button-checkbox
- button.btn.btn-sm.btn-light.filter-headers(type="button" title="Filter header code from #includes" data-bind="filter-headers" aria-pressed="false" aria-label="Filter headers")
- span Filter headers
- input.d-none(type="checkbox" checked=true)
- .input-group.input-group-sm.mb-auto
- .button-checkbox
- button.btn.btn-sm.btn-light.clang-format(type="button" title="Apply clang-format to output" data-bind="clang-format" aria-pressed="false" aria-label="Apply clang-format")
- span Apply clang-format
- input.d-none(type="checkbox" checked=false)
- .monaco-placeholder
-
- #ast
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .monaco-placeholder
-
- #ir
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .monaco-placeholder
-
- #llvm-opt-pipeline
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .btn-group.btn-group-sm.options(role="group")
- button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="LLVM Opt Pass Options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Set output options")
- span.fas.fa-anchor
- span.hideable Options
- .dropdown-menu
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.filter-inconsequential-passes(type="button" title="Filter passes which do not make changes" data-bind="filter-inconsequential-passes" aria-pressed="false" aria-label="Filter Inconsequential Passes")
- span Filter Inconsequential Passes
- input.d-none(type="checkbox" checked=false)
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Dump the entire module for each pass" data-bind="dump-full-module" aria-pressed="false" aria-label="Filter Inconsequential Passes")
- span Dump Full Module
- input.d-none(type="checkbox" checked=false)
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Demangle Symbols" data-bind="demangle-symbols" aria-pressed="false" aria-label="Demangle Symbols")
- span Demangle Symbols
- input.d-none(type="checkbox" checked=true)
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Keep value names instead of llvm value numbers" data-bind="-fno-discard-value-names" aria-pressed="false" aria-label="-fno-discard-value-names")
- span -fno-discard-value-names
- input.d-none(type="checkbox" checked=true)
- //.button-checkbox
- // button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Filter Library Functions" data-bind="library-functions" aria-pressed="false" aria-label="Filter Library Functions")
- // span Filter Library Functions
- // input.d-none(type="checkbox" checked=true)
- .btn-group.btn-group-sm
- .input-group.input-group-sm.mb-auto
- .input-group-prepend
- label.input-group-text
- | Function:&nbsp;
- select.llvm-opt-function-picker.function-selector(placeholder="Select function")
- div.llvm-opt-pipeline-body
- .passes-column(style="width: 250px;") Passes:
- .passes-list
- .passes-column-resizer
- .passes-column-resizer-handle
- .monaco-placeholder
-
- #device
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size.pug
- .btn-group.btn-group-sm(role="group")
- select.change-device(placeholder="Select a device...")
- .monaco-placeholder
-
- #gnatdebugtree
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #gnatdebug
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #rustmir
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #haskellCore
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #haskellStg
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #haskellCmm
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #rustmacroexp
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #rusthir
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .monaco-placeholder
-
- #gccdump
- .top-bar.btn-toolbar.bg-light(role="toolbar")
- include font-size
- .btn-group.btn-group-sm(role="group")
- select.gccdump-pass-picker(placeholder="Select a pass...")
- .btn-group.btn-group-sm.dump-filters
- button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Dump passes" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Available dump passes")
- span.fas.fa-compass
- span.hideable Passes
- .dropdown-menu
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.active(type="button" title="Show Tree passes" data-bind="treeDump" aria-pressed="true")
- span Tree pass
- input.d-none(type="checkbox" checked=true)
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.active(type="button" title="Show RTL passes" data-bind="rtlDump" aria-pressed="true")
- span RTL pass
- input.d-none(type="checkbox" checked=true)
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light.active(type="button" title="Show IPA passes" data-bind="ipaDump" aria-pressed="false")
- span IPA pass
- input.d-none(type="checkbox")
- .btn-group.btn-group-sm.dump-filters
- button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Dump pass options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Control the details of the dump")
- span.fas.fa-microchip
- span.hideable Options
- .dropdown-menu
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Print raw representation of the tree" data-bind="rawOption" aria-pressed="false")
- span Raw Dump
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Print condensed intermediate representations" data-bind="slimOption" aria-pressed="false")
- span Slim Dump
- input.d-none(type="checkbox")
- div.dropdown-divider
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Turn on all options (except raw, slim, and lineno)" data-bind="allOption" aria-pressed="false")
- span All Options
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable printing the address of each tree node" data-bind="addressOption" aria-pressed="true")
- span Addresses
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable showing basic block boundaries (disabled in raw dumps)" data-bind="blocksOption" aria-pressed="false")
- span Basic Blocks
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable showing line numbers" data-bind="linenoOption" aria-pressed="false")
- span Line Numbers
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable more detailed dumps (not honored by every dump option)" data-bind="detailsOption" aria-pressed="false")
- span Pass Details
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable dumping statistics (not honored by every dump option)" data-bind="statsOption" aria-pressed="false")
- span Pass Stats
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable showing variable UIDs" data-bind="uidOption" aria-pressed="false")
- span Unique IDs
- input.d-none(type="checkbox")
- .button-checkbox
- button.dropdown-item.btn.btn-sm.btn-light(type="button" title="Enable showing virtual operands" data-bind="vopsOption" aria-pressed="false")
- span Virtual Operands
- input.d-none(type="checkbox")
- .monaco-placeholder
-
- #cfg
- .top-bar.btn-toolbar.bg-light.cfg-toolbar(role="toolbar")
- .btn-group.btn-group-sm(role="group")
- select.function-picker
- .btn-group.btn-group-sm.options(role="group")
- .button-checkbox
- button.btn.btn-sm.btn-light.toggle-navigation(type="button" title="Toggle navigation buttons" aria-pressed="false" data-bind="navigation")
- span Nav
- input.d-none(type="checkbox")
- .button-checkbox
- button.btn.btn-sm.btn-light.toggle-physics(type="button" title="Toggle physics to nodes" aria-pressed="false" data-bind="physics")
- span Physics
- input.d-none(type="checkbox")
- .graph-placeholder
-
- #conformance
- .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
- .btn-group.btn-group-sm(role="group")
- button.btn.btn-sm.btn-light.add-compiler(title="Add compiler")
- span.fas.fa-plus
- span.hideable Add compiler
- button.btn.btn-sm.btn-light.show-libs.dropdown-toggle(title="Include libs" aria-label="Toggle libraries dropdown" aria-pressed="false" aria-haspopup="true")
- span.fas.fa-book
- span.dp-text.hideable Libraries
- .conformance-wrapper
- table.compiler-list
-
- #compiler-selector
- .form-row
- .input-group
- .input-group-prepend
- .input-group
- select.compiler-picker
- .input-group-append
- button.btn.btn-sm.btn-light.input-group-text.prepend-options(tabindex="0" data-trigger="focus" style="cursor: pointer;" role="button" title="All compilation options")
- span.btn.btn-sm.btn-light.status-icon
- input.conformance-options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .input-group-append
- button.btn.btn-sm.fas.fa-receipt.d-none.compiler-out.compiler-selector-icon(disabled=true style="cursor: help;" title="This compiler has generated some output. Open its associated pane to read it.")
- button.btn.btn-sm.fas.fa-times.close.compiler-selector-icon(aria-label="Close" title="Close")
- button.btn.btn-sm.fas.fa-share.close.extract-compiler.compiler-selector-icon(aria-label="Pop compiler" title="Show compiler")
-
- #libs-dropdown
- .no-libs
- p No libs configured for this language yet.
- a(target="_blank" rel="noopener noreferrer" href="https://github.com/compiler-explorer/compiler-explorer/issues/new?assignees=&labels=request%2Cnew-libs&template=library_request.md&title=%5BLIB+REQUEST%5D+INSERT+LIB+NAME+HERE")
- | You can suggest us one at any time&nbsp;
- sup.fas.fa-external-link-alt.opens-new-window(title="Opens in a new window")
-
- #libs-entry
- .input-group.input-group-sm
- .input-group-prepend
- label.input-group-text
- select.custom-select.custom-select-sm
-
- #share-item
- a.share-item(href="javascript:;" rel="noopener noreferrer" target="_blank")
- span.share-item-text
-
- #lib-selected-tpl
- div
- button.btn.btn-md.lib-name-and-version &nbsp;
- button.btn.btn-sm.lib-remove
- span.fas.fa-trash
-
- #lib-favorite-tpl
- div.mb-1
- button.btn.btn-md.btn-outline-primary.lib-name-and-version
-
- #lib-search-result-tpl
- .card
- .card-header
- span
- b.lib-name &nbsp;
- span.lib-version
- select.custom-select.custom-select-sm.lib-version-select
- option -
- .card-body
- p.lib-description &nbsp;
- .lib-examples
- div
- span.lib-website
- a.lib-website-link(href='#' target='_blank' rel='noopener') Website
- span.lib-fav
- button.btn.btn-sm.lib-fav-button
- span.lib-fav-btn-icon.far.fa-star
-
- #tree
- .top-bar.btn-toolbar.bg-light.mainbar(role="toolbar")
- .btn-group.btn-group-sm.menu(role="group" aria-label="Menu")
- button.dropdown-toggle.btn.btn-sm.btn-light.file-menu(type="button" title="File" aria-label="File" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
- span.fa.fa-save
- span.hideable Project
- .dropdown-menu
- input.dropdown-item.btn.btn-sm.btn-light.load-project-from-file(type="file" title="Load project from ZIP" aria-label="Load project from ZIP")
- button.dropdown-item.btn.btn-sm.btn-light.save-project-to-file(type="file" title="Save project" aria-label="Save project")
- span.dropdown-icon.fa.fa-save
- | Save
- .btn-group.btn-group-sm.options(role="group" aria-label="Tree settings")
- button.dropdown-toggle.btn.btn-sm.btn-light.add-pane(type="button" title="Add a new pane" aria-label="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
- span.fa.fa-plus
- span.hideable Add new...
- .dropdown-menu
- button.dropdown-item.btn.btn-sm.btn-light.add-editor(title="Add a new source editor view" aria-label="New source editor")
- span.dropdown-icon.fa.fa-code
- | Source editor
- button.dropdown-item.btn.btn-sm.btn-light.add-compiler(title="Add a new compiler for this source" aria-label="New compiler")
- span.dropdown-icon.fa.fa-cogs
- | Compiler
- button.dropdown-item.btn.btn-sm.btn-light.add-executor(title="Add a new executor for this source" aria-label="New executor")
- span.dropdown-icon.fas.fa-microchip
- | Execution only
- .button-checkbox
- button.btn.btn-sm.btn-light.cmake-project(type="button" title="CMake project" data-bind="isCMakeProject" aria-pressed="false" aria-label="CMake project")
- span CMake
- input.d-none(type="checkbox" checked=false)
- .btn-group.btn-group-sm.ml-auto(role="group" aria-label="Language")
- select.change-language(title="Change the language" placeholder="Language" disabled=embedded && readOnly)
- .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
- input.cmake-arguments.form-control(type="text" placeholder="CMake arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .top-bar.btn-toolbar.bg-light.panel-outputfile.d-none(role="toolbar")
- input.cmake-customOutputFilename.form-control(type="text" placeholder="output.s" size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
- .tree.v-scroll
- ul.list-group
- li.root.list-group-item.far-fa-folder
- .group-header Included files
- ul.list-group.named-editors
- li.root.list-group-item.far-fa-folder
- .group-header Excluded files
- ul.list-group.unnamed-editors
-
- #tree-editor-tpl
- li.list-group-item.tree-editor-file.input-group-append
- span.filename someresource.txt
- button.btn.delete-file.fa.fa-trash(title="Remove this file" aria-label="Delete")
- button.btn.rename-file.fa.fa-tag(title="Rename this file" aria-label="Rename")
- button.btn.stage-file.fa.fa-plus(title="Include this file in the build" aria-label="Include")
- button.btn.unstage-file.fa.fa-minus(title="Exclude this file from the build" aria-label="Exclude")
diff --git a/views/templates/panes/cfg.pug b/views/templates/panes/cfg.pug
new file mode 100644
index 000000000..6ff3066cb
--- /dev/null
+++ b/views/templates/panes/cfg.pug
@@ -0,0 +1,14 @@
+#cfg
+ .top-bar.btn-toolbar.bg-light.cfg-toolbar(role="toolbar")
+ .btn-group.btn-group-sm(role="group")
+ select.function-picker
+ .btn-group.btn-group-sm.options(role="group")
+ .button-checkbox
+ button.btn.btn-sm.btn-light.toggle-navigation(type="button" title="Toggle navigation buttons" aria-pressed="false" data-bind="navigation")
+ span Nav
+ input.d-none(type="checkbox")
+ .button-checkbox
+ button.btn.btn-sm.btn-light.toggle-physics(type="button" title="Toggle physics to nodes" aria-pressed="false" data-bind="physics")
+ span Physics
+ input.d-none(type="checkbox")
+ .graph-placeholder
diff --git a/views/templates/panes/codeEditor.pug b/views/templates/panes/codeEditor.pug
new file mode 100644
index 000000000..a885177d9
--- /dev/null
+++ b/views/templates/panes/codeEditor.pug
@@ -0,0 +1,41 @@
+mixin newPaneButton(classId, text, title, label, icon)
+ button(class="dropdown-item btn btn-sm btn-light " + classId title=title)
+ span(class="dropdown-icon " + icon)
+ | #{text}
+
+#codeEditor
+ .top-bar.btn-toolbar.bg-light(role="toolbar" aria-label="Editor toolbar" name="editor-btn-toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm(role="group" aria-label="Editor settings")
+ button.btn.btn-sm.btn-light.load-save(title="Load or save text" aria-label="Load or save text")
+ span.fa.fa-save
+ span.hideable Save/Load
+ button.dropdown-toggle.btn.btn-sm.btn-light.add-pane(type="button" title="Add a new pane" aria-label="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
+ span.fa.fa-plus
+ span.hideable Add new...
+ .dropdown-menu
+ +newPaneButton("add-compiler", "Compiler", "Add a new compiler for this source", "New compiler", "fa fa-cogs")
+ +newPaneButton("add-executor", "Execution Only", "Add a new executor for this source", "New executor", "fas fa-microchip")
+ +newPaneButton("conformance", "Conformance View", "Add a new conformance view", "New conformance view", "fa fa-list")
+ +newPaneButton("add-editor", "Source Editor", "Add a new source editor", "New source editor", "fa fa-code")
+ button#vim-flag.btn.btn-sm.btn-light(title="Toggle Vim Keybindings")
+ span.fab.fa-vimeo-v
+ span.hideable Vim
+ if thirdPartyIntegrationEnabled
+ .btn-group.btn-group-sm(role="group" aria-label="External Sites")
+ a.btn.btn-sm.btn-light.open-in-cppinsights(href="https://cppinsights.io/" target="_blank" title="Open in Cppinsights" aria-label="Open in Cppinsights")
+ svg(height="16" width="16")
+ include ../../resources/cppinsights.svg
+ span.hideable CppInsights
+ a.btn.btn-sm.btn-light.open-in-quickbench(href="http://quick-bench.com/" target="_blank" title="Open in Quick-bench" aria-label="Open in Quick-bench")
+ svg(height="16" width="16")
+ include ../../resources/quickbench.svg
+ span.hideable Quick-bench
+ .btn-group.btn-group-sm.mx-auto
+ button.btn.btn-sm.btn-outline-info.ctrlSNothing(disabled=true style="display: none")
+ span.fas.fa-smile
+ .btn-group.btn-group-sm.ml-auto(role="group" aria-label="Editor language")
+ select.change-language(title="Change this editor's (and associated panels) language" placeholder="Language" disabled=embedded && readOnly)
+ div.currentCursorPosition
+ div#v-status
+ .monaco-placeholder
diff --git a/views/templates/panes/compiler-output.pug b/views/templates/panes/compiler-output.pug
new file mode 100644
index 000000000..f433dc6bf
--- /dev/null
+++ b/views/templates/panes/compiler-output.pug
@@ -0,0 +1,12 @@
+#compiler-output
+ .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm.options(role="group" aria-label="Output options")
+ .button-checkbox
+ button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
+ span Wrap lines
+ input.d-none(type="checkbox" checked=false)
+ .btn-group.btn-group-sm(role="group")
+ button.btn.btn-sm.btn-light.select-all(type="button" title="Select all lines")
+ span Select all
+ pre.content.output-content
diff --git a/views/templates/panes/compiler.pug b/views/templates/panes/compiler.pug
new file mode 100644
index 000000000..da77f3dfc
--- /dev/null
+++ b/views/templates/panes/compiler.pug
@@ -0,0 +1,94 @@
+mixin newPaneButton(classId, text, title, icon)
+ button(class="dropdown-item btn btn-sm btn-light " + classId title=title)
+ span(class="dropdown-icon " + icon)
+ | #{text}
+
+#compiler
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ .btn-group.btn-group-sm(role="group" aria-label="Compiler picker")
+ .input-group
+ .input-group-prepend
+ .input-group
+ select.compiler-picker
+ .input-group-append
+ button.btn.btn-sm.btn-light.input-group-text.prepend-options(data-trigger="click" style="cursor: pointer;" role="button" title="All compilation options")
+ span.status-icon
+ input.options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .input-group-append.populararguments(title="Popular arguments")
+ button.btn.btn-sm.btn-light.btn-outline-secondary.dropdown-toggle.dropdown-toggle-split.popular-arguments-btn(type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
+ span.sr-only Popular arguments
+ div.dropdown-menu.dropdown-menu-right
+ button.dropdown-item.btn.btn-light.btn-sm
+ .argmenuitem
+ span.argtitle Detailed Compiler Flags
+ span.argdescription Open a new window to edit verbose compiler flags
+ include ../../font-size
+ .btn-group.btn-group-sm.filters(role="group")
+ button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Compiler output options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Change how the compiler's output is generated")
+ span.fas.fa-cog
+ span.hideable Output...
+ .dropdown-menu
+ include ../../options-output
+ .btn-group.btn-group-sm.filters(role="group")
+ button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Compiler output filters" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Change how the compiler output is filtered")
+ span.fas.fa-filter
+ span.hideable Filter...
+ .dropdown-menu
+ include ../../options-filters
+ .btn-group.btn-group-sm(role="group" aria-label="Compiler additions")
+ button.btn.btn-sm.btn-light.show-libs(title="Include libs" aria-label="Toggle libraries dropdown")
+ span.fas.fa-book
+ span.dp-text.hideable Libraries
+ .btn-group.btn-group-sm(role="group")
+ button.btn.btn-sm.btn-light.dropdown-toggle.add-pane(type="button" title="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Add new element for this compiler")
+ span.fas.fa-plus
+ span.hideable Add new...
+ .dropdown-menu.dropdown-menu-right
+ +newPaneButton("add-compiler", "Clone Compiler", "Clone this compiler window (click or drag)", "far fa-clone")
+ +newPaneButton("create-executor", "Executor From This", "Create executor from this compiler", "fas fa-microchip")
+ +newPaneButton("view-optimization", "Optimization", "Show optimization output", "fas fa-weight")
+ +newPaneButton("view-pp", "Preprocessor", "Show preprocessor output", "fas fa-hashtag")
+ +newPaneButton("view-ast", "AST", "Show AST output", "fas fa-leaf")
+ +newPaneButton("view-ir", "LLVM IR", "Show LLVM Intermediate Representation", "fas fa-align-center")
+ +newPaneButton("view-llvm-opt-pipeline", "LLVM Opt Pipeline", "Show LLVM optimization pipeline output", "fas fa-compass")
+ +newPaneButton("view-device", "Device", "Show device output", "fas fa-tv")
+ +newPaneButton("view-rustmir", "Rust MIR", "Show Rust Mid-level Intermediate Representation", "fas fa-water")
+ +newPaneButton("view-rusthir", "Rust HIR", "Show Rust High-level Intermediate Representation", "fas fa-arrows-alt")
+ +newPaneButton("view-rustmacroexp", "Rust Macro Expansion", "Show Rust macro expansion", "fas fa-arrows-alt")
+ +newPaneButton("view-haskellCore", "GHC Core", "Show GHC Core Intermediate Representation", "fas fa-water")
+ +newPaneButton("view-haskellStg", "GHC STG", "Show GHC STG Intermediate Representation", "fas fa-water")
+ +newPaneButton("view-haskellCmm", "GHC Cmm", "Show GHC Cmm Intermediate Representation", "fas fa-water")
+ +newPaneButton("view-gccdump", "GCC Tree/RTL", "Show GCC Tree/RTL dump", "fas fa-tree")
+ +newPaneButton("view-gnatdebugtree", "GNAT Debug Tree", "Show GNAT debug tree", "fas fa-tree")
+ +newPaneButton("view-gnatdebug", "GNAT Debug Expanded Code", "Show GNAT debug expanded code", "fas fa-tree")
+ +newPaneButton("view-cfg", "Graph", "Shpw graph output", "fas fa-exchange-alt")
+ .btn-group.btn-group-sm(role="group")
+ button.btn.btn-sm.btn-light.dropdown-toggle.add-tool(type="button" title="Add tool" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Add tooling to this editor and compiler")
+ span.fas.fa-screwdriver
+ span.hideable Add tool...
+ .dropdown-menu.dropdown-menu-right.toolsmenu
+ .monaco-placeholder
+ .bottom-bar.bg-light
+ if !embedded
+ .btn-group.btn-group-sm
+ .input-group
+ .input-group-prepend
+ button.btn.btn-sm.btn-light.clear-cache(title="Clear cache & recompile")
+ span.fas.fa-redo
+ button.btn.btn-sm.btn-light.output-btn
+ span.fas.fa-receipt.status-text
+ | &nbsp;Output
+ span.output-count
+ | &nbsp;(
+ span.text-count
+ | 0
+ | /
+ span.err-count
+ | 0
+ | )
+ span.short-compiler-name.mr-1
+ button.btn.btn-sm.btn-light.full-compiler-name(data-trigger="click" style="cursor: pointer;" role="button")
+ span.fas.fa-info
+ span.compile-info.mr-1(title="Compilation info")
+ button.btn.btn-sm.btn-light.full-timing-info(data-trigger="click" style="cursor: pointer;" role="button")
+ span.fas.fa-chart-bar
diff --git a/views/templates/panes/conformance.pug b/views/templates/panes/conformance.pug
new file mode 100644
index 000000000..ec14e874c
--- /dev/null
+++ b/views/templates/panes/conformance.pug
@@ -0,0 +1,11 @@
+#conformance
+ .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
+ .btn-group.btn-group-sm(role="group")
+ button.btn.btn-sm.btn-light.add-compiler(title="Add compiler")
+ span.fas.fa-plus
+ span.hideable Add compiler
+ button.btn.btn-sm.btn-light.show-libs.dropdown-toggle(title="Include libs" aria-label="Toggle libraries dropdown" aria-pressed="false" aria-haspopup="true")
+ span.fas.fa-book
+ span.dp-text.hideable Libraries
+ .conformance-wrapper
+ table.compiler-list
diff --git a/views/templates/panes/device.pug b/views/templates/panes/device.pug
new file mode 100644
index 000000000..751041925
--- /dev/null
+++ b/views/templates/panes/device.pug
@@ -0,0 +1,6 @@
+#device
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm(role="group")
+ select.change-device(placeholder="Select a device...")
+ .monaco-placeholder
diff --git a/views/templates/panes/diff.pug b/views/templates/panes/diff.pug
new file mode 100644
index 000000000..3e69dc49b
--- /dev/null
+++ b/views/templates/panes/diff.pug
@@ -0,0 +1,18 @@
+#diff
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm
+ .input-group.input-group-sm.mb-auto
+ .input-group-prepend
+ label.input-group-text
+ | Left:&nbsp;
+ select.diff-picker.lhs(placeholder="Select compiler...")
+ select.difftype-picker.lhsdifftype(placeholder="...")
+ .btn-group.btn-group-sm.ml-4
+ .input-group.input-group-sm.mb-auto
+ .input-group-prepend
+ label.input-group-text
+ | Right:&nbsp;
+ select.diff-picker.rhs(placeholder="Select compiler...")
+ select.difftype-picker.rhsdifftype(placeholder="...")
+ .monaco-placeholder
diff --git a/views/templates/panes/executor.pug b/views/templates/panes/executor.pug
new file mode 100644
index 000000000..b1e02a84e
--- /dev/null
+++ b/views/templates/panes/executor.pug
@@ -0,0 +1,59 @@
+#executor
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm.options(role="group" aria-label="Output options")
+ .button-checkbox
+ button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
+ span Wrap lines
+ input.d-none(type="checkbox" checked=false)
+ button.btn.btn-sm.btn-light.show-libs(title="Include libs" aria-label="Toggle libraries dropdown")
+ span.fas.fa-book
+ span.dp-text.hideable Libraries
+ button.btn.btn-sm.btn-light.toggle-compilation.active(title="Compiler options" aria-label="Toggle compiler options input")
+ span.fas.fa-cogs
+ span.hideable Compilation
+ button.btn.btn-sm.btn-light.toggle-args(title="Execution arguments" aria-label="Toggle execution arguments input")
+ span.fas.fa-terminal
+ span.hideable Arguments
+ button.btn.btn-sm.btn-light.toggle-stdin(title="Execution stdin" aria-label="Toggle execution stdin input")
+ span.fas.fa-sign-in-alt
+ span.hideable Stdin
+ button.btn.btn-sm.btn-light.toggle-compilerout.active(title="Compiler output" aria-label="Toggle showing compiler output")
+ span.fas.fa-sign-out-alt
+ span.hideable Compiler output
+ button.btn.btn-sm.btn-light.clear-cache(title="Clear cache & recompile")
+ span.fas.fa-redo
+ .top-bar.btn-toolbar.bg-light.panel-compilation(role="toolbar")
+ .btn-group.btn-group-sm(role="group" aria-label="Compiler picker")
+ .input-group
+ .input-group-prepend
+ .input-group
+ select.compiler-picker
+ .input-group-append
+ button.btn.btn-sm.btn-light.input-group-text.prepend-options(data-trigger="click" style="cursor: pointer;" role="button" title="All compilation options")
+ span.btn.btn-sm.btn-light.status-icon
+ input.compilation-options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ // TODO: Maybe enable this in the future?
+ //.input-group-append.populararguments(title="Popular arguments")
+ button.btn.btn-sm.btn-light.btn-outline-secondary.dropdown-toggle.dropdown-toggle-split.popular-arguments-btn(type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
+ span.sr-only Popular arguments
+ div.dropdown-menu.dropdown-menu-right
+ button.dropdown-item.btn.btn-light.btn-sm
+ .argmenuitem
+ span.argtitle Detailed Compiler Flags
+ span.argdescription Open a new window to edit verbose compiler flags
+ .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
+ input.execution-arguments.form-control(type="text" placeholder="Execution arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .top-bar.btn-toolbar.bg-light.panel-stdin.d-none(role="toolbar")
+ textarea.execution-stdin.form-control(placeholder="Execution stdin..." cols="1024" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-multiline="false" style="resize: vertical")
+ pre.content
+ .execution-status
+ .compiler-output
+ .execution-output
+ .bottom-bar.bg-light
+ button.btn.btn-sm.btn-light.trigger-compilation(title="Trigger compilation")
+ span.fas.fa-redo
+ span.short-compiler-name
+ button.btn.btn-sm.btn-light.fas.fa-info.full-compiler-name(data-trigger="click" style="cursor: pointer;" role="button")
+ span.compile-time(title="Compilation time (Result size)")
+ button.btn.btn-sm.btn-light.fas.fa-chart-bar.full-timing-info(data-trigger="click" style="cursor: pointer;" role="button")
diff --git a/views/templates/panes/gccdump.pug b/views/templates/panes/gccdump.pug
new file mode 100644
index 000000000..dbb241b78
--- /dev/null
+++ b/views/templates/panes/gccdump.pug
@@ -0,0 +1,37 @@
+mixin optionButton(bind, isActive, text, title)
+ .button-checkbox
+ button(type="button" class="dropdown-item btn btn-sm btn-light" + (isActive ? "active" : "") title=title data-bind=bind aria-pressed=isActive ? "true" : "false")
+ span #{text}
+ input.d-none(type="checkbox" checked=isActive)
+
+#gccdump
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm(role="group")
+ select.gccdump-pass-picker(placeholder="Select a pass...")
+ .btn-group.btn-group-sm.dump-filters
+ button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Dump passes" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Available dump passes")
+ span.fas.fa-compass
+ span.hideable Passes
+ .dropdown-menu
+ +optionButton("treeDump", true, "Tree Pass", "Show Tree passes")
+ +optionButton("rtlDump", true, "RTL Pass", "Show RTL passes")
+ +optionButton("ipaDump", true, "IPA Pass", "Show IPA passes")
+ .btn-group.btn-group-sm.dump-filters
+ button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="Dump pass options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Control the details of the dump")
+ span.fas.fa-microchip
+ span.hideable Options
+ .dropdown-menu
+ +optionButton("rawOption", false, "Raw Dump", "Print raw representation of the tree")
+ +optionButton("slimOption", false, "Slim Dump", "Print condensed intermediate representations")
+ div.dropdown-divider
+ +optionButton("allOption", false, "All Options", "Turn on all options (except raw, slim and lineno)")
+ // This addresses one was marked as aria-pressed=true, but not checked. What should its default state be then? Set to false for now
+ +optionButton("addressOption", false, "Addresses", "Print the address of each tree node")
+ +optionButton("blocksOption", false, "Basic Blocks", "Show the basic block boundaries (disabled in raw dumps)")
+ +optionButton("linenoOption", false, "Line Numbers", "Show line numbers")
+ +optionButton("detailsOption", false, "Pass Details", "Enable more detailed dumps (not honored by every dump option)")
+ +optionButton("statsOption", false, "Pass Stats", "Dump statistics (not honored by every dump option)")
+ +optionButton("uidOption", false, "Unique IDs", "Show variable UIDs")
+ +optionButton("vopsOption", false, "Virtual Operands", "Show virtual operands")
+ .monaco-placeholder
diff --git a/views/templates/panes/llvm-opt-pipeline.pug b/views/templates/panes/llvm-opt-pipeline.pug
new file mode 100644
index 000000000..0192ee379
--- /dev/null
+++ b/views/templates/panes/llvm-opt-pipeline.pug
@@ -0,0 +1,40 @@
+#llvm-opt-pipeline
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm.options(role="group")
+ button.btn.btn-sm.btn-light.dropdown-toggle(type="button" title="LLVM Opt Pass Options" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Set output options")
+ span.fas.fa-anchor
+ span.hideable Options
+ .dropdown-menu
+ .button-checkbox
+ button.dropdown-item.btn.btn-sm.btn-light.filter-inconsequential-passes(type="button" title="Filter passes which do not make changes" data-bind="filter-inconsequential-passes" aria-pressed="false" aria-label="Filter Inconsequential Passes")
+ span Filter Inconsequential Passes
+ input.d-none(type="checkbox" checked=false)
+ .button-checkbox
+ button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Dump the entire module for each pass" data-bind="dump-full-module" aria-pressed="false" aria-label="Filter Inconsequential Passes")
+ span Dump Full Module
+ input.d-none(type="checkbox" checked=false)
+ .button-checkbox
+ button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Demangle Symbols" data-bind="demangle-symbols" aria-pressed="false" aria-label="Demangle Symbols")
+ span Demangle Symbols
+ input.d-none(type="checkbox" checked=true)
+ .button-checkbox
+ button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Keep value names instead of llvm value numbers" data-bind="-fno-discard-value-names" aria-pressed="false" aria-label="-fno-discard-value-names")
+ span -fno-discard-value-names
+ input.d-none(type="checkbox" checked=true)
+ //.button-checkbox
+ // button.dropdown-item.btn.btn-sm.btn-light.dump-full-module(type="button" title="Filter Library Functions" data-bind="library-functions" aria-pressed="false" aria-label="Filter Library Functions")
+ // span Filter Library Functions
+ // input.d-none(type="checkbox" checked=true)
+ .btn-group.btn-group-sm
+ .input-group.input-group-sm.mb-auto
+ .input-group-prepend
+ label.input-group-text
+ | Function:&nbsp;
+ select.llvm-opt-function-picker.function-selector(placeholder="Select function")
+ div.llvm-opt-pipeline-body
+ .passes-column(style="width: 250px;") Passes:
+ .passes-list
+ .passes-column-resizer
+ .passes-column-resizer-handle
+ .monaco-placeholder
diff --git a/views/templates/panes/pp.pug b/views/templates/panes/pp.pug
new file mode 100644
index 000000000..9a0eadf83
--- /dev/null
+++ b/views/templates/panes/pp.pug
@@ -0,0 +1,15 @@
+#pp
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm.options(role="group" aria-label="Panel options")
+ .input-group.input-group-sm.mb-auto
+ .button-checkbox
+ button.btn.btn-sm.btn-light.filter-headers(type="button" title="Filter header code from #includes" data-bind="filter-headers" aria-pressed="false" aria-label="Filter headers")
+ span Filter headers
+ input.d-none(type="checkbox" checked=true)
+ .input-group.input-group-sm.mb-auto
+ .button-checkbox
+ button.btn.btn-sm.btn-light.clang-format(type="button" title="Apply clang-format to output" data-bind="clang-format" aria-pressed="false" aria-label="Apply clang-format")
+ span Apply clang-format
+ input.d-none(type="checkbox" checked=false)
+ .monaco-placeholder
diff --git a/views/templates/panes/tool-output.pug b/views/templates/panes/tool-output.pug
new file mode 100644
index 000000000..437bf74ad
--- /dev/null
+++ b/views/templates/panes/tool-output.pug
@@ -0,0 +1,23 @@
+#tool-output
+ .top-bar.bad-lang.bg-warning(role="toolbar" style="display: none")
+ p The current language or compiler does not support this tool
+ .top-bar.btn-toolbar.options-toolbar.bg-light(role="toolbar")
+ include ../../font-size
+ .btn-group.btn-group-sm.options(role="group" aria-label="Tool options")
+ .input-group.input-group-sm.mb-auto
+ .button-checkbox
+ button.btn.btn-sm.btn-light.wrap-lines(type="button" title="Wrap lines" data-bind="wrap" aria-pressed="false" aria-label="Wrap lines")
+ span Wrap lines
+ input.d-none(type="checkbox" checked=false)
+ button.btn.btn-sm.btn-light.toggle-args
+ span.fas.fa-terminal
+ span.hideable Arguments
+ button.btn.btn-sm.btn-light.toggle-stdin
+ span.fas.fa-sign-in-alt
+ span.hideable Stdin
+ .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
+ input.options.form-control(type="text" placeholder="Tool arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .top-bar.btn-toolbar.bg-light.panel-stdin.d-none(role="toolbar")
+ textarea.tool-stdin.form-control(placeholder="Tool stdin..." cols="1024" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-multiline="false" style="resize: vertical")
+ pre.content
+ .monaco-placeholder
diff --git a/views/templates/panes/tree.pug b/views/templates/panes/tree.pug
new file mode 100644
index 000000000..7a010965a
--- /dev/null
+++ b/views/templates/panes/tree.pug
@@ -0,0 +1,43 @@
+#tree
+ .top-bar.btn-toolbar.bg-light.mainbar(role="toolbar")
+ .btn-group.btn-group-sm.menu(role="group" aria-label="Menu")
+ button.dropdown-toggle.btn.btn-sm.btn-light.file-menu(type="button" title="File" aria-label="File" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
+ span.fa.fa-save
+ span.hideable Project
+ .dropdown-menu
+ input.dropdown-item.btn.btn-sm.btn-light.load-project-from-file(type="file" title="Load project from ZIP" aria-label="Load project from ZIP")
+ button.dropdown-item.btn.btn-sm.btn-light.save-project-to-file(type="file" title="Save project" aria-label="Save project")
+ span.dropdown-icon.fa.fa-save
+ | Save
+ .btn-group.btn-group-sm.options(role="group" aria-label="Tree settings")
+ button.dropdown-toggle.btn.btn-sm.btn-light.add-pane(type="button" title="Add a new pane" aria-label="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
+ span.fa.fa-plus
+ span.hideable Add new...
+ .dropdown-menu
+ button.dropdown-item.btn.btn-sm.btn-light.add-editor(title="Add a new source editor view" aria-label="New source editor")
+ span.dropdown-icon.fa.fa-code
+ | Source editor
+ button.dropdown-item.btn.btn-sm.btn-light.add-compiler(title="Add a new compiler for this source" aria-label="New compiler")
+ span.dropdown-icon.fa.fa-cogs
+ | Compiler
+ button.dropdown-item.btn.btn-sm.btn-light.add-executor(title="Add a new executor for this source" aria-label="New executor")
+ span.dropdown-icon.fas.fa-microchip
+ | Execution only
+ .button-checkbox
+ button.btn.btn-sm.btn-light.cmake-project(type="button" title="CMake project" data-bind="isCMakeProject" aria-pressed="false" aria-label="CMake project")
+ span CMake
+ input.d-none(type="checkbox" checked=false)
+ .btn-group.btn-group-sm.ml-auto(role="group" aria-label="Language")
+ select.change-language(title="Change the language" placeholder="Language" disabled=embedded && readOnly)
+ .top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
+ input.cmake-arguments.form-control(type="text" placeholder="CMake arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .top-bar.btn-toolbar.bg-light.panel-outputfile.d-none(role="toolbar")
+ input.cmake-customOutputFilename.form-control(type="text" placeholder="output.s" size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .tree.v-scroll
+ ul.list-group
+ li.root.list-group-item.far-fa-folder
+ .group-header Included files
+ ul.list-group.named-editors
+ li.root.list-group-item.far-fa-folder
+ .group-header Excluded files
+ ul.list-group.unnamed-editors
diff --git a/views/templates/templates.pug b/views/templates/templates.pug
new file mode 100644
index 000000000..c6ed75185
--- /dev/null
+++ b/views/templates/templates.pug
@@ -0,0 +1,75 @@
+mixin monacopane(id)
+ div(id=id)
+ .top-bar.btn-toolbar.bg-light(role="toolbar")
+ include ../font-size
+ .monaco-placeholder
+
+.gl_keep.template
+
+ include panes/codeEditor
+
+ include panes/compiler
+
+ include panes/executor
+
+ include panes/compiler-output
+
+ include panes/tool-output
+
+ include panes/diff
+
+ include panes/pp
+
+ include panes/llvm-opt-pipeline
+
+ include panes/device
+
+ include panes/gccdump
+
+ include panes/cfg
+
+ include panes/conformance
+
+ include panes/tree
+
+ include widgets/compiler-selector
+
+ include widgets/libs-dropdown
+
+ include widgets/libs-entry
+
+ include widgets/share-item
+
+ include widgets/lib-selected-tpl
+
+ include widgets/lib-favorite-tpl
+
+ include widgets/lib-search-result-tpl
+
+ include widgets/tree-editor-tpl
+
+ +monacopane("opt")
+
+ +monacopane("flags")
+
+ +monacopane("ast")
+
+ +monacopane("ir")
+
+ +monacopane("tool-input")
+
+ +monacopane("gnatdebugtree")
+
+ +monacopane("gnatdebug")
+
+ +monacopane("rustmir")
+
+ +monacopane("haskellCore")
+
+ +monacopane("haskellStg")
+
+ +monacopane("haskellCmm")
+
+ +monacopane("rustmacroexp")
+
+ +monacopane("rusthir")
diff --git a/views/templates/widgets/compiler-selector.pug b/views/templates/widgets/compiler-selector.pug
new file mode 100644
index 000000000..e8831b0fb
--- /dev/null
+++ b/views/templates/widgets/compiler-selector.pug
@@ -0,0 +1,15 @@
+#compiler-selector
+ .form-row
+ .input-group
+ .input-group-prepend
+ .input-group
+ select.compiler-picker
+ .input-group-append
+ button.btn.btn-sm.btn-light.input-group-text.prepend-options(tabindex="0" data-trigger="focus" style="cursor: pointer;" role="button" title="All compilation options")
+ span.btn.btn-sm.btn-light.status-icon
+ input.conformance-options.form-control(type="text" placeholder="Compiler options..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
+ .input-group-append
+ button.btn.btn-sm.fas.fa-receipt.d-none.compiler-out.compiler-selector-icon(disabled=true style="cursor: help;" title="This compiler has generated some output. Open its associated pane to read it.")
+ button.btn.btn-sm.fas.fa-times.close.compiler-selector-icon(aria-label="Close" title="Close")
+ button.btn.btn-sm.fas.fa-share.close.extract-compiler.compiler-selector-icon(aria-label="Pop compiler" title="Show compiler")
+ button.btn.btn-sm.fas.fa-copy.close.copy-compiler.compiler-selector-icon(aria-label="Copy compiler" title="Copy compiler")
diff --git a/views/templates/widgets/lib-favorite-tpl.pug b/views/templates/widgets/lib-favorite-tpl.pug
new file mode 100644
index 000000000..d416cec1d
--- /dev/null
+++ b/views/templates/widgets/lib-favorite-tpl.pug
@@ -0,0 +1,3 @@
+#lib-favorite-tpl
+ div.mb-1
+ button.btn.btn-md.btn-outline-primary.lib-name-and-version
diff --git a/views/templates/widgets/lib-search-result-tpl.pug b/views/templates/widgets/lib-search-result-tpl.pug
new file mode 100644
index 000000000..853a21c7c
--- /dev/null
+++ b/views/templates/widgets/lib-search-result-tpl.pug
@@ -0,0 +1,17 @@
+#lib-search-result-tpl
+ .card
+ .card-header
+ span
+ b.lib-name &nbsp;
+ span.lib-version
+ select.custom-select.custom-select-sm.lib-version-select
+ option -
+ .card-body
+ p.lib-description &nbsp;
+ .lib-examples
+ div
+ span.lib-website
+ a.lib-website-link(href='#' target='_blank' rel='noopener') Website
+ span.lib-fav
+ button.btn.btn-sm.lib-fav-button
+ span.lib-fav-btn-icon.far.fa-star
diff --git a/views/templates/widgets/lib-selected-tpl.pug b/views/templates/widgets/lib-selected-tpl.pug
new file mode 100644
index 000000000..9cde0261d
--- /dev/null
+++ b/views/templates/widgets/lib-selected-tpl.pug
@@ -0,0 +1,5 @@
+#lib-selected-tpl
+ div
+ button.btn.btn-md.lib-name-and-version &nbsp;
+ button.btn.btn-sm.lib-remove
+ span.fas.fa-trash
diff --git a/views/templates/widgets/libs-dropdown.pug b/views/templates/widgets/libs-dropdown.pug
new file mode 100644
index 000000000..b4633e2d0
--- /dev/null
+++ b/views/templates/widgets/libs-dropdown.pug
@@ -0,0 +1,6 @@
+#libs-dropdown
+ .no-libs
+ p No libs configured for this language yet.
+ a(target="_blank" rel="noopener noreferrer" href="https://github.com/compiler-explorer/compiler-explorer/issues/new?assignees=&labels=request%2Cnew-libs&template=library_request.md&title=%5BLIB+REQUEST%5D+INSERT+LIB+NAME+HERE")
+ | You can suggest us one at any time&nbsp;
+ sup.fas.fa-external-link-alt.opens-new-window(title="Opens in a new window")
diff --git a/views/templates/widgets/libs-entry.pug b/views/templates/widgets/libs-entry.pug
new file mode 100644
index 000000000..253651546
--- /dev/null
+++ b/views/templates/widgets/libs-entry.pug
@@ -0,0 +1,5 @@
+#libs-entry
+ .input-group.input-group-sm
+ .input-group-prepend
+ label.input-group-text
+ select.custom-select.custom-select-sm
diff --git a/views/templates/widgets/share-item.pug b/views/templates/widgets/share-item.pug
new file mode 100644
index 000000000..e695c1304
--- /dev/null
+++ b/views/templates/widgets/share-item.pug
@@ -0,0 +1,3 @@
+#share-item
+ a.share-item(href="javascript:;" rel="noopener noreferrer" target="_blank")
+ span.share-item-text
diff --git a/views/templates/widgets/tree-editor-tpl.pug b/views/templates/widgets/tree-editor-tpl.pug
new file mode 100644
index 000000000..b1bb6ef97
--- /dev/null
+++ b/views/templates/widgets/tree-editor-tpl.pug
@@ -0,0 +1,7 @@
+#tree-editor-tpl
+ li.list-group-item.tree-editor-file.input-group-append
+ span.filename someresource.txt
+ button.btn.delete-file.fa.fa-trash(title="Remove this file" aria-label="Delete")
+ button.btn.rename-file.fa.fa-tag(title="Rename this file" aria-label="Rename")
+ button.btn.stage-file.fa.fa-plus(title="Include this file in the build" aria-label="Include")
+ button.btn.unstage-file.fa.fa-minus(title="Exclude this file from the build" aria-label="Exclude")
diff --git a/webpack.config.esm.js b/webpack.config.esm.js
index 4cee7a015..5dc24300c 100644
--- a/webpack.config.esm.js
+++ b/webpack.config.esm.js
@@ -44,7 +44,7 @@ const staticPath = path.resolve(__dirname, 'out', 'webpack', 'static');
// Hack alert: due to a variety of issues, sometimes we need to change
// the name here. Mostly it's things like webpack changes that affect
// how minification is done, even though that's supposed not to matter.
-const webjackJsHack = '.v9.';
+const webjackJsHack = '.v11.';
const plugins = [
new MonacoEditorWebpackPlugin({
languages: [