Skip to main content

g2o: A General Framework for Graph Optimization

Project description

g2o - General Graph Optimization

Linux/Mac: CI Windows: win64 Codacy Badge pre-commit

g2o logo

g2o is an open-source C++ framework for optimizing graph-based nonlinear error functions. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA.

A wide range of problems in robotics as well as in computer-vision involve the minimization of a non-linear error function that can be represented as a graph. Typical instances are simultaneous localization and mapping (SLAM) or bundle adjustment (BA). The overall goal in these problems is to find the configuration of parameters or state variables that maximally explain a set of measurements affected by Gaussian noise. g2o is an open-source C++ framework for such nonlinear least squares problems. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA. g2o offers a performance comparable to implementations of state-of-the-art approaches for the specific problems (02/2011).

Python and updated memory management

The branch pymem contains a python wrapper and switches to smart pointer instead of RAW pointers. It is currently experimental but PRs and improvements are welcome - as always.

See g2o-python for the pypi release of g2o's python bindings. See below for how to install the python bindings from this repository directly.

Papers Describing the Approach

Rainer Kuemmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige, and Wolfram Burgard g2o: A General Framework for Graph Optimization IEEE International Conference on Robotics and Automation (ICRA), 2011

Documentation

A detailed description of how the library is structured and how to use and extend it can be found in /doc/g2o.pdf The API documentation can be generated as described in doc/doxygen/readme.txt

License

g2o is licensed under the BSD License. However, some libraries are available under different license terms. See below.

The following parts are licensed under LGPL v2.1+:

  • csparse_extension

The following parts are licensed under GPL3+:

  • g2o_viewer
  • g2o_incremental
  • slam2d_g2o (example for 2D SLAM with a QGLviewer GUI)

Please note that some features of CHOLMOD (which may be used by g2o, see libsuitesparse below) are licensed under the GPL. To avoid the GPL, you may have to re-compile CHOLMOD without including its GPL features. The CHOLMOD library distributed with, for example, Ubuntu or Debian includes the GPL features. For example, the supernodal factorization that is licensed under GPL is considered by g2o if it is available.

Within sub-folders we include software not written by us to guarantee easy compilation and integration into g2o itself.

  • ceres: BSD (see g2o/autodiff/LICENSE) Extracted headers to perform Automatic Differentiation.

  • freeglut: X-Consortium (see g2o/EXTERNAL/freeglut/COPYING) Copyright (c) 1999-2000 Pawel W. Olszta We use a stripped down version for drawing text in OpenGL.

See the doc folder for the full text of the licenses.

g2o is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the licenses for more details.

Requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • cmake
  • libeigen3-dev

Optional requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • libspdlog-dev
  • libsuitesparse-dev
  • libcereal-dev
  • qtdeclarative5-dev
  • qt5-qmake
  • libqglviewer-dev-qt5

You can install those packages with the following command

sudo apt install libeigen3-dev libspdlog-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5

Mac OS X

If using Homebrew, then

brew install g2o

will install g2o together with its required dependencies. In this case no manual compilation is necessary.

Windows

If using vcpkg, then

script\install-deps-windows.bat

or for full dependencies installation

script\install-additional-deps-windows.bat

will build and install the dependencies. The location of vcpkg and required triplet can be passed as cli arguments respectively. Note that usually vcpkg will auto detect the triplet. Set it only if your are not using the default build for your OS.

Compilation

Our primary development platform is Linux. Experimental support for Mac OS X, Android and Windows (MinGW or MSVC). We recommend a so-called out of source build which can be achieved by the following command sequence.

mkdir build
cd build
cmake ../
make

The binaries will be placed in bin and the libraries in lib which are both located underneath cmake's build folder.

On Windows with vcpkg the following commands will generate build scripts (please change the Visual Studio version number in accordance with your system):

mkdir build
cd build
cmake -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON-DVCPKG_TARGET_TRIPLET="%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT_DIR%\scripts\buildsystems\vcpkg.cmake" ..`
cmake --build . --target ALL_BUILD

If you are compiling on Windows and you are for some reasons not using vcpkg please download Eigen3 and extract it. Within cmake-gui set the variable EIGEN3_INCLUDE_DIR to that directory.

mkdir build
cd build
cmake .. -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON -DEIGEN3_INCLUDE_DIR="<THE_PATH_WHERE_YOU_PLACED_EIGEN3_AND_THE_EIGEN3_CMakeLists.txt>"

Cross-Compiling for Android

mkdir build`
cd build`
cmake -DCMAKE_TOOLCHAIN_FILE=../script/android.toolchain.cmake -DANDROID_NDK=<YOUR_PATH_TO_ANDROID_NDK_r10d+> -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" -DEIGEN3_INCLUDE_DIR="<YOUR_PATH_TO_EIGEN>" -DEIGEN3_VERSION_OK=ON ..
cmake --build .

Installing the python wrapper

If you want to install g2opy, i.e., the python bindings for g2o, you can use pip preferably in a virtual env.

Preparing the virtual env

python3 -m venv ~/.venvs/g2opy
source ~/.venvs/g2opy/bin/activate

Installing via pip

pip install -v .

Afterwards you should be able to run the examples. For example, by running python3 python/examples/ba_demo.py.

Acknowledgments

We thank the following contributors for providing patches:

  • Simon J. Julier: patches to achieve compatibility with Mac OS X and others.
  • Michael A. Eriksen for submitting patches to compile with MSVC.
  • Mark Pupilli for submitting patches to compile with MSVC.

Projects using g2o

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

g2opy-2.2.0.tar.gz (916.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

g2opy-2.2.0-cp314-cp314-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.14Windows x86-64

g2opy-2.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

g2opy-2.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

g2opy-2.2.0-cp314-cp314-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

g2opy-2.2.0-cp314-cp314-macosx_10_15_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

g2opy-2.2.0-cp313-cp313-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.13Windows x86-64

g2opy-2.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

g2opy-2.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

g2opy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

g2opy-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

g2opy-2.2.0-cp312-cp312-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.12Windows x86-64

g2opy-2.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

g2opy-2.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

g2opy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

g2opy-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

g2opy-2.2.0-cp311-cp311-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.11Windows x86-64

g2opy-2.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

g2opy-2.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

g2opy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

g2opy-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

File details

Details for the file g2opy-2.2.0.tar.gz.

File metadata

  • Download URL: g2opy-2.2.0.tar.gz
  • Upload date:
  • Size: 916.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.12

File hashes

Hashes for g2opy-2.2.0.tar.gz
Algorithm Hash digest
SHA256 60a75dec0c1a8ffbbbfa2d8c8b28554760d863fd99201957f614858957d06db9
MD5 9f6d7589eb11bd3e3a5fab5a79ceb860
BLAKE2b-256 6c28bab8a9a15f39951fa37ea1fa43e5b249d2680687b9bc4a6178d6f871022c

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: g2opy-2.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.12

File hashes

Hashes for g2opy-2.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0c36624a1ee47c828248d823b25197e06e5d30eda34cb0d6248adad197d530a3
MD5 4784602859496dff6835aa17996bef5f
BLAKE2b-256 5b188c9dcfdbfc08d054a47a91910681e1ed79ad3498f5d255b7f1aac2d4f8c0

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43d44e97bad2d6aff6809b440de4222319c7514add1380cefb5fa2584be940f0
MD5 828ec9e9af531ac81fd02d079b41f73e
BLAKE2b-256 269278cd75a7b8c803ee75c6ba34e51959cdaa6a85316b313763bc4a4479428a

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c525f75a8344acd28818ee38184991e863cd621a39cfef13d2a26017996419a4
MD5 163ba6ffdce41ee9c33d01d169b34903
BLAKE2b-256 3834ef5ad18121d17d55b74574bb0df3ea91c54461c8441550f045692ab88454

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63a5a0a35ad82f3df17a5ab03cd04f218ee8682ab3d8c4f1b0554fcbe4503ede
MD5 c4f1bb01b6d7bc57c55f85caa99f5efb
BLAKE2b-256 87394ef63cf98446daf6ed2bb73d3ec78860b62768b89a0c8f1efa1cb4111b8e

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 57af7eb58250d322ce3e105ee76f1cd5355cc69ec0a38bb1cdad49041d71b731
MD5 715692e7c39304ce2ee7e9e759dd41e7
BLAKE2b-256 136a9316f859898097bd5eee6d31b5ac55bf19d1312264aac9dd597a30d05377

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: g2opy-2.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.12

File hashes

Hashes for g2opy-2.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1c7a6a62e6a3217ca2845191418b3d4ef4ee95a236e63695fa541246ce6d28b1
MD5 70f953007d46adf6a85fb2dd10f62aa0
BLAKE2b-256 83a027842c40c9ab785742cdc4e2491f63c0c20f1f6c705520c4f60b6bdfb580

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05cc583e87d7d3f62a41d1459c4b0f254d7b56b398619519e837539339c6debe
MD5 0ccf76095186bd49987f6aeb48529a03
BLAKE2b-256 e441504a1ab0aeacc5caf4ff9382d8e1236ec4e89be7987e4e5df0fa9983728c

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3805fca16c56336e444f9edccf6e7bf9c99a0c64e2ae3c537253323182010be0
MD5 516c208e31cd955c944ec6f54fd65701
BLAKE2b-256 a25dc1e4b7d7cfe4d5e7a1fa3617ca9e62a2d1788a36e77fc8a6c22c759db8cf

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f865af142c33d1da774ec6dccad203956126b90916435e8da751522f73f4b3c1
MD5 4bb28dfed18836bc35b64f13023f5021
BLAKE2b-256 84f263d9f3c0e3ea3bb7aba50ae43e113d30aff6640a48e97787ec4c57c297e8

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 786a4c3102433a6ab68962a7962107416bf2218bd89b2edb3c25e0aceb537fa4
MD5 2120337d8b5d17fb3e61a42a12cc7673
BLAKE2b-256 58c478d3d79eef9d6c8a32e55e5f906ad09e06c7a0ec220cd73d37b654c72f43

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: g2opy-2.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.12

File hashes

Hashes for g2opy-2.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d820f3125a6023b3690e504a9e2c83df856d573691c960a5bc811767f832d563
MD5 d9dde7cb004b883ad3d9bab00b7a881f
BLAKE2b-256 3940c52b83cf7c25845b2bcdc0419de2ecc9ea2c23745d9398f29b3c8a5ff115

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 84ae1ebcef150c9a82fb1ddc80de108971fc600fc88d69743209d18cc4a9eec0
MD5 646fd5684683e7124fd49c3bd3f1c5f2
BLAKE2b-256 6f8974ae26db9d41ba6deadce720a5687c83df7c09454fd5da6cb240df52752b

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 38c9e02486ccc3b7a46c02a8481d8cf9f7b109010e524689d3bf4e52aa55a9b1
MD5 c5adcea7fa7952753403a527aad7e17b
BLAKE2b-256 6105cbf316af6c961a0affbc044be9a770ded9a5d62507eca188479cb845ef97

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1541f9b3391a88b8bbbd7e0b48446eb97dfb87b680968ab0f4aafd119ee9e0af
MD5 50c1c57c706b36da4e4e40d161f7e665
BLAKE2b-256 72242399c4f12f5ab3cf32043d33ecad5bf3e61fc86c8f0c97e4f5d2b53ad117

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3bdf3e04b09f4cf6c5c483fbbb5affdf266f97a31cb7f5083c90b19aae16c80d
MD5 1990851b81f1beaf86123668c8b87ce8
BLAKE2b-256 bc48885f9d6b5b8199e37b278474d64f0a158f7f202b7af092916b9bae50fc82

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: g2opy-2.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.12

File hashes

Hashes for g2opy-2.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9a6ccb7fa4118c369cc3364cbb8853b56d16621b7be74e713f7850f5fbeab2f2
MD5 e164e8ea7bb8c00b181c817e891fbccc
BLAKE2b-256 c18280924d8b1de31f7d21fc1a95956abad1c04b91809c5f165993b1e01da710

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3bbf2afff2ef727d3af36065a9d38618141bcaaa46aeb60a74c860d500907b2f
MD5 607866403cd59e2e51ca103567e1486e
BLAKE2b-256 a255bee4f051d6661a6a6fa32c1c936d52c7977a0d90724f976716d7540d064e

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 84f161fa37ae3d6f0a04cd6b92e881578bd3120454376eb2ff183924dded2721
MD5 b3da3deb70d5c5dba3c65a20178af0ae
BLAKE2b-256 4c4d228662cb6db8d69b696208f0785145f4fd3a1bdec5407f276c89dd106f93

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c9395a5ec11d8ab5a8e7085fc706be982cc5e1d629c36f0e908c3738b523a25
MD5 ae9725bb987847812475044a6256b5a6
BLAKE2b-256 ec44047d00fa1350a03ebf61545c54a15197ea92be00537b60a0eeab50f338df

See more details on using hashes here.

File details

Details for the file g2opy-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for g2opy-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 67b011fa0de246b4cba49ba9aee7699dfffd46d553b0a103936f1d3b0612a2b0
MD5 eb57f617c07d2ff36135e49c99cf515f
BLAKE2b-256 f43794c32d1d2470ac95a6ff2057423a7e822d1c40cce9b42907c76fef7c390f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page