diff options
author | Patrick Quist <partouf@gmail.com> | 2022-07-20 20:43:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-20 20:43:30 +0200 |
commit | 9ee63046cd999bd02a72d6f6f078249f3c242b77 (patch) | |
tree | 0c261b73a072e377f7174767818b9476a67cda11 | |
parent | 309ffe3ac19d17297fae42fe3801ad89ceb38b61 (diff) | |
parent | d319bca54cb316c8f2d5002214e36a2cf8e2b98f (diff) | |
download | compiler-explorer-gh-3685.tar.gz compiler-explorer-gh-3685.zip |
Merge branch 'main' into ldcsymbolizergh-3685
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) @@ -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") - | × - .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") - | × - .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") - | × - .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") - | × - .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") × - .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 - 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 - | behaviour - select.enableCtrlS - .checkbox.the-save-option-to-tree-save - label - input.enableCtrlStree(type="checkbox") - | Make - kbd Ctrl - | + - kbd S - | 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 - | 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: - span.delay-current-value - .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 - | 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 - | 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 - | 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") - | × - .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") - | × - .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") - | × - .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") - | - 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") - | × - .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 - .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") - | × - .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") - | × - .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") + | × + .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") + | × + .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") + | × + .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") + | + 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") + | × + .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 + .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") + | × + .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") + | × + .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") × + .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 + 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 + | behaviour + select.enableCtrlS + .checkbox.the-save-option-to-tree-save + label + input.enableCtrlStree(type="checkbox") + | Make + kbd Ctrl + | + + kbd S + | 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 + | 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: + span.delay-current-value + .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") + | × + .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 + | 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 + | 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 + | 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") + | × + .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") + | × + .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") + | × + .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 Binary files differdeleted file mode 100644 index 45cc21762..000000000 --- a/views/resources/template_screenshots/LLVMIr.dark.png +++ /dev/null diff --git a/views/resources/template_screenshots/LLVMIr.darkplus.png b/views/resources/template_screenshots/LLVMIr.darkplus.png Binary files differdeleted file mode 100644 index a4ac4349c..000000000 --- a/views/resources/template_screenshots/LLVMIr.darkplus.png +++ /dev/null diff --git a/views/resources/template_screenshots/LLVMIr.default.png b/views/resources/template_screenshots/LLVMIr.default.png Binary files differdeleted file mode 100644 index 2bb01395d..000000000 --- a/views/resources/template_screenshots/LLVMIr.default.png +++ /dev/null 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 - | Output - span.output-count - | ( - 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: - 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: - 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: - 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 - 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 - 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 - span.lib-version - select.custom-select.custom-select-sm.lib-version-select - option - - .card-body - p.lib-description - .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 + | Output + span.output-count + | ( + 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: + 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: + 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: + 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 + span.lib-version + select.custom-select.custom-select-sm.lib-version-select + option - + .card-body + p.lib-description + .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 + 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 + 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: [ |