Morphological image processing for 3D multi-label images.
Project description
fastmorph: multilabel 3D morphological image processing functions.
This is a collection of morphological 3D image operations that are tuned for working with dense 3D labeled images.
We provide the following multithreaded (except where noted) operations:
- Multi-Label Stenciled Dilation, Erosion, Opening, Closing
- Multi-Label Spherical Erosion
- Binary Spherical Dilation, Opening, and Closing
- Multi-Label Fill Voids (single threaded)
Highlights compared to other libraries:
- Handles multi-labeled images
- Multithreaded
- High performance single-threaded
- Low memory usage
- Dilate computes mode of surrounding labels
Disadvantages versus other libraries:
- Not ideal for grayscale images
- Stencil (structuring element) is fixed size 3x3x3 and all on.
import fastmorph
# may be binary or unsigned integer 2D or 3D image
labels = np.load("my_labels.npy")
# multi-label capable morphological operators
# they use a 3x3x3 all on structuring element
# dilate picks the mode of surrounding labels
# by default only background (0) labels are filled
morphed = fastmorph.dilate(labels, parallel=2)
# processes every voxel
morphed = fastmorph.dilate(labels, background_only=False, parallel=2)
morphed = fastmorph.erode(labels)
morphed = fastmorph.opening(labels, parallel=2)
morphed = fastmorph.closing(labels, parallel=2)
# Dilate only supports binary images at this time.
# Radius is specified in physical units, but
# by default anisotropy = (1,1,1) so it is the
# same as voxels.
morphed = fastmorph.spherical_dilate(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# open and close require dialate to work and so are binary only for now
morphed = fastmorph.spherical_open(labels, radius=1, parallel=2, anisotropy=(1,1,1))
morphed = fastmorph.spherical_close(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# The rest support multilabel images.
morphed = fastmorph.spherical_erode(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# Note: for boolean images, this function will directly call fill_voids
# and return a scalar for ct
# For integer images, more processing will be done to deal with multiple labels.
# A dict of { label: num_voxels_filled } for integer images will be returned.
# Note that for multilabel images, by default, if a label is totally enclosed by another,
# a FillError will be raised. If remove_enclosed is True, the label will be overwritten.
filled_labels, ct = fastmorph.fill_holes(labels, return_fill_count=True, remove_enclosed=False)
Performance
A test run on an M1 Macbook Pro on connectomics.npy.ckl
, a 5123 volume with over 2000 dense labels had the following results.
erode / 1 thread: 1.553 sec
erode / 2 threads: 0.885 sec
erode / 4 threads: 0.651 sec
dilate / background_only=True / 1 thread: 1.100 sec
dilate / background_only=True / 2 threads: 0.632 sec
dilate / background_only=True / 4 threads: 0.441 sec
dilate / background_only=False / 1 thread: 11.783 sec
dilate / background_only=False / 2 threads: 5.944 sec
dilate / background_only=False / 4 threads: 4.291 sec
dilate / background_only=False / 8 threads: 3.298 sec
scipy grey_dilation / 1 thread 14.648 sec
scipy grey_erode / 1 thread: 14.412 sec
skimage expand_labels / 1 thread: 62.248 sec
Test run on an M1 Macbook Pro with ws.npy.ckl
a 5123 volume with tens of thousands of components.
erode / 1 thread: 2.380 sec
erode / 2 threads: 1.479 sec
erode / 4 threads: 1.164 sec
dilate / background_only=True / 1 thread: 1.598 sec
dilate / background_only=True / 2 threads: 1.011 sec
dilate / background_only=True / 4 threads: 0.805 sec
dilate / background_only=False / 1 thread: 25.182 sec
dilate / background_only=False / 2 threads: 13.513 sec
dilate / background_only=False / 4 threads: 8.749 sec
dilate / background_only=False / 8 threads: 6.640 sec
scipy grey_dilation / 1 thread 21.109 sec
scipy grey_erode / 1 thread: 20.305 sec
skimage expand_labels / 1 thread: 63.247 sec
Here is the performance on a completely zeroed 5123 volume:
erode / 1 thread: 0.462 sec
erode / 2 threads: 0.289 sec
erode / 4 threads: 0.229 sec
dilate / background_only=True / 1 thread: 2.337 sec
dilate / background_only=True / 2 threads: 1.344 sec
dilate / background_only=True / 4 threads: 1.021 sec
dilate / background_only=False / 1 thread: 2.267 sec
dilate / background_only=False / 2 threads: 1.251 sec
dilate / background_only=False / 4 threads: 0.944 sec
dilate / background_only=False / 8 threads: 0.718 sec
scipy grey_dilation / 1 thread 13.516 sec
scipy grey_erode / 1 thread: 13.326 sec
skimage expand_labels / 1 thread: 35.243 sec
Memory Profiles
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
fastmorph-1.0.3.tar.gz
(24.4 kB
view hashes)
Built Distributions
fastmorph-1.0.3-cp312-cp312-win32.whl
(106.2 kB
view hashes)
fastmorph-1.0.3-cp311-cp311-win32.whl
(107.1 kB
view hashes)
fastmorph-1.0.3-cp310-cp310-win32.whl
(106.1 kB
view hashes)
fastmorph-1.0.3-cp39-cp39-win32.whl
(106.3 kB
view hashes)
fastmorph-1.0.3-cp38-cp38-win32.whl
(106.1 kB
view hashes)
Close
Hashes for fastmorph-1.0.3-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bb77dff1f7e73ff56772c34d5eb41082db88a8deb81b8f4f25ec5d0e892b3a8 |
|
MD5 | 996cb14c8d7df896cb753e92ff90fba3 |
|
BLAKE2b-256 | 512d0207c85dfb0af1cf591ae96bb5fb954f88c0b25fa4dc45b97189e4795596 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9629d9969e43297976a966effb0f21747286d3666a8143f205a584d7539e6cd1 |
|
MD5 | cd5cbe8031599aee6ce8cd50b84c35e4 |
|
BLAKE2b-256 | de2c553db0d529a6b782c69b5c489d30c4f29b5eee6f6bafd7e1691bc94fa884 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aad2d42a2ce8e4433dca171fab1afab73be1d1622b1fe490772cefe4c66c7fff |
|
MD5 | 80bcf0159ca00b7d70ce53b44680d721 |
|
BLAKE2b-256 | 5d6bfa825f66b8b38bbfc8a6203a3a803464689e820d716747b764570fa6aaf5 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39922c88eb323b60713a4c1c1869a63c0a144e1ac4ea1f3793fd0307c627c0f6 |
|
MD5 | 68de18beeec2d77a05e1e207939ed3ba |
|
BLAKE2b-256 | eb6956e152104c53612551078b43c1306d94aca2e62347310543f87f900825b6 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5597e88fe8eafcf14c72bdbeff76adee375559dbdfa85ef851b23f46cf6f8a82 |
|
MD5 | 7dddf7779b3730e64d435293310a2c67 |
|
BLAKE2b-256 | 384189a06a98c8c930d4e16d032f20f08c9d47ad479a3f6c1064a3139dc1fb43 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38e8fcd955e3598a649e22c0b9be14491b0dfa5a88f04df9f4000ae77d9c4b15 |
|
MD5 | 151cc998dd0a991e479678d94302a9b2 |
|
BLAKE2b-256 | 2892aa9f9923324a56c1ce090e63ef138afc2475159ad7abb17e550f5f9f39c0 |
Close
Hashes for fastmorph-1.0.3-cp312-cp312-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe59574f7000eea2178ed5affb1de319af2acd817d68629db383fa4cc5a3e0f3 |
|
MD5 | 6219abf851ccf52b25f3df4cdec308a9 |
|
BLAKE2b-256 | 1cf3d0eb84e66b9b46a7b3c79edfe609f96a24c0d6bb0e96a06c3fbf73a9b714 |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2eced84c3c2c921bbea12cbdce942d52adfe311d138ed39241d0581e84da727 |
|
MD5 | 4a73500912a0e3185e5839154d649053 |
|
BLAKE2b-256 | d3f13cb2511c3912c88f21df2e80406ab7453e5ce32decf074ba68696b4713ea |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cb48751a7875f717ea1acc7abf00da703bfce17fa7bf5fceb0113fb80924bbd |
|
MD5 | b21ca1612a53840eb2aae2fc88b1d1d8 |
|
BLAKE2b-256 | a95799cead452fca8f159b57bb6951cc8caa874ca451caedf77838cde2fc21dd |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30d18dc33a0a00c05743a3ac7dde6a6b98a247b4eb7972e27e24a36becf02af7 |
|
MD5 | 7d1684f84a65ee5221035a04840eb91e |
|
BLAKE2b-256 | 40d11ee75017ba0a914472929daf9636ca51c5c1b106acab4f7d6d6849762c28 |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f47706435aebf9489e031502048178570d2a1b94233b6c2808bba9316fc74cc |
|
MD5 | 6997b076d52ed7f0d92d3c54aa3c6616 |
|
BLAKE2b-256 | b36d2c66e86552ad6fb3adcfc0b464f643d8a464f7f0220f14c154f236acee97 |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7811362e171b7bbb9a1ff2878f8975ac32e8a0f0a8781a272a009a9c7350263 |
|
MD5 | 64709abc46a8605666c1917f385fe866 |
|
BLAKE2b-256 | f3959b9ca5d7cad03aa462fa41a97523c19ffeb5131458404e93f4fcd9a63cf8 |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 502edda99df4feece04ac2c410704e235b245d5fbf5600e30ba6c22f08d52145 |
|
MD5 | 131d61bd63eea96f6ffa2637fbd2503a |
|
BLAKE2b-256 | e17dd1515cbbd28e6f485fd8bf7e4811ea801cc51814e061c93d7edb84e85349 |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f557cc57fa50ed096d305bc5363bdd7f12b972bb346f070a7194f16c98e1380 |
|
MD5 | 84d6df6a2f0ca5e89566a58473c5756d |
|
BLAKE2b-256 | 721592c843ffa7b43c02d83cc16f9af693a31694c91d2f7bcded1d28716182af |
Close
Hashes for fastmorph-1.0.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db4cdaa0f7ae279d2502f9903d8e2343f9e686a6f025407267ae30cbb0aced4a |
|
MD5 | beee5b042e74b30c867033e1e364e27c |
|
BLAKE2b-256 | e0eb94216e6db45247603c04df0094cfb9057441a9a4a3190de8bc9f65745ddb |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f87286967ab45b7cf36c70db176220f1699e1d728b99a988e2ee1cf1601cdd78 |
|
MD5 | ca8f42a8643c009b360d558617ac89c8 |
|
BLAKE2b-256 | b51fd84feaef80ea7f736ee15962dd43f0746431e694bbbc1bee865bbf514bd1 |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0769fd6ea1e4c141ffedb2800fcfdd8bac25669423848ec1bfcc445343b5cab |
|
MD5 | d6139a61ab938d1a0362d494a514bef4 |
|
BLAKE2b-256 | 42bf65c25dd3e20dede4c4abe6a05bb2d3e59a927b579db9c49a7ed397dd6b6a |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cc6163769c5d9113efdc479ca93a3d0a40f977bd59c3e7801660e5494238d9f |
|
MD5 | 5e06e46d17c49ed7af0e252f8c3b9102 |
|
BLAKE2b-256 | a29370c7d061bf356889054e2dcb898ff56ee14e7e04677856281cfbc6b452e0 |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20d86210f72e300342732a7e5da82387037f8e5b0c14cce29ab4a0aa6873e8e9 |
|
MD5 | d524acfdd657cd9bd4260e58bac43f84 |
|
BLAKE2b-256 | 90baa2f56a09f801c10cfe133977d226e01151cdb24a503878759dc7974c2441 |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cfd9373aaf14f8291505d69866a7b02898a7c11c92dd4547218d9043d1974857 |
|
MD5 | 9655f4ed8f8a31dae8930c6ae02eaf26 |
|
BLAKE2b-256 | a59b42c24645943fecc40b7e99e2e3013b6c4b6c6a4043039ffecbd6f4b9c653 |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6b6752c8e4fd16575b55f937d4176e302a91a4b189145340944000b04b9f44b |
|
MD5 | fb834309daae0eaa1616d5a284d699d6 |
|
BLAKE2b-256 | c56b1e52c1557628f9678df965196e90a07db0a302cfa22405fd50f2ed2c830c |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0385533708f9bc7de39de2d630863aa979d4b2ef1e303614b654647c9bb85120 |
|
MD5 | 6cff46618a8c0b78af9479332dfea4ef |
|
BLAKE2b-256 | 52a977b1ca1e76fbb7786338f025241dcb552060f2a9dbeb272a08ea18e16943 |
Close
Hashes for fastmorph-1.0.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d0307fc432fd18629136db2831fc6ce2b3d579ed70b2299200050ace2702a26 |
|
MD5 | a75bca3a517b906e5cba55946860bacd |
|
BLAKE2b-256 | 6a4b34a78ad5e3427b5c60c9fba6c9eff42284efc9e6388dba5aaf8545b37096 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1236ad9fbb93e5662d1e254ce709d8b552092e3db1f32a2a162223cec3423cb4 |
|
MD5 | 26d73afd87c5421a984b9987909e5df2 |
|
BLAKE2b-256 | 9e32a261bf777858bbf7feeebe4b6de83db309eb675ee907d2c1ba4cb3e71681 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f9e530a8d745b56e5c10ce2636d61192ec55a65d2a4f18a4240e0e555afa2b7 |
|
MD5 | 7a4ab869f8d2d61c2fbf880e887cc8ef |
|
BLAKE2b-256 | 20e3abb6330d5ad536cd7f213b959d7b81238162e1e99b117a6733f43388a5b0 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cf876808a97d5c33bd883c1149dfa576f6bd5f10d9cae02f1c8bec10b8e834f |
|
MD5 | a634faa88432d50fb8c598b6c2f9d840 |
|
BLAKE2b-256 | 0557ca0af890398889491f5a1923eb03d3ad2797d9ad967abe0f885c7bfa1d9d |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20ef34cc6bf4a044035990452e433a72594ca2b5f6aa0a69872e9da404b6f503 |
|
MD5 | b57df2321e09a21e126358f870331f89 |
|
BLAKE2b-256 | 6a648b5c40aa72442d5d9d0c71b1fb0d73ffd7a56f211262ed42146b2c4a6869 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b15460ea8d32080c446d7fc232e9da8510f8099fc0073bbad0973e3183f778a0 |
|
MD5 | f33bdbb379b6bc08ff1d6fea0085d514 |
|
BLAKE2b-256 | 445787eff278fec3cc876df6869cf053e4fb1a8d320c4b97e4e3abae822f6010 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d277b873638d4fbbd208786cec9af1c30f916ccfe5e564461ad6d0378227087 |
|
MD5 | c4330f701d3ff74fd3f54f37c333b57d |
|
BLAKE2b-256 | d593f9b2355cb6460fca171b1deba1c23ee2e7dcc39a4e71438652795891466b |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e37e20fed2736c6ef0420ca70f3598c1c88c63dd546c633f7b258074538d195c |
|
MD5 | 23d5f014bdc4122b6953feba0b3175f5 |
|
BLAKE2b-256 | 2f9af82086e91409ce7809dfa73d23cc4016379f97d28fd74ae56bf4c5386d24 |
Close
Hashes for fastmorph-1.0.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45386049bee4a49ce9b69eb607fc0a01437f98f1e3f4e823dd3c287803a3aff2 |
|
MD5 | ab40952624844ec9698573df4e1f5e80 |
|
BLAKE2b-256 | cde02b6e657a86b286073cf45a00c3adbb8f0090c7675215ab605301dea3a178 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc53c9f90e495f18cb68c217b36b6e074b46dc81e0a0f41f9c4641f1031045d5 |
|
MD5 | aff3dd3eed44999827e7acecbc797424 |
|
BLAKE2b-256 | 592671ce761bf1f35106994b76fe52689a96ead8515df00f9de56b8e9fcb09dc |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fac85f67510069ddf03850861e3708a4e5e55a474795148978b759448ea0678 |
|
MD5 | a08f810c41cc3f1b2794af4e1de36d2d |
|
BLAKE2b-256 | ed7d4cd69cea00edb1668ec748077701720b8c26b1c6bd9b0f6fd3165d3ffac9 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a541dc2840dc1554b358cdc9491fdff948438c2c99d4382cbd78dc9b11d2427f |
|
MD5 | 03109d8964be8f792f0d993a3196d5ea |
|
BLAKE2b-256 | d3089003bdd21deed13e57e0101b0f37b672cbc454b5db4677638a1cb1010353 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b915ef23fd23e2cd56df42b7fd68f5c5b9d0a0a836b61a98bddf239dfc519ddc |
|
MD5 | bcfaa3199441c2d6a240935cb737eb57 |
|
BLAKE2b-256 | 1d68c4aaf9149c6dc0b23b0e9e14c7275d10dce8828fdaf9f179710ac61ada11 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9384a820ecf24f9ae6119f15ef6b4ef4110dc6781fd2ee68dcca67970094f1af |
|
MD5 | b9544d0d3aba232c41921ae8faff8d36 |
|
BLAKE2b-256 | cd299f317801e83179688c99e1bb4e3822ccb385ab49fc6d193937af1d8cf556 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-macosx_11_0_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a6560b971758751275a8079c3595dc321e3c2c6e4c3a7c09cec3ebda2b11171 |
|
MD5 | 12edaec85d3ea7f433f359f1aef6628e |
|
BLAKE2b-256 | 22808e47b673e66265d3b6139f69f67f5853daf6dbbb4ac044c755ed7079bc51 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f9933a0cf004206e7dcd4df68ce36375a362501cca8b9a5b3115debb85a92b2 |
|
MD5 | 7093d7a2533e4b624444947917572f1d |
|
BLAKE2b-256 | 6e5fda4d01954a89b10626429cfe109cf5bffda1b3462df2aea45e608d513b71 |
Close
Hashes for fastmorph-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baa0d1f00a7f16ffb9b9b1bff5e3388eedea37f30d8a744817c71a5e3adf818b |
|
MD5 | 431131930ce899aa8d6fea175cc1397a |
|
BLAKE2b-256 | e1b06634da41e39d56bb3ec8068df13feebb58e0a6cdd37b8320aac8318892eb |