├── .vscode └── settings.json ├── .gitmodules ├── .github └── dependabot.yaml ├── .gitignore ├── .scalafmt.conf ├── rvdecoderdb ├── src │ ├── parser │ │ ├── Token.scala │ │ ├── Import.scala │ │ ├── PseudoOp.scala │ │ ├── RawInstructionSet.scala │ │ ├── BareStr.scala │ │ ├── SameValue.scala │ │ ├── RefInst.scala │ │ ├── BitValue.scala │ │ ├── FixedRangeValue.scala │ │ ├── RawInstruction.scala │ │ ├── ArgLUT.scala │ │ └── parse.scala │ ├── Utils.scala │ └── Instruction.scala └── jvm │ └── src │ └── package.scala ├── nix ├── espresso.nix ├── rvdecoderdb-jvm.nix └── rvdecoderdb-jvm-mill-lock.nix ├── rvdecoderdbtest └── jvm │ └── src │ └── Test.scala ├── overlay.nix ├── common.mill ├── flake.nix └── flake.lock /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.watcherExclude": { 3 | "**/target": true 4 | } 5 | } -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "sailcodegen/jvm/riscv-opcodes"] 2 | path = sailcodegen/jvm/riscv-opcodes 3 | url = git@github.com:riscv/riscv-opcodes.git 4 | -------------------------------------------------------------------------------- /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "gitsubmodule" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /out/ 2 | /.idea/ 3 | /.bsp/ 4 | result 5 | .metals/ 6 | .ccls-cache/ 7 | **/target/ 8 | result* 9 | .envrc 10 | .direnv/ 11 | source/ 12 | -------------------------------------------------------------------------------- /.scalafmt.conf: -------------------------------------------------------------------------------- 1 | version = "3.9.2" 2 | runner.dialect = scala213 3 | 4 | maxColumn = 120 5 | align.preset = most 6 | align.tokens."+" = [{ 7 | code = ":" 8 | }] 9 | 10 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/Token.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | trait Token 7 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/Import.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object Import extends Token { 7 | override def toString: String = "Import" 8 | } 9 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/PseudoOp.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object PseudoOp extends Token { 7 | override def toString: String = "PseudoOp" 8 | } 9 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/RawInstructionSet.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | case class RawInstructionSet(name: String, ratified: Boolean, custom: Boolean, rawInstructions: Seq[RawInstruction]) 7 | -------------------------------------------------------------------------------- /nix/espresso.nix: -------------------------------------------------------------------------------- 1 | { 2 | stdenv, 3 | fetchFromGitHub, 4 | cmake, 5 | ninja, 6 | }: 7 | stdenv.mkDerivation rec { 8 | pname = "espresso"; 9 | version = "2.4"; 10 | nativeBuildInputs = [ 11 | cmake 12 | ninja 13 | ]; 14 | src = fetchFromGitHub { 15 | owner = "chipsalliance"; 16 | repo = "espresso"; 17 | rev = "v${version}"; 18 | sha256 = "sha256-z5By57VbmIt4sgRgvECnLbZklnDDWUA6fyvWVyXUzsI="; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/BareStr.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object BareStr { 7 | def unapply(str: String): Option[BareStr] = Some(new BareStr(str)) 8 | } 9 | 10 | /** This either be Instruction or InstructionSet(only for import) */ 11 | class BareStr(val name: String) extends Token { 12 | override def toString: String = name 13 | } 14 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/SameValue.scala: -------------------------------------------------------------------------------- 1 | package org.chipsalliance.rvdecoderdb.parser 2 | import org.chipsalliance.rvdecoderdb.parser.ArgLUT 3 | 4 | object SameValue { 5 | def unapply(str: String): Option[ArgLUT] = str match { 6 | case s"${attr1}=${attr2}" => ArgLUT.all.get(attr1) 7 | case _ => None 8 | } 9 | } 10 | 11 | class SameValue(val attr1: String, val attr2: String) extends Token { 12 | override def toString: String = s"$attr1=$attr2" 13 | } 14 | -------------------------------------------------------------------------------- /rvdecoderdbtest/jvm/src/Test.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | object printall extends App { 5 | org.chipsalliance.rvdecoderdb.instructions(os.Path(sys.env("RISCV_OPCODES_PATH"))).foreach(println) 6 | } 7 | 8 | object json extends App { 9 | org.chipsalliance.rvdecoderdb 10 | .instructions(os.pwd / "rvdecoderdbtest" / "jvm" / "riscv-opcodes") 11 | .foreach(i => println(upickle.default.write(i))) 12 | } 13 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/RefInst.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object RefInst { 7 | def unapply(str: String): Option[RefInst] = str match { 8 | case s"$set::$instr" => Some(new RefInst(set, instr)) 9 | case _ => None 10 | } 11 | } 12 | 13 | class RefInst(val set: String, val inst: String) extends Token { 14 | override def toString: String = s"RefInst($set, $inst)" 15 | } 16 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/BitValue.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object BitValue { 7 | def unapply(str: String): Option[BitValue] = str match { 8 | case s"${bit}=${value}" => 9 | Some( 10 | new BitValue( 11 | bit.toInt, 12 | value match { 13 | case s"0b$bstr" => BigInt(bstr, 2) 14 | case s"0x$xstr" => BigInt(xstr, 16) 15 | case dstr => BigInt(dstr) 16 | } 17 | ) 18 | ) 19 | case _ => None 20 | } 21 | } 22 | 23 | class BitValue(val bit: BigInt, val value: BigInt) extends Token { 24 | override def toString: String = s"$bit=$value" 25 | } 26 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/FixedRangeValue.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | object FixedRangeValue { 7 | def unapply(str: String): Option[FixedRangeValue] = str match { 8 | case s"${msb}..${lsb}=${value}" => 9 | Some( 10 | new FixedRangeValue( 11 | msb.toInt, 12 | lsb.toInt, 13 | value match { 14 | case s"0b$bstr" => BigInt(bstr, 2) 15 | case s"0x$xstr" => BigInt(xstr, 16) 16 | case dstr => BigInt(dstr) 17 | } 18 | ) 19 | ) 20 | case _ => None 21 | } 22 | } 23 | 24 | class FixedRangeValue(val msb: BigInt, val lsb: BigInt, val value: BigInt) extends Token { 25 | override def toString: String = s"$msb..$lsb=$value" 26 | } 27 | -------------------------------------------------------------------------------- /nix/rvdecoderdb-jvm.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | publishMillJar, 4 | writeShellApplication, 5 | mill, 6 | mill-ivy-fetcher, 7 | }: 8 | publishMillJar rec { 9 | name = "rvdecoderdb"; 10 | 11 | src = 12 | with lib.fileset; 13 | toSource { 14 | fileset = unions [ 15 | ../build.mill 16 | ../common.mill 17 | ../rvdecoderdb 18 | ]; 19 | root = ../.; 20 | }; 21 | 22 | publishTargets = [ 23 | "rvdecoderdb.jvm" 24 | ]; 25 | 26 | lockFile = ./rvdecoderdb-jvm-mill-lock.nix; 27 | 28 | passthru.bump = writeShellApplication { 29 | name = "bump-rvdecoderdb"; 30 | runtimeInputs = [ 31 | mill 32 | mill-ivy-fetcher 33 | ]; 34 | text = '' 35 | mif run \ 36 | --targets rvdecoderdb.jvm \ 37 | -p ${src} \ 38 | -o ./nix/rvdecoderdb-jvm-mill-lock.nix \ 39 | "$@" 40 | ''; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /overlay.nix: -------------------------------------------------------------------------------- 1 | final: prev: { 2 | mill = 3 | let 4 | jre = final.jdk21; 5 | in 6 | (prev.mill.override { inherit jre; }).overrideAttrs rec { 7 | version = "0.12.8-1-46e216"; 8 | src = final.fetchurl { 9 | url = "https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/${version}/mill-dist-${version}-assembly.jar"; 10 | hash = "sha256-XNtl9NBQPlkYu/odrR/Z7hk3F01B6Rk4+r/8tMWzMm8="; 11 | }; 12 | # Re-export JRE to share Java toolchain usage 13 | passthru = { inherit jre; }; 14 | }; 15 | 16 | espresso = final.callPackage ./nix/espresso.nix { }; 17 | 18 | rvdecoderdb-jvm = final.callPackage ./nix/rvdecoderdb-jvm.nix { }; 19 | 20 | riscv-opcodes-src = final.fetchFromGitHub { 21 | owner = "riscv"; 22 | repo = "riscv-opcodes"; 23 | rev = "8899b32f218c85bf2559fa95f226bc2533316802"; 24 | fetchSubmodules = false; 25 | sha256 = "sha256-7CV/T8gnE7+ZPfYbn38Zx8fYUosTc8bt93wk5nmxu2c="; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /common.mill: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2022 Jiuyang Liu 3 | package build 4 | 5 | import mill._ 6 | import mill.scalalib._ 7 | import mill.scalajslib._ 8 | 9 | trait RVDecoderDBJVMModule extends ScalaModule { 10 | override def sources: T[Seq[PathRef]] = T.sources { super.sources() ++ Some(PathRef(millSourcePath / "jvm" / "src")) } 11 | def osLibIvy: Dep 12 | def upickleIvy: Dep 13 | override def ivyDeps = super.ivyDeps() ++ Some(osLibIvy) ++ Some(upickleIvy) 14 | } 15 | 16 | trait RVDecoderDBJSModule extends ScalaJSModule { 17 | override def sources: T[Seq[PathRef]] = T.sources { super.sources() ++ Some(PathRef(millSourcePath / "js" / "src")) } 18 | def upickleIvy: Dep 19 | override def ivyDeps = super.ivyDeps() ++ Some(upickleIvy) 20 | } 21 | 22 | // Tests 23 | trait RVDecoderDBJVMTestModule extends ScalaModule { 24 | override def sources: T[Seq[PathRef]] = T.sources { super.sources() ++ Some(PathRef(millSourcePath / "jvm" / "src")) } 25 | def dut: RVDecoderDBJVMModule 26 | override def moduleDeps = super.moduleDeps ++ Some(dut) 27 | } 28 | 29 | trait RVDecoderDBTestJSModule extends ScalaJSModule { 30 | override def sources: T[Seq[PathRef]] = T.sources { super.sources() ++ Some(PathRef(millSourcePath / "js" / "src")) } 31 | def dut: RVDecoderDBJSModule 32 | override def moduleDeps = super.moduleDeps ++ Some(dut) 33 | } 34 | -------------------------------------------------------------------------------- /rvdecoderdb/src/Utils.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb 5 | 6 | object Utils { 7 | def isR(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("rd", "rs1", "rs2") 8 | 9 | def isI(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("rd", "rs1", "imm12") 10 | 11 | def isS(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("imm12lo", "rs1", "rs2", "imm12hi") 12 | 13 | def isB(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("bimm12lo", "rs1", "rs2", "bimm12hi") 14 | 15 | def isU(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("rd", "imm20") 16 | 17 | def isJ(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("rd", "jimm20") 18 | 19 | def isR4(instruction: Instruction): Boolean = instruction.args.map(_.name) == Seq("rd", "rs1", "rs2", "rs3") 20 | 21 | // some general helper to sort instruction out 22 | def isFP(instruction: Instruction): Boolean = Seq( 23 | "rv_d", 24 | "rv_f", 25 | "rv_q", 26 | "rv64_zfh", 27 | "rv_d_zfh", 28 | "rv_q_zfh", 29 | "rv_zfh", 30 | // unratified 31 | "rv_zfh_zfa" 32 | ).exists(instruction.instructionSets.map(_.name).contains) 33 | 34 | def readRs1(instruction: Instruction): Boolean = instruction.args.map(_.name).contains("rs1") 35 | 36 | def readRs2(instruction: Instruction): Boolean = instruction.args.map(_.name).contains("rs2") 37 | 38 | def writeRd(instruction: Instruction): Boolean = instruction.args.map(_.name).contains("rd") 39 | } 40 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "rvdecoderdb"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 6 | flake-parts = { 7 | url = "github:hercules-ci/flake-parts"; 8 | inputs.nixpkgs-lib.follows = "nixpkgs"; 9 | }; 10 | treefmt-nix = { 11 | url = "github:numtide/treefmt-nix"; 12 | inputs.nixpkgs.follows = "nixpkgs"; 13 | }; 14 | # Don't follow mill-ivy-fetcher to this flake, it needs a pinned nixpkgs. 15 | mill-ivy-fetcher.url = "github:Avimitin/mill-ivy-fetcher"; 16 | }; 17 | 18 | outputs = 19 | { 20 | self, 21 | nixpkgs, 22 | mill-ivy-fetcher, 23 | flake-parts, 24 | treefmt-nix, 25 | ... 26 | }@inputs: 27 | let 28 | overlay = import ./overlay.nix; 29 | in 30 | flake-parts.lib.mkFlake { inherit inputs; } (_: { 31 | systems = builtins.filter ( 32 | system: builtins.hasAttr system nixpkgs.legacyPackages 33 | ) nixpkgs.lib.platforms.all; 34 | 35 | flake = { 36 | overlays.default = overlay; 37 | }; 38 | 39 | imports = [ 40 | inputs.treefmt-nix.flakeModule 41 | ]; 42 | 43 | perSystem = 44 | { system, ... }: 45 | let 46 | pkgs = import nixpkgs { 47 | inherit system; 48 | overlays = [ 49 | overlay 50 | mill-ivy-fetcher.overlays.default 51 | ]; 52 | }; 53 | in 54 | { 55 | _module.args.pkgs = pkgs; 56 | 57 | legacyPackages = pkgs; 58 | 59 | devShells = { 60 | default = pkgs.mkShell { 61 | buildInputs = [ 62 | pkgs.mill 63 | pkgs.espresso 64 | ]; 65 | }; 66 | }; 67 | 68 | treefmt = { 69 | projectRootFile = "flake.nix"; 70 | settings.on-unmatched = "debug"; 71 | programs = { 72 | nixfmt.enable = true; 73 | scalafmt.enable = true; 74 | rustfmt.enable = true; 75 | }; 76 | settings.formatter = { 77 | nixfmt.excludes = [ "*/generated.nix" ]; 78 | scalafmt.includes = [ 79 | "*.sc" 80 | "*.mill" 81 | ]; 82 | }; 83 | }; 84 | }; 85 | }); 86 | } 87 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/RawInstruction.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | import org.chipsalliance.rvdecoderdb.Encoding 7 | 8 | class RawInstruction(tokens: Seq[Token]) { 9 | def importInstruction: Option[(String, String)] = Option 10 | .when(tokens.head == Import && tokens.exists(t => t.isInstanceOf[RefInst]))(tokens.collectFirst { case r: RefInst => 11 | (r.set, r.inst) 12 | }.get) 13 | 14 | def importInstructionSet: Option[String] = Option 15 | .when(tokens.head == Import && importInstruction.isEmpty)(tokens.collectFirst { case str: BareStr => 16 | str.name 17 | }) 18 | .flatten 19 | 20 | def pseudoInstruction: Option[(String, String)] = Option 21 | .when(tokens.head == PseudoOp)(tokens.collectFirst { case r: RefInst => 22 | (r.set, r.inst) 23 | }.get) 24 | 25 | def isNormal: Boolean = 26 | importInstruction.isEmpty && 27 | importInstructionSet.isEmpty && 28 | pseudoInstruction.isEmpty 29 | 30 | def nameOpt: Option[String] = Option 31 | .when(importInstruction.isEmpty && importInstructionSet.isEmpty)(tokens.collectFirst { case str: BareStr => 32 | str.name 33 | }) 34 | .flatten 35 | 36 | def name: String = nameOpt.getOrElse(throw new Exception(s"error at token: ${tokens.mkString(",")}")) 37 | 38 | def args: Seq[ArgLUT] = tokens.flatMap { 39 | case a: ArgLUT => Some(a) 40 | case _ => None 41 | } 42 | 43 | def encoding: Encoding = tokens 44 | .flatMap { 45 | case b: BitValue => Some(Encoding(b.value << b.bit.toInt, BigInt(1) << b.bit.toInt)) 46 | case b: FixedRangeValue => 47 | Some(Encoding(b.value << b.lsb.toInt, (b.lsb.toInt to b.msb.toInt).map(BigInt(1) << _).sum)) 48 | case _ => None 49 | } 50 | .reduce((l, r) => Encoding(l.value + r.value, l.mask + r.mask)) 51 | 52 | // def encoding: Encoding = 53 | 54 | override def toString: String = { 55 | if (importInstruction.nonEmpty) s"import instruction: ${importInstruction.get._2} from ${importInstruction.get._1}" 56 | else if (importInstructionSet.nonEmpty) s"import set: ${importInstructionSet.get}" 57 | else if (pseudoInstruction.nonEmpty) s"$name(pseudo ${pseudoInstruction.get._2} from ${pseudoInstruction.get._1})" 58 | else s"$name:$encoding" 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /rvdecoderdb/src/Instruction.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb 5 | 6 | import upickle.default.{macroRW, ReadWriter => RW} 7 | 8 | object Encoding { 9 | implicit val rw: RW[Encoding] = macroRW 10 | 11 | def fromString(str: String): Encoding = { 12 | require(str.length == 32) 13 | Encoding( 14 | str.reverse.zipWithIndex.map { case (c, i) => 15 | c match { 16 | case '1' => BigInt(1) << i 17 | case '0' => BigInt(0) 18 | case '?' => BigInt(0) 19 | } 20 | }.sum, 21 | str.reverse.zipWithIndex.map { case (c, i) => 22 | c match { 23 | case '1' => BigInt(1) << i 24 | case '0' => BigInt(1) << i 25 | case '?' => BigInt(0) 26 | } 27 | }.sum 28 | ) 29 | } 30 | } 31 | 32 | /** Like chisel3.BitPat, this is a 32-bits field stores the Instruction encoding. */ 33 | case class Encoding(value: BigInt, mask: BigInt) { 34 | def toBitMask(bit_pat: String) = 35 | Seq.tabulate(32)(i => if (!mask.testBit(i)) bit_pat else if (value.testBit(i)) "1" else "0").reverse.mkString 36 | override def toString = toBitMask("?") 37 | def mkString(bit_pat: String) = toBitMask(bit_pat) 38 | } 39 | 40 | object Arg { 41 | implicit val rw: RW[Arg] = macroRW 42 | } 43 | 44 | case class Arg(name: String, msb: Int, lsb: Int) { 45 | override def toString: String = name 46 | } 47 | 48 | object InstructionSet { 49 | implicit val rw: RW[InstructionSet] = macroRW 50 | } 51 | 52 | /** represent an riscv sub instruction set, aka a file in riscv-opcodes. */ 53 | case class InstructionSet(name: String) 54 | 55 | object Instruction { 56 | implicit val rw: RW[Instruction] = macroRW 57 | } 58 | 59 | /** All information can be parsed from riscv/riscv-opcode. 60 | * 61 | * @param name 62 | * name of this instruction 63 | * @param encoding 64 | * encoding of this instruction 65 | * @param instructionSets 66 | * base instruction set that this instruction lives in 67 | * @param pseudoFrom 68 | * if this is defined, means this instruction is an Pseudo Instruction from another instruction 69 | * @param ratified 70 | * true if this instruction is ratified 71 | */ 72 | case class Instruction( 73 | name: String, 74 | encoding: Encoding, 75 | args: Seq[Arg], 76 | instructionSets: Seq[InstructionSet], 77 | pseudoFrom: Option[Instruction], 78 | ratified: Boolean, 79 | custom: Boolean 80 | ) { 81 | require(!custom || (custom && !ratified), "All custom instructions are unratified.") 82 | 83 | def instructionSet: InstructionSet = instructionSets.head 84 | 85 | def importTo: Seq[InstructionSet] = instructionSets.drop(1) 86 | 87 | def simpleName = s"${instructionSet.name}::$name" 88 | 89 | override def toString: String = 90 | instructionSet.name.padTo(16, ' ') + 91 | s"$name${pseudoFrom.map(_.simpleName).map(s => s" [pseudo $s]").getOrElse("")}".padTo(48, ' ') + 92 | s"[${Seq( 93 | Option.when(Utils.isR(this))("R "), 94 | Option.when(Utils.isR4(this))("R4"), 95 | Option.when(Utils.isI(this))("I "), 96 | Option.when(Utils.isS(this))("S "), 97 | Option.when(Utils.isB(this))("B "), 98 | Option.when(Utils.isU(this))("U "), 99 | Option.when(Utils.isJ(this))("J ") 100 | ).flatten.headOption.getOrElse(" ")}]".padTo(4, ' ') + 101 | args.mkString(",").padTo(40, ' ') + 102 | encoding.toString.padTo(48, ' ') + 103 | ("[" + 104 | Option.when(custom)("CUSTOM ").getOrElse(Option.when(!ratified)("UNRATIFIED ").getOrElse("")) + 105 | (if (importTo.nonEmpty) Some(importTo.map(_.name).mkString(",")) else None) 106 | .map(s => s"import to $s") 107 | .getOrElse("") + 108 | "]").replace(" ]", "]").replace("[]", "") 109 | } 110 | -------------------------------------------------------------------------------- /rvdecoderdb/jvm/src/package.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance 5 | 6 | /** Parse instructions from riscv/riscv-opcodes */ 7 | package object rvdecoderdb { 8 | def instructions(riscvOpcodes: os.Path, customOpCodes: Iterable[os.Path] = None): Iterable[Instruction] = { 9 | def isInstructionSetFile(p: os.Path) = { 10 | if (os.isFile(p)) { 11 | val base = p.baseName 12 | base.startsWith("rv128_") || 13 | base.startsWith("rv64_") || 14 | base.startsWith("rv32_") || 15 | base.startsWith("rv_") 16 | } else { 17 | false 18 | } 19 | } 20 | 21 | val official = os 22 | .walk(riscvOpcodes) 23 | .filter(isInstructionSetFile) 24 | .map(f => (f.baseName, os.read(f), !f.segments.contains("unratified"), false)) 25 | 26 | val custom = customOpCodes 27 | .flatMap(p => { 28 | if (isInstructionSetFile(p)) { 29 | Seq((p.baseName, os.read(p), false, true)) 30 | } else { 31 | os.walk(p) 32 | .filter(isInstructionSetFile) 33 | .map(f => (f.baseName, os.read(f), false, true)) 34 | } 35 | }) 36 | 37 | parser.parse( 38 | official ++ custom, 39 | argLut(riscvOpcodes, customOpCodes).view.mapValues(a => (a.lsb, a.msb)).toMap 40 | ) 41 | } 42 | 43 | def argLut(riscvOpcodes: os.Path, customOpCodes: Iterable[os.Path] = None): Map[String, Arg] = { 44 | def to_args(line: String) = line.replace(", ", ",").replace("\"", "") match { 45 | case s"$name,$pos0,$pos1" => name -> Arg(name, pos0.toInt, pos1.toInt) 46 | case lstr => throw new Exception(s"invalid arg lut line: ${lstr}") 47 | } 48 | 49 | val official = os.read 50 | .lines(riscvOpcodes / "arg_lut.csv") 51 | .map(to_args) 52 | 53 | val custom = customOpCodes 54 | .flatMap(p => 55 | os.read 56 | .lines(p / "arg_lut.csv") 57 | .map(to_args) 58 | ) 59 | 60 | (official ++ custom).toMap 61 | } 62 | 63 | def causes(riscvOpcodes: os.Path): Map[String, Int] = os 64 | .read(riscvOpcodes / "causes.csv") 65 | .split("\n") 66 | .map { str => 67 | val l = str 68 | .replace(", ", ",") 69 | .replace("\"", "") 70 | .split(",") 71 | l(1) -> java.lang.Long.decode(l(0)).toInt 72 | } 73 | .toMap 74 | 75 | def csrs(riscvOpcodes: os.Path): Seq[(String, Int)] = 76 | Seq(os.read(riscvOpcodes / "csrs.csv"), os.read(riscvOpcodes / "csrs32.csv")).flatMap( 77 | _.split("\n") 78 | .map { str => 79 | val l = str 80 | .replace(" ", "") 81 | .replace("\"", "") 82 | .replace("\'", "") 83 | .split(",") 84 | l(1) -> java.lang.Long.decode(l(0)).toInt 85 | } 86 | .toMap 87 | ) 88 | 89 | @deprecated("extractResource is removed") 90 | def extractResource(cl: ClassLoader): os.Path = { 91 | val rvdecoderdbPath = os.temp.dir() 92 | val rvdecoderdbTar = os.temp(os.read(os.resource(cl) / "riscv-opcodes.tar")) 93 | os.proc("tar", "xf", rvdecoderdbTar).call(rvdecoderdbPath) 94 | rvdecoderdbPath 95 | } 96 | 97 | @deprecated("extractCustomResource is removed") 98 | def extractCustomResource(cl: ClassLoader): os.Path = { 99 | val rvdecoderdbPath = os.temp.dir() 100 | val rvdecoderdbTar = os.temp(os.read(os.resource(cl) / "riscv-custom-opcodes.tar")) 101 | os.proc("tar", "xf", rvdecoderdbTar).call(rvdecoderdbPath) 102 | rvdecoderdbPath 103 | } 104 | 105 | @deprecated("remove fromFile") 106 | object fromFile { 107 | def instructions(riscvOpcodes: os.Path, custom: Iterable[os.Path] = Seq.empty): Iterable[Instruction] = 108 | rvdecoderdb.instructions(riscvOpcodes, custom) 109 | def argLut(riscvOpcodes: os.Path): Map[String, Arg] = rvdecoderdb.argLut(riscvOpcodes) 110 | def causes(riscvOpcodes: os.Path): Map[String, Int] = rvdecoderdb.causes(riscvOpcodes) 111 | def csrs(riscvOpcodes: os.Path): Seq[(String, Int)] = rvdecoderdb.csrs(riscvOpcodes) 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-parts": { 4 | "inputs": { 5 | "nixpkgs-lib": [ 6 | "nixpkgs" 7 | ] 8 | }, 9 | "locked": { 10 | "lastModified": 1743550720, 11 | "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 12 | "owner": "hercules-ci", 13 | "repo": "flake-parts", 14 | "rev": "c621e8422220273271f52058f618c94e405bb0f5", 15 | "type": "github" 16 | }, 17 | "original": { 18 | "owner": "hercules-ci", 19 | "repo": "flake-parts", 20 | "type": "github" 21 | } 22 | }, 23 | "flake-parts_2": { 24 | "inputs": { 25 | "nixpkgs-lib": [ 26 | "mill-ivy-fetcher", 27 | "nixpkgs" 28 | ] 29 | }, 30 | "locked": { 31 | "lastModified": 1743550720, 32 | "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 33 | "owner": "hercules-ci", 34 | "repo": "flake-parts", 35 | "rev": "c621e8422220273271f52058f618c94e405bb0f5", 36 | "type": "github" 37 | }, 38 | "original": { 39 | "owner": "hercules-ci", 40 | "repo": "flake-parts", 41 | "type": "github" 42 | } 43 | }, 44 | "mill-ivy-fetcher": { 45 | "inputs": { 46 | "flake-parts": "flake-parts_2", 47 | "nixpkgs": "nixpkgs", 48 | "treefmt-nix": "treefmt-nix" 49 | }, 50 | "locked": { 51 | "lastModified": 1744460023, 52 | "narHash": "sha256-ZxN/5XZqFNlrIKV91ZpegRn+qZ4g8LTC0Ed8lAyyBvY=", 53 | "owner": "Avimitin", 54 | "repo": "mill-ivy-fetcher", 55 | "rev": "c528c50d32ba2375f8a283390bcdb4c626140a1a", 56 | "type": "github" 57 | }, 58 | "original": { 59 | "owner": "Avimitin", 60 | "repo": "mill-ivy-fetcher", 61 | "type": "github" 62 | } 63 | }, 64 | "nixpkgs": { 65 | "locked": { 66 | "lastModified": 1744316434, 67 | "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=", 68 | "owner": "nixos", 69 | "repo": "nixpkgs", 70 | "rev": "d19cf9dfc633816a437204555afeb9e722386b76", 71 | "type": "github" 72 | }, 73 | "original": { 74 | "owner": "nixos", 75 | "ref": "nixpkgs-unstable", 76 | "repo": "nixpkgs", 77 | "type": "github" 78 | } 79 | }, 80 | "nixpkgs_2": { 81 | "locked": { 82 | "lastModified": 1744536153, 83 | "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", 84 | "owner": "nixos", 85 | "repo": "nixpkgs", 86 | "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", 87 | "type": "github" 88 | }, 89 | "original": { 90 | "owner": "nixos", 91 | "ref": "nixpkgs-unstable", 92 | "repo": "nixpkgs", 93 | "type": "github" 94 | } 95 | }, 96 | "root": { 97 | "inputs": { 98 | "flake-parts": "flake-parts", 99 | "mill-ivy-fetcher": "mill-ivy-fetcher", 100 | "nixpkgs": "nixpkgs_2", 101 | "treefmt-nix": "treefmt-nix_2" 102 | } 103 | }, 104 | "treefmt-nix": { 105 | "inputs": { 106 | "nixpkgs": [ 107 | "mill-ivy-fetcher", 108 | "nixpkgs" 109 | ] 110 | }, 111 | "locked": { 112 | "lastModified": 1743748085, 113 | "narHash": "sha256-uhjnlaVTWo5iD3LXics1rp9gaKgDRQj6660+gbUU3cE=", 114 | "owner": "numtide", 115 | "repo": "treefmt-nix", 116 | "rev": "815e4121d6a5d504c0f96e5be2dd7f871e4fd99d", 117 | "type": "github" 118 | }, 119 | "original": { 120 | "owner": "numtide", 121 | "repo": "treefmt-nix", 122 | "type": "github" 123 | } 124 | }, 125 | "treefmt-nix_2": { 126 | "inputs": { 127 | "nixpkgs": [ 128 | "nixpkgs" 129 | ] 130 | }, 131 | "locked": { 132 | "lastModified": 1743748085, 133 | "narHash": "sha256-uhjnlaVTWo5iD3LXics1rp9gaKgDRQj6660+gbUU3cE=", 134 | "owner": "numtide", 135 | "repo": "treefmt-nix", 136 | "rev": "815e4121d6a5d504c0f96e5be2dd7f871e4fd99d", 137 | "type": "github" 138 | }, 139 | "original": { 140 | "owner": "numtide", 141 | "repo": "treefmt-nix", 142 | "type": "github" 143 | } 144 | } 145 | }, 146 | "root": "root", 147 | "version": 7 148 | } 149 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/ArgLUT.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | class ArgLUT(val name: String, val msb: Int, val lsb: Int) extends Token { 7 | override def toString: String = s"$name($msb..$lsb)" 8 | } 9 | 10 | object ArgLUT { 11 | def unapply(str: String): Option[ArgLUT] = all.get(str) 12 | // TODO: parse from python for syncing up with upstreams 13 | def all = Map( 14 | "rd" -> new ArgLUT("rd", 11, 7), 15 | "rt" -> new ArgLUT("rt", 19, 15), 16 | "rs1" -> new ArgLUT("rs1", 19, 15), 17 | "rs2" -> new ArgLUT("rs2", 24, 20), 18 | "rs3" -> new ArgLUT("rs3", 31, 27), 19 | "aqrl" -> new ArgLUT("aqrl", 26, 25), 20 | "aq" -> new ArgLUT("aq", 26, 26), 21 | "rl" -> new ArgLUT("rl", 25, 25), 22 | "fm" -> new ArgLUT("fm", 31, 28), 23 | "pred" -> new ArgLUT("pred", 27, 24), 24 | "succ" -> new ArgLUT("succ", 23, 20), 25 | "rm" -> new ArgLUT("rm", 14, 12), 26 | "funct3" -> new ArgLUT("funct3", 14, 12), 27 | "funct2" -> new ArgLUT("funct2", 26, 25), 28 | "imm20" -> new ArgLUT("imm20", 31, 12), 29 | "jimm20" -> new ArgLUT("jimm20", 31, 12), 30 | "imm12" -> new ArgLUT("imm12", 31, 20), 31 | "csr" -> new ArgLUT("csr", 31, 20), 32 | "imm12hi" -> new ArgLUT("imm12hi", 31, 25), 33 | "bimm12hi" -> new ArgLUT("bimm12hi", 31, 25), 34 | "imm12lo" -> new ArgLUT("imm12lo", 11, 7), 35 | "bimm12lo" -> new ArgLUT("bimm12lo", 11, 7), 36 | "zimm" -> new ArgLUT("zimm", 19, 15), 37 | "shamtq" -> new ArgLUT("shamtq", 26, 20), 38 | "shamtw" -> new ArgLUT("shamtw", 24, 20), 39 | "shamtw4" -> new ArgLUT("shamtw4", 23, 20), 40 | "shamtd" -> new ArgLUT("shamtd", 25, 20), 41 | "bs" -> new ArgLUT("bs", 31, 30), 42 | "rnum" -> new ArgLUT("rnum", 23, 20), 43 | "rc" -> new ArgLUT("rc", 29, 25), 44 | "imm2" -> new ArgLUT("imm2", 21, 20), 45 | "imm3" -> new ArgLUT("imm3", 22, 20), 46 | "imm4" -> new ArgLUT("imm4", 23, 20), 47 | "imm5" -> new ArgLUT("imm5", 24, 20), 48 | "imm6" -> new ArgLUT("imm6", 25, 20), 49 | "zimm" -> new ArgLUT("zimm", 19, 15), 50 | "opcode" -> new ArgLUT("opcode", 6, 0), 51 | "funct7" -> new ArgLUT("funct7", 31, 25), 52 | "vd" -> new ArgLUT("vd", 11, 7), 53 | "vs3" -> new ArgLUT("vs3", 11, 7), 54 | "vs1" -> new ArgLUT("vs1", 19, 15), 55 | "vs2" -> new ArgLUT("vs2", 24, 20), 56 | "vm" -> new ArgLUT("vm", 25, 25), 57 | "wd" -> new ArgLUT("wd", 26, 26), 58 | "amoop" -> new ArgLUT("amoop", 31, 27), 59 | "nf" -> new ArgLUT("nf", 31, 29), 60 | "simm5" -> new ArgLUT("simm5", 19, 15), 61 | "zimm5" -> new ArgLUT("zimm5", 19, 15), 62 | "zimm10" -> new ArgLUT("zimm10", 29, 20), 63 | "zimm11" -> new ArgLUT("zimm11", 30, 20), 64 | "zimm6hi" -> new ArgLUT("zimm6hi", 26, 26), 65 | "zimm6lo" -> new ArgLUT("zimm6lo", 19, 15), 66 | "c_nzuimm10" -> new ArgLUT("c_nzuimm10", 12, 5), 67 | "c_uimm7lo" -> new ArgLUT("c_uimm7lo", 6, 5), 68 | "c_uimm7hi" -> new ArgLUT("c_uimm7hi", 12, 10), 69 | "c_uimm8lo" -> new ArgLUT("c_uimm8lo", 6, 5), 70 | "c_uimm8hi" -> new ArgLUT("c_uimm8hi", 12, 10), 71 | "c_uimm9lo" -> new ArgLUT("c_uimm9lo", 6, 5), 72 | "c_uimm9hi" -> new ArgLUT("c_uimm9hi", 12, 10), 73 | "c_nzimm6lo" -> new ArgLUT("c_nzimm6lo", 6, 2), 74 | "c_nzimm6hi" -> new ArgLUT("c_nzimm6hi", 12, 12), 75 | "c_imm6lo" -> new ArgLUT("c_imm6lo", 6, 2), 76 | "c_imm6hi" -> new ArgLUT("c_imm6hi", 12, 12), 77 | "c_nzimm10hi" -> new ArgLUT("c_nzimm10hi", 12, 12), 78 | "c_nzimm10lo" -> new ArgLUT("c_nzimm10lo", 6, 2), 79 | "c_nzimm18hi" -> new ArgLUT("c_nzimm18hi", 12, 12), 80 | "c_nzimm18lo" -> new ArgLUT("c_nzimm18lo", 6, 2), 81 | "c_imm12" -> new ArgLUT("c_imm12", 12, 2), 82 | "c_bimm9lo" -> new ArgLUT("c_bimm9lo", 6, 2), 83 | "c_bimm9hi" -> new ArgLUT("c_bimm9hi", 12, 10), 84 | "c_nzuimm5" -> new ArgLUT("c_nzuimm5", 6, 2), 85 | "c_nzuimm6lo" -> new ArgLUT("c_nzuimm6lo", 6, 2), 86 | "c_nzuimm6hi" -> new ArgLUT("c_nzuimm6hi", 12, 12), 87 | "c_uimm8splo" -> new ArgLUT("c_uimm8splo", 6, 2), 88 | "c_uimm8sphi" -> new ArgLUT("c_uimm8sphi", 12, 12), 89 | "c_uimm8sp_s" -> new ArgLUT("c_uimm8sp_s", 12, 7), 90 | "c_uimm10splo" -> new ArgLUT("c_uimm10splo", 6, 2), 91 | "c_uimm10sphi" -> new ArgLUT("c_uimm10sphi", 12, 12), 92 | "c_uimm9splo" -> new ArgLUT("c_uimm9splo", 6, 2), 93 | "c_uimm9sphi" -> new ArgLUT("c_uimm9sphi", 12, 12), 94 | "c_uimm10sp_s" -> new ArgLUT("c_uimm10sp_s", 12, 7), 95 | "c_uimm9sp_s" -> new ArgLUT("c_uimm9sp_s", 12, 7), 96 | "c_uimm2" -> new ArgLUT("c_uimm2", 6, 5), 97 | "c_uimm1" -> new ArgLUT("c_uimm1", 5, 5), 98 | "c_rlist" -> new ArgLUT("c_rlist", 7, 4), 99 | "c_spimm" -> new ArgLUT("c_spimm", 3, 2), 100 | "c_index" -> new ArgLUT("c_index", 9, 2), 101 | "rs1_p" -> new ArgLUT("rs1_p", 9, 7), 102 | "rs2_p" -> new ArgLUT("rs2_p", 4, 2), 103 | "rd_p" -> new ArgLUT("rd_p", 4, 2), 104 | "rd_rs1_n0" -> new ArgLUT("rd_rs1_n0", 11, 7), 105 | "rd_rs1_p" -> new ArgLUT("rd_rs1_p", 9, 7), 106 | "rd_rs1" -> new ArgLUT("rd_rs1", 11, 7), 107 | "rd_n2" -> new ArgLUT("rd_n2", 11, 7), 108 | "rd_n0" -> new ArgLUT("rd_n0", 11, 7), 109 | "rs1_n0" -> new ArgLUT("rs1_n0", 11, 7), 110 | "c_rs2_n0" -> new ArgLUT("c_rs2_n0", 6, 2), 111 | "c_rs1_n0" -> new ArgLUT("c_rs1_n0", 11, 7), 112 | "c_rs2" -> new ArgLUT("c_rs2", 6, 2), 113 | "c_sreg1" -> new ArgLUT("c_sreg1", 9, 7), 114 | "c_sreg2" -> new ArgLUT("c_sreg2", 4, 2) 115 | ) 116 | } 117 | -------------------------------------------------------------------------------- /rvdecoderdb/src/parser/parse.scala: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // SPDX-FileCopyrightText: 2023 Jiuyang Liu 3 | 4 | package org.chipsalliance.rvdecoderdb.parser 5 | 6 | import org.chipsalliance.rvdecoderdb.{Arg, Instruction, InstructionSet} 7 | 8 | object parse { 9 | def apply( 10 | opcodeFiles: Iterable[(String, String, Boolean, Boolean)], 11 | argLut: Map[String, (Int, Int)] 12 | ): Iterable[Instruction] = { 13 | val rawInstructionSets: Iterable[RawInstructionSet] = opcodeFiles.map { 14 | case (instructionSet, content, ratified, custom) => 15 | RawInstructionSet( 16 | instructionSet, 17 | ratified, 18 | custom, 19 | content 20 | .split("\n") 21 | .map(_.trim) 22 | .filter(!_.startsWith("#")) 23 | .filter(_.nonEmpty) 24 | .map( 25 | _.split(" ") 26 | .filter(_.nonEmpty) 27 | .map { 28 | case "$import" => Import 29 | case "$pseudo_op" => PseudoOp 30 | case RefInst(i) => i 31 | case SameValue(s) => s 32 | case FixedRangeValue(f) => f 33 | case BitValue(b) => b 34 | case ArgLUT(a) => a 35 | case BareStr(i) => i 36 | } 37 | .toIndexedSeq 38 | ) 39 | .toIndexedSeq 40 | .map(new RawInstruction(_)) 41 | ) 42 | } 43 | // for general instructions which doesn't collide. 44 | val instructionSetsMap = collection.mutable.HashMap.empty[String, Seq[String]] 45 | val ratifiedMap = collection.mutable.HashMap.empty[String, Boolean] 46 | val argsMap = collection.mutable.HashMap.empty[String, Seq[Arg]] 47 | val customMap = collection.mutable.HashMap.empty[String, Boolean] 48 | val encodingMap = collection.mutable.HashMap.empty[String, org.chipsalliance.rvdecoderdb.Encoding] 49 | // for pseudo instructions, they only exist in on instruction set, and pseudo from another general instruction 50 | // thus key should be (set:String, name: String) 51 | val pseudoFromMap = collection.mutable.HashMap.empty[(String, String), String] 52 | val pseudoCustomMap = collection.mutable.HashMap.empty[(String, String), Boolean] 53 | val pseudoArgsMap = collection.mutable.HashMap.empty[(String, String), Seq[Arg]] 54 | val pseudoRatifiedMap = collection.mutable.HashMap.empty[(String, String), Boolean] 55 | val pseudoEncodingMap = collection.mutable.HashMap.empty[(String, String), org.chipsalliance.rvdecoderdb.Encoding] 56 | 57 | // create normal instructions 58 | rawInstructionSets.foreach { set: RawInstructionSet => 59 | set.rawInstructions.foreach { 60 | case rawInst: RawInstruction if rawInst.isNormal => 61 | require( 62 | instructionSetsMap.get(rawInst.name).isEmpty, 63 | s"redefined instruction: ${rawInst.name} in ${instructionSetsMap(rawInst.name).head} and ${set.name}" 64 | ) 65 | instructionSetsMap.update(rawInst.name, Seq(set.name)) 66 | ratifiedMap.update(rawInst.name, set.ratified) 67 | customMap.update(rawInst.name, set.custom) 68 | encodingMap.update(rawInst.name, rawInst.encoding) 69 | argsMap.update(rawInst.name, rawInst.args.map(al => Arg(al.name, argLut(al.name)._1, argLut(al.name)._2))) 70 | case rawInst: RawInstruction if rawInst.pseudoInstruction.isDefined => 71 | val k = (set.name, rawInst.name) 72 | pseudoFromMap.update(k, rawInst.pseudoInstruction.get._2) 73 | pseudoRatifiedMap.update(k, set.ratified) 74 | pseudoCustomMap.update(k, set.custom) 75 | pseudoEncodingMap.update(k, rawInst.encoding) 76 | pseudoArgsMap.update(k, rawInst.args.map(al => Arg(al.name, argLut(al.name)._1, argLut(al.name)._2))) 77 | case _ => 78 | } 79 | } 80 | 81 | // imported_instructions - these are instructions which are borrowed from an extension into a new/different extension/sub-extension. Only regular instructions can be imported. Pseudo-op or already imported instructions cannot be imported. 82 | rawInstructionSets.foreach { set: RawInstructionSet => 83 | set.rawInstructions.foreach { 84 | case rawInst: RawInstruction if rawInst.importInstructionSet.isDefined => 85 | instructionSetsMap.filter(_._2.head == rawInst.importInstructionSet.get).map { case (k, v) => 86 | instructionSetsMap.update(k, v ++ Some(set.name)) 87 | } 88 | case rawInst: RawInstruction if rawInst.importInstruction.isDefined => 89 | val k = rawInst.importInstruction.get._2 90 | val v = instructionSetsMap(k) 91 | instructionSetsMap.update(k, v ++ Some(set.name)) 92 | case _ => 93 | } 94 | } 95 | 96 | val instructions = encodingMap.keys.map(instr => 97 | Instruction( 98 | instr, 99 | encodingMap(instr), 100 | argsMap(instr).sortBy(_.lsb), { 101 | val sets = instructionSetsMap(instr).map(InstructionSet.apply) 102 | sets.head +: sets.tail.sortBy(_.name) 103 | }, 104 | None, 105 | ratifiedMap(instr), 106 | customMap(instr) 107 | ) 108 | ) 109 | 110 | val pseudoInstructions = pseudoEncodingMap.keys.map(instr => 111 | Instruction( 112 | instr._2, 113 | pseudoEncodingMap(instr), 114 | pseudoArgsMap(instr).sortBy(_.lsb), 115 | Seq(InstructionSet(instr._1)).sortBy(_.name), 116 | Some( 117 | instructions 118 | .find(_.name == pseudoFromMap(instr)) 119 | .getOrElse(throw new Exception("pseudo not found")) 120 | ), 121 | pseudoRatifiedMap(instr), 122 | pseudoCustomMap(instr) 123 | ) 124 | ) 125 | 126 | (instructions ++ pseudoInstructions).toSeq 127 | // sort instructions by default 128 | .sortBy(s => 129 | ( 130 | // sort by ratified, custom, unratified 131 | (s.ratified, s.custom) match { 132 | case (true, false) => 0 133 | case (false, true) => 1 134 | case (false, false) => 2 135 | case (true, true) => throw new Exception("unreachable") 136 | }, 137 | // sort by removing rv_, rv32_, rv64_, rv128_ 138 | s.instructionSets.head.name.split("_").tail.mkString("_"), 139 | // sort by rv_, rv32_, rv64_, rv128_ 140 | s.instructionSets.head.name.split("_").head match { 141 | case "rv" => 0 142 | case "rv64" => 64 143 | case "rv32" => 32 144 | case "rv128" => 128 145 | } 146 | ) 147 | ) 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /nix/rvdecoderdb-jvm-mill-lock.nix: -------------------------------------------------------------------------------- 1 | { fetchurl }: 2 | let 3 | fetchMaven = 4 | { 5 | name, 6 | urls, 7 | hash, 8 | installPath, 9 | }: 10 | with builtins; 11 | let 12 | firstUrl = head urls; 13 | otherUrls = filter (elem: elem != firstUrl) urls; 14 | in 15 | fetchurl { 16 | inherit name hash; 17 | passthru = { inherit installPath; }; 18 | url = firstUrl; 19 | recursiveHash = true; 20 | downloadToTemp = true; 21 | postFetch = 22 | '' 23 | mkdir -p "$out" 24 | cp -v "$downloadedFile" "$out/${baseNameOf firstUrl}" 25 | '' 26 | + concatStringsSep "\n" ( 27 | map ( 28 | elem: 29 | let 30 | filename = baseNameOf elem; 31 | in 32 | '' 33 | downloadedFile=$TMPDIR/${filename} 34 | tryDownload ${elem} 35 | cp -v "$TMPDIR/${filename}" "$out/" 36 | '' 37 | ) otherUrls 38 | ); 39 | }; 40 | in 41 | { 42 | 43 | "com.eed3si9n_shaded-jawn-parser_2.13-1.3.2" = fetchMaven { 44 | name = "com.eed3si9n_shaded-jawn-parser_2.13-1.3.2"; 45 | urls = [ 46 | "https://repo1.maven.org/maven2/com/eed3si9n/shaded-jawn-parser_2.13/1.3.2/shaded-jawn-parser_2.13-1.3.2.jar" 47 | "https://repo1.maven.org/maven2/com/eed3si9n/shaded-jawn-parser_2.13/1.3.2/shaded-jawn-parser_2.13-1.3.2.pom" 48 | ]; 49 | hash = "sha256-k0UsS5J5CXho/H4FngEcxAkNJ2ZjpecqDmKBvxIMuBs="; 50 | installPath = "https/repo1.maven.org/maven2/com/eed3si9n/shaded-jawn-parser_2.13/1.3.2"; 51 | }; 52 | 53 | "com.eed3si9n_shaded-scalajson_2.13-1.0.0-M4" = fetchMaven { 54 | name = "com.eed3si9n_shaded-scalajson_2.13-1.0.0-M4"; 55 | urls = [ 56 | "https://repo1.maven.org/maven2/com/eed3si9n/shaded-scalajson_2.13/1.0.0-M4/shaded-scalajson_2.13-1.0.0-M4.jar" 57 | "https://repo1.maven.org/maven2/com/eed3si9n/shaded-scalajson_2.13/1.0.0-M4/shaded-scalajson_2.13-1.0.0-M4.pom" 58 | ]; 59 | hash = "sha256-JyvPek41KleFIS5g4bqLm+qUw5FlX51/rnvv/BT2pk0="; 60 | installPath = "https/repo1.maven.org/maven2/com/eed3si9n/shaded-scalajson_2.13/1.0.0-M4"; 61 | }; 62 | 63 | "com.eed3si9n_sjson-new-core_2.13-0.10.1" = fetchMaven { 64 | name = "com.eed3si9n_sjson-new-core_2.13-0.10.1"; 65 | urls = [ 66 | "https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_2.13/0.10.1/sjson-new-core_2.13-0.10.1.jar" 67 | "https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_2.13/0.10.1/sjson-new-core_2.13-0.10.1.pom" 68 | ]; 69 | hash = "sha256-sFHoDAQBTHju2EgUOPuO9tM/SLAdb8X/oNSnar0iYoQ="; 70 | installPath = "https/repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_2.13/0.10.1"; 71 | }; 72 | 73 | "com.eed3si9n_sjson-new-core_2.13-0.9.0" = fetchMaven { 74 | name = "com.eed3si9n_sjson-new-core_2.13-0.9.0"; 75 | urls = [ 76 | "https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_2.13/0.9.0/sjson-new-core_2.13-0.9.0.pom" 77 | ]; 78 | hash = "sha256-WlJsXRKj77jzoFN6d1V/+jAEl37mxggg85F3o8oD+bY="; 79 | installPath = "https/repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_2.13/0.9.0"; 80 | }; 81 | 82 | "com.eed3si9n_sjson-new-scalajson_2.13-0.10.1" = fetchMaven { 83 | name = "com.eed3si9n_sjson-new-scalajson_2.13-0.10.1"; 84 | urls = [ 85 | "https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_2.13/0.10.1/sjson-new-scalajson_2.13-0.10.1.jar" 86 | "https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_2.13/0.10.1/sjson-new-scalajson_2.13-0.10.1.pom" 87 | ]; 88 | hash = "sha256-DBGJ34c7lyt3m4o5ULwsRk1xPqtHHHKcNgU4nlO/dJY="; 89 | installPath = "https/repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_2.13/0.10.1"; 90 | }; 91 | 92 | "com.fasterxml_oss-parent-58" = fetchMaven { 93 | name = "com.fasterxml_oss-parent-58"; 94 | urls = [ "https://repo1.maven.org/maven2/com/fasterxml/oss-parent/58/oss-parent-58.pom" ]; 95 | hash = "sha256-wVCyn9u4Q5PMWSigrfRD2c90jacWbffIBxjXZq/VOSw="; 96 | installPath = "https/repo1.maven.org/maven2/com/fasterxml/oss-parent/58"; 97 | }; 98 | 99 | "com.lihaoyi_fansi_2.13-0.5.0" = fetchMaven { 100 | name = "com.lihaoyi_fansi_2.13-0.5.0"; 101 | urls = [ 102 | "https://repo1.maven.org/maven2/com/lihaoyi/fansi_2.13/0.5.0/fansi_2.13-0.5.0.jar" 103 | "https://repo1.maven.org/maven2/com/lihaoyi/fansi_2.13/0.5.0/fansi_2.13-0.5.0.pom" 104 | ]; 105 | hash = "sha256-iRaKoBsS7VOiQA0yj/wRNKo2NCHWteW0gM99kKObdns="; 106 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/fansi_2.13/0.5.0"; 107 | }; 108 | 109 | "com.lihaoyi_geny_2.13-1.0.0" = fetchMaven { 110 | name = "com.lihaoyi_geny_2.13-1.0.0"; 111 | urls = [ "https://repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.pom" ]; 112 | hash = "sha256-b6PdWNEVbHkSnKx9hE/3A9Hp3gomAdduu556YfOwt8c="; 113 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0"; 114 | }; 115 | 116 | "com.lihaoyi_geny_2.13-1.1.0" = fetchMaven { 117 | name = "com.lihaoyi_geny_2.13-1.1.0"; 118 | urls = [ 119 | "https://repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.0/geny_2.13-1.1.0.jar" 120 | "https://repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.0/geny_2.13-1.1.0.pom" 121 | ]; 122 | hash = "sha256-z9oB4D+MOO9BqE/1pf/E4NGbxHTHsoS9N9TPW/7ofA4="; 123 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.0"; 124 | }; 125 | 126 | "com.lihaoyi_geny_2.13-1.1.1" = fetchMaven { 127 | name = "com.lihaoyi_geny_2.13-1.1.1"; 128 | urls = [ 129 | "https://repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.1/geny_2.13-1.1.1.jar" 130 | "https://repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.1/geny_2.13-1.1.1.pom" 131 | ]; 132 | hash = "sha256-+gQ8X4oSRU30RdF5kE2Gn8nxmo3RJEShiEyyzUJd088="; 133 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.1.1"; 134 | }; 135 | 136 | "com.lihaoyi_mainargs_2.13-0.7.6" = fetchMaven { 137 | name = "com.lihaoyi_mainargs_2.13-0.7.6"; 138 | urls = [ 139 | "https://repo1.maven.org/maven2/com/lihaoyi/mainargs_2.13/0.7.6/mainargs_2.13-0.7.6.jar" 140 | "https://repo1.maven.org/maven2/com/lihaoyi/mainargs_2.13/0.7.6/mainargs_2.13-0.7.6.pom" 141 | ]; 142 | hash = "sha256-3VNPfYCWjDt/Sln9JRJ3/aqxZT72ZqwdVdE7ONtpGXM="; 143 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mainargs_2.13/0.7.6"; 144 | }; 145 | 146 | "com.lihaoyi_mill-main-api_2.13-0.12.8-1-46e216" = fetchMaven { 147 | name = "com.lihaoyi_mill-main-api_2.13-0.12.8-1-46e216"; 148 | urls = [ 149 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-main-api_2.13/0.12.8-1-46e216/mill-main-api_2.13-0.12.8-1-46e216.jar" 150 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-main-api_2.13/0.12.8-1-46e216/mill-main-api_2.13-0.12.8-1-46e216.pom" 151 | ]; 152 | hash = "sha256-4uPDK4pTRGogIMWaYpRhWg+D8C2gDvaX88/x47X06Ls="; 153 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-main-api_2.13/0.12.8-1-46e216"; 154 | }; 155 | 156 | "com.lihaoyi_mill-main-client-0.12.8-1-46e216" = fetchMaven { 157 | name = "com.lihaoyi_mill-main-client-0.12.8-1-46e216"; 158 | urls = [ 159 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-main-client/0.12.8-1-46e216/mill-main-client-0.12.8-1-46e216.jar" 160 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-main-client/0.12.8-1-46e216/mill-main-client-0.12.8-1-46e216.pom" 161 | ]; 162 | hash = "sha256-YMhZ7tABUyMCFXru2tjJK9IA73Z11n5w/RH5r4ia3q8="; 163 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-main-client/0.12.8-1-46e216"; 164 | }; 165 | 166 | "com.lihaoyi_mill-moduledefs_2.13-0.11.2" = fetchMaven { 167 | name = "com.lihaoyi_mill-moduledefs_2.13-0.11.2"; 168 | urls = [ 169 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-moduledefs_2.13/0.11.2/mill-moduledefs_2.13-0.11.2.jar" 170 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-moduledefs_2.13/0.11.2/mill-moduledefs_2.13-0.11.2.pom" 171 | ]; 172 | hash = "sha256-aTQtCHGjdmdIWSZgyv6EllswGet1c2gKJ0nuGxu+TpA="; 173 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-moduledefs_2.13/0.11.2"; 174 | }; 175 | 176 | "com.lihaoyi_mill-runner-linenumbers_2.13-0.12.8-1-46e216" = fetchMaven { 177 | name = "com.lihaoyi_mill-runner-linenumbers_2.13-0.12.8-1-46e216"; 178 | urls = [ 179 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-runner-linenumbers_2.13/0.12.8-1-46e216/mill-runner-linenumbers_2.13-0.12.8-1-46e216.jar" 180 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-runner-linenumbers_2.13/0.12.8-1-46e216/mill-runner-linenumbers_2.13-0.12.8-1-46e216.pom" 181 | ]; 182 | hash = "sha256-87nmecp5r+JPxSGxJIQz0wLptyW3yTilDK4CQaQlcsY="; 183 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-runner-linenumbers_2.13/0.12.8-1-46e216"; 184 | }; 185 | 186 | "com.lihaoyi_mill-scala-compiler-bridge_2.13.15-0.0.1" = fetchMaven { 187 | name = "com.lihaoyi_mill-scala-compiler-bridge_2.13.15-0.0.1"; 188 | urls = [ 189 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scala-compiler-bridge_2.13.15/0.0.1/mill-scala-compiler-bridge_2.13.15-0.0.1.jar" 190 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scala-compiler-bridge_2.13.15/0.0.1/mill-scala-compiler-bridge_2.13.15-0.0.1.pom" 191 | ]; 192 | hash = "sha256-uTyXjgTJGlaKl8jCUp9A6uDdma97ixL65GNVD9l9oOw="; 193 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-scala-compiler-bridge_2.13.15/0.0.1"; 194 | }; 195 | 196 | "com.lihaoyi_mill-scalalib-api_2.13-0.12.8-1-46e216" = fetchMaven { 197 | name = "com.lihaoyi_mill-scalalib-api_2.13-0.12.8-1-46e216"; 198 | urls = [ 199 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-api_2.13/0.12.8-1-46e216/mill-scalalib-api_2.13-0.12.8-1-46e216.jar" 200 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-api_2.13/0.12.8-1-46e216/mill-scalalib-api_2.13-0.12.8-1-46e216.pom" 201 | ]; 202 | hash = "sha256-8xD1JkQ+PyCOCEYO/mlpmkQ1PpqIRjHnlwjI46Q/TNY="; 203 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-api_2.13/0.12.8-1-46e216"; 204 | }; 205 | 206 | "com.lihaoyi_mill-scalalib-worker_2.13-0.12.8-1-46e216" = fetchMaven { 207 | name = "com.lihaoyi_mill-scalalib-worker_2.13-0.12.8-1-46e216"; 208 | urls = [ 209 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-worker_2.13/0.12.8-1-46e216/mill-scalalib-worker_2.13-0.12.8-1-46e216.jar" 210 | "https://repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-worker_2.13/0.12.8-1-46e216/mill-scalalib-worker_2.13-0.12.8-1-46e216.pom" 211 | ]; 212 | hash = "sha256-SJG7mGWhe+4a2xkmFWQqn/QUBb+RYMpSdB7b1jv7JQw="; 213 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-worker_2.13/0.12.8-1-46e216"; 214 | }; 215 | 216 | "com.lihaoyi_os-lib_2.13-0.11.4-M6" = fetchMaven { 217 | name = "com.lihaoyi_os-lib_2.13-0.11.4-M6"; 218 | urls = [ 219 | "https://repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.11.4-M6/os-lib_2.13-0.11.4-M6.jar" 220 | "https://repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.11.4-M6/os-lib_2.13-0.11.4-M6.pom" 221 | ]; 222 | hash = "sha256-Xfo/y+4tKe7wAUFY1nyyh9is8M0l4sYU4OnheEljEL8="; 223 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.11.4-M6"; 224 | }; 225 | 226 | "com.lihaoyi_os-lib_2.13-0.9.1" = fetchMaven { 227 | name = "com.lihaoyi_os-lib_2.13-0.9.1"; 228 | urls = [ 229 | "https://repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.1/os-lib_2.13-0.9.1.jar" 230 | "https://repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.1/os-lib_2.13-0.9.1.pom" 231 | ]; 232 | hash = "sha256-6vif76Fw/bDtFqNnehOBiULNCEbpQ79WjXDLOxtlsuM="; 233 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.1"; 234 | }; 235 | 236 | "com.lihaoyi_pprint_2.13-0.9.0" = fetchMaven { 237 | name = "com.lihaoyi_pprint_2.13-0.9.0"; 238 | urls = [ 239 | "https://repo1.maven.org/maven2/com/lihaoyi/pprint_2.13/0.9.0/pprint_2.13-0.9.0.jar" 240 | "https://repo1.maven.org/maven2/com/lihaoyi/pprint_2.13/0.9.0/pprint_2.13-0.9.0.pom" 241 | ]; 242 | hash = "sha256-RUmk2jO7irTaoMYgRK6Ui/SeyLEFCAspCehIccoQoeE="; 243 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/pprint_2.13/0.9.0"; 244 | }; 245 | 246 | "com.lihaoyi_scalac-mill-moduledefs-plugin_2.13.15-0.11.2" = fetchMaven { 247 | name = "com.lihaoyi_scalac-mill-moduledefs-plugin_2.13.15-0.11.2"; 248 | urls = [ 249 | "https://repo1.maven.org/maven2/com/lihaoyi/scalac-mill-moduledefs-plugin_2.13.15/0.11.2/scalac-mill-moduledefs-plugin_2.13.15-0.11.2.jar" 250 | "https://repo1.maven.org/maven2/com/lihaoyi/scalac-mill-moduledefs-plugin_2.13.15/0.11.2/scalac-mill-moduledefs-plugin_2.13.15-0.11.2.pom" 251 | ]; 252 | hash = "sha256-l+0NBdEWKEMILT44bK6ohiaon09cQvORWtDrCjUkn0A="; 253 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/scalac-mill-moduledefs-plugin_2.13.15/0.11.2"; 254 | }; 255 | 256 | "com.lihaoyi_sourcecode_2.13-0.3.0" = fetchMaven { 257 | name = "com.lihaoyi_sourcecode_2.13-0.3.0"; 258 | urls = [ 259 | "https://repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.0/sourcecode_2.13-0.3.0.jar" 260 | "https://repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.0/sourcecode_2.13-0.3.0.pom" 261 | ]; 262 | hash = "sha256-Y+QhWVO6t2oYpWS/s2aG1fHO+QZ726LyJYaGh3SL4ko="; 263 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.0"; 264 | }; 265 | 266 | "com.lihaoyi_sourcecode_2.13-0.4.0" = fetchMaven { 267 | name = "com.lihaoyi_sourcecode_2.13-0.4.0"; 268 | urls = [ 269 | "https://repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.4.0/sourcecode_2.13-0.4.0.jar" 270 | "https://repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.4.0/sourcecode_2.13-0.4.0.pom" 271 | ]; 272 | hash = "sha256-pi/E3F43hJcUYTx3hqUfOa/SGWmIcCl7z+3vCWDDrXc="; 273 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.4.0"; 274 | }; 275 | 276 | "com.lihaoyi_ujson_2.13-3.3.1" = fetchMaven { 277 | name = "com.lihaoyi_ujson_2.13-3.3.1"; 278 | urls = [ 279 | "https://repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.3.1/ujson_2.13-3.3.1.jar" 280 | "https://repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.3.1/ujson_2.13-3.3.1.pom" 281 | ]; 282 | hash = "sha256-tS5BVFeMdRfzGHUlrAywtQb4mG6oel56ooMEtlsWGjI="; 283 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.3.1"; 284 | }; 285 | 286 | "com.lihaoyi_upack_2.13-3.3.1" = fetchMaven { 287 | name = "com.lihaoyi_upack_2.13-3.3.1"; 288 | urls = [ 289 | "https://repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.3.1/upack_2.13-3.3.1.jar" 290 | "https://repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.3.1/upack_2.13-3.3.1.pom" 291 | ]; 292 | hash = "sha256-rbWiMl6+OXfWP2HjpMbvkToBzWhuW2hsJD/4dd+XmOs="; 293 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.3.1"; 294 | }; 295 | 296 | "com.lihaoyi_upickle-core_2.13-3.3.1" = fetchMaven { 297 | name = "com.lihaoyi_upickle-core_2.13-3.3.1"; 298 | urls = [ 299 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.3.1/upickle-core_2.13-3.3.1.jar" 300 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.3.1/upickle-core_2.13-3.3.1.pom" 301 | ]; 302 | hash = "sha256-+vXjTD3FY+FMlDpvsOkhwycDbvhnIY0SOcHKOYc+StM="; 303 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.3.1"; 304 | }; 305 | 306 | "com.lihaoyi_upickle-implicits_2.13-3.3.1" = fetchMaven { 307 | name = "com.lihaoyi_upickle-implicits_2.13-3.3.1"; 308 | urls = [ 309 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.3.1/upickle-implicits_2.13-3.3.1.jar" 310 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.3.1/upickle-implicits_2.13-3.3.1.pom" 311 | ]; 312 | hash = "sha256-LKWPAok7DL+YyfLv6yTwuyAG8z/74mzMrsqgUvUw9bM="; 313 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.3.1"; 314 | }; 315 | 316 | "com.lihaoyi_upickle_2.13-3.3.1" = fetchMaven { 317 | name = "com.lihaoyi_upickle_2.13-3.3.1"; 318 | urls = [ 319 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.3.1/upickle_2.13-3.3.1.jar" 320 | "https://repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.3.1/upickle_2.13-3.3.1.pom" 321 | ]; 322 | hash = "sha256-1vHU3mGQey3zvyUHK9uCx+9pUnpnWe3zEMlyb8QqUFc="; 323 | installPath = "https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.3.1"; 324 | }; 325 | 326 | "com.lmax_disruptor-3.4.2" = fetchMaven { 327 | name = "com.lmax_disruptor-3.4.2"; 328 | urls = [ 329 | "https://repo1.maven.org/maven2/com/lmax/disruptor/3.4.2/disruptor-3.4.2.jar" 330 | "https://repo1.maven.org/maven2/com/lmax/disruptor/3.4.2/disruptor-3.4.2.pom" 331 | ]; 332 | hash = "sha256-nbZsn6zL8HaJOrkMiWwvCuHQumcNQYA8e6QrAjXKKKg="; 333 | installPath = "https/repo1.maven.org/maven2/com/lmax/disruptor/3.4.2"; 334 | }; 335 | 336 | "com.swoval_file-tree-views-2.1.12" = fetchMaven { 337 | name = "com.swoval_file-tree-views-2.1.12"; 338 | urls = [ 339 | "https://repo1.maven.org/maven2/com/swoval/file-tree-views/2.1.12/file-tree-views-2.1.12.jar" 340 | "https://repo1.maven.org/maven2/com/swoval/file-tree-views/2.1.12/file-tree-views-2.1.12.pom" 341 | ]; 342 | hash = "sha256-QhJJFQt5LS2THa8AyPLrj0suht4eCiAEl2sf7QsZU3I="; 343 | installPath = "https/repo1.maven.org/maven2/com/swoval/file-tree-views/2.1.12"; 344 | }; 345 | 346 | "jakarta.platform_jakarta.jakartaee-bom-9.1.0" = fetchMaven { 347 | name = "jakarta.platform_jakarta.jakartaee-bom-9.1.0"; 348 | urls = [ 349 | "https://repo1.maven.org/maven2/jakarta/platform/jakarta.jakartaee-bom/9.1.0/jakarta.jakartaee-bom-9.1.0.pom" 350 | ]; 351 | hash = "sha256-kstGe15Yw9oF6LQ3Vovx1PcCUfQtNaEM7T8E5Upp1gg="; 352 | installPath = "https/repo1.maven.org/maven2/jakarta/platform/jakarta.jakartaee-bom/9.1.0"; 353 | }; 354 | 355 | "jakarta.platform_jakartaee-api-parent-9.1.0" = fetchMaven { 356 | name = "jakarta.platform_jakartaee-api-parent-9.1.0"; 357 | urls = [ 358 | "https://repo1.maven.org/maven2/jakarta/platform/jakartaee-api-parent/9.1.0/jakartaee-api-parent-9.1.0.pom" 359 | ]; 360 | hash = "sha256-FrD7N30UkkRSQtD3+FPOC1fH2qrNnJw6UZQ/hNFXWrA="; 361 | installPath = "https/repo1.maven.org/maven2/jakarta/platform/jakartaee-api-parent/9.1.0"; 362 | }; 363 | 364 | "net.openhft_java-parent-pom-1.1.28" = fetchMaven { 365 | name = "net.openhft_java-parent-pom-1.1.28"; 366 | urls = [ 367 | "https://repo1.maven.org/maven2/net/openhft/java-parent-pom/1.1.28/java-parent-pom-1.1.28.pom" 368 | ]; 369 | hash = "sha256-d7bOKP/hHJElmDQtIbblYDHRc8LCpqkt5Zl8aHp7l88="; 370 | installPath = "https/repo1.maven.org/maven2/net/openhft/java-parent-pom/1.1.28"; 371 | }; 372 | 373 | "net.openhft_root-parent-pom-1.2.12" = fetchMaven { 374 | name = "net.openhft_root-parent-pom-1.2.12"; 375 | urls = [ 376 | "https://repo1.maven.org/maven2/net/openhft/root-parent-pom/1.2.12/root-parent-pom-1.2.12.pom" 377 | ]; 378 | hash = "sha256-D/M1qN+njmMZWqS5h27fl83Q+zWgIFjaYQkCpD2Oy/M="; 379 | installPath = "https/repo1.maven.org/maven2/net/openhft/root-parent-pom/1.2.12"; 380 | }; 381 | 382 | "net.openhft_zero-allocation-hashing-0.16" = fetchMaven { 383 | name = "net.openhft_zero-allocation-hashing-0.16"; 384 | urls = [ 385 | "https://repo1.maven.org/maven2/net/openhft/zero-allocation-hashing/0.16/zero-allocation-hashing-0.16.jar" 386 | "https://repo1.maven.org/maven2/net/openhft/zero-allocation-hashing/0.16/zero-allocation-hashing-0.16.pom" 387 | ]; 388 | hash = "sha256-QkNOGkyP/OFWM+pv40hqR+ii4GBAcv0bbIrpG66YDMo="; 389 | installPath = "https/repo1.maven.org/maven2/net/openhft/zero-allocation-hashing/0.16"; 390 | }; 391 | 392 | "org.apache_apache-33" = fetchMaven { 393 | name = "org.apache_apache-33"; 394 | urls = [ "https://repo1.maven.org/maven2/org/apache/apache/33/apache-33.pom" ]; 395 | hash = "sha256-Hwj0S/ETiRxq9ObIzy9OGjGShFgbWuJOEoV6skSMQzI="; 396 | installPath = "https/repo1.maven.org/maven2/org/apache/apache/33"; 397 | }; 398 | 399 | "org.fusesource_fusesource-pom-1.12" = fetchMaven { 400 | name = "org.fusesource_fusesource-pom-1.12"; 401 | urls = [ 402 | "https://repo1.maven.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom" 403 | ]; 404 | hash = "sha256-NUD5PZ1FYYOq8yumvT5i29Vxd2ZCI6PXImXfLe4mE30="; 405 | installPath = "https/repo1.maven.org/maven2/org/fusesource/fusesource-pom/1.12"; 406 | }; 407 | 408 | "org.jline_jline-3.26.3" = fetchMaven { 409 | name = "org.jline_jline-3.26.3"; 410 | urls = [ 411 | "https://repo1.maven.org/maven2/org/jline/jline/3.26.3/jline-3.26.3.jar" 412 | "https://repo1.maven.org/maven2/org/jline/jline/3.26.3/jline-3.26.3.pom" 413 | ]; 414 | hash = "sha256-CVg5HR6GRYVCZ+0Y3yMsCUlgFCzd7MhgMqaZIQZEus0="; 415 | installPath = "https/repo1.maven.org/maven2/org/jline/jline/3.26.3"; 416 | }; 417 | 418 | "org.jline_jline-3.27.1" = fetchMaven { 419 | name = "org.jline_jline-3.27.1"; 420 | urls = [ 421 | "https://repo1.maven.org/maven2/org/jline/jline/3.27.1/jline-3.27.1-jdk8.jar" 422 | "https://repo1.maven.org/maven2/org/jline/jline/3.27.1/jline-3.27.1.pom" 423 | ]; 424 | hash = "sha256-GnI5uLuXJN7AvsltUpzwzGNuFYkfSQ4mxy4XLOODsmU="; 425 | installPath = "https/repo1.maven.org/maven2/org/jline/jline/3.27.1"; 426 | }; 427 | 428 | "org.jline_jline-native-3.27.1" = fetchMaven { 429 | name = "org.jline_jline-native-3.27.1"; 430 | urls = [ 431 | "https://repo1.maven.org/maven2/org/jline/jline-native/3.27.1/jline-native-3.27.1.jar" 432 | "https://repo1.maven.org/maven2/org/jline/jline-native/3.27.1/jline-native-3.27.1.pom" 433 | ]; 434 | hash = "sha256-XyhCZMcwu/OXdQ8BTM+qGgjGzMano5DJoghn1+/yr+Q="; 435 | installPath = "https/repo1.maven.org/maven2/org/jline/jline-native/3.27.1"; 436 | }; 437 | 438 | "org.jline_jline-parent-3.27.1" = fetchMaven { 439 | name = "org.jline_jline-parent-3.27.1"; 440 | urls = [ "https://repo1.maven.org/maven2/org/jline/jline-parent/3.27.1/jline-parent-3.27.1.pom" ]; 441 | hash = "sha256-Oa5DgBvf5JwZH68PDIyNkEQtm7IL04ujoeniH6GZas8="; 442 | installPath = "https/repo1.maven.org/maven2/org/jline/jline-parent/3.27.1"; 443 | }; 444 | 445 | "org.jline_jline-terminal-3.27.1" = fetchMaven { 446 | name = "org.jline_jline-terminal-3.27.1"; 447 | urls = [ 448 | "https://repo1.maven.org/maven2/org/jline/jline-terminal/3.27.1/jline-terminal-3.27.1.jar" 449 | "https://repo1.maven.org/maven2/org/jline/jline-terminal/3.27.1/jline-terminal-3.27.1.pom" 450 | ]; 451 | hash = "sha256-WV77BAEncauTljUBrlYi9v3GxDDeskqQpHHD9Fdbqjw="; 452 | installPath = "https/repo1.maven.org/maven2/org/jline/jline-terminal/3.27.1"; 453 | }; 454 | 455 | "org.jline_jline-terminal-jni-3.27.1" = fetchMaven { 456 | name = "org.jline_jline-terminal-jni-3.27.1"; 457 | urls = [ 458 | "https://repo1.maven.org/maven2/org/jline/jline-terminal-jni/3.27.1/jline-terminal-jni-3.27.1.jar" 459 | "https://repo1.maven.org/maven2/org/jline/jline-terminal-jni/3.27.1/jline-terminal-jni-3.27.1.pom" 460 | ]; 461 | hash = "sha256-AWKC7imb/rnF39PAo3bVIW430zPkyj9WozKGkPlTTBE="; 462 | installPath = "https/repo1.maven.org/maven2/org/jline/jline-terminal-jni/3.27.1"; 463 | }; 464 | 465 | "org.junit_junit-bom-5.10.3" = fetchMaven { 466 | name = "org.junit_junit-bom-5.10.3"; 467 | urls = [ "https://repo1.maven.org/maven2/org/junit/junit-bom/5.10.3/junit-bom-5.10.3.pom" ]; 468 | hash = "sha256-V+Pp8ndKoaD1fkc4oK9oU0+rrJ5hFRyuVcUnD0LI2Fw="; 469 | installPath = "https/repo1.maven.org/maven2/org/junit/junit-bom/5.10.3"; 470 | }; 471 | 472 | "org.mockito_mockito-bom-4.11.0" = fetchMaven { 473 | name = "org.mockito_mockito-bom-4.11.0"; 474 | urls = [ "https://repo1.maven.org/maven2/org/mockito/mockito-bom/4.11.0/mockito-bom-4.11.0.pom" ]; 475 | hash = "sha256-jtuaGRrHXNkevtfBAzk3OA+n5RNtrDQ0MQSqSRxUIfc="; 476 | installPath = "https/repo1.maven.org/maven2/org/mockito/mockito-bom/4.11.0"; 477 | }; 478 | 479 | "org.scala-lang_scala-compiler-2.13.15" = fetchMaven { 480 | name = "org.scala-lang_scala-compiler-2.13.15"; 481 | urls = [ 482 | "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.15/scala-compiler-2.13.15.jar" 483 | "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.15/scala-compiler-2.13.15.pom" 484 | ]; 485 | hash = "sha256-kvqWoFLNy3LGIbD6l67f66OyJq/K2L4rTStLiDzIzm8="; 486 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.15"; 487 | }; 488 | 489 | "org.scala-lang_scala-compiler-2.13.16" = fetchMaven { 490 | name = "org.scala-lang_scala-compiler-2.13.16"; 491 | urls = [ 492 | "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.16/scala-compiler-2.13.16.jar" 493 | "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.16/scala-compiler-2.13.16.pom" 494 | ]; 495 | hash = "sha256-uPxnpCaIbviBXMJjY9+MSQCPa6iqEx/zgtO926dxv+U="; 496 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.16"; 497 | }; 498 | 499 | "org.scala-lang_scala-library-2.13.15" = fetchMaven { 500 | name = "org.scala-lang_scala-library-2.13.15"; 501 | urls = [ 502 | "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.15/scala-library-2.13.15.jar" 503 | "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.15/scala-library-2.13.15.pom" 504 | ]; 505 | hash = "sha256-JnbDGZQKZZswRZuxauQywH/4rXzwzn++kMB4lw3OfPI="; 506 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.15"; 507 | }; 508 | 509 | "org.scala-lang_scala-library-2.13.16" = fetchMaven { 510 | name = "org.scala-lang_scala-library-2.13.16"; 511 | urls = [ 512 | "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar" 513 | "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.pom" 514 | ]; 515 | hash = "sha256-7/NvAxKKPtghJ/+pTNxvmIAiAdtQXRTUvDwGGXwpnpU="; 516 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16"; 517 | }; 518 | 519 | "org.scala-lang_scala-reflect-2.13.15" = fetchMaven { 520 | name = "org.scala-lang_scala-reflect-2.13.15"; 521 | urls = [ 522 | "https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.15/scala-reflect-2.13.15.jar" 523 | "https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.15/scala-reflect-2.13.15.pom" 524 | ]; 525 | hash = "sha256-zmUU4hTEf5HC311UaNIHmzjSwWSbjXn6DyPP7ZzFy/8="; 526 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.15"; 527 | }; 528 | 529 | "org.scala-lang_scala-reflect-2.13.16" = fetchMaven { 530 | name = "org.scala-lang_scala-reflect-2.13.16"; 531 | urls = [ 532 | "https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.16/scala-reflect-2.13.16.jar" 533 | "https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.16/scala-reflect-2.13.16.pom" 534 | ]; 535 | hash = "sha256-Y/cXrptUKnH51rsTo8reYZbqbrWuO+fohzQW3z9Nx90="; 536 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.16"; 537 | }; 538 | 539 | "org.scala-lang_scalap-2.13.15" = fetchMaven { 540 | name = "org.scala-lang_scalap-2.13.15"; 541 | urls = [ 542 | "https://repo1.maven.org/maven2/org/scala-lang/scalap/2.13.15/scalap-2.13.15.jar" 543 | "https://repo1.maven.org/maven2/org/scala-lang/scalap/2.13.15/scalap-2.13.15.pom" 544 | ]; 545 | hash = "sha256-JMnmdCcFUakGj+seqTp15VYMzcq90jGjQPmKbCzY28A="; 546 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/scalap/2.13.15"; 547 | }; 548 | 549 | "org.scala-sbt_collections_2.13-1.10.7" = fetchMaven { 550 | name = "org.scala-sbt_collections_2.13-1.10.7"; 551 | urls = [ 552 | "https://repo1.maven.org/maven2/org/scala-sbt/collections_2.13/1.10.7/collections_2.13-1.10.7.jar" 553 | "https://repo1.maven.org/maven2/org/scala-sbt/collections_2.13/1.10.7/collections_2.13-1.10.7.pom" 554 | ]; 555 | hash = "sha256-y4FuwehuxB+70YBIKj5jH9L8tQpHrWFpPc9VrBUzM6Y="; 556 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/collections_2.13/1.10.7"; 557 | }; 558 | 559 | "org.scala-sbt_compiler-bridge_2.13-1.10.7" = fetchMaven { 560 | name = "org.scala-sbt_compiler-bridge_2.13-1.10.7"; 561 | urls = [ 562 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-bridge_2.13/1.10.7/compiler-bridge_2.13-1.10.7-sources.jar" 563 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-bridge_2.13/1.10.7/compiler-bridge_2.13-1.10.7.jar" 564 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-bridge_2.13/1.10.7/compiler-bridge_2.13-1.10.7.pom" 565 | ]; 566 | hash = "sha256-jDtX3vTy7c5Ju7Yk792idscpXxfzqyRm0tubEazpQSY="; 567 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/compiler-bridge_2.13/1.10.7"; 568 | }; 569 | 570 | "org.scala-sbt_compiler-interface-1.10.3" = fetchMaven { 571 | name = "org.scala-sbt_compiler-interface-1.10.3"; 572 | urls = [ 573 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.3/compiler-interface-1.10.3.jar" 574 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.3/compiler-interface-1.10.3.pom" 575 | ]; 576 | hash = "sha256-eUpVhTZhe/6qSWs+XkD7bDhrqCv893HCNme7G4yPyeg="; 577 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.3"; 578 | }; 579 | 580 | "org.scala-sbt_compiler-interface-1.10.7" = fetchMaven { 581 | name = "org.scala-sbt_compiler-interface-1.10.7"; 582 | urls = [ 583 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.7/compiler-interface-1.10.7-sources.jar" 584 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.7/compiler-interface-1.10.7.jar" 585 | "https://repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.7/compiler-interface-1.10.7.pom" 586 | ]; 587 | hash = "sha256-kTQDHARJUF88Se2cOxq+vFt6hIPCn2rSQyGr96AMZWQ="; 588 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.7"; 589 | }; 590 | 591 | "org.scala-sbt_core-macros_2.13-1.10.7" = fetchMaven { 592 | name = "org.scala-sbt_core-macros_2.13-1.10.7"; 593 | urls = [ 594 | "https://repo1.maven.org/maven2/org/scala-sbt/core-macros_2.13/1.10.7/core-macros_2.13-1.10.7.jar" 595 | "https://repo1.maven.org/maven2/org/scala-sbt/core-macros_2.13/1.10.7/core-macros_2.13-1.10.7.pom" 596 | ]; 597 | hash = "sha256-rsDP4K+yiTgLhmdDP7G5iL3i43v+Dwki9pKXPeWUp4c="; 598 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/core-macros_2.13/1.10.7"; 599 | }; 600 | 601 | "org.scala-sbt_io_2.13-1.10.3" = fetchMaven { 602 | name = "org.scala-sbt_io_2.13-1.10.3"; 603 | urls = [ 604 | "https://repo1.maven.org/maven2/org/scala-sbt/io_2.13/1.10.3/io_2.13-1.10.3.jar" 605 | "https://repo1.maven.org/maven2/org/scala-sbt/io_2.13/1.10.3/io_2.13-1.10.3.pom" 606 | ]; 607 | hash = "sha256-+v1VvZGVtuyxaFCTxa66IGrvdqCDSJXPBAtHwDmdNQI="; 608 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/io_2.13/1.10.3"; 609 | }; 610 | 611 | "org.scala-sbt_launcher-interface-1.4.4" = fetchMaven { 612 | name = "org.scala-sbt_launcher-interface-1.4.4"; 613 | urls = [ 614 | "https://repo1.maven.org/maven2/org/scala-sbt/launcher-interface/1.4.4/launcher-interface-1.4.4.jar" 615 | "https://repo1.maven.org/maven2/org/scala-sbt/launcher-interface/1.4.4/launcher-interface-1.4.4.pom" 616 | ]; 617 | hash = "sha256-HWiEWRS8Grm7uQME6o7FYZFhWvJgvrvyxKXMATB0Z7E="; 618 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/launcher-interface/1.4.4"; 619 | }; 620 | 621 | "org.scala-sbt_sbinary_2.13-0.5.1" = fetchMaven { 622 | name = "org.scala-sbt_sbinary_2.13-0.5.1"; 623 | urls = [ 624 | "https://repo1.maven.org/maven2/org/scala-sbt/sbinary_2.13/0.5.1/sbinary_2.13-0.5.1.jar" 625 | "https://repo1.maven.org/maven2/org/scala-sbt/sbinary_2.13/0.5.1/sbinary_2.13-0.5.1.pom" 626 | ]; 627 | hash = "sha256-+TrjPjSy8WVXq3IYHkHHIzttvHQbgwMLkwwWBys/ryw="; 628 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/sbinary_2.13/0.5.1"; 629 | }; 630 | 631 | "org.scala-sbt_test-interface-1.0" = fetchMaven { 632 | name = "org.scala-sbt_test-interface-1.0"; 633 | urls = [ 634 | "https://repo1.maven.org/maven2/org/scala-sbt/test-interface/1.0/test-interface-1.0.jar" 635 | "https://repo1.maven.org/maven2/org/scala-sbt/test-interface/1.0/test-interface-1.0.pom" 636 | ]; 637 | hash = "sha256-Cc5Q+4mULLHRdw+7Wjx6spCLbKrckXHeNYjIibw4LWw="; 638 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/test-interface/1.0"; 639 | }; 640 | 641 | "org.scala-sbt_util-control_2.13-1.10.7" = fetchMaven { 642 | name = "org.scala-sbt_util-control_2.13-1.10.7"; 643 | urls = [ 644 | "https://repo1.maven.org/maven2/org/scala-sbt/util-control_2.13/1.10.7/util-control_2.13-1.10.7.jar" 645 | "https://repo1.maven.org/maven2/org/scala-sbt/util-control_2.13/1.10.7/util-control_2.13-1.10.7.pom" 646 | ]; 647 | hash = "sha256-CCG/nXpVyd7YrtCYr47tPYIQs/G6vzb/3fCyZ21drhM="; 648 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-control_2.13/1.10.7"; 649 | }; 650 | 651 | "org.scala-sbt_util-interface-1.10.3" = fetchMaven { 652 | name = "org.scala-sbt_util-interface-1.10.3"; 653 | urls = [ 654 | "https://repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.3/util-interface-1.10.3.jar" 655 | "https://repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.3/util-interface-1.10.3.pom" 656 | ]; 657 | hash = "sha256-uu+2jvXfm2FaHkvJb44uRGdelrtS9pLfolU977MMQj0="; 658 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.3"; 659 | }; 660 | 661 | "org.scala-sbt_util-interface-1.10.7" = fetchMaven { 662 | name = "org.scala-sbt_util-interface-1.10.7"; 663 | urls = [ 664 | "https://repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.7/util-interface-1.10.7-sources.jar" 665 | "https://repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.7/util-interface-1.10.7.jar" 666 | "https://repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.7/util-interface-1.10.7.pom" 667 | ]; 668 | hash = "sha256-k9TTANJrA3RAapizDe0pMLT/CkPCLweVuT8fuc40Re0="; 669 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.7"; 670 | }; 671 | 672 | "org.scala-sbt_util-logging_2.13-1.10.7" = fetchMaven { 673 | name = "org.scala-sbt_util-logging_2.13-1.10.7"; 674 | urls = [ 675 | "https://repo1.maven.org/maven2/org/scala-sbt/util-logging_2.13/1.10.7/util-logging_2.13-1.10.7.jar" 676 | "https://repo1.maven.org/maven2/org/scala-sbt/util-logging_2.13/1.10.7/util-logging_2.13-1.10.7.pom" 677 | ]; 678 | hash = "sha256-WfmccbZodef+h77nl7kEe6VxAsyzYlaHudZX0iyTRAs="; 679 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-logging_2.13/1.10.7"; 680 | }; 681 | 682 | "org.scala-sbt_util-position_2.13-1.10.7" = fetchMaven { 683 | name = "org.scala-sbt_util-position_2.13-1.10.7"; 684 | urls = [ 685 | "https://repo1.maven.org/maven2/org/scala-sbt/util-position_2.13/1.10.7/util-position_2.13-1.10.7.jar" 686 | "https://repo1.maven.org/maven2/org/scala-sbt/util-position_2.13/1.10.7/util-position_2.13-1.10.7.pom" 687 | ]; 688 | hash = "sha256-hhRemdHTn5rI6IpViSG7KUxU/F2idL0AQf9CdNrF6xA="; 689 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-position_2.13/1.10.7"; 690 | }; 691 | 692 | "org.scala-sbt_util-relation_2.13-1.10.7" = fetchMaven { 693 | name = "org.scala-sbt_util-relation_2.13-1.10.7"; 694 | urls = [ 695 | "https://repo1.maven.org/maven2/org/scala-sbt/util-relation_2.13/1.10.7/util-relation_2.13-1.10.7.jar" 696 | "https://repo1.maven.org/maven2/org/scala-sbt/util-relation_2.13/1.10.7/util-relation_2.13-1.10.7.pom" 697 | ]; 698 | hash = "sha256-r2kRBeuvusfdZwqZsRRuwp1Sr1PjWDuchmXbVPcSUOM="; 699 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/util-relation_2.13/1.10.7"; 700 | }; 701 | 702 | "org.scala-sbt_zinc-apiinfo_2.13-1.10.7" = fetchMaven { 703 | name = "org.scala-sbt_zinc-apiinfo_2.13-1.10.7"; 704 | urls = [ 705 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-apiinfo_2.13/1.10.7/zinc-apiinfo_2.13-1.10.7.jar" 706 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-apiinfo_2.13/1.10.7/zinc-apiinfo_2.13-1.10.7.pom" 707 | ]; 708 | hash = "sha256-nRr38N6FO18MM0+mlb9lK2EOhfl7GZ1y7ez6Eg3Ip8w="; 709 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-apiinfo_2.13/1.10.7"; 710 | }; 711 | 712 | "org.scala-sbt_zinc-classfile_2.13-1.10.7" = fetchMaven { 713 | name = "org.scala-sbt_zinc-classfile_2.13-1.10.7"; 714 | urls = [ 715 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-classfile_2.13/1.10.7/zinc-classfile_2.13-1.10.7.jar" 716 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-classfile_2.13/1.10.7/zinc-classfile_2.13-1.10.7.pom" 717 | ]; 718 | hash = "sha256-0UOFRvovrzzXFILxniSzo5MHr/XmSDGP4o3wh05uCxE="; 719 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-classfile_2.13/1.10.7"; 720 | }; 721 | 722 | "org.scala-sbt_zinc-classpath_2.13-1.10.7" = fetchMaven { 723 | name = "org.scala-sbt_zinc-classpath_2.13-1.10.7"; 724 | urls = [ 725 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-classpath_2.13/1.10.7/zinc-classpath_2.13-1.10.7.jar" 726 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-classpath_2.13/1.10.7/zinc-classpath_2.13-1.10.7.pom" 727 | ]; 728 | hash = "sha256-ozsxGbCrycacvLvk8tf0SHjdR9DU+5+494IJdkotRjg="; 729 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-classpath_2.13/1.10.7"; 730 | }; 731 | 732 | "org.scala-sbt_zinc-compile-core_2.13-1.10.7" = fetchMaven { 733 | name = "org.scala-sbt_zinc-compile-core_2.13-1.10.7"; 734 | urls = [ 735 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-compile-core_2.13/1.10.7/zinc-compile-core_2.13-1.10.7.jar" 736 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-compile-core_2.13/1.10.7/zinc-compile-core_2.13-1.10.7.pom" 737 | ]; 738 | hash = "sha256-E7vR41TZnHQWM6FyVr48WDhplRHFfFta4E4JEl8/CtQ="; 739 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-compile-core_2.13/1.10.7"; 740 | }; 741 | 742 | "org.scala-sbt_zinc-core_2.13-1.10.7" = fetchMaven { 743 | name = "org.scala-sbt_zinc-core_2.13-1.10.7"; 744 | urls = [ 745 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-core_2.13/1.10.7/zinc-core_2.13-1.10.7.jar" 746 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-core_2.13/1.10.7/zinc-core_2.13-1.10.7.pom" 747 | ]; 748 | hash = "sha256-eQFUHHuNND26t29kyYz7vbAscVCJej/Lc8eQRktDTGA="; 749 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-core_2.13/1.10.7"; 750 | }; 751 | 752 | "org.scala-sbt_zinc-persist-core-assembly-1.10.7" = fetchMaven { 753 | name = "org.scala-sbt_zinc-persist-core-assembly-1.10.7"; 754 | urls = [ 755 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-persist-core-assembly/1.10.7/zinc-persist-core-assembly-1.10.7.jar" 756 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-persist-core-assembly/1.10.7/zinc-persist-core-assembly-1.10.7.pom" 757 | ]; 758 | hash = "sha256-KNr16Jjhbu3hrKUn/rTpEiEqWV/mC/iFhbO0YmToUCA="; 759 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-persist-core-assembly/1.10.7"; 760 | }; 761 | 762 | "org.scala-sbt_zinc-persist_2.13-1.10.7" = fetchMaven { 763 | name = "org.scala-sbt_zinc-persist_2.13-1.10.7"; 764 | urls = [ 765 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-persist_2.13/1.10.7/zinc-persist_2.13-1.10.7.jar" 766 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc-persist_2.13/1.10.7/zinc-persist_2.13-1.10.7.pom" 767 | ]; 768 | hash = "sha256-aO6mPsEjKHbl0ZqB/a/hZ/FArCqXpR63D8y86bxkwpU="; 769 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc-persist_2.13/1.10.7"; 770 | }; 771 | 772 | "org.scala-sbt_zinc_2.13-1.10.7" = fetchMaven { 773 | name = "org.scala-sbt_zinc_2.13-1.10.7"; 774 | urls = [ 775 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc_2.13/1.10.7/zinc_2.13-1.10.7.jar" 776 | "https://repo1.maven.org/maven2/org/scala-sbt/zinc_2.13/1.10.7/zinc_2.13-1.10.7.pom" 777 | ]; 778 | hash = "sha256-G87j0JvuTu7cEu4gUZ268vxJ79vs7qR0p8J1wT+wwD4="; 779 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/zinc_2.13/1.10.7"; 780 | }; 781 | 782 | "org.springframework_spring-framework-bom-5.3.39" = fetchMaven { 783 | name = "org.springframework_spring-framework-bom-5.3.39"; 784 | urls = [ 785 | "https://repo1.maven.org/maven2/org/springframework/spring-framework-bom/5.3.39/spring-framework-bom-5.3.39.pom" 786 | ]; 787 | hash = "sha256-V+sR9AvokPz2NrvEFCxdLHl3jrW2o9dP3gisCDAUUDA="; 788 | installPath = "https/repo1.maven.org/maven2/org/springframework/spring-framework-bom/5.3.39"; 789 | }; 790 | 791 | "com.fasterxml.jackson_jackson-bom-2.17.2" = fetchMaven { 792 | name = "com.fasterxml.jackson_jackson-bom-2.17.2"; 793 | urls = [ 794 | "https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.17.2/jackson-bom-2.17.2.pom" 795 | ]; 796 | hash = "sha256-uAhCPZKxSJE8I5PhUlyXZOF9QVS/Xh+BQiYGmUYA86E="; 797 | installPath = "https/repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.17.2"; 798 | }; 799 | 800 | "com.fasterxml.jackson_jackson-parent-2.17" = fetchMaven { 801 | name = "com.fasterxml.jackson_jackson-parent-2.17"; 802 | urls = [ 803 | "https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.17/jackson-parent-2.17.pom" 804 | ]; 805 | hash = "sha256-bwpdlIPUrYpG6AmpG+vbSgz7gRpEaUy7i1k2ZxRlYGc="; 806 | installPath = "https/repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.17"; 807 | }; 808 | 809 | "io.github.java-diff-utils_java-diff-utils-4.12" = fetchMaven { 810 | name = "io.github.java-diff-utils_java-diff-utils-4.12"; 811 | urls = [ 812 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" 813 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" 814 | ]; 815 | hash = "sha256-SMNRfv+BvfxjgwFH0fHU16fd1bDn/QMrPQN8Eyb6deA="; 816 | installPath = "https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12"; 817 | }; 818 | 819 | "io.github.java-diff-utils_java-diff-utils-4.15" = fetchMaven { 820 | name = "io.github.java-diff-utils_java-diff-utils-4.15"; 821 | urls = [ 822 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.15/java-diff-utils-4.15.jar" 823 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.15/java-diff-utils-4.15.pom" 824 | ]; 825 | hash = "sha256-SfOhFqK/GsStfRZLQm3yGJat/CQWb3YbJnoXd84l/R0="; 826 | installPath = "https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.15"; 827 | }; 828 | 829 | "io.github.java-diff-utils_java-diff-utils-parent-4.12" = fetchMaven { 830 | name = "io.github.java-diff-utils_java-diff-utils-parent-4.12"; 831 | urls = [ 832 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom" 833 | ]; 834 | hash = "sha256-l9MekOAkDQrHpgMMLkbZQJtiaSmyE7h0XneiHciAFOI="; 835 | installPath = "https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12"; 836 | }; 837 | 838 | "io.github.java-diff-utils_java-diff-utils-parent-4.15" = fetchMaven { 839 | name = "io.github.java-diff-utils_java-diff-utils-parent-4.15"; 840 | urls = [ 841 | "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.15/java-diff-utils-parent-4.15.pom" 842 | ]; 843 | hash = "sha256-7U+fEo0qYFash7diRi0E8Ejv0MY8T70NzU+HswbmO34="; 844 | installPath = "https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.15"; 845 | }; 846 | 847 | "org.apache.groovy_groovy-bom-4.0.22" = fetchMaven { 848 | name = "org.apache.groovy_groovy-bom-4.0.22"; 849 | urls = [ 850 | "https://repo1.maven.org/maven2/org/apache/groovy/groovy-bom/4.0.22/groovy-bom-4.0.22.pom" 851 | ]; 852 | hash = "sha256-9hsejVx5kj/oQtf+JvuKqOuzRfJIJbPoys04ArDEu9o="; 853 | installPath = "https/repo1.maven.org/maven2/org/apache/groovy/groovy-bom/4.0.22"; 854 | }; 855 | 856 | "org.apache.logging_logging-parent-11.3.0" = fetchMaven { 857 | name = "org.apache.logging_logging-parent-11.3.0"; 858 | urls = [ 859 | "https://repo1.maven.org/maven2/org/apache/logging/logging-parent/11.3.0/logging-parent-11.3.0.pom" 860 | ]; 861 | hash = "sha256-06rPgZ5cRXf8cg84KMl7HVR3vcgvV0ThY76UsgAFf+w="; 862 | installPath = "https/repo1.maven.org/maven2/org/apache/logging/logging-parent/11.3.0"; 863 | }; 864 | 865 | "org.eclipse.ee4j_project-1.0.7" = fetchMaven { 866 | name = "org.eclipse.ee4j_project-1.0.7"; 867 | urls = [ "https://repo1.maven.org/maven2/org/eclipse/ee4j/project/1.0.7/project-1.0.7.pom" ]; 868 | hash = "sha256-1HxZiJ0aeo1n8AWjwGKEoPwVFP9kndMBye7xwgYEal8="; 869 | installPath = "https/repo1.maven.org/maven2/org/eclipse/ee4j/project/1.0.7"; 870 | }; 871 | 872 | "org.fusesource.jansi_jansi-2.4.1" = fetchMaven { 873 | name = "org.fusesource.jansi_jansi-2.4.1"; 874 | urls = [ 875 | "https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar" 876 | "https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom" 877 | ]; 878 | hash = "sha256-M9G+H9TA5eB6NwlBmDP0ghxZzjbvLimPXNRZHyxJXac="; 879 | installPath = "https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1"; 880 | }; 881 | 882 | "org.scala-lang.modules_scala-collection-compat_2.13-2.12.0" = fetchMaven { 883 | name = "org.scala-lang.modules_scala-collection-compat_2.13-2.12.0"; 884 | urls = [ 885 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.12.0/scala-collection-compat_2.13-2.12.0.jar" 886 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.12.0/scala-collection-compat_2.13-2.12.0.pom" 887 | ]; 888 | hash = "sha256-gdUFn7dadEj342MYKz1lj4dLYz+AkOzRiIC0spS8CXk="; 889 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.12.0"; 890 | }; 891 | 892 | "org.scala-lang.modules_scala-parallel-collections_2.13-0.2.0" = fetchMaven { 893 | name = "org.scala-lang.modules_scala-parallel-collections_2.13-0.2.0"; 894 | urls = [ 895 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/0.2.0/scala-parallel-collections_2.13-0.2.0.jar" 896 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/0.2.0/scala-parallel-collections_2.13-0.2.0.pom" 897 | ]; 898 | hash = "sha256-chqRhtzyMJjeR4ohA5YhNjGV8kLHTy5yZjNCyYIO/wo="; 899 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/0.2.0"; 900 | }; 901 | 902 | "org.scala-lang.modules_scala-parser-combinators_2.13-1.1.2" = fetchMaven { 903 | name = "org.scala-lang.modules_scala-parser-combinators_2.13-1.1.2"; 904 | urls = [ 905 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.13/1.1.2/scala-parser-combinators_2.13-1.1.2.jar" 906 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.13/1.1.2/scala-parser-combinators_2.13-1.1.2.pom" 907 | ]; 908 | hash = "sha256-sM5GWZ8/K1Jchj4V3FTvaWhfSJiHq0PKtQpd5W94Hps="; 909 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.13/1.1.2"; 910 | }; 911 | 912 | "org.scala-lang.modules_scala-xml_2.13-2.3.0" = fetchMaven { 913 | name = "org.scala-lang.modules_scala-xml_2.13-2.3.0"; 914 | urls = [ 915 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.3.0/scala-xml_2.13-2.3.0.jar" 916 | "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.3.0/scala-xml_2.13-2.3.0.pom" 917 | ]; 918 | hash = "sha256-TZaDZ9UjQB20IMvxqxub63LbqSNDMAhFDRtYfvbzI58="; 919 | installPath = "https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.3.0"; 920 | }; 921 | 922 | "org.scala-sbt.jline_jline-2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18" = fetchMaven { 923 | name = "org.scala-sbt.jline_jline-2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18"; 924 | urls = [ 925 | "https://repo1.maven.org/maven2/org/scala-sbt/jline/jline/2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18/jline-2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18.jar" 926 | "https://repo1.maven.org/maven2/org/scala-sbt/jline/jline/2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18/jline-2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18.pom" 927 | ]; 928 | hash = "sha256-1Nq7/UMXSlaZ7iwR1WMryltAmS8/fRCK6u93cm+1uh4="; 929 | installPath = "https/repo1.maven.org/maven2/org/scala-sbt/jline/jline/2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18"; 930 | }; 931 | 932 | "net.java.dev.jna_jna-5.14.0" = fetchMaven { 933 | name = "net.java.dev.jna_jna-5.14.0"; 934 | urls = [ 935 | "https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar" 936 | "https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.pom" 937 | ]; 938 | hash = "sha256-mvzJykzd4Cz473vRi15E0NReFk7YN7hPOtS5ZHUhCIg="; 939 | installPath = "https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.14.0"; 940 | }; 941 | 942 | "org.apache.logging.log4j_log4j-2.24.3" = fetchMaven { 943 | name = "org.apache.logging.log4j_log4j-2.24.3"; 944 | urls = [ "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j/2.24.3/log4j-2.24.3.pom" ]; 945 | hash = "sha256-bWuk6kxsiWW675JezWblZ8RdkKFg9C/3CgzdMGJr1Z8="; 946 | installPath = "https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j/2.24.3"; 947 | }; 948 | 949 | "org.apache.logging.log4j_log4j-api-2.24.3" = fetchMaven { 950 | name = "org.apache.logging.log4j_log4j-api-2.24.3"; 951 | urls = [ 952 | "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.24.3/log4j-api-2.24.3.jar" 953 | "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.24.3/log4j-api-2.24.3.pom" 954 | ]; 955 | hash = "sha256-y6wgpqMFwL3B3CrUbTI4HQTBjc4YSWxn0WF8QQSjpFw="; 956 | installPath = "https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.24.3"; 957 | }; 958 | 959 | "org.apache.logging.log4j_log4j-bom-2.24.3" = fetchMaven { 960 | name = "org.apache.logging.log4j_log4j-bom-2.24.3"; 961 | urls = [ 962 | "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-bom/2.24.3/log4j-bom-2.24.3.pom" 963 | ]; 964 | hash = "sha256-UNEo/UyoskA/8X62/rwMQObDQxfHDiJKj2pBP9SNoek="; 965 | installPath = "https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-bom/2.24.3"; 966 | }; 967 | 968 | "org.apache.logging.log4j_log4j-core-2.24.3" = fetchMaven { 969 | name = "org.apache.logging.log4j_log4j-core-2.24.3"; 970 | urls = [ 971 | "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.24.3/log4j-core-2.24.3.jar" 972 | "https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.24.3/log4j-core-2.24.3.pom" 973 | ]; 974 | hash = "sha256-kRXpkDJtXT0VoEyxj5hIc8Z8foh8rKnFqCpjohdh5LQ="; 975 | installPath = "https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.24.3"; 976 | }; 977 | 978 | } 979 | # Project Source Hash:sha256-aEMIACRiFzz1CHs7CtwdUVNCBhaw+DmfkgaDIv/y8oM= 980 | --------------------------------------------------------------------------------