Python bindings for libssh client specific to Ansible use case
Project description
pylibssh: Python bindings to client functionality of libssh specific to Ansible use case
Nightlies @ Dumb PyPI @ GitHub Pages
We publish nightlies on tags and pushes to devel. They are hosted on a GitHub Pages based index generated by dumb-pypi.
The web view is @ https://ansible.github.io/pylibssh/.
$ pip install \
--extra-index-url=https://ansible.github.io/pylibssh/simple/ \
--pre \
ansible-pylibssh
Requirements
You need Python 2.7 or 3.5+
pylibssh requires libssh to be installed in particular:
libssh version 0.9.0 and later.
To install libssh refer to its Downloads page.
Building the module
In the local env, assumes there’s a libssh shared library on the system, build toolchain is present and env vars are set properly:
$ git clone https://github.com/ansible/pylibssh.git
$ cd pylibssh
$ pip install tox
$ tox -e build-dists
manylinux-compatible wheels:
$ git clone https://github.com/ansible/pylibssh.git
$ cd pylibssh
$ pip install tox
$ tox -e build-dists-manylinux1-x86_64 # with Docker
# or with Podman
$ DOCKER_EXECUTABLE=podman tox -e build-dists-manylinux1-x86_64
# to enable shell script debug mode use
$ tox -e build-dists-manylinux1-x86_64 -- -e DEBUG=1
License
This library is distributed under the terms of LGPL 2 or higher, see file LICENSE.rst in this repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c8932f3f6eb93f79d3209b326320432f43ba584442356e69bebe68e7c6ddf71 |
|
MD5 | 26e71ba280c3750e9b88266cb29443aa |
|
BLAKE2b-256 | 69cc018152d65e2321ca9ec5d9d828a9874b48788e0c4bdd31c51e7a361c7eaa |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_24_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7aa18e862d20b20a7f761bc1d5b3475eb5a4d8e76b5c792919d48965de1dc25 |
|
MD5 | abc4aa68745bc63110ef64db660cd889 |
|
BLAKE2b-256 | 019b6d7111decd1054f982772a6023b622bfc9eef0ed0b1756092ac6fbeb394b |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_24_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4655456ca117689394d35c030d245640e4ca621d77741610a6d5bce9ae282bd1 |
|
MD5 | 99e345ef84a060f79f8a6b7c93fed098 |
|
BLAKE2b-256 | d6c354f25da94f35bde0ae6f9823d7964e86f13370c9f47fdb204a5675699f19 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12045e8b6dab20520623d8de78c725e25abca6728f55e231b45cde90e2e17ce2 |
|
MD5 | 602133efd1edcbff1242715c3c9a1d81 |
|
BLAKE2b-256 | 1ac7b8fb576d9c2e845ef4873c406bb16b6b608043aa4522ddfd4d6c0686a079 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3f24001734725f4d7c5fd7a1d2e9c40d0ba923b7dff0f5f7bca86a3892d72bf |
|
MD5 | 299ef10c00ebc3476aae87130d8d502f |
|
BLAKE2b-256 | 6aca61f2ca96eefb2e3cff07de6446bf4e46ab3fe6c5dd1642b014f569ed3423 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15b9a2daa43ad599d2783b51339af22732b4c4e67e94af99b5ab10bc8c9ce3e5 |
|
MD5 | 7d5471d3abd9d9c600920f4e1897c267 |
|
BLAKE2b-256 | ba37d27884117f8d045b5f0adf7ce8cf509398090dc2abd6e8bca76ea5cc8493 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d34963e4bb8c33b46b52481fed344634232896b3d1e526618f378555bc898848 |
|
MD5 | c24f80e094d538c944f12adb986a2463 |
|
BLAKE2b-256 | 81ee250c4469a72728c97e65e4e67ba6fb3f07b0563c0c23bc2b32db1aca2976 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ed11b6e60b844e02111be36a582459550f085f213af757e917c2f3c9cff5810 |
|
MD5 | 8cbe702559f15626beeb7c5d073de2d3 |
|
BLAKE2b-256 | 6ac0543e5440297fc0738c14677c84cf2b40aaaf8d83ae7eb2586f0edefd61ed |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c056281e368e30b1615d9addf439bee29843e36c6033d405f2371e9a2f94e4b1 |
|
MD5 | 1dc6bae427fa42948feab0983eaa732e |
|
BLAKE2b-256 | d023596a9fe1e5e77befb3d7dcb164c2f87df1b6d4bf09138dabdf3c00ebf041 |
Hashes for ansible_pylibssh-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3068f3110888b76cc95a9255bae774f49a2be2d53fbd954f9aff1ce011653ca7 |
|
MD5 | 56420d0345f12981a23815e5771931ca |
|
BLAKE2b-256 | 09ecd5a2712d63cad6dafd10053706470a7e209c2a697d0eca9fe1d1a15f8692 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2592d58e805006f3b883dc4be556eb519c7e4b36f65fa2f435b4548da1df95dd |
|
MD5 | 7ac0d69f7d4a1a35004b4cfee84c322b |
|
BLAKE2b-256 | 67fc6dff971e8150316d32320fea82c2985bcb0d1054ba24e0fb0f55041a6ad8 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_24_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fa0eeaac17aa48fde68df3edd4a12beca40660b4a51224f042b7ab7289850ef |
|
MD5 | 2109b2d0c7a177c0a98aee73209bd6f6 |
|
BLAKE2b-256 | b86a3aa5a799ade0e8ea1b1f1ae870d9c87e80c874b65f2e806cd532a0d7d72f |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_24_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 250c8557dd7135c5a784e2bdbfb9f29a0f4be3314635d88f395e8cffc1f3e17e |
|
MD5 | ec1c809043109d3f7021f46a0d4b53e5 |
|
BLAKE2b-256 | 3301c6da2395303f89c93cf524247559f7c89ba567457d5586599bc006126a67 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67ac9823a6cd80aa26a10ec86b5522e763caaf3de686669aa1fc7f67e1d63a36 |
|
MD5 | f919845fe2515491726f8246c8b49651 |
|
BLAKE2b-256 | ae86886ec0f13c4e21eaafebaba9ef3667d780b84ff11923a336bc7145c5a78c |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dac3c24b5696a2dbff8017a7b6a50f33f608f7b7fd4983ce74e122ce546cbd2 |
|
MD5 | ea361c2013ae237e4b7919843a123783 |
|
BLAKE2b-256 | 6c4ad00d8bb42a83fecb9f4a1569028c25e3fcc626f2dda054c064bbb26d3740 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf9343fa8746ac085febd52ce3fa498814bdfaeaa4aaf56bcb9490ff2439de30 |
|
MD5 | 8e262c45d619ae3c7d97c5df0fc316ef |
|
BLAKE2b-256 | 1274903f09066ffdd561d99ee898da10001ecc3348e2a8340fd4028a32c63af1 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d84755d33bd66bccdac2ffae64493f433053e85de44c0f56b1f8df6fdd2471f8 |
|
MD5 | b837ba48f827eb862c103ae1f075d86f |
|
BLAKE2b-256 | 1fec3f96bc8a224854580e733c158cda4a00a1c0578c8d698b1d20fac7fac560 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a3723122cfdb8fa07ef5ba3c1d3877049f9378eda7c46db91743fd151c95717 |
|
MD5 | 6d7f1dbe2c57ebfb7b8486ebc9f1abb8 |
|
BLAKE2b-256 | 770a71422b2128a1fb83aa5846ca5c9d774046660bd8720001e036a617493dd5 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ef1b5b3f50265b5c9b00ad4561654a8de0d130ecc00e9d23e5e0efcdf328476 |
|
MD5 | 6617f10f050a72596c71504e8035c601 |
|
BLAKE2b-256 | f5c3a4ac9d0b2a5d08a323050a31208ed85628f0380efbf7b745bbdc689ae446 |
Hashes for ansible_pylibssh-0.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7d3d78f50a0e0b1adabd446b687935e0b5c84a32fdb996d09535b8463ad3375 |
|
MD5 | 41f72d3841dea36f929437e9fe555fc9 |
|
BLAKE2b-256 | cd6fa6073afc84cf8251cdeebb5c205dac15544bf6f980aaba235860312c38e3 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b438662ab0fcf711ef3d60665dc4d2502bd4b59a196d19f8fb7c8229c51a7d76 |
|
MD5 | 45bf47614b21a25158c7c589e7d2f8e4 |
|
BLAKE2b-256 | 2262dd9dc0c8fe4bac43130cccb8e593778ac4dbe4feed318da22dc67099f3b1 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_24_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd4e982ba45ab74b62e5c04a881096f5bab0565b0397db8d4e1160a91c28a314 |
|
MD5 | 86611fd1094f28d70aedcad3ff707b10 |
|
BLAKE2b-256 | 5b6280ab86bcd9006f7c666b07151aa2b2b87031e1e4246c5e51f8cf1afadd6b |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_24_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8244ba659ca384bdd32ab8cbdb9df6548494f6199b9fca6bccafa5c2da4e94a3 |
|
MD5 | 314456cacf3d813c2ff8f86569465f1c |
|
BLAKE2b-256 | 31bd737818ff9bca66b729a3ea78d8dadd18607e96c9fb6e77700589805be2b2 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b06022ce89380141db22e6ba3dcf8dcd429f676d75ccf55d2baa06c21cc39ea2 |
|
MD5 | 779a8310b8628861ce76a63b9c956a93 |
|
BLAKE2b-256 | 69830c4046c067d60f4e75821aacbbb667f2e4275cbacfcfe19b5d31b1e3e94c |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 567c227e52ebc186a8bc8092f7f32c47f0be26d7575161ed002475b1887d1f63 |
|
MD5 | c3061654ff538cbb0951a1e2f7047b7b |
|
BLAKE2b-256 | 3020603136249e61e29109f72cc5c25c81628b5f76416cbdc56589e10f47cadd |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1206f1964857241776a8c5f78b889410f63f8cc09000dea3c25071607b535f35 |
|
MD5 | e68805aa30ec966f9059ca934600805c |
|
BLAKE2b-256 | f177affe00c76549de72a641d088c144a9cfe1db1ff7876f3e417a16a1d431a1 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33ab8292eecea90e33ff598c974db4aaf9fb419785b1ae526a221390dc33a94a |
|
MD5 | e3c454106d4dd5edf12b5631c502b651 |
|
BLAKE2b-256 | abb38dc13cc0b7d460c917b9f9cff91a3095f04268f07562664d351268027fc6 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc0328bb3c587260cc30c6d992083b4f40ef4c923c72ddfb5779b77340d90088 |
|
MD5 | c94c3a2067dd6f72118db979660fdf07 |
|
BLAKE2b-256 | 9659e8e1ac36b4ff7599730d8288ecef84d809a0a437796e9e60ed831d490b82 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27860b16fa4273b8448a6b1ed7ee379615f17350f100a4abae5870012db23003 |
|
MD5 | 73b254b65bf66ce86de822e095c50746 |
|
BLAKE2b-256 | 82ded1dfab2f7ae2599ed9b174b6a3b1872ed7fd39aef3a15fa29d1945448919 |
Hashes for ansible_pylibssh-0.3.0-cp37-cp37m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb43068c26133d8b6589e1902574ba5e87925da5db61eddc2d8a2c66003f2a67 |
|
MD5 | cdc9e9d6c19803674a19734f3c7686d1 |
|
BLAKE2b-256 | f68aa1671220adb92f4ad2908e5b3002458426a8a5703b66bea82be57a85d1af |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c866578d2945b2a73fbe7922be1dd5a307011dbf4c98f3eb68959009e16b576 |
|
MD5 | 869c0ba0dd0863d498297d1719d0f730 |
|
BLAKE2b-256 | 0a27c40de302e861cad018d2812cc4ad81200deaa2c8b047ec71abe3d6045e54 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_24_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5eb68c07753c2145826d2f5a4a50a61c426dad50f75d891214b45ada15527d28 |
|
MD5 | e940a950418b0cd1dd0eff14d1f5de4b |
|
BLAKE2b-256 | 9ccbbac368fcefc81d490e4b8f4296efdd76c0c3582573d0098e46330f524704 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_24_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1025163a83fe61a99e1eeea8fe9efc3ddf5c04ecc86ea8636520efdedc03d9af |
|
MD5 | db69bc6ee58265676079986e8f420108 |
|
BLAKE2b-256 | 2b18f3e562e5713bd5a89eba662497d5880a76b48e213b93eddccc6ccc209ff8 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b08ec5410123147062475b4979345fc51f8629bd0791259b5c0c5bd798f88ca9 |
|
MD5 | fc89c00173754dafc9fdee45c76f61a0 |
|
BLAKE2b-256 | 1d59701ba6d589b90aaefeb6da55477263b48493c7a7935039edc32db6ff3906 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 150e112512b313e77626983ccec78c375cf3a618742208d8699476d8a1b5af7e |
|
MD5 | 9ea8a6f24f311d321806177270cb51f9 |
|
BLAKE2b-256 | be42389c2e1ab4c943547670f9054a4820474e7bc0b46e06b10534e4d9f3bfd1 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d124668f2b676cf72ce2ed162fd9ace90fd5c4119e8e5934eb51d396626e942 |
|
MD5 | abdaad25313222099ef1d4a295e38a32 |
|
BLAKE2b-256 | 70982cf2525374c28929c7aa5630bdeef3f903f609980941860fa2d6d7c2863f |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35020eee8d389bd76c6c5f4b7dfdb2517191e56e88f21b196758593d01f842d9 |
|
MD5 | 4fc4dfefd0a9aa462dc498087adbbfd4 |
|
BLAKE2b-256 | a88b9903babe52929bee011268e4e5f12704d729f9764e06b3f85428796b5cef |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d6fb28131d1717a89ab402c055c6e2af2a49c8584d20d2c7d62b56bc5e58bd6 |
|
MD5 | 68b8562c274698b11b3afb8c20b446fa |
|
BLAKE2b-256 | 53e3aa86c60a55b40733f4af9181e3090b3e39e126c4942c17b80e5db8eb3da8 |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7d622de8e55ba059286359c90b090b3372a310337fcb92b9b713153f0885483 |
|
MD5 | 0ee7c4c27cc75ffd26be85934722167f |
|
BLAKE2b-256 | 4445c39aefa423df8b336c88d6c34d75d3feef8c702d9c7df35b2fb3e8f5f01e |
Hashes for ansible_pylibssh-0.3.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6869c681bf03080f9324115902f2a25d060d9647467df8e66b68ef04ebe4d6c9 |
|
MD5 | 3ad11a554bfe58b7cafef369893f2d55 |
|
BLAKE2b-256 | 8ca55ba2f2efa1e5078c565bff71e58b00d468b51ea1cdd56b50f75c1e4c549f |
Hashes for ansible_pylibssh-0.3.0-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d69710fd2eb0ef9404c8aebc1871df97261b3ce82d91c8cd4ea7583a4a04a78 |
|
MD5 | 7c50c04a1c0046a651b7a7837f38dcf9 |
|
BLAKE2b-256 | 0115ccb4dd0e6e8b27c6642c34df3493e9597c4bbe13266a43887319643b68f7 |
Hashes for ansible_pylibssh-0.3.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39c8e16348e971d9a64ca553ef3448345a3fbd6c91f85b0e380e6d7f15e98b61 |
|
MD5 | 95bdf3b7f81443ee14df9b094e0e3860 |
|
BLAKE2b-256 | 67902c7f0b378524c75f3e03493d41165002a5a1371c9e69d8fd55688b1290fd |
Hashes for ansible_pylibssh-0.3.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ac46e3f354c532f6023a2e4aff56deb6b4c04a44f77f7198be356e610156f76 |
|
MD5 | 9eb78933bc92067d508ef8adc8ff8cd2 |
|
BLAKE2b-256 | 969d05d7f83dc182d10cc791c1010a4eb156984944dcac7b602dec93c8a0c7d9 |
Hashes for ansible_pylibssh-0.3.0-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50f0bc2d2f6003fb09e2583d74d91340d09da7ac87a048e283b1c98d7b99059b |
|
MD5 | 86167a3862282eec5e6bd0c5f136e202 |
|
BLAKE2b-256 | 8095bf1d39c45b98f735270be3d28218b6bb27db550e25fc3293fb696224e30f |
Hashes for ansible_pylibssh-0.3.0-cp27-cp27m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9bf7bd54de4ff1ee5579e547e4652316bce103e7318d0491b4af1e6ebf355cc |
|
MD5 | a3674f803d6b80eacbad7fc53f42545e |
|
BLAKE2b-256 | 454a1ed80d9c74e952edf3a78a82ffc777519870b60a20207a95505a2e0f0a6d |