Message ID | 20201126105013.246270-1-ethanwu@synology.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: test if rename handles dir item collision correctly | expand |
On Thu, Nov 26, 2020 at 10:50 AM ethanwu <ethanwu@synology.com> wrote: > > This is a regression test for the issue fixed by the kernel commit titled > "Btrfs: correctly calculate item size used when item key collision happends" Just two minor notes, when you send the next version of the btrfs patch - use 'btrfs: ' instead of 'Btrfs: ' in the subject, this is norm nowadays, and David will probably change that anyway - typo in the subject of the btrfs patch "happends" -> "happens" Very likely Eryu can fix that up when he picks the patch, so maybe you don't need to send a new version just for that. > > In this case, we'll simply rename many forged filename that cause collision > under a directory to see if rename failed and filesystem is forced readonly. > > Signed-off-by: ethanwu <ethanwu@synology.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> Thanks so much for turning the reproducer into a test case! Just two similar minor notes below as well. > --- > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/227.out | 2 + > tests/btrfs/group | 1 + > 3 files changed, 314 insertions(+) > create mode 100755 tests/btrfs/227 > create mode 100644 tests/btrfs/227.out > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > new file mode 100755 > index 00000000..ba1cd359 > --- /dev/null > +++ b/tests/btrfs/227 > @@ -0,0 +1,311 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2020 Synology. All Rights Reserved. > +# > +# FS QA Test 227 > +# > +# Test if btrfs rename handle dir item collision correctly > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > +# is forced readonly. > +# > +# This bug is going to be fxied by a patch for kernel titled fxied -> fixed > +# "Btrfs: correctly calculate item size used when item key collision happends" Same here as in the changelog, of course. > +# > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > + > +_supported_fs btrfs > +_require_scratch > + > +rm -f $seqres.full > + > +# Currently in btrfs the node/leaf size can not be smaller than the page > +# size (but it can be greater than the page size). So use the largest > +# supported node/leaf size (64Kb) so that the test can run on any platform > +# that Linux supports. > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > +_scratch_mount > + > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > +abfbtnbU51971c26ade16d6bb8b42b99144fe5f9bda0235cde455fce24489c06b3f357fbf8e238ac49e746544b6985f3b83cc831fa5bc3dbc5ab00627658089c48816059a002f19ba5527f350bf01ab6402fcb5d72d1d566c9baf74bc48241a3513f05845e40889f62149ecfec18585e50f7802370c45a > +b67cpjGha1638764980055b7f03b0ab1ce46ff0163bf154315d3c47068448499a436a75451f7c3da601167c34e30a1780ce2a383755258bd66942003779705cbfa4058450fd4333b28a2269f5231a8ba3d2d0d417de5a9cb257f237593d093f06436516826e30d2c7f93fc77de3fea828c4885a11a1804 > +b15afZbqe462beb2f67b46a080e5c28eb8b0e250615a4c0e533c2f095ef9b64217874c49b3667cfc2e57981082b8f615f7aef32d57259ce2ca1bc3f574bc62a81666188c7a381a536cbacb886dcddc7ec469d98614bb864b74c9a869c09a606aee77800b93b07dc95d1eab0d764990ed27c45848d44a85 > +be83LHav2f34348f05982abcce11161ead869275e6282d085b426fb6f4db16bbe2abc01e28bdabe9df67775d0c7ae094c4e7ab157425d8ce2568ebb747343c2a15919fbccf277f8aedac75a419e2a0442151689f1563b818acbcc458c9624814541c685430d674e7d8e4ed52243329ecd57ffebd42592f > +4faaDD279c5a7d8811a25ed3fffcc252785195a329ffb4a60732d446aefeef9a934c5cfc2cf571ed21efa87060a07e122b209f8a04651c171ab04d93a8914dbdbb18e2cae018dbfdf758e30a2e3b5fd6e28e929da70ad85d62696cb9623514ea22a899d861b356d08613d7904f9965297eeb8eb4603b0b > +8b63bFYY954b1329a0dc21b894bf0ae56c13361892fb397258ce0aa003d8e9aae7b36f2cdea9016ec3d43cd0ee791aec8f81ca241a834188bc6bf64fcb337ed83dd8d6bae971aa2e73a1bc3869fe5292ee9700d88b0063a8f484383ee290cc45a5581fb3dfb4d03a7cdc36dcc00ff3f58d6bc02f164559 > +443cMEr-c11dedd9ea8c3e038195afe46c00a9620cf366f38cafa01908ff99a73ec8a2fe7d1d76fac96b418c251c37912d65b20cbc535e759dcec55c5adb3146734ba5b4858af72591b14d1631b93b2f018c4a26b330f61194bb271b55602a3c024f8f504d09b5d42f727a5df5ec523b83b056886d51e9 > +6297zARyb7a112108d3f31e11deebd0f0efafe272e2fe7abf7715906214560fdf1d3d2d461a0c407aa1cfa69c99461f385ae57c6b77988c524b2d3f09815a21c947e7172e618e4cfc97296f268b80939447c4d4294ae1899036ff32ecebcc777f4b60f689b4964d29a52d032e3c68fd1cdb78a26567134 > +a9e515Hc662f1f129c686bd1ad57e88efe64055ff8da5ec1f0004b9643451b6d6569bb07ee791a64a321de122d148853df04a4bbf4995bd6233c230e61cf5e3f29c9acc22ff4284aeb3863ea380dc647212e2665d368419dd070e61ae8bc7626c719969b99a0e0116ac6d94515fb2e3ed5efc17f4f043f > +a12eWoNWaa0ede03a3b33110c9ad66194fce46ab5c0caca08c48e099a7e3e6276aaf7eafc7f0b237da55e99e158c0f552e3543a12f4bc806a7ccb745e5b5a8754893fb5c22cea317c2c993a3994e9c6049c147cc9b0449d610080e75e8b11e247bbfbf60476e98cb057e29d50baf807a2c0dcb4f215c61 > +4970vOGae2507ae0cb53aaa3c413a355c610a4db3c079ab5c22500c342854baef498683cb6da0b6269f1b70f6ca5df11129cace6d1a7070d629b78174ed3d5c27c4ce8ed6189ece3137a66389fecab8335806e3a3454bf196a064b4a5027b98da672df2af7f64e0bc504a708b308865ba5ce8b3b1ed01e > +67f9KajV70624221d93a0c453988000cce87183af135f47fcc61c55ab3b9f440a911ccb2667c904a125f7239279e7ff0d04a5141649c544da90475234c35d9e3dc3ed470c1fc536f847af1d6046379aa12d9021bf09c66bfa2ce7fd256e2474ba4d288907fba9adf3af1ec6dace47cbd42c8dd5a42db85 > +6fa8UrPwe23b9f2b6875d3845a35ea2e9005f5b2d835800880dc2f78d04394b3047c12d3d99751f40ce5edb69ebdcb59eb18f71d6233d3f81eb3caa4ee5b0c196ba9bc10c828f651b3ffaf3b461c8ca301b3d9bc6467122f8b6da05d18b3766dfef49c7c532ce436d33c9e46546522f4e3fc0895c2403e > +8100g9ESefdb0e2723e2e6c5bfbcf11566bc77f41168745d02a188173d2ccad76e91d8f96ec8bb23ce7311e4bdad7070ed3d37d7e99f2c9c4f6442b40bb85d452b66dfaa0a577acac8bd63b494151b474204fc5404e3785ec9615a679d953b840ab9cc8b76475638281b115540a8cf8f1082c0a1ba2ee4 > +cc41t_zI5ab920e469b8577bab74ccac5477fd85b1ab903c7bb6043493fec4355a1f1f9007ac112e217b05363522ee7a131ae1d04a6cb3c8042ba3000e13a1f7379152c19aec0b32c03376f6aa7065dc69ffdd3befa17e36f8fea9099a8a60c348bf3a16c57bdc277f566585c042e439c7cde8879b7e45 > +f4b4iLwl80383655d485a678a010976e7cb2347c458908fa49baab1f2dd592737082f4aa08f15c68dbb6906f5ad4a3105e473acf50880bfd8d2d1b720fd33e2bfcc088bd5b8724c159b05b65fc94fe25df6c13213286ac50cdf707fcfa24b2289e5e99415a61f5239412bb512dca61bab0915e40ad8707 > +9163CIa728a3b486c174d4d966d536e78b14894b835007e12fdd685bdb5341d3ac3dbfb551bcf572f4f49da63c35ec7450d75599c255a77e14506957208a8d2d73856863a9ea31b3c88bb7da3f7c1df2fdaf77b58da75b7be37adb765d08ac240444b0732821c723a7b8c7bc2e4fd4c3ae78883550a2cb > +7a55I2TI2fa03fc98f4b640d854f026b14e6782793225ed4efbedd4fa1a2e8bd372a5b72760de18dc9911749619b12b93e8c8796942d5615c9d5f402f5271b8ac2ceeb21e8b135ca7c26f45ef8d1a9010af489f16cdb6bfb1f83c24d4cfa94820996dbc81a813369984f04dd2830acd7f36f904cb26775 > +a7f6EwLUce914f4502cdf646bf3fe0919a9e7553917fdab0ad267df842d4e4207dc809ca457f30148cb5c6df03751cee4d39d72fc67462ca72198b1c8a80a3501dd1444c680202a299ac776b4462148ec433cb4a93f0e8f30e32d1737be3cfcedfabbe2821e0b3eeabfe5be6f99d9e999e7b176365a90f > +a0b54rqO799f6114d871b20a36db204bc25a7321fddb71f8a82abaadefc7789204609a80654f1e20415edf526cdc59f73b2f21f36c31735215ab9aa2181e496503acfc7247af0ffc2aa1a0af553c96e1314e943dd12e12d471c7cf5cc99c205d0acc8892bf9f23eeb082fd7d93348de366c557075f5ee3 > +18ddmZhwde6ad31084b0d7d49f91034fae335b4cf7eb3db95d6793bea1e6168e515c2e82d0228f85fb50a0fef9bab74f531925c29abbcc346cb52d31b7c7ed42c68868e57f9421caa3d40bb318a9fa636d670b7d6438ce553d7130b62c0b71506cfd7609f7db4be6baf1a61b47bece2abb3227ea7586bd > +5e55lXia5af168a15006023b008a849f8fbb3fb33daa7d8e52c231db08a72335375afcd62fadcceaaabe07d5e891e9b3b793b8515510f0ce2a2c866343f1a929f460fc9b70beed9bcde4dcad8ae1799588efeade04018ac0bf55d83a7fdb84c4cfc1c9291879c6375f82df7cbe4c8a85b3a8353f167e5c > +d9afaSCF1c01c3f000e1426edaa029d51ddf0483207f84b71b2fe1819954e5374da80119b571f261578753be0213fed92d4b6cacc72f586366e159bec4d8f3a01765d80b5c2dc00389a644fe32f718e4338459d69fe0cfa9ea2936df9d584922e7ae5f6ccb02401100dc6fb354e5706021a0aba485735e > +76a2sP9d6449e55f087b74f1f7953d94acc68f86a6b7a0be020fa69313fdc6c6e89361ac2c1835d3884ca0c51a7b0432edf9d9ea9077cd418fdaa731a7e50c6a605f6c9ed51540d3eec4bc05c43351920a987e12bf3e181bbe1f9a2138e3c1c2873c6021326347fcbc79ee7acf11951e498bb233082c63 > +ad29nQH-22d68a207bef57cfd9518a43d8e8d2a85c251424227e37ae77dfb76aae86db13a467d4b5e307a083dab941a44d73e57d9a2d38541038589fca6e0b9eb07aa4c523880f632803dd5a58347c55ad23dff3c4717ad0f9b9d0cafbcf1e4240891c22920bef7cec8a12ddda95af18afa689fddd14aa > +8b28WbeNcda0fba6eb6bd5cf19e78fb4b8857cdfcdd9f76119d0e8caa55f1e72a045e9e91e9e96b3267ae490399ee28c9fa12021fcefe3f0bc53adede3e9a764028dfd4f2c9d82bcc3ec29e10f2bcea446ce0a59d217a706f98569c0264f0ecb0426429a4d9e3b1dcceaefb5d1359ff85bfc1b0cbc425e > +7627qUn2bbc60439896e373aff19662318d4c5cf53eccb9b8b610dc951c3d3f2fb6b26aa73ba862915b7aaa93a4ea35f4d187c1093c86274fad2ca9d16ded5d5abf1945e2c265ba7944ed6aec84f15cf85c26ced8d13dc866e5410106ab0c0a7d9ba2725fd6cd8bf392040cf4feb9fafb13e1b6afd5b15 > +40c3iuAhb9f728844a94c6863868f772be8dbb58ac7b82db39214dda63e7560eab283e2f469a9820d544281ecad3c08735d585b7e846941856bb6932f6d7af2559d88ecfc73f27322379d2ccc354b55e99b711e49d9b4243a8e998d995e79b09f7f5aaa7ae80b831414e0a78baa85ee14f0e3d06248415 > +40c1AnBB7eef0f73f33e87e6e1ce331b1435d37ac4263a23cc8e3108e6584fe04eacbce3af2c0b1f5b782daad316835f609e5cfab202be22591537be509d2fdacef122b387b2a43dff029a8d34245edf1ab0f034d043441960bb43a5fb06eb58af203663d12fae3ee5e4859c912760afd3e9376a7e7994 > +0cffgw5Qe6d9fdc2b3cd1f57bccc9bd447cfa56da39d51e90a679f816001e0f55846e4fefa59ba92e60396db4fe49ec95069a5d6ac01ee20480505d48abe475be6b2c02c436e9977e444f641984d2eade852f193befa6d0dc93fdad41bd2891447d9151936aaaa2afbe5e1d54468a839e36d238b6c6eb9 > +f1ab-D3k5194d801cb3210d850aeaad04a2b1f0e8a208e88738c605cd6f33b40648877919065232ec8f5ac259ef120059131b30a58459f8bf1030e2df9e8f8ae41aa864aead283dc584e0f086d4111ec30ef5427ad3babdae71d039e83abca3aace15e157da7eb8502b3a553d1384d9b9e1df1ef804524 > +aedbWtVd15b79a3cc0dd99ee277592a7aecbbbff53b39efd92596a6dbe095ea069c61ebd76930723559a5b76609962132eae3cf19258c54a54a31e9caadb535ed8a20787ec899d4058f82c3f858c493fd345fe36ec8b64e8abe208211e8e652b4bbb3e54082ec005e78ad446cce9b92a2328b5cad81714 > +85e9NIHO7b9ab9bdeb827a725a8ed676019d1eee77c90097e9bea996cb7bc4c295997e545949144e46d503388c759d992f01b0fffa6c63cae019b325c07d976a6f7bd1fec6a6a23983c70501321b0d4ff0475221e45707717844eacd97fbc6614be9f47cc5b28e34f4a8f87c9ce8bf3e25f85f62553c7c > +a37dQDI71b1666c9edc54930057b8d1e1e6f668f126e0a6ce7402035fbd356abef8a51f0c2e6b3e7826adee27d102c3e4f1f7a2b952f4fafc5e8b4b4ca15fa719b0c9d1e27e069a1c2f552ecbaf4cfd75624c4b24ba7e06e330906e03b335357a5b8391c39ac17ca2ef3049bb08446aa9418026422fd12 > +e387NCRy54b4b3fb40f918d4c7f225145be75007eac09a768ac076a751978c87c5d81eb44eb7cc37e2c17f4689cb1c2b4910f25132d78cef1192bef5ae60a5754c66da33cd38e17595cb62e9bb3c17e33524e312d26d6363ff073677835609cdbe14ff7df12a074d6aa7ac8e1d194a5b8e0cc8c200ccdc > +9e306_uT09b6f84ea40470655a7a0eec46cf525d918f454509caf485b221a3a0ac2253b24f15407fb188d0821c0c392ab34bd6c50bb8ab3aa11a4b609e904da69c4a766e23a9847d15d2dbe2fef59a6f9c3b9da1ea88fc5e4312e5a17ee006e2b2f815927c7ec2f5f4dc670f59a1004a3ac2b36c8aea37 > +4042K1X3b97cfd264d9dfc8a6fb554120ece6aae9c8576e98d00d518bcf15c01284fe615c9b0d719c425c110445521cc07fd15f51ef98e18d868e04b4d3181b4c1e6c98cd3e3c1ec8bc8a1ac860e2628da1eaf76facb9e3077853302403841dd99fe99a45e9e4bfac920d52713075c87f443203defdef5 > +1b7dowaff0b391650452ed2b87d843adaac09aeb09f6df356ed975b8e744bd3158b4d89edb96e86bb03acd08a781b9577737ce8fddebfe5ec2b9f2115e0c2c5319bd2c6c0bd7e97f86ca7c40119fc192860e338bb1b633a8c07efe0292fb515696cd97e7a5380209cb1a147b592d089d31f5cb6f8cfaa1 > +192eE_gj8b3b6f608dca13671c1fcda4ee441ff221bd1124e4606146ef0346d5deacfe232ebc663652af3ca812622f7ede2c9f264768e0b58f028a1c0c038435b5579f887a03fbc935f41b22feba1f7625d113b218f9f343dc045ae2804b08711b1d4a1a386b2234e7836ae60129520d0518663ccfb06c > +90cd_vEg3e3ebdf5857e8c110bd8b74467300a7837aa5fd6c373fcc3305b4bcd2f89d947527f35ba892d1e234fd19b1cdc23b46a5279368221f92e75454cd20aec0783623868adac999370723bb355d12421adf61abd4be15668c572bde7cced99ceee6f77b338e848317f5fbcc4b6cb33b42fa3f48458 > +376aI0qz3d5397340be68d1c4af90ffbc5337521b5e3524442d49e7c0626ec23a53da91894813c275b2d7c0e4aff34656428a17dfcbbfca6cdbdad4022cd3cb9e517b5629145e475e567f442fed054f17e13c10bf8c174f4269a4ae782c8436ac0d1d2ef62bfc84b95b13a2bd341ee88bed1ff7f7a647e > +36185q-4cebb5c8c7bbb8060243dc7bfe51d16ebda88849fb2e82653a9a00de248db052716ef421320a75a9c96c194316f7b5f982228aa52b961f5197173af0f68283a708edea915c13c0a065cc7a3478324ce07fde31235047e3404008f965decf980b15979dfc56aa2cfcf4337cb83acaa0d71f69666 > +687a0dPuffb2b051e1262307803bcf6beda92df9a1d0cf0c90bedad5163664cf595f5ddfb17831f6bfa401259d566938a3d23bb63fbe0dae702ede648561d7905f5e454c54b9cc3b8f485ea140e14ae347a943e240064cbe174a35e964fef5fe22623e5ae2eb574e05795552e175e62f733452b9034dd6 > +e3fe52lXfb5578b7514f1d9d856dd62160d3c7ef0c17f6bc13fb0ec8ed715911fd3327ce07473edb6cc90e5cd220ce55fcb156cd443179b38e23892655f3fe49a70044db906e7dbe86ac273e33ad6fdd154ed7235cb33a3fa8a0ee667a7b935e173031b6f50bb5cb156348d955367b1ba385df68023f3b > +1235K6k0eb0c2a7a781af990aa8e3303a0d98f140215d4b807876a7635db613a23e97869c7938419503568aa0e5a263e9834ece37dc3ca53ec1db064279f3b06b8a2e2cd6017371bd5596c3822b7d469e628584aa6b705161ba64434eb5cbfedd878994e81e848d8be0d4a41ac3c5ea0eafba1cfbee062 > +1222wBFV63e1c9679a7475c59eaccbc023d0c5aa88d5a7fcc4e72a5e0a507f326b2c8d6a3bd0aad159e833db9f7a66b4b70d3e2c41ba2448019d5f015da88fa13cb23320994f7fa4bd166ea4b29326447518c6ebe71b5020ffffd7c2671d3826b6654e09bd017e54b295078e305417ab827ae92f6573bf > +272cT3VD267378bdb785801cff36d6986d2372aa4f057c075bc9b583d91963b2d370097eba6838cf42193b10ddf35d9b8b5a55804555602e896290500f21489cc5c0699502c74e4415968215aada9b0d3755a0e7e4956c0b8474f7b21e0ac10901b887c4ddc88fabe593ca2cc8bf2fbfc9111dd3765040 > +2f7980uV4ae0faeecff9ba50a9f795ea8d097f261ebb968aadd0c32f5bc8f925e3d2be8d80bd1023a2c035b5b526c9ae56844c58deaf8dc29a24f7000cd327afe77797ec18b30a4213a2b3b50a4017f6a53a4706606eef9589f72122d93519de09403aa5f92d7996c0a0a93ee8f33df1a630a86e8b4077 > +9f12HCrX0ed3629ddafa5e95b034191dc373aca2bd4b53cd2888053c56fdcaf2a5cf153a06735cc6559ced549fdaefe7b63e380e48bc4c209f4e14b8d03e17d851e8e8ca34615c6069214e8f466e733386f8bab9cd3e12c1af4f34dcfa293c8be952280a24d9a59b44257f94f3a318c461df24c242d382 > +b1dbLb24d6beef993e2a489707013658dbeb756a5c74ac876bcabe358da2e2889c99d3daf2610681cf558ecff3735a6e4d2a6c35f5be7db4a4f95bf17404925cd7f954b037bd6b71564554d0444cf600dac0f3d107987ae350e49927d9f6954398ae3dcf78133b3c54c3a776038b3ed0122f1af9c34e50 > +7f9eOkWk9992a7dc4d826bb60d2dde4ff7220e6027623d954510907f2f7c09390166bebc2ea5f8cc7a660f2c3d323fd7f1638dfa3bae99a240360865d57d1bbb4aadb1a56f4ff4a2edf3bb943aef19812ce91d6349588e25d3f832a353cf3289e58c91814575642b2aab3323e0a52f2d4fedf8d40216f7 > +16b4xscN5fd83f2aad2243a598bf72e4d955b3bcd3d0fc4d20361fa3c5ed03727bada3dbd2a822f80f281012dd4d2d9503a82a5e30b0b3e2e14f32eca09d47c6366f8f1e8dca5bc57ca6e4ef3ed90697442b655f49dad780a4b6f3f4da278cc182707e816c8df5db83f21683b1ca220c5c0ee33dafbb2e > +e20ar9pe8f17a3e24e0064e6c0b9b248ec064d597efbcee074fe81b4f5e2b2aed898236ad8c7ab1f9689e6c915731233fa8a3573c158cef679c9e4e959e42955a410e328375a66fad8609a634007e18fcc84533ded178f02422f09d5da192cb4f79123f13a0f8ec75f523d5f2d6d6638a8768d7b5afea3 > +448eD2cB7ba37bdf494f13e4458a863055d5c1dfc7e1c68323cf67fffa79c6567d8edbb4048c8e6696cea38f435f76a8b9b8c4d75feb1d28ca0c03495b2cf41016bfd136d92cbb2b35b41ef6ff0ff999fc5cf895254cc91b3b27f7c0e1cc88c7d96a0c509f199d7082f60e3079deaf39f061f9f579c847 > +ebcam_3Id937908af1b86b5b836388d36abdc0b0a1239d867a8f51c0d84fab89da72f153af8690bbe1ab81d1288889224e024b5c3c603f49dc64db29b59f96f9437bf1d4ac47598114e7b73236b467b575628364a77d3d763b46d38b0383493e160a126eccfc5b98a8c932aeebdd6b4d646da195d40611 > +dc4fC-GK7bea33165f8267136b8357a0a266cdb7855a44b74c333163abd77b4f8b9b21971e6aff01dea46871a0711b0b184c6603eca6b07b43275cfb7a51d2b1e799f237f1c573d90162f86b31d903ec6b2db7f1a0900cc6ac12e5a680f4ba56d1ce86a11d128ed09fa918a6eaae1e4e7df702f992903a > +7c88y0FLeed6188bee34e32f1bac31c9680b540546de7a70a4ae4a95e1deda85b773bd467b070db4c668049fe637c1feea18dae329771536a57c6b240b12defa10f8b987d8a0ef2890fd75dc71c92b3ddf4a131357184cdf7d36926e42968ca9edf704afbbb0604b30cc16a37f439579a2005a3e2a885c > +31e6SWtB7e0d2b1a6dcf0896b1fec5ed13d05acfa767a31366c0dae9a0e43b63a55bb7b0c27022708e12e7375f83a03746a96896846038430973a0619460bf2356c9cb6ce7ff801cc67117199e860c072b05f9e096ed0432c42f6746e7765e2b62f9f80d9a4308c8878052444e87f5819c16a26bceed2a > +71e6Z0OC81ce61960aaa4b74ecc052756c6fa452d62df8d9c3f423ce412b06009344574d701639d789622644f2927e863564c9712ab269af6cbe6ab8e2d70062a6f065fd9af32faf33ff49d0cdcedd544f153809c9f81e218c3877c1b539671a114d862c064d8bc188622cac3a43646646da8c6bec7108 > +901daerpeafa959db7f7da22a8d5efdaf90a4eae9be24d71472db41b033607664d3ba43afe910a3a4e802ccae71cd92f525c66a15fec4a002bc570758e407e8db210e7b766535b6b9c174204a51b33c20078f996492331d521841b0bdf970e5e931332629d9dccd6eebe08798039deda7343737e58af70 > +d801o_8F55dec19e106b8df2e2261a8846885c5a0c73a2aeef3c65f72fafd750ef84f6177b5b50978cccddbb491e7e58f42457c5865c996abd642319a5d24e472f3a8cc67e40fc83247f003653000721d0bb0a81b13d0926ba9a91ec31386dec0dc3e9f3520320a8f3d0739411fb3e8c90a18b4ea3fade > +e90eXjH46649997b0820100927e47f395da9ca6ed6bfa0b5f9ce350dcf29c81c15ea383dc725636a483e2da8441be7831174615387799bd50fc86095aa13602557a1b231dcfefe0c1c0bb250c302cae235dd7b60316e462f8a60ce0e2e9f8782b66f0cf433996dd111d578855db52d3170ef75dc56486c > +fd4dMAcw42ee7510ef86cb6ecb2683831cf7bf2138144c779e8502bfee5116d7ca1d567871cfbbf6e75c344b5d63d4923ff523a20f47779f18e038c0311b556335cb3a51956ca355385831bbc454e4f7c22af8de81a62e8242e2b008ff6b7a8215d190550f113ef1d51b3204f6bfa943aad0e4a201996c > +47ccwa-F0a6c2212526f1a58ef2039f63ede167a8b890e9b9907498902f0060d296d555cf55e6f3969194798833811d0329a36efb13a8bece068e0d06ff5f5494cf827d26ceeb41b42f639fd96ff5fea8dbae8935169560657ddce5ba8a5c52fdf127b198975996e274a004cb97a460034437ddceb634c > +a630YF1-474252591d296b3a8031a92a7ab8b363b0efcd81e41c360962ea163d5612466938dc5e5ed6198a790a2df166ea2a7645f08aa5e16f32ab1c5362d0e81369f8cf4b0136545e5300f6beabe86987ebbfec7a87b575a40abda096a02be9c6a42ee677b161911bd6e42b6108da927e961a2c31af00 > +3c47cY8Cda3d7c4d15ce553fa0497fe3ea86da0426cdd2ce4649379f572b0ee15efe03d9d06ad8e8fbd4504bb31a0946913525ecf820d1fe56b085042ae35391cfac94095d548d00068f92f432e29356b517772fb5de956d15d59eb48e17b840b9b018926efe21b774824df451b06de70cd693ecf75faf > +cfbdX5eZ3ffdef72f35311658262d9d3c540f818e9a448e584ee0a7cebf0ccf9fa32ddb158fc34e12276dcbe81c6435a34e88050dcca6a73a9abeef5b022af1917bd59203d999ffce2de6ff8130a5738630db8fb7bf0c5df86bf55bab2c9d64712c0a26fde7aa1e88f5d2947c34cc2c64f695368609f5d > +b0937Fb96fd1221d4530648a8d9cd36cbd3641a317bf7a23c9894d543cdf0250143e17b2d74c68af04c22751c424df64301a170157300f062b324f06ded074d068f9b5ebc99617914ff1cd85118390dcd3379e87ceb3e4bce52069c83d2cacc12df70b523fa92098d9638f957bd5b1f6cf1c18c455998a > +571ddmkxf602e74af17e94990635e6ca1001a16cc3c6cffdb8f5ffa0e80c3648753b273471d2d2287acbaa94de5600b55a4401c8a81f0532b4f671fa5ca2a164475cff39e4f76ffb3ba4d9982d107cf98ef73fa24481fae1423a83b09db7e78ab261318ec60953e546d33cb24081067acfdadda5907dc4 > +8d9b4JCLd9e16c6becc7c8cec22c2f1d130e3e36e5cf21a43f6c7f84c014534c6580c1253b2f564bb3df0a056959101a120c69683c4a6ca93cba17004eebb67174f7f601d1afec317778b918bc79fa0c64400a12516463df425fdf56b95414f8cced252f523dff6b14f57c2288fefda5e6994c743f30e0 > +2667bFF1cbd0632750bf0169426d40d773f965806f79e28965b5003f83f75397f451cb62b4c5b3a367e4aa78ab80aaf6ef7ca5b897c4ac90e409c5e5f7db17208fd655e2689715c228353046958e53488315d4b733c1c84952f60b6bc357611e78c2793839869b7e79bc7d43a40d40e718ce2bc7c1313d > +0c8fahAQf690725f1f6e72ff75adb3767d3768352418a939d18a45a17004fb8c73e6b82b498eb980ade7a0e12aebb27220f1f90b6c8e32c059afc437a325487eab082054055e2cff992462702667d4b504d8819f6148b53674521cfbdf950471f0be1491f0df32ebc96e6a2587bf8e728007f932edc317 > +0c7fU_cW660f51d99b6566f18629cebd792ec86cf21d4af7175783a16505c6d7cb9666d2376c52d84e152919c18dcc24b1572880e9c95cc457c59ada0f0b1a41012c718d487b2363b49eceeb72b812e7ab3694f4f04a41ce72ed2c83ad6e1799d1e98c16145008294519b0c04260b54de198154adf1d68 > +d4a1y6Ge4d115ea1695beee527e628e1af6e0ff6ec51f9af88fa1adf0949fbfd08fd2a29a1726ed6afe4489d1d33e4e2fa2771c05dc5a07f6441e906672b0ea712417f4c88ec32245c703316af2a00767e340393140d0138f22a66f671f2e09dba31235e47a83f5a66eba0fbed6224e82e239a8d57e9ec > +46a1hYMN47a9bc0eba6a9c0b8d1c81e16ffd566ddda972225839d0bb53d839c4d81879b77e415eee2ee6d8ceeeacea2f78cd072f21f32178ebb46633c3a147df317a454280caed4cbcefabe3bf21a283f30118633c0a890f1c59c3c872647f3b3886e9742125025e49d771374b542dbd71ad24cbccbbd2 > +d298Xa6R15950b3ed29a6613a66b1008c327ded101cbd33884320de908b88cb717217752d2bbe6cef10c72488d31e85e1329f0d8c862f512819c5de70ebebae99e394f20f6dd68512c8d9763d867f68ddb665bdae0b9b35d23ee90225a79b08f531614605562aad5fa7bfceb0ea7dcbd4450c969db8772 > +e2faIAU6c08ebb77ada4ebf93fb2db2744e67ae3e1ebbe4f662a6e47143c85fb7f712af57daec7abdf8e134c6b43818fb71c98f3a62128d4fb6463d4ca212b5a375f2e1afb773961101920a42408e5a13d098aa3497a144de04531596098cecd7bd30a765dee834415a0efff4c4ff754ec73b6893a86a5 > +8fbazwXWec834c5f244ef647ed1903676b59b5cd3b0d060075455bcc95b730f121158ae2558b8cc1a70e3c3041057c0dffdc9d41c1de44aa27917aaf714f1d459d7387065c744d218a787b7846863ec5ac1b2feebf34edb62a3893263ccec1e1fc6659a90cfa3c9d3ddb29d25762d9727b5338bef8bcb9 > +c74dwwvefc866936edf11c632f8df987bd1336198ccaa8347598eeee6d02fdf7948aff0afaabcf4fd66f815f480b091507c431b1df97b8bef18719b84d225e9e372a93f527228e7af082114511201db7eef0ba98944d303d7c38370e2be99d175c04dbfb30dde5c4a39445f09012cd36db86cdfca80e97 > +5a7dornQ055af50b4dd39643696c40192909e5eae95f5c6486d661f33ddac0f4e418f3163ad09f4f21ff00de5e02e53d9b677f304e4affd965754dd80e6a28fdec5db381368195cc6a9e0ab5a6f1a4aef67095f93d6b070e198a297f5982a3e5ee8f9af8aa15909f22e5b2b8cd4746d99a77204e1c6126 > +931caB1X987d1691e54fe4512285461ad711f0aa4a9db983f7c509f03a23d83d430cd922b516b412e21101fcd30b0e4defcd5541da8578dbd0f405f3b44435b41954157986774d26524c4e0481536af2e944a199d938dd526d9669fad9008aa97a07e891474b3a28e118ecc8a3dbb9f1aef7831cc3387b > +57a5Wcotd2054d30e9f7e55647618ecded87f83a38170e953663b183c8d2d99504f38dc312ae2361ab65b6d74a716a8627e76354b7e9a4aebe53289216c49a391549b495e9c8afebd912d7cc528eefc753e752f447b3e2dda58ce9888011e6888485515f2f3ec7500581f94f5a9a97030cb2ab96b328ea > +e2d3sXDv63602a988b3e1ad22d00acac43b45a2e5a87459f5770d64060cb5cc39cc10e54bd847ec800843a89255b2dc93ced59edfdea7ea9946aea862aa0afbf258f904674a9081b7b79f0fa322df37b169278ed64cd7db038f0ee534134be7244929367fbeb5bbc49173f0c9e80b14842ab9df41fea3f > +9436Jrp804595212e3cf71d2e427c67a96ffe33abd393b22f5f0c751f6fd1b96944921ede658c1e0de6e501bc47fb4e5460591239213271b8c78ba030dcb5e794072314b875541cc7fc92373f38ccee22eb070d042461d0433acc2437f00c9697cdd7aa087dfd89eb8f9b83db037fe9dbc8b446a73a5c4 > +5b9aIGLY10e254c01f9ddbfffd4493035ecc8d04a92f4712ac0d8be932553a9c4d26d447bd9f9ce24bc967fd4d093799e9a8549ac7c50e9ee4a6dda48c4c68d753af46c4c1465a8173bd4fbeaa79d909cdb59ad28301aeb6942616a2caa03a612e294aca991ec351962bf128ee688144dc493b9366bf39 > +770aU_6K4d51ec486edaffdff9f240da48eb8af3efb038d10600b30de070d773f9e792e15f40a7f466d1e5eb7e9ad4afbee7eab6b99cf1ecc9b64a3b4b74363501da0f19407ebe66831dbf358d1466b773a5e0aab35632c9fa24a896115615ef6f2b43d023c7ca8abbaec0ae10c290a706d1024c208236 > +5bf8K1J52e4654aae2bd041fcc79e08660da11dae1d0a21e8ff2fc40df3aaca65b4fe2885c0d98cc2c8278bd0fb7c2779d6bfccbb74201c918d503cf2af8118903c197203e8bcf39ef201711022d504ee9622be3367d0c7546128b28d484168acd617ae45f48cddc4f3ef24b0e360ca1a20cf1f27be083 > +9a0a-CGz04ff3e120ccd32c6b604c63fe1cab82f26ea5acb9a12f23af169522b2a5f5913fc758ec9aedc7917ae746144147c3b6abe555d274702290deb33c76779ebcbe5cf065325c340a27ba864ebcdbea35685ae429fb8d170c355ea3573350252e0242d3f407a1eaeb24f0d8eb12b5715ebb5df4f5a > +1cf2vVOg09ee83d5c072ef87d9555b307327c98a061c0335dec3f01d8d9e8a10dcc2af530afcdb18cbf0241b580284683901216d87e259600392d702c23ca7a3e1a86cf87272e48548ad1b51bc143981507f16a836e7476c3e4d3f08b8d0b8a62c8406af2db4c796b1a25af7f55758ca777b3c8d20bd10 > +093572nR8d857c1f5f070d532f0086c458cbf78262eafc586ae93b03dd6ecf5593039fd49161577dbca38fe4b4ce8197e79d294ccae042ad4a81d25eba4b5442f5e50bca8f6dd105b92438777b469b610cd1066ccf1e08898d0189e4f203f93d65bf677ae471c13f1a2bc12602026d4bab51738fc1fce5 > +928d8j3Jfdcc5f7e430dc861e2bc8f2e78f647e7567115f250127c093aa6e5fbf84cc16ccfc497d3a60b13bac907e50f13f617006b744dd3df3c15b62b2aba040c52ca267c593c9e5efc0435fbd98e8cbbda7b28cf7fe9f6379832cc7a8ff1ba88cede2dcc090602728756af3bbc841bea3a1b3eb531ac > +29b6PYdC8c8f4f1d944ce6e270b82e937d2373350ac0ab5a29ed89578957972867fca86e837d6cf58b672d998b94b02c33c9ac35e8b77a8a0af67a5fb0a06fa348b156ca83aefd8961c2b584239e7e32e1e948bc90373a9ff599fd41856e8d6ebbded62680774bd3c34f6c9f7ac77cc7a2d57a2c690a66 > +e613RZlP02434d426e6a116dd34dda8a398f3618be822158a5e54d58df7a5c941410bd8256706729965d7bb21df3fe6abad93698c34e03ca691498859ebfd52d03b930542ffb5e9aece4f3bb310af3eaeab006d173a7c42d1d9e2b4df7e2bf82447cc1730a1cdc38326550f81ce526fcf3b5bd8adf3a72 > +c386OgVJ8f7b98c20ed0713a5eccdc4a6bda8dac61fffcdddeae5965c3a95b33037244a2bd0625728adaa298be67f9b3d9ca50f1b336757c8aade0716fc1080b35c9b899696e792269a828d6e265525a682c2cb3b8ff5bc6f3b5a6e61430a0e207a9b8e548f28cb0867db75fb4d9c3f858d506a07d69d1 > +3bf7LpHAa8c91346de31479b470d26cbd1f046352f10ce2403753a8b6a618b1709e1e7ede3b9c623f081d23487e66c7dc7f589afb5f0c9fbabbfad0e4f4c2ad7ae5e62db06b1ccf4922f090aafb6afd356c6be4309c1dab8a01bdb082120d61244413b6c58422c7dee4b14c1a9c3f10b74491bb4cfa1c9 > +0a47Ox3O2d2f3b468361edcb3c65a8395808fcdb68dcd429abafa9b2a0c64d694142b8eb98c4b573293e2e327764c1be47745b272760356cfe277f9c8868a365efb02673978b677e9b38dd8b16bb840409cf8d24a5242a24897394bc20ff1c4b0e47a7a7c20497fc86dba6f753ab978b08d242dbcaa42e > +cc6aa85Q8c144c9de41fe1136d4b89d42add730df45bd4d20aef7d3ffa0539b102e1864fb4c2e1d6d63528c11c567acb9337ad4ad03751e8184dd9677620e1b54c123df9559a496e36275f00cc65548c82d38f0fa367a609bd64af3cabc74832fe3d9ccfbd138cf9015b43026771a21be0843e0c3e5b45 > +9ce3IlL0f9dfd1dc1794488a8744f7f377ce9166e6d04573603e5dac410fb8362910f2c79d7a603fcf8648921dcd62923a9d2b513010fde17b08d980bb10f941953ec62bbcff210bd915e237f7499eab5f6b98034e5b3fc71e68a085f5086cd8afcaa46391cd69eef5c63dd318b88594d5becdb687a4bd > +553f6DeOfd7833e89690beb15adb7d85c1dcb30877e2337788e422fe2bcf0bf86029456f61c5656bfd73932e6cb286c425bfe59dc0b7c6da9ac603eafb48537e13786f090d8219e40ac4b803731aaad5d117e94704485bdf07cb83f23e981c4509600ffead52e1db8e4db22c3aa2bf73499edda1b057f0 > +266eqGpB5cf19d9deb53f977a345c9df3f93c481116b6b7c1a1db5e3e99a09279caf5b579e18bb6b179060cecd150e8975981007ff6c96db39a9475013d1f429c18a81a203061672b7ec10f4213c3d61747426a2327409e37d5e71dd0631d00ffe81b97885f71ae171c3ba5d54d82ea6ecff700c265ed1 > +d0ean5uEac7edb0f29e68b6e1eb67716e0e16a9d748eef818d772ed983185c0a28db3cccb912787d04392c059a582863b405a743720f2887cfd27f87b1d720df5d136fef8c049000648fa9b36cd1f911a2f8a9d4ecad25e07581354fc6d38ed53049e270a7f5ed9c3309d3de11503784a11adc89df7cd0 > +3ca9gpOe12fe59dda203a8bc4ab5b24340682a652436effc4a10d2d1948c3db8beadc35f9996bb544d8a56062a32e2ce3eda81672f7fe85234fcb7b5fe36867e53765b57f26a050c2ac0999f6dbb9cfb1df7a8a38dd4225a0434170167654e91a68d3458b4adf91dd8912eda1076b4837eba516ccf0808 > +e6e8mGK02d2a484ab10684d1b52d0ae5ef0d63946cc47bf83d94e1e49c24c48f5497377802ec725841162340e1eb58e8fea165797f922fbe5b82b4d387712f98c541fd2cfb35ed0c63ca8516df02b72a2bc252cc0917c9d63e6e1987e965f7d1056e8645e973993992df6321ccfdfc8e2b767e4338e294 > +d53bXVHE7d63ecc9fa38a29a5c73194dd6f997f7255804e9d19406cf1a576314cdb3d9ec34d63510f40b94aef0cf42c4cc838d5e75beed27ab5e9a07837b6400e110088cebace57aac97e437fee4ba989a931bc135a23b738bcb23b44ad11a2eca3fd21a4c69cfdf2bc917773407987a5e58af752df13b > +7e61urq8ed06571a7bb450107ad4b6f5ddcac81abb2126586e45da9d18e801a18dd9f3c65c6e34aca8a437c745c2f0b99d36acd8b881ea06176277530e6f924a5c24de3997371d09613f661673afd4f7d722fecec7ea545e15b92dc263401c2f0994d0261b328bac79b7cde37e8bc68e39c1d00d2ba1b7 > +16f7ztiUae7013b644f55bf04383da65988b0f889283366f979b2b1b6640385f15777dcc94f357b942018c758f4cbd29e44c95b1d66aeb6a00f7c8c6da7166fff792c86028e9262cf69d9e06af4116a8dcc036e53434640a255372a5c34187ea80b32b94c489ff98841167d8140423ee99380fa0b11d6c > +1007Hx8c57fc8ab2abae5794e1d87110c8d557f4dffdbafff48b74efc042f0a159ce243b9457a320debf6e210ebfd328628d13bd75822e66d677c2b002c4e241404af98056d334a99c551375307e3a0ddd4575ee9180b15fb1c14201b8d98b3030a7905e59fac1392ea9b1f16fcb0688892cb02a2214af > +6990RdC_05936b7657e1665d378975ffc769e6b27d4e213eeffbab1e713f208e27ead5f4152e94c09cbec92e92fc970d825d5b75b0cea37945c1d3cb998111d7c87ab5edc550073807f2de2937f38cf89e8da0dde503e2ceee94ecd00e56d1edb335c2403d6e7c4a05739735b9f7f7327119d28817dc65 > +c30aTqRza49cb37429daa8958684909c4e7a007ee298c99e2049f2219fcd5aa6c2afcfcea363a27840e6df067a78e00e9766b085309c1428266c04681c36b3c72e8e4b00611857a30df92d44ca70bc70404f1494cc4ce7385d552ddf6c2352fda738ab0e813cf0768166ae3ef83a3617a110d87bd69af0 > +02cd3GbF591cf8f7fea31935c60aec95ba25889cbd06b6fe89f203a6b6a799cb8387f60611154a3fffe10c163fed7753087736018c95395a31a042bf7210984c91ec86b9a32f8721e96020343ab508ba1b8e029ee910520f1e9c3660643f8bac72840fbb8680f82ba0ca469b35fa6d975d79e7fcbed622 > +da32bgy-c04b46657d6664e21ce83c89234879d7af14cae6736f3c27df2c5da29b9c2d4e3e8f8227a1c2b3b247c4f6b9c7aa4f9a7aa7e06782a5d2fd531c60b6fcdf541e3588b9a05b9365b970c375bf940c8b6e4c07c8baa92a440dfa2e7f7a5b09ef38649633957cd1687f2cac8a5b0e7b2ba943d734 > +9ad8NXZn62ec1d8cb1d1682dff554fa510d16bdbd13605ec46f7decc16deb683449839d2e63daa3baa2b2284ea79ac0c59633a2a6499bfa7b95591b582febe7060546f3e707a7dd010890d0f81cf419ddeddcbf7135b1b3dc9b3edd6000c8cb62558f55bc0a89f9e6a75005f23e0d9e219adcbd2739251 > +c4b2voRD5514948be8a29951bcadf12a1dbda34a464499f12b5730a1209dfbb8a05cfe899f5d0f5146ea83587386c8e303ecd40c70d06cf38bedabd2452195d704346a11e4695c17289a78c99ceeaec040f124436a022091410e55c6df0de50ac47295db69ed999083841da0c4fbed1d9e9cf059840385 > +63d7QQhL80e6c7347edb7052eeaa8d7ddac086b48dc22a4de201f4b77106d252bb3602170a6ad02b75d4a6858b2d41ee0e1887be9c33704ba2edab9f79692a7e41d544bb142b8bf5a0adbf9f5410a7e4b31238e765c6a3bcfdbb506a1ee883970e69ef6e03e0bfc0fa89b4dcd1eb7a9253fbefc33a25dd > +df86-pxoae9f9f7de90c893395186924595ed91c3c8e2d59c99381f283aa323273c1eedbc3631eb2051bd14849776b02ac439b4e929f918920cbe36e7cf445a427033a26e06ae8fa455f579ca11887ad4afeada1c16de2b69debeadeb06eba1dec7ae66081e983cd5c70a5369b843e270616b0fe406402 > +3d8aktQMe7cf24400bd32d1207287bc922c581df99b553a84b6f3d27bce34d7b54595d92297b4dba0d6608698e5331718913be68a822b6149778132348861fb1e01afd3c48994e65873924136366ee1d41775e0c2d15221479fcaa06857a26c507e7dde5543bb9f496061a590fb950c2f015edd66488af > +3bc9nx3S580fcd3233332a834cb67510c9cc2fb5d59757d650458044af8585059fda231dff73c4677cb6ecb2b030ac836b8d11e01469c05fba88ff8fd3cf132ff0d719d60ac00cdd0bddab4949dc0ab60a8d179b25179d4d41a9bfd6c5a12708da30557ce8ad9fe286dcf8be5129dcce2cf9f5fe6d1d0e > +25c3e1MNa578734952c6086031835edc3e5243f39ac7ee32a6312d1776e2245760fbec31f686d57f7cb6a140efae32926190d28ab84d7e67c0fa07b0f2998fa64e737f3c39f8e24a832d13ed7012d406210de3ff99f5ccdb86ba646ba4aabdad39edff8683dc3a883e98566cd7a43599fc9b7409a97f8b > +7e1fxD4O1960ac8dcf59b272b540423940485a2c5c181965e98bf0ebd2b952b94e63b2937c0b530a23534b203958af12ccc681228db41a06b128f377c1c1bdfd7970e0aada4eaf44f090d8d913c87f8baf84abc42b455014f4d7ad03c5352a48ba0dac8498fa44ed7f0dafaffc8dea4839233ba63c8fae > +2c73BgpZ3679698ef8baef5cca8eafe3b3eb772a63bf61d68c8fe37614f948cb3a48070b14466ad9aafbce61b85e0f0f6bf8b05accf999c506ba6a095df0f08a71e06304ffb7a6d2bc88bc8162033d1b26933c193620e4d7179fdede245183f09abc2c1b262f4834a5ee75e6f99a3dc9e6ef5c437af820 > +c962SweVe48081c03db956dc22d42537205b29ba13e5d1e8e8e1dc4554dc4705b37d5cf8574813bedce6d8c7d5a56c94078975e6cece16c366ec6ffe6c8cb6a2905200fa92bcda35c29469024772dcf2c1b93cb38ff87443f1f6941caa0faf07912be51482c8b0ff748ea03e3a72eb52e1b4c38f372670 > +138cDcJh76c61ca9abd6c2d7488252d321b936605be642aaa8b851685d853a64664e0cc221ce35fec84319c40e22afc66ddf223c76c007b779e352c3d20d110563afa1373e169c85a3e44eafd3959bc90e4f0dec6d3d61f8b54c81372948bfe26eb7e37957b16ab17c2009220a099777287cc2066b4ed4 > +2259YXNLc7b8c6480ae74e38a1906983c0e2499355545a52343f280416369100b690d24cb292c807b69d0f72247c574dd8041db3bc76e547bed6c95499eb9ce021c2faeb972ac2b7acde23967aaa57603083acb1ed1d7f050e2ec9a4aa3fb81a102566023680e19d98e1dcd2b769725abcb4db1c4a3734 > +5a5cRnqt54da2c10849bbc29e01b207b0b441e085c783acedbec0412543b4574e2baf5ffc4171d77322362de8f52b9093a608f3776231b6e028c8e626154394fb1c4decbb000e08ce3cc1b6eeceeaf34d6d2789480f21217cab92f1ff8f365d5e807c6f648d3b0ea94e5ce532173e8f97c4022b1e8e778 > +464dUAGLffb78b92828067510863fd5ddbc9988acfa5e0abf595876804701ba548e6050568483bcbd7c010da473907ba3221d21c58bc7aec6f6fcd9c81c4d42b5ab02ec0405d4df83f808adc4cd9af996037a60491c74c3ec799f0fea6760b6af3d928ba721792e51f78ceeea916fc6c78eaba715562ac > +9337T5lSa498f6b872302a10491cd49035d9112ef088b10ddc8cf5ad24cb876421523e48c1749da0fb3b43577e43d3eb2096693e8c646de1b78223517e5895b2e14b399261ab2cb15e61be8d614f1d9b01b804a38ba5d2d7d6fda8f7d44447723e6f7e864fd69dd1757899204ec2b5a4eb2db82166f361 > +ceb3Rl4rf805e958438bf0a032aa83f6cd76cb075b6b330e0ef810f92faef1435f7162a786318c904a588451613e04dceba2097e6f8aa80ae20ba1f5ead6bc51e9a78ba3a48e4f97637eb00cf56824b4fcb03476ec3dd43d93e9e8ac011c72a017464a30cb3086f52e37fdbd5475d008bbc4e1b053f2d8 > +6a39RORNb5d84762453f7c92917fff29284372122c5cf1136bd6914623b09443fae8b5d5f5f676924a40428ffbad6cb8047e01cc2a615d23266b411d08bfe5a877f73787814db3f9a02e583e302264132acf71c9084f740c24e470e909197f082fbd55d5895c474d19e61e3963b045ac28702ddad5af13 > +fbf5nEfG1856cab1fb35c5f6e9b028f5d16adc3a2e4c8f82ffc334699709c458f473d68bab0e5dab28bbbbb591683f23f158f96bbed77da6db81a732b394d69d74fbecd8f63ffb905d670eff9ecbfbad2dd79e2aaac75f086f9c258150702810827c8b5e2eaac031928f2d28a8d9f169c29cb3bf1d77ca > +8313IIva259f8f0d5864af8582ebbee5874fc08bcfd730d535ea2ce2553a89d824aa566d5e0f691f1c729e2917c65b39e15d553e7d6f6acb54af219159a594a762e570a26195d0fb6cb32b41bf0248b17ae4232fa3783cb0d5fc6ad7228dab267f48f9f5923a87a4bc314b34f95d53acaf8cb68eb30a33 > +2d29EzfUaa2813c36ce96fb134b14f0b276f76520d9ad676daa43acab043b2c99c1d33acf3d7b816e5c60332b770023f1fbc34fa45685727a3384d5aa7c14fa904a39cb338c6d4318d26a055c6860edbaf5116481b1194b7c8604e95eab90a68de9907a58687c471f78171c8786e75113103af7829d5be > +16215hfs1479e71679ff51f5becce8a7c97570c474b44f618cc4d6f2414a73e2af1ada61426b577189a62aeb4c646eba9b7619c6515e8ad78fd08e348709ab1498762e17594ff81a2cfb884abba7d53387b1767faffa8e3a506455f7cecfb9602a4345b9186b467ae2809e440736600cae0ec723d4310a > +2a4dk2Tudf049374f6e5ca0c2ef6b7861d5448a171caf1d1e28ba71a708816e8c08dfa840ac15af73813d34a767a3cc02bc714c3d77b8650490dc3da3ac157a4244d0855aa75ecb4d7189c893e503b642bbb45f2992062e4c9c7a33dda94fafaa5e1473cedad7c09d48513034f5ff29ce0738bc6bda971 > +071a_Rjt5a0a2d9889319f318a8a354efb0096e28972d159ad810d29065ba1710d00eb50e866d3fe44054a90ae665dd6521614ac994a3d43cb3db73689401ac0ab5da9652c760379a3027fc484fea11b3e27c317d486d2cc46f44c1f21a4a1cd881f582c281397183980969e1d933c9349d4fac59fd244 > +f9abtMvsade3e5ae3a095a6c746651b00ae7e898cc755fc5c015f3aec4bf98f648f77e718efe1381ed77c2f54981730953b769dbaa11c97fe42d836707ccea397e9f941ec673bc2b8d7c96e259180d1f8a4d8ece6ccd6205e6b147cf80c13bbcc040f2df1defe4ee69832c978dfeb404585b3133ba2d47 > +5c6cw2tKb01d760f7e050827b74cf1d8fea098fb6ee33155bd80195dc9f770cb0afd8a11c4fd173a955ace9412988d318c717e95cdb433858e59c55e07c31937e11a7201c3a0ebd278942c99fc0ad1cd7ffcf2bfe52db40853eaaafcb5c317770f7defbfc73d15179dad570d6350a21cbd95132d151bc5 > +b6e3_mKcd1006529e74ee477b208d10fb2f5f61ef8aec5018fe32b4b754cbeadbd1982d20abd0a5be937978443d592f13379d0ab07c854e102a31d8fdea0acee83df6f02a109ad59541cbe184db61fe37be73c8474c13042242c5d6de68726b66ad2c22351ad61ad8b6fdd514536966981fcfb6f83da7f > +3b713Cne95ea096f480d4b48c6c3e8a04f0ad99ea41e01d3d9b88b8c7e97d9fe70925e81bb955831f45fab3e6f1b3bcd42bc947281ff8013a4040fc2ba5f7c1791354c1ae84923e47723b7582262bfb2c7a193b13185b0b6cb167bc7c1574b9050a76baaad95ca3a7e667a503edf48a8759e2a71d5d7a9 > +c633uiJ22c31e4ef4aae73612e0eb546195ef4130774bbca1d893d35c41335d89d0cfb781e0fdc6e6933b4e43d2dc6ae59246af3fc1f58b0358b9dd66717c1e418f286347c3bb5e68524fd4179f5d3a337124f694e8058dc54a032d585c0bbf348b120c74e0e60967975dac8205c1a56c3fd6b285e40d9 > +dd4ajZYgd439d16f91d693740590ccd65a5bc32787bb49483fd2b79de957a7cca4d896dd5e112302f4f1c32dab49c9ede74a7e207f95f9c926da90e4fa740d0c94980500722e4a471fc03554ad5c762710ee94952a62ca4d65b337ad71f3b388c5b4d051e2defa2043d674df2c6109040ccf43f6998e03 > +ca0fNjGPa70c78a21c402d1073e6df23ec6947e533619a475a55f009ed214aead12437227e072eec81841ffd929a0bc8e07505319061dc277c121b64749b9d8f218cd986475d86d25db92727c487439f383635f859e940326fd4bdf0a6098075648bf46a28a819d468d786e3104955478d4c4c0a0a5ff1 > +d743qclW0526bfd9d2dce10ed1c9fcfc9473c49e65aefa79d6cffc3c0cfc7cbb1fd3d752400b6fc1ce5128adb76e54a26987da5d3054645af8b162943a28e6f060fd40ec7b8538bcd1b922c8b83de03aa5fc35c1b7025f84c37b9a9311c18f87926b3efd263ca015a41758bff9a4328385e30a64594b75 > +0e51GQhZ2e0ab5c3c5ffdaeade0e4b816e4b3927089277cc18cd2a3eff15b0f041006dbb170a5e34140915de2a9ae39a214725405185bc0d517b8de490405576644f64430f3ff9bf55fe9cfbc848f5ee265939c72ae7422f87db6c0f5a90a5f44383e07b73f4772b70000ea404ecb7bb4b8d9850116ae5 > +02e0ZV2R1a12147ce074af0056955e1d4060b8825af91255007595a9af07d823790e642d461bfd38e7fc5a34a52f519c1d9bfe08834e99915c58d154df77e27408e3fa0b7cce5aab7a699837d18bfb9905dd0fe5d50447381719be7a29fb8644654038792ebed13dcc8a1651289eaa9f868ff267a87af6 > +5b0fSu7T0e7f1162af8190644a6181dac341f335b59c57a4420664b94c110507fc3186420c9769d08b5f64b50daf89468b5adb73c5f371fc810d06d70d403637177326a49af48614c9841645dbe382a718e4cd4b97e96abf0d46214794c894d5d0cdea02c2cf89388024656ec092911995478ca7597336 > +47dbApa6c041b563940710674923d780fbaf550f152d3e24c3bb57f62190e8f9be9a8e41c51fa679bcba35637df8f462a602f44778d3b76504e6a2a8144aed35c63f13297ae79b8bb6b0137a064eb29af658bd897ec56debb36c4c59d47f46c4655618993500577728709ae98b8319716d10e2b8a7b73c > +ca2bVUeIaf6ac535a29aae4391ab0725e3849128af6202b2f6ec9cdaf48073948e74cc20abcb2a7bcffe667cec14dba1ebd576cf5afc32beedd1cd7db4a1f5483d44ad3569511d37740ade48155e00a9291c012cbb824af50502dd29142760a9a5dd8791b2d5c3f1035316be5118e99f9c48467c268549 > +4b582duM889f88788fc9b5aac9d92c8aa07dc406304d4cb842332d93c8501cdf603f933cbb7e12caad655a0e7bee09cbe80091f5bd03ce67849c7b7ea19db00d70ec223259267ca89205665d3aee336c682bff8c083c2eba0a3d991c246827f22e82d5ccda786161de70d76187cfa09a7e6f7c3ca510a1 > +5e94eoqXaf8f41c649c01a80fc95d9a5d135b0523bd843e9d50ae46a3c4b43da51f8b9e2ab81bbd53d4ff94b76d14c7089497ed5a6d335606ee5e407845382dd9970642dff8b75a654465edf8e94c669ec3a2190c48bb32bd492cd1241bda08f57eeef9ed6a0b91bdfd27f0ecfad5e45d2344ed83071f5 > +74dbZlkc9a1683a97324b9fa9fff2cc19e484e9c78e063fdea915467c3f9e7b515fda7986016ed748e89e69ab8d7836553f0a3f23c19675cc98a81783972a99c0c6bb93d97f1aaf8f16932ca73bb1eadd7c8ace8f65e91d39f9e21810dcfdaf7b1a4c4c313a7b96f86be404e0c6c3fabfabcb56bd27939 > +f10aahtD01d875b6f1ad601cafc8d34ee2b3f32aba18ecfc67cf6679ca4d2cdaa10ab9673d005c01c3fcf123478744025596eb6c750235dfdd7522bd9aeffad9b6f192a591b5e6a466527f2ded189617b46ca5c4aab26e529dcd1e95593fe5b6a684519c9b1364733173382c2913382046be8548e14948 > +2efaCgqFd77d7250a3009e13aeb3e45707597a5e7f826bee21912a7a6d9809b5223814fdb129812df59f82b9a75e4beb01ccabe911654742528021b922157849f951db8464e541b130ba83ba8645ce4d24dc9f89fe691925773acd9a70a2e903bc522468fab7f0347a39aad8062795e6b6a5a5c966a884 > +b6654CWiac01e466dfdac2269e72f2107e8c35efa307e8571ac042e23bf4202875658b40fed878da95d68990eaad2f493b06876e64024f82b9683d510c84bf876e439a8b10d532365dea63db1de991ee4272bd055d892b27ecfc1bedc7afdf13dc99fcbd5251647c371b1680f426f78e69f7a6b2f5d97d > +b1bcBquG81b40081852d068419a1afc9a41f36f79c89c4f31bad48a2fc2d72eb39e739e3eea2e89be3e9efdfaf4526aa00854f95e46a07c70e00adcc4681f73f2f059156a20ec36ec373ee9755eb0cf4f59cdbd232da7a62b2cad4ab1126464731efa69dff5eb1b7312ca21d691a7c517e953d4eaa66d7 > +8464A4W6fe6aecea656f97de27cbcc6600486df48af0fb08e11b78f91e1ab98c7236edb9e9e5277a99a489c767d8c659ecce843f3c5146226f4c5271d1df259e955aeffc1c3ccfc545004bae240ef67ed4ff85a3af266deda62a11cc1db8500cf161e6a8da0d9560816ba88cd47add7bff84a1e857169b > +3d166K1C987466fd3605ff8274c3234e0d5af3404fcbecffe407de2a315cb2304c673cd8ebd88c689f679c5eea503650a291d75a56d6faab7a464b6bf1e631b737a80bc40153f20e268b6af0b38cae1a74de596df410b3e410311b4018e46e409ed0b97b6417a8396901dffd9e3ae83390edb66bc22cd7 > +5d77_QIgc8200b50e17154c234f00f4cf5fb8016c9df9a4396d0285b21f604149589842871617bdc2dab849904d4bb5f6bb9955945eb4a11daece8c8217dabc5b045cd79ce81d15a3dc0565854f9e8355d52bbcd9426434d1a60bc6e44947c11b57ef13eae0b6c730cf72bfb664342466dc4b6fdb43f54 > +a08aiLT7b95ff420af6357f15ac5208b404bf2c02d0260f6e0d3b3e66b74d846effefbf06b810a9953901187f428d637f52eb6153a470f25156b7fe43063a1f2ff057321fca2b31f364e2b9ea9264cad4030f512f8d2ce666420a96f57c86df313d923fc97136da22cb8471b59463c2ba4fa6222537244 > +a7d0JWNBcfacebc9cfa1f5a8036a8e13429e73b2dd2c0511b94d72bdded20466d60f473647ee7dfd5ecd7ce8c2044e2ac7826d4839918a98abb9ce5b0fe1f79719ae132aad9c17229b48ae3541ff522d8dd564d6554afdffadd3565b6134258c6cb4d39b50b489409afa46537b0a567f5f1ca7e14014b7 > +cae9hgbu43595564ad350025eec0888dfa9024dfd864e63647f2045a69bfba8e8cf0d4c2a3bab5b37e12cec7f913e4358954ed3b636c280ecec7741f07e849d6b21886947fa4551154749822eb18bb654d3deb14a69c6497f601f68e6218c10b73f89daebd8fa80c8ad972dcb1b6ecd261af69d03c5710 > +b9ff1F0x714239e07e4b3b8d417d40e117deb72de071d77ec67bd84af2c22f0151c9e550dd411167540554cfee0c72dd2dbec1e7504e9e76ee43e756e871ea04a1a7f0a7a939c0b8d4974d463c039314613058e037de44ae820121e48c18a0086d1202b638e922c5592503206b87d0a92e3b3b652ac751 > +7ab2841m9070f2b590429908f8f87eaa5443126d601f1a5108aedd475f3a0ca8faa4ebb1a64740df4cdc818cd1e6dcdf7f94b1440fa2e30d4fd86cf6a22ac4b4530fdfeab3122109adebea1471c01d9affd8d7d8a0a9b99945b6e924cd149892a02d3090fd14ef1feca3966fc5a64516c56f291639448f > +7d8e_lCWe5f806698537af28269c0ee2eabf5d587c2d6e4ed0777341a233ccb2fab4f6e841df5f87abcf48546b17ca7c5f314a9085c264ec2f646117c056c0d736b5435136cba105efb1584183f6f532c45142ff5dfefb3ffd72d80a4b6ba00a5c51dfe886f46ffa317a65eec2b714e4cc9cbd7359459e > +8caaxaCA5944f9dbdbb9c100e0244d7a82abf336aa940a4c3177daa58e1be88cf85f05b2fa562c81d0b5574a0d92e3444117189b81caf904f4d530d2e2d9b59312c6ef30529211b4c80711b7d3981cfa6c758b729d4315b4f0a7a20e4d1a9134292030be78a5144f8626d58c6230ccfa2e90b37fe1dbf0 > +6e7aW__raeab0cb65f9879599dcf3bbc54a0de717a963e1b633eb02a1b162b2c30e68b375ff29ec1b3323d29a32bd02a75129c2e5ad6b07874e1e86cea6ea2f751c49490251ab5753de8a67b2af2ee4b2e432214199e34cf98dbc099c7ebb5a4c154058102097437aa87d553ead2b5fba9c97e23a99036 > +418b61PO04694a3b0960441ac2764476083e57491c2360ce0a84dbf7c5fee5aec22346dd9a73b591308fca9372c872c36ea952115df4aa0a541a03be087981fb1a84390e396dc5aaf2956b9c40e8b7fd0438adf5bf11a4729b0f9cc0122aa942df0fb46396ef6c3ac81b25a6d6876e2d4b637d8cadbd6b > +b3abdKbm3a0f71434e7211dc31bf8af8852d10fc28e9a605d032ef05c7699559b201c9da4be624ab4b5a7e88701886b8c136c6bfaa4616d8eda516fbafab6816d5fea25105ad0b6d3f27fa8521aa999745980afffbd1da5bc41585ab403cccf93979a7b08f7d64e5d8478aca3d579319e59b67f1b1ed80 > +24a8WPAl91f848b786cbb971385a840cea8dfe6567aa3b16047f772ce273b5d53a3dd1c8d4cdd250dd2fd857db5ee6e9f5d4486d34767d6e0ecf3c073de521783cc7129f4b18178510d9a5f551af0d104eded5ff22924a87aeeb27221971d9a85028acad71a2cfcfd5983c58dda80c49a57d2e3969b4cc > +64b5xEXYf92d4b54d5c6208f26f0a5e520af1e6800ada152720a4c27b7413d244ec643a974edb669d5d9d17d6803c54f0de4f26395657690e41ddb94cefe45ab7a52c2584ec7f2a5d499268ad97433133e0892fa808dec4f09c635a074e25f840936c4a827f0b833a0cca50d3491dbfa1c1d342c6d719c > +0701rKHfbe7b53701a735280644b2823b1e3e8eff4fd492ffab7526977807ee533d8e8156a17f3ecb57b8b4e197deec3ee4d2e02ed4cb59c8ed65804c493af3b6d6ab1d3e97e0fa8e93ebcce0918d9ea753156cbd3186b5a73952c42229e3f220ec5a878c69f1aa63ac4792453dca713a84e24c2a9635e > +002aAoqc6cb62ec84172d4ba407e8956f695bb10664329179ca4cc3cce27884079d5d657d2b479fc339539e3b51fdd7007c87f250b1f9c885cc09db9704a3756d96abb01e32c379ab8b820518a3fdb976c8af9badb76b2641ddea2fdb7b83d1dc2dee1b4dc15f5c3e00ee4bda22ea98e2003f734058697 > +9b7cGD4Ya39fa31a12248e219aa9a08459158642be4a13bede0b0a21fdf565ae9888dcc0546685acd589fb87f293a88dc5e8bc1ff174502dbe163bc76f489718d09f05c433baa54b6174be215db22f95faca91eeb776289236a718297682761c25a26b1de5bf53a3ddb31fe00fcc40f70fddd0b06a656e > +617e_1jBe9c64861687b568575b4302ad0775ad8fa19ae33011978cf2d3553d8197f835a55e618ce7c47aeaaaa34847db7e5c988b49eb3a0ca2abfea6473032a62ff61be718d8521faef8808282da4c208c31c8f07ca4880bdebddbda163671b5745e57dac4c843db32dd6a7397ff6b00f9abb8dd8704d > +3225LlMY1a3944d2520b4b904b028bd2cfc6e65ea013258770324b9747e2fc96178d155e5b6f99324218a4005849341bd820819bf6e2447907f3b232aedcad94e9eba90432f154d8b2d2c42315f8af98ff6a5930b4eb53c88ea8e3c4c8da0090b2b92fb6f44591d17420183ae45a2988a76a6edc70d211 > +6abfhjdr5ae529f1b0925cec6d53d7af9091afe48cd270a1a36b9ddab5b7bc03738bf71447794f99f44db3bade1a5c6c07bf2332e3c2c18666011a7a9af3bf1eceea22516c993442407edcf6944778c2736a0c3799c9c988a7e496255fc9b59edc8661f148bee2fdd7f6de94b751af737df78b322669d1 > +d6c3LZsK4b9582ace39a45cb0cce299960980f777dab2a99b16b5fa5b23804ee6be1ad132a6517bb8584e2817b1b87107950168cdc5867d27f32598f16dc2e4dce43eb9074326a7af0c007d6b8573c1ff51ca648a298a5edd44a561ce12ac2dbe95a18160b3644afb049bdc27598525779600d2f891e64 > +fd25LLeE390c7be10e3107d63e09c3cbd99c10251447632ce86aa1e46d9fdb62012e932de4e8a01344fc3ef6592557d343c6731263b413c3201fcbc510ef1f1922759932bddb7202455ad108e52424bdc93f4f7826a985c164c7eb853650399e329b3ee94471edc6e9f4fd1c30507e4f0f96280f888ba2 > +a401h075e1461dab8f0a4a8454fdecf330a8c8f00b09b1ee83bd327d3308f5df0d1b8afc03d064dbbc13b0611d3155cb5a99bcdd374bbffdcf8bac5b34961292922ca047d2f21f22b508a8121abeeaa7ac7062d66eaf036d3c9a9f71831de1ef50fec9bfa4715a73f8e0f70ffa9f9898e353d6cf250a0f > +51e26L6h705662ea00377b100d719945234d4cf665ec2908e9254d0af7180cdfc238e4a8c6cec2a442273971be5a59af678746499ed212d27d988a93103ffbcf9735a01c18acc83506178c76ef819f5194aad597fe643e9d722cd89adc2ac5ebfae29ee7355b9fd093c70453f106f753c9e56562b69c50 > +18efT1KI0903b909dda2c0785b3551daa1b1e4a53a046a975a9df68cf7f27eaf21d67bf3865d95bdcd013b2d63cee6d4547e288b2567314da1545172e5d6545ecd556897b5a02719cad7f753309cd36653e71ca02d62f3cc3b090160e169b7c6f2e454f40d51895094490170cd2b2a5c71019e4750ffbc > +2953WQA63a03c2211e3b83cbe401f36d9994273c2299c4958b562d12863e8d5f4f6d9c01201aaca1f11055d65de1503dbc94bbc21fba5fb015f006a2124876e221dfc2c50657d8d383a06cc782911bf5d80f8290477d889758876270029e05bb75b598a54e0856449e2d485de320d8d1464ad9c1db774a > +268bbeJD280061f59e4ed6743dbd55b38f1755d98c4de3b55013b739635d189b7819dfe0601a0ac1e7cba4339b01b0b40530c9d1065d40a9063dbb1437803a922b57fe25d6f4651e4f8c192a82532f0f33d5772428e9556323c53687898b70d6b0f85600b974b44f83e23e58a30290f3590f9615091d93 > +b4b7rG_-f98c8de37a2fbc84f828837a96c5044dc3bbe5cf6124600dcdcbbd6245ce66e9905d2d75c17f2a11008da24226662dc3079fb1263150c096491f96d290767bd3ffa59d0f6383ad1c312e15bf3b23d49e41db0bc8f31e5ddb391f1779642aeb808a1164641fdbe3e2a9e5408e718b01b2066be6 > +b03flXoRd150e8aa883b3df7f915f9425c931fa11a7910c0b35a9c2b6ee34cccd560fec2ae3a2c5d9bdfe9ee616f26ce09509c2ec31cb4341856e73ae8fdc0722c0fba104668e405060d28ac30c8b41342fedcd5502db252af5fc56aed6b49badf9a10223e57ac761744f74e65e38876e7d8ef24d8ddab > +6517HBf9e110b1b3cc37efa55ae949f6c141c06b01a8e684f2e48d94f25f3fe62af08e7a73747248becc58b083bbcfef96ec70e797dec7ed347e43d35ed999ad45112ffc6a1196bb493f408c848e3f045d927cded7f41d131efbf1f685ef5a52e4908d1fe605fcf4ed7f7e7a5b780fd8a9aa7920ed4964 > +58adJL1me03f19cdb2cfd16c4fba0979419832fd94160914b82afb242478f8178774499f7dbc904e35cda7cb5c3e2342dae06aaa30eaa46c41b9d6476ad0478a577ce5554fccd1bb2c19e7c265342aec54ba572f6b3b9afc71d1413220d08c6debeee447681db492d581068d6877b0e5b5d07c1d24869c > +8c896Eep21b44bbcd745000572cc9e95158519f4e4ff446ff191ae769f608b995d992adb91c4aee30688e6dfe7acbfbc3a69481e337684ac70acf1a6bd4bd2c48a9b90a82ade401a51b24e322f05ad3f962451353661b6699505a3ba698044d4eef1ae128aeb651220405951db3bb51a034f5ee722c90b > +ece9fNLTbb0cdbeffd5315f119f5cdf74db62621cf70196946c431a25e599e457d818fb0465d1c071a01ebba102b65a74d1de61adff19f9503adb099bc84e85e506e3be52164362184ebecc4599652146d248dad520174a1e3ab00d1301e75eca699894b91a214b16342e5a7c4c4b2981baf4161c37899 > +f99cl7gwb38828b9a5144242f52e7c6f475cb24d8086c2e7bd0d9287f1d3f2b43066c891cee9835a1c445fb5b52c98125b4523ed3d81cf0d47be4b28009810d27f27af45abf58ba33ea71f198308b4401d6e6c834c292c161dc4e1c5a792235a5f27bf6c927e3c6e242059bbe1f0e8431c1d84c5e57864 > +21820d-Rac2494079ed1c93461568714caeb2825f32a91a1bc97275a2545402a8e0d9684c72c3975fc40698db17a748cc7d22494845ef32051c772e1c71a605981a5495d42d4de8701bc7b4ae3d7d201e94284816a313b28d92c11fe201739e3bd8fa8465005412ec0623bb191eb7a77140b50aa1584d0 > +41c5fByp3fa85ea28973bcf61587325d58787df85e55b3d496caffc74fa4bc168f720c9b8d35ee8317ae639a4c992cf6322e17e5007bd92d41ed82e4a084e3fbb532c3363908c1d5b65a15387c8b3f6aa05719205b12b137d9dfe8db787e54558a4776c3e436bad5e7708e8c307b7b7d8120e43b54e085 > +94fcFqBh8e9b4a10f714c8ce78380355fa603c15869e7ffe54e87fee5f959f15da70dec74cf475ce633e286118ff6c8979dc1edf7a5925c793f085c053f1276cbed91550137ef833e7e2e1a42588a4dcdf0062e4f01ed256117af0c681de3c673a454f16ff6ecb6c3a77137d6558b7395768df5c519a92 > +74faW_PM191b5efd7578c4b44e4195baed88ee20df412d8b72477b1fa21adc111741237e358bf2ef47b59af433c731c0a7f640165dfe73749d346257899de64e7ed13154f41399a4c05390652a7e22ba86566c5396af7e2e9e05c708d764dc716352a47c13e644b13e1c65bcc2f08f257753b1b4ab511d > +64efiKy5da36531d295baf833ebb48f2f1c2c8d32fe446fc70e2b44c3f2aa352f337485a5035c970aedb0afac9f7d4cb3a6da2b0cc610ce4a247be28560f238a17b008ce67f9a62aead32a6813510f1df17638ee0ad453a0a46568afab48cfb55ba47d9fac0638990c42ad947090b29ced89350ba850cd > +0aa3m9Vn70670ba34b425a039cb5d0da55dadcde5b77b4e304a00c661d9b924f1f2269a9840a541aad7f59b8bd84d5d7de3bce607e1199451551d8aeefef3cac38364e967f831da6d2b03a45f89b3af023bb06744cb47a082d318fe2045c9345332a29dfb7082bcbecab9ed4d4fc4de7e2604701801e40 > +6bcfjwJdce149145bf63df9009ad63370909a6278e76b4980d692dddd76f2a606ec8388e43ca53e8d4cf92a99969ad426ae8405c27afec645c2040d56a4bc18021438f6bbca412372f5bc824cd6f12306afad09da07cc15e8a8505b6ca8a057a17e49dd94784e95c87133b539bf625ba8d58bf1a4be461 > +b5f87bZz1fda9f2997788dc812f736cba43bff9cdea050de6a53d710171f19e03a2aceb8fba0f2e205785dd23c784915312128638811d2e32f1f9b8f5ed54c04815d22c345b3fbb0cf4979fabe8f22b7e976774ad9b9c1c4d6ecdf33ce1f2567d1b6c5458159816ead1daaca632c48334582c17d382eb3 > +aca6pOg1e8c792717255be171de40402ea3eda4c26b030b840c5db78c166dde6188728fe04430c21920d9016a23a1acce0fa4042492c876b3524363d355cf009187245df04ee8d18d16affa9ae24e7c6a6f020407e9f90012a48376f0b64035e313db8feec7b358c5678750b697a7140d805ed2ace9afe > +3c65FGbyb10d02438b25d598d4de0a94a76edc908f346acf8327528f2a08d26747a9f91a973eb3430f5e5dfa85f17a38d6bd4765e986735ca3a1f872d58dd38351c56d7c43994249273212af54d15c8c1d6186857c0ba775d9722286d0dc2e40ed06e7b010c8c26b2d744bccb083e448cf3d50a60c01e9 > +e52fIsoE35dcf0381cf453581cfb38c8af3390eabb327401562ab839f76b974396f318c1fe13dcc080adaff51123df424bd8d2a567083234a174d2663e060246e5fb9124f778fd01c5020f6c4f2621452dffaab5a0a7d2eeb0e489fd59c9c144fc672b3f443b9bc5b696d6decff4535a91dfa59ab4566d > +62d0f0dqe13c894b12ba300791bf275307ed9dea66124005ff624339dbfa61dde63b060b70d8a7a5275e7096d8e270b9e4b1f357dcd919d6b250ff646b76aa365b534922622a547e2ee335e233bc42283dbaf91e41ca5097df08cb82248c631c9744194354fd1b2a17d6cc85342b93d7b52bf174d092d6 > +36e8men60f38583bd161551d089ac881582db4d6ba7a37f083c0e45441485f5e6d7fc456311bffba4d766d133dff998f6619b749e19b44770d0bcd34e9234f144e3d81688dbb49f413a91023b2b5e2bd083b56e1905fbe0188a16fdf376d6ade89e649a827dd713206c614beeb2834711c367f1a6a7b15 > +e78aVoKv0742642b85518ad284f5128b2eff13b7bbe31be12404d416b6120d9aaab3f1f103e982fa3f3b98e70856adfd7953bfcd7d5b81cee1a616304b3424fc71822ba93300e44b789e58a1ce672588320aa0e89fa98407ea019e03e3c904da035523d08831d1e411e4147a32b521e84fe879135ef651 > +59bdqXlrf7ee60250005884993684849ddc775df93598a5bb11af82a5db205e9d991351e213d7d70b060d3c03ed1e836364004479c9cc2ad39a8411e433c8463f3cdb4008fa58aa55479d58478941bfdfad189eb51dfc8b1cd3801feb45f5e46d6055f8f10956ca678e92decf7c7a46ac70cdb962247ce > +8042Bmkda32f3a20dbdeaebd1bdf5da82bc0fa50745dd2d302c446a360d1afe2322cff270d316bca0cd2df9723d209b29b8387cf90f021daa315e65895bf31c3d25a3c181b3c9cab724079e44b1cbf99e3d3cbc649458fa9bcf49c2823d939b96ef03ae94edb1753569bcdb0ae18f6d5a1305d00901487 > +18e2p1nd35de8a48249e9b0123ffd84156d9ff683222f7069ef85d5b8a1da8c44fdea0c3aa42dd06196840a3b5b1aded95e379ff1d5e153dae1110205906263f461487eb81e3f27024a4a4a94b78ff5f6d90ff3165a4dbd8bee271f35c1b2a6a0847357da5975be186ba31ed0f28fdc142fe77fe1a4dcd > +b719a0Bicfcd616164386889dd6c867944cd45072e54bab93fb8143a98ff21731ea14511f7c624ea3f9da8e15839bcf953dfb4dc9b20f31828e9a12a5ea454dc9681b869fa7955da7c6c5d6e721ba374eba8fffb16b6cffd4dc4e8c6af44bc579d5e58a6c51502181c1afcb89bc688103f3dd0d6503161 > +e30c7k0538af43462d92b8934d91dc083c776813311610f9cee8541b1cf0563dff6f6131d81ad336b66183559d0553fce7a1d7415440cfb27ee1d5c5a637f7a23b1fb8bc3cec446bd6a131a88b863802abad36286107e8ecb21610a3f73e5f43bb1924af193d29b8002b62d16e43012ead257ef328860c > +0488QBJk79c7397f696a5845e8798c99b8a7b32bf017b24f464022d8d6b89aa48cdf3e5d859522ff72db98fda39dacbb0b2587f4c7a5e85d4c52edb72b8efb6d73ade8a5f1b6772f10d8004b1f7b8fe631ffac65628c32265a0fde7d436c3e9b9b726649b4d09097257695a7300afa83b4a08e9a86ee34 > +a111ORu_5396235223940dc5160e504549887e73feb272b88f4aeee6e2781b990c9ce25c0bd452ea8a66bbe680bfd07dcd108616360c32540a1c8241dcb1e0881ef1beddecaf036b38d868e8fe7ea1c27cd2af02abd9f7220ca8dd6336c54e595ecf3c0a10d3face8de42f72984caf0569681627f54448 > +50c4QK_8c6f24375076f4473b299fd566b058e6d739dec8d6efa170f8f2b9b703628f9f6b2c9f212c040f38e4d9c1e4117565751cf570ac29576632c6c3da1809ebc7a7897513f446ba7028c1aba8da95962f5137de8870a52bd01ad10f592c36b1b68ce039d3bc2358b1b487460aa131040b1205df83a > +d07c00Ad2886cbd47d444a3aa328d28d830395a0401d5f8f70088ed04a0d1a3c163968a8c0c979ef727d0dbd5b669ad90f61a7286ce6cbc500bdd5bc7a1bfb80b229d71c7fdc17ab364acaae4c0eab416a295cf804ae1bf8edefb575fe4db736fd0f160866a27d10733d2e145121d5ff49258c4b7ef30f > +e44fnEqRc3202b7f2807c8ab3010de206b44fd56887903ff537c7b8e447115e42c79303c3b1678b3ccbca968275edd2d835861b253e67a974d637f7234f09478b545b4f2e149fbc7cb84b35ae2681b7ab63eaaac1acb9bb1807ee641ec27cef5e041bb8cae7dd40a55df2258e23eaea7de0a86265c974a > +1aeaw0-uc6035cdfdfaaba3f6e6ad5db486e06022e286e15e93e8e4b66e7558e2b739d19408533efcf28b86a5d9d0bfebbae7282b31642b8e708922063127fe5c99c813cab0e73ec521d9eaedede6f878ccab7efe28475a99217c883078d94960b0abea4953a03b5e827180003accf2023e750b614b2ea > +b983oamb854dc6ee923390eebcab4ec48789359f2fbe1ffad58d3975a3dcbc6f5c20b298d6ea7f02767a6f109264232d7351453d5778da91149ef235d1fa40702d0d637345bb78e8e75fe0c7c6ead61b7c53d3198676ba52d499b30cde51aa1049e7ac3f00c368c7a4d20fc4dd97498120a880ee655236 > +4ebeGHphb37be7f5d712ba4422ac26bdb7127e58b9fd13f85cfd2627d363899519481458eb3b9a9b2dec5172c7abded3ea2acf482421bafc1faeeaddb28c0cad11c51d5fbecefbebe4a0deb010dbcfbac4d33b559cae16c7911e276e455b257f10604dd49e779f882c97ead5407a10962c6464a8b84783 > +847bwX7K1adcef04a9e66ad8db1555326c39f36689ca0a1322b99a17f4c2794f59c5bcff5f2da47c8eb3243d2bded4348707f665c3f4ac316342adb78c63af645817e86fe333cc03e83c5fa65089ebdc229afd725f08ebc8d3e578408808b93c3db0c9c69097919596766c0ad12ca46fd7da857f052fa7 > +710fwBr8cc49a80ba1d18af939cd4a785ccc58fc9ad2689ce523c9d95845b08d69f796d3c48b342a58ff64f9aa48ef47eef18b7f90ad0b7f89d6df691c87ff6ad319b4234d1748697d61c9546ff1442131bd13d57f6e0db6df4c08e177a8741d6bc6f45a0ebde0d51dd8e405487ba5c20c9772edc244df > +d48ahwGE7ff5c9f52051bd7fa79203f2feabb65185c69bbccbd9d0134d7655f8883aa397b1479a7e64ee158874962d8d75cb835de22d49f79e4596fa723376409ec5c802cc2d78ad558de4dfda1caf803909432d47c2f0466930b6f4a159df7fefac5f9107680c898a4da5c9c442ad66af015dea353b29 > +f2b9ZLy0f1739268a358204792d0be65c55ef096c46ed11e124b5ef1aaf632435acd10990cb21689b0888a66782f365870a3604964dca5be4b76c3b21a51ae41203c7db5c9d2aaf93d31ef9732eb7152196c8c32684124a3800cb4988d77d1cd683cebf5cc953c74d7727e808c3c1b5a0b8a46d64bf402 > +d9429Vvg4bcc30a7dd98d00b0d021e49708ebdd45c01cb2bf6fe49f765254634c24b693d434d14de010fdd39dddf765ae12ddc0dde26d2d6ca2f78f76cf1f877cac8295acb129405aacbcb3454249d6ede40e2dfa81bcb0d1082ce60d19b9640f294694042cdd1b8f4823f68ec673d938a554a23370ec3 > +46d3Twgkf7d382fe75421765adbabbcc9e24c3839b62f88b7b3cf28c2ee84dd334eae3388932f00be6deb16d717040788b367246c1246f6dcd92e8b8209aea31b42983316f969711278b385ad4ea1abb2c00cb95678d2fa7cc301717b46559614cb63c6ffd6fea02852e14b48f09d2a13fb940e5304298 > +12afAP6q6a2679fd0fd07598993955442f8e3fa3d4dcd2dcf86ea1d7c012754643606884c539a605c30033501ee770e5c4926344a71e859b6d3a2e008f37f3bbe91782cae18e23c9a2dfbb4e1af84d673fcb44e44090dc342b6483495eb214cfddd9afa414dc22a6997a2c265991b96b42b19c32c224ac > +9c59rwpjed587b820d6e8ffec81a4732a3636dd4efb6a499bbe25b7fb55c0dd7746245cf0c80ef69c380242723dd0bf0b3ca8fa8ad63035f95cc1ae9ca48c16687d26ea26a7b21517b38fd8d82d4b48c9a0bcd22b59ff4afbb8f925005cd5a95ea55c63875a736b28489720e74af8ededa1c1d791b000f > +7c927_7ge424125c5ff63d1a856d8e985991d353ebad69232129569b0c2942899033c4f51cf94f8e17a72c5d27f56537e039b4daa757eb5c765d3217d98d2b083cddbcaf432f3e5e86157301fc373d37e0105586689b2718fecea1a55f53bb1ebd1cb0f1842d5405237f3e4d84625639d42c2ab1733a21 > +0d01inRl1073c02376c43a5589e8005513adfcd704e95533ec7bef1da9d50d1fd92d38d5a06f2c22d9904edc80baed4cc9437806c24d2756254e67d0a8332359a72d74dff3e3850bf4cec67f3fcdc74a26878b91e8cfafaef30c7e156e0bf5f249b4307c89ce7acc401d92b79581793f8bb85b6fde6c22 > +bf4cAe9n194883d6eba0afe8dba9562f1aa73b00c9cfe7dd91fec0e505c5b5f808e0958f4b69d416724ecab94aa8a45ffdba58eb35860e8dbbc7ba1011727fb3893da894d22e06d18536332f087bd123f5f2ab12954666e6f2fa2b402ba24d4c46265d0b408a71fd72fa4620dd667011cf99fe80662efd > +b908GLB-8ec33bc1a6c2c0d1f0b5856f2e039f24e05fb18bf5837aab24818debde64b62c691c698ccb3a89dd6046226d42ff54adc0871e2213a9ff33ce81bd17660f635756efc9376421c273f06969fca2d30b45c15714b954596686c849bea5f6afbca6f2e5799d640f60a66544fe5b527d94a30273b0 > +80f68sj14cff719db6aaabcc2f7b0648b4586a50b190ad79d34bb7c8ccea7e53319248d0376abec66c1db23c8af304f4071ccb98ae74f61aa8d0491fbb8a6b567e3ac85a927ecf0fa94d25385dc774bb29d038297d39b38602fee861586a356917ea0e74971f6f098b16b8a4f834f396606194326968aa > +eca9GMN5c8b3b936b7ba3b4ee542fdd9087ff27626a7e1de17f59cdbd36e81de67d8614c43a81c7cd2767ed067c03d1129e9bb78073e72968826ac20a58420595d004f056f71a26af1b30e77fb9396f0e95460351e5c2f961c88c355ce0c76b835015a919eabe6f80e5df2bbeefb7f0d500ba07b0862f4 > +176dq9l9a3d69b0ed9d64f228fa770bea721802d1daf970a1dc37e96c8fbe62b40d7c1290d8c88ed28c3b432bbac3224eda13cee46c4dc993059cd2c80b97125f5463038d70344e3a9a54e3cc6d8c0d5e46c5521cc510c6bf7c8c8bcad21f9d3a6d567c440fd2e427c1eacafb266f9d4f8b4f44f4f901b > +7918Wbas654fa1434591e87145d7df68b971cdb8f75160b291724dfc053a5d97eb0691df575a9bb4744800442b214d04135d9d84187568be5ad26ed186cb9cfafc957acbfdf921b72b3e81199bd98cca087c97314320994984e83b5dc9736bd231d659f284e1ff757181584936fcca5939ed3c43c357e3 > +f77e26w_6434a7a574f389ab05ae5486bd9571f1d4a6e8eee278e04a4b3ef49e0af83266a8120ac253c570435eb75518f7dc2ec470a704d8a0e57ef5ba1c9a1bffbf2e7185c16da452a0ed18f23acab8f8d99f9eb562fab7ced07c0ae155307883ed73a324987a9d0b49db3200996171710e445301db31 > +426dVEg05927a01da3904eb5846317585d792cb76c36c1592720a6551ee2e2b8965d36722afa4e7d0accb1aea5b84f668ec946492e152cf8793a174921440c14acfca51d8b64dbdd7cf6fc98e52bffabf0664d09d78e3789a56567a780ffdbefa8ce6a5054a701394e64ad8962e3253e461b48722b52eb > +cb97XK023e95f98cfa25b9d804809929a336dbe4a390e7b489dd475669ff49dec4b82eeff3a16837481c720b3ec6dc951219a662ed512f5e692f2afbb608fb29d9c6da0793599073092482c3c5d0b9eb4f79eafe03a43af6cc1bdd0bd06e9af913435bbf3a43e001f181ab4faca80ef1fb0c2042749610 > +54c607hA74f5f7efc1f9f4dda6d11e72a0d72f7cbe2e009d74661d8bdce6513ad683422340068e1c0bb9312161e02c1f6983a45f7962d6cf423b1e429170901175dc217714ad951e260295d00cfd29fc3bacd9a00edcb6752347bb1915771f9ae872f2da972bd131edfce9f1200d1b619d21060cb6d38f > +760142s7b2cb2500901da10259368ef1c4ae67dc0623e6e24361cba1c6b2dfd9d4e5d5c452bb99f1c03b935e1eff0b27222be521da83cdd3bc838f4d6f8c0da0e1abe458b01db87cfd0395bf401a97ffc78b502adfc1cd0d74fee8c481709cc886e33cdd77165eefd3d207218cd0d69d4e29832f0a59d0 > +2528wYZo281f15be3d6032c845c672695daae3267f19093ca52a764c83bdff2bce781e926d40dacf856c2a92f29332ab95284b4ebad117ed8f4962ddb817213f8752dac4d7f2e708f77772e0f29e11e19e7890eddd5ed5dbf0f88686713c2084fc769226af72d723b892d708f45561429fe8ca5b3e7d2f > +88f4iKFV843991c3df73b81d756de03afdfa66f63b68bb7df1b3b92b6221c9409f5eb139b473d8e0e998c0b88c0e937928bd8de70d7e2d007970d2add8ba9a40342af753a8ede938cc30bf059a4efd2285df28821c7af5fd1a3b447b7ffdb83880e49fd0dec00223de114496852e40a3d68bf280773f24 > +1292g2C31366cb197c494b984a512931e370116581eec8d7534e1e4610861f135864cd756e8f9d5428a0ace2af266e5aa9fa6caddccd10bfbf144fc2b85741797fb5ea871bfe4f31d33581d7142fd364b68f6724d20d23626a86d3eeab416d5db932e16c5a84f0f68fd6f7d694a6afd0db6ab561f07202 > +44fdGFT6088cc5f38b1e4282affc70cf601d1e3a2519d4dfb23b7d8989970fb839180cf2cb0933609b108a2f1fa1152b5d4e5cb55f4a07238089a6db8f1ec4aa7ceb44be98813765f184235fafe88fe7ed14e38ff1f257c7b1fa00d33e3e77d604b9a6d68d09b6b15b6479ebc93115d39d39959bb71993 > +55d6f2aKa3317b6ec11f4ac625e6cb2b61bef8e9b2b09887ea5eb143171dc46e1e65a644ae8137a45f510e169247850c7055151b374b5142acdfc7ed47c6b38a1d0783c7ccffbdfa96663cb57c2a7fbce15588df8b6bb5113d4394d93d921ac7d961cb69d4bd05bfc7c5c9739b195af291e7ed583b9246 > +JQeBWznpFD_0dgLpbf4jKH_EKFF5lwlUbpjXPxbi0a93gIghN-qlFqPdVi86FhPGxYrajsi-sf1yN8Fo6WzAacDVlAQQHtk4fB4pUbnagczU-485OwtOyWyJkcnSvxKAZDPHE2HK56s3ZpWBLde90CH-EUQZgpn5S3AkT7UM2bEPqoe1siYgKteccV1i-dbQ6B0NwIomJS1Z66Om > +hTqLPXOLkJefXk6Ecy) > + > +# > +# In the following for loop, we'll create a leaf fully occupied by > +# only one dir item with many forged collision names in it. > +# > +# leaf 22544384 items 1 free space 0 generation 6 owner FS_TREE > +# leaf 22544384 flags 0x1(WRITTEN) backref revision 1 > +# fs uuid 9064ba52-3d2c-4840-8e26-35db08fa17d7 > +# chunk uuid 9ba39317-3159-46c9-a75a-965ab1e94267 > +# item 0 key (256 DIR_ITEM 3737737011) itemoff 25 itemsize 65410 > +# ... > +# > +for file_name in "${file_name_list[@]}"; do > + touch $SCRATCH_MNT/tmpfile > + mv $SCRATCH_MNT/tmpfile $SCRATCH_MNT/$file_name > +done > + > +# success, all done > +echo "Silence is golden" > +status=0; exit > diff --git a/tests/btrfs/227.out b/tests/btrfs/227.out > new file mode 100644 > index 00000000..2052e4cf > --- /dev/null > +++ b/tests/btrfs/227.out > @@ -0,0 +1,2 @@ > +QA output created by 227 > +Silence is golden > diff --git a/tests/btrfs/group b/tests/btrfs/group > index d18450c7..f4226554 100644 > --- a/tests/btrfs/group > +++ b/tests/btrfs/group > @@ -228,3 +228,4 @@ > 224 auto quick qgroup > 225 auto quick volume seed > 226 auto quick rw snapshot clone prealloc punch > +227 auto quick > -- > 2.25.1 >
On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > This is a regression test for the issue fixed by the kernel commit titled > "Btrfs: correctly calculate item size used when item key collision happends" > > In this case, we'll simply rename many forged filename that cause collision > under a directory to see if rename failed and filesystem is forced readonly. > > Signed-off-by: ethanwu <ethanwu@synology.com> > --- > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/227.out | 2 + > tests/btrfs/group | 1 + > 3 files changed, 314 insertions(+) > create mode 100755 tests/btrfs/227 > create mode 100644 tests/btrfs/227.out > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > new file mode 100755 > index 00000000..ba1cd359 > --- /dev/null > +++ b/tests/btrfs/227 > @@ -0,0 +1,311 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2020 Synology. All Rights Reserved. > +# > +# FS QA Test 227 > +# > +# Test if btrfs rename handle dir item collision correctly > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > +# is forced readonly. > +# > +# This bug is going to be fxied by a patch for kernel titled > +# "Btrfs: correctly calculate item size used when item key collision happends" > +# > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > + > +_supported_fs btrfs > +_require_scratch > + > +rm -f $seqres.full > + > +# Currently in btrfs the node/leaf size can not be smaller than the page > +# size (but it can be greater than the page size). So use the largest > +# supported node/leaf size (64Kb) so that the test can run on any platform > +# that Linux supports. > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > +_scratch_mount > + > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 The file names are too long for the test, I'm wondering how are the names that could cause collisions generated in the first place? Is it possible to re-generate them at runtime? Instead of hard-coding them in the array. Thanks, Eryu
Eryu Guan <guan@eryu.me> 於 2020年11月29日 週日 下午3:22寫道: > > On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > > This is a regression test for the issue fixed by the kernel commit titled > > "Btrfs: correctly calculate item size used when item key collision happends" > > > > In this case, we'll simply rename many forged filename that cause collision > > under a directory to see if rename failed and filesystem is forced readonly. > > > > Signed-off-by: ethanwu <ethanwu@synology.com> > > --- > > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > > tests/btrfs/227.out | 2 + > > tests/btrfs/group | 1 + > > 3 files changed, 314 insertions(+) > > create mode 100755 tests/btrfs/227 > > create mode 100644 tests/btrfs/227.out > > > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > > new file mode 100755 > > index 00000000..ba1cd359 > > --- /dev/null > > +++ b/tests/btrfs/227 > > @@ -0,0 +1,311 @@ > > +#! /bin/bash > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (c) 2020 Synology. All Rights Reserved. > > +# > > +# FS QA Test 227 > > +# > > +# Test if btrfs rename handle dir item collision correctly > > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > > +# is forced readonly. > > +# > > +# This bug is going to be fxied by a patch for kernel titled > > +# "Btrfs: correctly calculate item size used when item key collision happends" > > +# > > +seq=`basename $0` > > +seqres=$RESULT_DIR/$seq > > +echo "QA output created by $seq" > > + > > +here=`pwd` > > +tmp=/tmp/$$ > > +status=1 # failure is the default! > > +trap "_cleanup; exit \$status" 0 1 2 3 15 > > + > > +_cleanup() > > +{ > > + cd / > > + rm -f $tmp.* > > +} > > + > > +# get standard environment, filters and checks > > +. ./common/rc > > +. ./common/filter > > + > > +# real QA test starts here > > + > > +_supported_fs btrfs > > +_require_scratch > > + > > +rm -f $seqres.full > > + > > +# Currently in btrfs the node/leaf size can not be smaller than the page > > +# size (but it can be greater than the page size). So use the largest > > +# supported node/leaf size (64Kb) so that the test can run on any platform > > +# that Linux supports. > > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > > +_scratch_mount > > + > > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > > The file names are too long for the test, I'm wondering how are the > names that could cause collisions generated in the first place? Is it > possible to re-generate them at runtime? Instead of hard-coding them in > the array. > > Thanks, > Eryu I use the following script to generate the names https://raw.githubusercontent.com/wutzuchieh/misc_tools/master/crc32_forge.py but skip names with unprintable characters. The total available spaces could not be divided evenly to have the same file length, and this script could only be used to generate filename of the same length. Different length would result in different crc32, but I haven't figured out why. Therefore, I use btrfs-crc -c <desired crc> -l <length> to generate the last 2 names which don't have equal length with the previous ones. The last procedure indeed took a while to run. Hard-coded names would make time spent on the test more predictable. thanks, ethanwu
On Tue, Dec 1, 2020 at 7:00 AM tzuchieh wu <ethan198912@gmail.com> wrote: > > Eryu Guan <guan@eryu.me> 於 2020年11月29日 週日 下午3:22寫道: > > > > > On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > > > This is a regression test for the issue fixed by the kernel commit titled > > > "Btrfs: correctly calculate item size used when item key collision happends" > > > > > > In this case, we'll simply rename many forged filename that cause collision > > > under a directory to see if rename failed and filesystem is forced readonly. > > > > > > Signed-off-by: ethanwu <ethanwu@synology.com> > > > --- > > > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > > > tests/btrfs/227.out | 2 + > > > tests/btrfs/group | 1 + > > > 3 files changed, 314 insertions(+) > > > create mode 100755 tests/btrfs/227 > > > create mode 100644 tests/btrfs/227.out > > > > > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > > > new file mode 100755 > > > index 00000000..ba1cd359 > > > --- /dev/null > > > +++ b/tests/btrfs/227 > > > @@ -0,0 +1,311 @@ > > > +#! /bin/bash > > > +# SPDX-License-Identifier: GPL-2.0 > > > +# Copyright (c) 2020 Synology. All Rights Reserved. > > > +# > > > +# FS QA Test 227 > > > +# > > > +# Test if btrfs rename handle dir item collision correctly > > > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > > > +# is forced readonly. > > > +# > > > +# This bug is going to be fxied by a patch for kernel titled > > > +# "Btrfs: correctly calculate item size used when item key collision happends" > > > +# > > > +seq=`basename $0` > > > +seqres=$RESULT_DIR/$seq > > > +echo "QA output created by $seq" > > > + > > > +here=`pwd` > > > +tmp=/tmp/$$ > > > +status=1 # failure is the default! > > > +trap "_cleanup; exit \$status" 0 1 2 3 15 > > > + > > > +_cleanup() > > > +{ > > > + cd / > > > + rm -f $tmp.* > > > +} > > > + > > > +# get standard environment, filters and checks > > > +. ./common/rc > > > +. ./common/filter > > > + > > > +# real QA test starts here > > > + > > > +_supported_fs btrfs > > > +_require_scratch > > > + > > > +rm -f $seqres.full > > > + > > > +# Currently in btrfs the node/leaf size can not be smaller than the page > > > +# size (but it can be greater than the page size). So use the largest > > > +# supported node/leaf size (64Kb) so that the test can run on any platform > > > +# that Linux supports. > > > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > > > +_scratch_mount > > > + > > > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > > > > The file names are too long for the test, I'm wondering how are the > > names that could cause collisions generated in the first place? Is it > > possible to re-generate them at runtime? Instead of hard-coding them in > > the array. > > > > Thanks, > > Eryu > > I use the following script to generate the names > https://raw.githubusercontent.com/wutzuchieh/misc_tools/master/crc32_forge.py > but skip names with unprintable characters. > > The total available spaces could not be divided evenly to have the > same file length, > and this script could only be used to generate filename of the same length. > Different length would result in different crc32, but I haven't figured out why. > Therefore, I use btrfs-crc -c <desired crc> -l <length> to generate > the last 2 names which don't > have equal length with the previous ones. The last procedure indeed > took a while to run. > Hard-coded names would make time spent on the test more predictable. While I don't mind having the hardcoded names in the test, adding a program to generate them would be perfect. The python script triggers the issue very fast (it takes only a few seconds on the box I tested with), but adding a dependency on python may not please everyone (plus it would be better to convert it to python 3). The only alternative is to convert it to a C program and add it to src/. Eryu? > > thanks, > ethanwu
On Wed, Dec 02, 2020 at 10:47:46AM +0000, Filipe Manana wrote: > On Tue, Dec 1, 2020 at 7:00 AM tzuchieh wu <ethan198912@gmail.com> wrote: > > > > Eryu Guan <guan@eryu.me> 於 2020年11月29日 週日 下午3:22寫道: > > > > > > > > On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > > > > This is a regression test for the issue fixed by the kernel commit titled > > > > "Btrfs: correctly calculate item size used when item key collision happends" > > > > > > > > In this case, we'll simply rename many forged filename that cause collision > > > > under a directory to see if rename failed and filesystem is forced readonly. > > > > > > > > Signed-off-by: ethanwu <ethanwu@synology.com> > > > > --- > > > > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > > > > tests/btrfs/227.out | 2 + > > > > tests/btrfs/group | 1 + > > > > 3 files changed, 314 insertions(+) > > > > create mode 100755 tests/btrfs/227 > > > > create mode 100644 tests/btrfs/227.out > > > > > > > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > > > > new file mode 100755 > > > > index 00000000..ba1cd359 > > > > --- /dev/null > > > > +++ b/tests/btrfs/227 > > > > @@ -0,0 +1,311 @@ > > > > +#! /bin/bash > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > +# Copyright (c) 2020 Synology. All Rights Reserved. > > > > +# > > > > +# FS QA Test 227 > > > > +# > > > > +# Test if btrfs rename handle dir item collision correctly > > > > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > > > > +# is forced readonly. > > > > +# > > > > +# This bug is going to be fxied by a patch for kernel titled > > > > +# "Btrfs: correctly calculate item size used when item key collision happends" > > > > +# > > > > +seq=`basename $0` > > > > +seqres=$RESULT_DIR/$seq > > > > +echo "QA output created by $seq" > > > > + > > > > +here=`pwd` > > > > +tmp=/tmp/$$ > > > > +status=1 # failure is the default! > > > > +trap "_cleanup; exit \$status" 0 1 2 3 15 > > > > + > > > > +_cleanup() > > > > +{ > > > > + cd / > > > > + rm -f $tmp.* > > > > +} > > > > + > > > > +# get standard environment, filters and checks > > > > +. ./common/rc > > > > +. ./common/filter > > > > + > > > > +# real QA test starts here > > > > + > > > > +_supported_fs btrfs > > > > +_require_scratch > > > > + > > > > +rm -f $seqres.full > > > > + > > > > +# Currently in btrfs the node/leaf size can not be smaller than the page > > > > +# size (but it can be greater than the page size). So use the largest > > > > +# supported node/leaf size (64Kb) so that the test can run on any platform > > > > +# that Linux supports. > > > > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > > > > +_scratch_mount > > > > + > > > > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > > > > > > The file names are too long for the test, I'm wondering how are the > > > names that could cause collisions generated in the first place? Is it > > > possible to re-generate them at runtime? Instead of hard-coding them in > > > the array. > > > > > > Thanks, > > > Eryu > > > > I use the following script to generate the names > > https://raw.githubusercontent.com/wutzuchieh/misc_tools/master/crc32_forge.py > > but skip names with unprintable characters. > > > > The total available spaces could not be divided evenly to have the > > same file length, > > and this script could only be used to generate filename of the same length. > > Different length would result in different crc32, but I haven't figured out why. > > Therefore, I use btrfs-crc -c <desired crc> -l <length> to generate > > the last 2 names which don't > > have equal length with the previous ones. The last procedure indeed > > took a while to run. How much time does it take for btrfs-crc to generate the last 2 names? I think we could live with it if it requires tens of seconds. > > Hard-coded names would make time spent on the test more predictable. > > While I don't mind having the hardcoded names in the test, adding a > program to generate them would be perfect. > The python script triggers the issue very fast (it takes only a few > seconds on the box I tested with), but adding a dependency on python > may not please everyone (plus it would be better to convert it to > python 3). We've already have dependency on python in perf tests (please see src/perf, common/perf and tests/perf), so adding another python script is fine. But we depend on python2 for now (PYTHON2_PROG in common/config), I guess leave it as python2 script should be fine too. > The only alternative is to convert it to a C program and add it to src/. Yeah, that works too. Thanks, Eryu > > Eryu? > > > > > thanks, > > ethanwu > > > > -- > Filipe David Manana, > > “Whether you think you can, or you think you can't — you're right.”
On Wed, Dec 2, 2020 at 4:21 PM Eryu Guan <eguan@linux.alibaba.com> wrote: > > On Wed, Dec 02, 2020 at 10:47:46AM +0000, Filipe Manana wrote: > > On Tue, Dec 1, 2020 at 7:00 AM tzuchieh wu <ethan198912@gmail.com> wrote: > > > > > > Eryu Guan <guan@eryu.me> 於 2020年11月29日 週日 下午3:22寫道: > > > > > > > > > > > On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > > > > > This is a regression test for the issue fixed by the kernel commit titled > > > > > "Btrfs: correctly calculate item size used when item key collision happends" > > > > > > > > > > In this case, we'll simply rename many forged filename that cause collision > > > > > under a directory to see if rename failed and filesystem is forced readonly. > > > > > > > > > > Signed-off-by: ethanwu <ethanwu@synology.com> > > > > > --- > > > > > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > > > > > tests/btrfs/227.out | 2 + > > > > > tests/btrfs/group | 1 + > > > > > 3 files changed, 314 insertions(+) > > > > > create mode 100755 tests/btrfs/227 > > > > > create mode 100644 tests/btrfs/227.out > > > > > > > > > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > > > > > new file mode 100755 > > > > > index 00000000..ba1cd359 > > > > > --- /dev/null > > > > > +++ b/tests/btrfs/227 > > > > > @@ -0,0 +1,311 @@ > > > > > +#! /bin/bash > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > +# Copyright (c) 2020 Synology. All Rights Reserved. > > > > > +# > > > > > +# FS QA Test 227 > > > > > +# > > > > > +# Test if btrfs rename handle dir item collision correctly > > > > > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > > > > > +# is forced readonly. > > > > > +# > > > > > +# This bug is going to be fxied by a patch for kernel titled > > > > > +# "Btrfs: correctly calculate item size used when item key collision happends" > > > > > +# > > > > > +seq=`basename $0` > > > > > +seqres=$RESULT_DIR/$seq > > > > > +echo "QA output created by $seq" > > > > > + > > > > > +here=`pwd` > > > > > +tmp=/tmp/$$ > > > > > +status=1 # failure is the default! > > > > > +trap "_cleanup; exit \$status" 0 1 2 3 15 > > > > > + > > > > > +_cleanup() > > > > > +{ > > > > > + cd / > > > > > + rm -f $tmp.* > > > > > +} > > > > > + > > > > > +# get standard environment, filters and checks > > > > > +. ./common/rc > > > > > +. ./common/filter > > > > > + > > > > > +# real QA test starts here > > > > > + > > > > > +_supported_fs btrfs > > > > > +_require_scratch > > > > > + > > > > > +rm -f $seqres.full > > > > > + > > > > > +# Currently in btrfs the node/leaf size can not be smaller than the page > > > > > +# size (but it can be greater than the page size). So use the largest > > > > > +# supported node/leaf size (64Kb) so that the test can run on any platform > > > > > +# that Linux supports. > > > > > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > > > > > +_scratch_mount > > > > > + > > > > > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > > > > > > > > The file names are too long for the test, I'm wondering how are the > > > > names that could cause collisions generated in the first place? Is it > > > > possible to re-generate them at runtime? Instead of hard-coding them in > > > > the array. > > > > > > > > Thanks, > > > > Eryu > > > > > > I use the following script to generate the names > > > https://raw.githubusercontent.com/wutzuchieh/misc_tools/master/crc32_forge.py > > > but skip names with unprintable characters. > > > > > > The total available spaces could not be divided evenly to have the > > > same file length, > > > and this script could only be used to generate filename of the same length. > > > Different length would result in different crc32, but I haven't figured out why. > > > Therefore, I use btrfs-crc -c <desired crc> -l <length> to generate > > > the last 2 names which don't > > > have equal length with the previous ones. The last procedure indeed > > > took a while to run. > > How much time does it take for btrfs-crc to generate the last 2 names? I > think we could live with it if it requires tens of seconds. > > > > Hard-coded names would make time spent on the test more predictable. > > > > While I don't mind having the hardcoded names in the test, adding a > > program to generate them would be perfect. > > The python script triggers the issue very fast (it takes only a few > > seconds on the box I tested with), but adding a dependency on python > > may not please everyone (plus it would be better to convert it to > > python 3). > > We've already have dependency on python in perf tests (please see > src/perf, common/perf and tests/perf), so adding another python script > is fine. But we depend on python2 for now (PYTHON2_PROG in > common/config), I guess leave it as python2 script should be fine too. Ah, never noticed that before. So adding Ethan's python 2 reproducer (with slight changes like taking a path as an argument) and calling it from a btrfs specific test case is the easiest way. > > > The only alternative is to convert it to a C program and add it to src/. > > Yeah, that works too. In that case I have no strong preference for C vs python script. Thanks. > > Thanks, > Eryu > > > > > Eryu? > > > > > > > > thanks, > > > ethanwu > > > > > > > > -- > > Filipe David Manana, > > > > “Whether you think you can, or you think you can't — you're right.”
Filipe Manana <fdmanana@gmail.com> 於 2020年12月3日 週四 下午10:12寫道: > > On Wed, Dec 2, 2020 at 4:21 PM Eryu Guan <eguan@linux.alibaba.com> wrote: > > > > On Wed, Dec 02, 2020 at 10:47:46AM +0000, Filipe Manana wrote: > > > On Tue, Dec 1, 2020 at 7:00 AM tzuchieh wu <ethan198912@gmail.com> wrote: > > > > > > > > Eryu Guan <guan@eryu.me> 於 2020年11月29日 週日 下午3:22寫道: > > > > > > > > > > > > > > On Thu, Nov 26, 2020 at 06:50:13PM +0800, ethanwu wrote: > > > > > > This is a regression test for the issue fixed by the kernel commit titled > > > > > > "Btrfs: correctly calculate item size used when item key collision happends" > > > > > > > > > > > > In this case, we'll simply rename many forged filename that cause collision > > > > > > under a directory to see if rename failed and filesystem is forced readonly. > > > > > > > > > > > > Signed-off-by: ethanwu <ethanwu@synology.com> > > > > > > --- > > > > > > tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ > > > > > > tests/btrfs/227.out | 2 + > > > > > > tests/btrfs/group | 1 + > > > > > > 3 files changed, 314 insertions(+) > > > > > > create mode 100755 tests/btrfs/227 > > > > > > create mode 100644 tests/btrfs/227.out > > > > > > > > > > > > diff --git a/tests/btrfs/227 b/tests/btrfs/227 > > > > > > new file mode 100755 > > > > > > index 00000000..ba1cd359 > > > > > > --- /dev/null > > > > > > +++ b/tests/btrfs/227 > > > > > > @@ -0,0 +1,311 @@ > > > > > > +#! /bin/bash > > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > > +# Copyright (c) 2020 Synology. All Rights Reserved. > > > > > > +# > > > > > > +# FS QA Test 227 > > > > > > +# > > > > > > +# Test if btrfs rename handle dir item collision correctly > > > > > > +# Without patch fix, rename will fail with EOVERFLOW, and filesystem > > > > > > +# is forced readonly. > > > > > > +# > > > > > > +# This bug is going to be fxied by a patch for kernel titled > > > > > > +# "Btrfs: correctly calculate item size used when item key collision happends" > > > > > > +# > > > > > > +seq=`basename $0` > > > > > > +seqres=$RESULT_DIR/$seq > > > > > > +echo "QA output created by $seq" > > > > > > + > > > > > > +here=`pwd` > > > > > > +tmp=/tmp/$$ > > > > > > +status=1 # failure is the default! > > > > > > +trap "_cleanup; exit \$status" 0 1 2 3 15 > > > > > > + > > > > > > +_cleanup() > > > > > > +{ > > > > > > + cd / > > > > > > + rm -f $tmp.* > > > > > > +} > > > > > > + > > > > > > +# get standard environment, filters and checks > > > > > > +. ./common/rc > > > > > > +. ./common/filter > > > > > > + > > > > > > +# real QA test starts here > > > > > > + > > > > > > +_supported_fs btrfs > > > > > > +_require_scratch > > > > > > + > > > > > > +rm -f $seqres.full > > > > > > + > > > > > > +# Currently in btrfs the node/leaf size can not be smaller than the page > > > > > > +# size (but it can be greater than the page size). So use the largest > > > > > > +# supported node/leaf size (64Kb) so that the test can run on any platform > > > > > > +# that Linux supports. > > > > > > +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 > > > > > > +_scratch_mount > > > > > > + > > > > > > +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 > > > > > > > > > > The file names are too long for the test, I'm wondering how are the > > > > > names that could cause collisions generated in the first place? Is it > > > > > possible to re-generate them at runtime? Instead of hard-coding them in > > > > > the array. > > > > > > > > > > Thanks, > > > > > Eryu > > > > > > > > I use the following script to generate the names > > > > https://raw.githubusercontent.com/wutzuchieh/misc_tools/master/crc32_forge.py > > > > but skip names with unprintable characters. > > > > > > > > The total available spaces could not be divided evenly to have the > > > > same file length, > > > > and this script could only be used to generate filename of the same length. > > > > Different length would result in different crc32, but I haven't figured out why. > > > > Therefore, I use btrfs-crc -c <desired crc> -l <length> to generate > > > > the last 2 names which don't > > > > have equal length with the previous ones. The last procedure indeed > > > > took a while to run. > > > > How much time does it take for btrfs-crc to generate the last 2 names? I > > think we could live with it if it requires tens of seconds. > > > > > > Hard-coded names would make time spent on the test more predictable. > > > > > > While I don't mind having the hardcoded names in the test, adding a > > > program to generate them would be perfect. > > > The python script triggers the issue very fast (it takes only a few > > > seconds on the box I tested with), but adding a dependency on python > > > may not please everyone (plus it would be better to convert it to > > > python 3). > > > > We've already have dependency on python in perf tests (please see > > src/perf, common/perf and tests/perf), so adding another python script > > is fine. But we depend on python2 for now (PYTHON2_PROG in > > common/config), I guess leave it as python2 script should be fine too. > > Ah, never noticed that before. > So adding Ethan's python 2 reproducer (with slight changes like taking > a path as an argument) and calling it from a btrfs specific test case > is the easiest way. > > > > > > The only alternative is to convert it to a C program and add it to src/. > > > > Yeah, that works too. > > In that case I have no strong preference for C vs python script. > Thanks. > OK, then I'll change the test to use the python script and resend patch. thanks, ethanwu > > > > Thanks, > > Eryu > > > > > > > > Eryu? > > > > > > > > > > > thanks, > > > > ethanwu > > > > > > > > > > > > -- > > > Filipe David Manana, > > > > > > “Whether you think you can, or you think you can't — you're right.” > > > > -- > Filipe David Manana, > > “Whether you think you can, or you think you can't — you're right.”
diff --git a/tests/btrfs/227 b/tests/btrfs/227 new file mode 100755 index 00000000..ba1cd359 --- /dev/null +++ b/tests/btrfs/227 @@ -0,0 +1,311 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2020 Synology. All Rights Reserved. +# +# FS QA Test 227 +# +# Test if btrfs rename handle dir item collision correctly +# Without patch fix, rename will fail with EOVERFLOW, and filesystem +# is forced readonly. +# +# This bug is going to be fxied by a patch for kernel titled +# "Btrfs: correctly calculate item size used when item key collision happends" +# +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs btrfs +_require_scratch + +rm -f $seqres.full + +# Currently in btrfs the node/leaf size can not be smaller than the page +# size (but it can be greater than the page size). So use the largest +# supported node/leaf size (64Kb) so that the test can run on any platform +# that Linux supports. +_scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1 +_scratch_mount + +file_name_list=(d6d0dIka505ebc681949a25a3f1a4e7464f18bfcdb04a103b8ece40cddf61ccc9e690232878008edceecda8633591197bce8c0105891d2717425cb4bd04223bb08426de820da732c0e16b8a9fa236bb5b5260e526639780dacd378ca79428f640a0300a11a98f4f92719c62d6f7d756fa80f0aa654ae06 +abfbtnbU51971c26ade16d6bb8b42b99144fe5f9bda0235cde455fce24489c06b3f357fbf8e238ac49e746544b6985f3b83cc831fa5bc3dbc5ab00627658089c48816059a002f19ba5527f350bf01ab6402fcb5d72d1d566c9baf74bc48241a3513f05845e40889f62149ecfec18585e50f7802370c45a +b67cpjGha1638764980055b7f03b0ab1ce46ff0163bf154315d3c47068448499a436a75451f7c3da601167c34e30a1780ce2a383755258bd66942003779705cbfa4058450fd4333b28a2269f5231a8ba3d2d0d417de5a9cb257f237593d093f06436516826e30d2c7f93fc77de3fea828c4885a11a1804 +b15afZbqe462beb2f67b46a080e5c28eb8b0e250615a4c0e533c2f095ef9b64217874c49b3667cfc2e57981082b8f615f7aef32d57259ce2ca1bc3f574bc62a81666188c7a381a536cbacb886dcddc7ec469d98614bb864b74c9a869c09a606aee77800b93b07dc95d1eab0d764990ed27c45848d44a85 +be83LHav2f34348f05982abcce11161ead869275e6282d085b426fb6f4db16bbe2abc01e28bdabe9df67775d0c7ae094c4e7ab157425d8ce2568ebb747343c2a15919fbccf277f8aedac75a419e2a0442151689f1563b818acbcc458c9624814541c685430d674e7d8e4ed52243329ecd57ffebd42592f +4faaDD279c5a7d8811a25ed3fffcc252785195a329ffb4a60732d446aefeef9a934c5cfc2cf571ed21efa87060a07e122b209f8a04651c171ab04d93a8914dbdbb18e2cae018dbfdf758e30a2e3b5fd6e28e929da70ad85d62696cb9623514ea22a899d861b356d08613d7904f9965297eeb8eb4603b0b +8b63bFYY954b1329a0dc21b894bf0ae56c13361892fb397258ce0aa003d8e9aae7b36f2cdea9016ec3d43cd0ee791aec8f81ca241a834188bc6bf64fcb337ed83dd8d6bae971aa2e73a1bc3869fe5292ee9700d88b0063a8f484383ee290cc45a5581fb3dfb4d03a7cdc36dcc00ff3f58d6bc02f164559 +443cMEr-c11dedd9ea8c3e038195afe46c00a9620cf366f38cafa01908ff99a73ec8a2fe7d1d76fac96b418c251c37912d65b20cbc535e759dcec55c5adb3146734ba5b4858af72591b14d1631b93b2f018c4a26b330f61194bb271b55602a3c024f8f504d09b5d42f727a5df5ec523b83b056886d51e9 +6297zARyb7a112108d3f31e11deebd0f0efafe272e2fe7abf7715906214560fdf1d3d2d461a0c407aa1cfa69c99461f385ae57c6b77988c524b2d3f09815a21c947e7172e618e4cfc97296f268b80939447c4d4294ae1899036ff32ecebcc777f4b60f689b4964d29a52d032e3c68fd1cdb78a26567134 +a9e515Hc662f1f129c686bd1ad57e88efe64055ff8da5ec1f0004b9643451b6d6569bb07ee791a64a321de122d148853df04a4bbf4995bd6233c230e61cf5e3f29c9acc22ff4284aeb3863ea380dc647212e2665d368419dd070e61ae8bc7626c719969b99a0e0116ac6d94515fb2e3ed5efc17f4f043f +a12eWoNWaa0ede03a3b33110c9ad66194fce46ab5c0caca08c48e099a7e3e6276aaf7eafc7f0b237da55e99e158c0f552e3543a12f4bc806a7ccb745e5b5a8754893fb5c22cea317c2c993a3994e9c6049c147cc9b0449d610080e75e8b11e247bbfbf60476e98cb057e29d50baf807a2c0dcb4f215c61 +4970vOGae2507ae0cb53aaa3c413a355c610a4db3c079ab5c22500c342854baef498683cb6da0b6269f1b70f6ca5df11129cace6d1a7070d629b78174ed3d5c27c4ce8ed6189ece3137a66389fecab8335806e3a3454bf196a064b4a5027b98da672df2af7f64e0bc504a708b308865ba5ce8b3b1ed01e +67f9KajV70624221d93a0c453988000cce87183af135f47fcc61c55ab3b9f440a911ccb2667c904a125f7239279e7ff0d04a5141649c544da90475234c35d9e3dc3ed470c1fc536f847af1d6046379aa12d9021bf09c66bfa2ce7fd256e2474ba4d288907fba9adf3af1ec6dace47cbd42c8dd5a42db85 +6fa8UrPwe23b9f2b6875d3845a35ea2e9005f5b2d835800880dc2f78d04394b3047c12d3d99751f40ce5edb69ebdcb59eb18f71d6233d3f81eb3caa4ee5b0c196ba9bc10c828f651b3ffaf3b461c8ca301b3d9bc6467122f8b6da05d18b3766dfef49c7c532ce436d33c9e46546522f4e3fc0895c2403e +8100g9ESefdb0e2723e2e6c5bfbcf11566bc77f41168745d02a188173d2ccad76e91d8f96ec8bb23ce7311e4bdad7070ed3d37d7e99f2c9c4f6442b40bb85d452b66dfaa0a577acac8bd63b494151b474204fc5404e3785ec9615a679d953b840ab9cc8b76475638281b115540a8cf8f1082c0a1ba2ee4 +cc41t_zI5ab920e469b8577bab74ccac5477fd85b1ab903c7bb6043493fec4355a1f1f9007ac112e217b05363522ee7a131ae1d04a6cb3c8042ba3000e13a1f7379152c19aec0b32c03376f6aa7065dc69ffdd3befa17e36f8fea9099a8a60c348bf3a16c57bdc277f566585c042e439c7cde8879b7e45 +f4b4iLwl80383655d485a678a010976e7cb2347c458908fa49baab1f2dd592737082f4aa08f15c68dbb6906f5ad4a3105e473acf50880bfd8d2d1b720fd33e2bfcc088bd5b8724c159b05b65fc94fe25df6c13213286ac50cdf707fcfa24b2289e5e99415a61f5239412bb512dca61bab0915e40ad8707 +9163CIa728a3b486c174d4d966d536e78b14894b835007e12fdd685bdb5341d3ac3dbfb551bcf572f4f49da63c35ec7450d75599c255a77e14506957208a8d2d73856863a9ea31b3c88bb7da3f7c1df2fdaf77b58da75b7be37adb765d08ac240444b0732821c723a7b8c7bc2e4fd4c3ae78883550a2cb +7a55I2TI2fa03fc98f4b640d854f026b14e6782793225ed4efbedd4fa1a2e8bd372a5b72760de18dc9911749619b12b93e8c8796942d5615c9d5f402f5271b8ac2ceeb21e8b135ca7c26f45ef8d1a9010af489f16cdb6bfb1f83c24d4cfa94820996dbc81a813369984f04dd2830acd7f36f904cb26775 +a7f6EwLUce914f4502cdf646bf3fe0919a9e7553917fdab0ad267df842d4e4207dc809ca457f30148cb5c6df03751cee4d39d72fc67462ca72198b1c8a80a3501dd1444c680202a299ac776b4462148ec433cb4a93f0e8f30e32d1737be3cfcedfabbe2821e0b3eeabfe5be6f99d9e999e7b176365a90f +a0b54rqO799f6114d871b20a36db204bc25a7321fddb71f8a82abaadefc7789204609a80654f1e20415edf526cdc59f73b2f21f36c31735215ab9aa2181e496503acfc7247af0ffc2aa1a0af553c96e1314e943dd12e12d471c7cf5cc99c205d0acc8892bf9f23eeb082fd7d93348de366c557075f5ee3 +18ddmZhwde6ad31084b0d7d49f91034fae335b4cf7eb3db95d6793bea1e6168e515c2e82d0228f85fb50a0fef9bab74f531925c29abbcc346cb52d31b7c7ed42c68868e57f9421caa3d40bb318a9fa636d670b7d6438ce553d7130b62c0b71506cfd7609f7db4be6baf1a61b47bece2abb3227ea7586bd +5e55lXia5af168a15006023b008a849f8fbb3fb33daa7d8e52c231db08a72335375afcd62fadcceaaabe07d5e891e9b3b793b8515510f0ce2a2c866343f1a929f460fc9b70beed9bcde4dcad8ae1799588efeade04018ac0bf55d83a7fdb84c4cfc1c9291879c6375f82df7cbe4c8a85b3a8353f167e5c +d9afaSCF1c01c3f000e1426edaa029d51ddf0483207f84b71b2fe1819954e5374da80119b571f261578753be0213fed92d4b6cacc72f586366e159bec4d8f3a01765d80b5c2dc00389a644fe32f718e4338459d69fe0cfa9ea2936df9d584922e7ae5f6ccb02401100dc6fb354e5706021a0aba485735e +76a2sP9d6449e55f087b74f1f7953d94acc68f86a6b7a0be020fa69313fdc6c6e89361ac2c1835d3884ca0c51a7b0432edf9d9ea9077cd418fdaa731a7e50c6a605f6c9ed51540d3eec4bc05c43351920a987e12bf3e181bbe1f9a2138e3c1c2873c6021326347fcbc79ee7acf11951e498bb233082c63 +ad29nQH-22d68a207bef57cfd9518a43d8e8d2a85c251424227e37ae77dfb76aae86db13a467d4b5e307a083dab941a44d73e57d9a2d38541038589fca6e0b9eb07aa4c523880f632803dd5a58347c55ad23dff3c4717ad0f9b9d0cafbcf1e4240891c22920bef7cec8a12ddda95af18afa689fddd14aa +8b28WbeNcda0fba6eb6bd5cf19e78fb4b8857cdfcdd9f76119d0e8caa55f1e72a045e9e91e9e96b3267ae490399ee28c9fa12021fcefe3f0bc53adede3e9a764028dfd4f2c9d82bcc3ec29e10f2bcea446ce0a59d217a706f98569c0264f0ecb0426429a4d9e3b1dcceaefb5d1359ff85bfc1b0cbc425e +7627qUn2bbc60439896e373aff19662318d4c5cf53eccb9b8b610dc951c3d3f2fb6b26aa73ba862915b7aaa93a4ea35f4d187c1093c86274fad2ca9d16ded5d5abf1945e2c265ba7944ed6aec84f15cf85c26ced8d13dc866e5410106ab0c0a7d9ba2725fd6cd8bf392040cf4feb9fafb13e1b6afd5b15 +40c3iuAhb9f728844a94c6863868f772be8dbb58ac7b82db39214dda63e7560eab283e2f469a9820d544281ecad3c08735d585b7e846941856bb6932f6d7af2559d88ecfc73f27322379d2ccc354b55e99b711e49d9b4243a8e998d995e79b09f7f5aaa7ae80b831414e0a78baa85ee14f0e3d06248415 +40c1AnBB7eef0f73f33e87e6e1ce331b1435d37ac4263a23cc8e3108e6584fe04eacbce3af2c0b1f5b782daad316835f609e5cfab202be22591537be509d2fdacef122b387b2a43dff029a8d34245edf1ab0f034d043441960bb43a5fb06eb58af203663d12fae3ee5e4859c912760afd3e9376a7e7994 +0cffgw5Qe6d9fdc2b3cd1f57bccc9bd447cfa56da39d51e90a679f816001e0f55846e4fefa59ba92e60396db4fe49ec95069a5d6ac01ee20480505d48abe475be6b2c02c436e9977e444f641984d2eade852f193befa6d0dc93fdad41bd2891447d9151936aaaa2afbe5e1d54468a839e36d238b6c6eb9 +f1ab-D3k5194d801cb3210d850aeaad04a2b1f0e8a208e88738c605cd6f33b40648877919065232ec8f5ac259ef120059131b30a58459f8bf1030e2df9e8f8ae41aa864aead283dc584e0f086d4111ec30ef5427ad3babdae71d039e83abca3aace15e157da7eb8502b3a553d1384d9b9e1df1ef804524 +aedbWtVd15b79a3cc0dd99ee277592a7aecbbbff53b39efd92596a6dbe095ea069c61ebd76930723559a5b76609962132eae3cf19258c54a54a31e9caadb535ed8a20787ec899d4058f82c3f858c493fd345fe36ec8b64e8abe208211e8e652b4bbb3e54082ec005e78ad446cce9b92a2328b5cad81714 +85e9NIHO7b9ab9bdeb827a725a8ed676019d1eee77c90097e9bea996cb7bc4c295997e545949144e46d503388c759d992f01b0fffa6c63cae019b325c07d976a6f7bd1fec6a6a23983c70501321b0d4ff0475221e45707717844eacd97fbc6614be9f47cc5b28e34f4a8f87c9ce8bf3e25f85f62553c7c +a37dQDI71b1666c9edc54930057b8d1e1e6f668f126e0a6ce7402035fbd356abef8a51f0c2e6b3e7826adee27d102c3e4f1f7a2b952f4fafc5e8b4b4ca15fa719b0c9d1e27e069a1c2f552ecbaf4cfd75624c4b24ba7e06e330906e03b335357a5b8391c39ac17ca2ef3049bb08446aa9418026422fd12 +e387NCRy54b4b3fb40f918d4c7f225145be75007eac09a768ac076a751978c87c5d81eb44eb7cc37e2c17f4689cb1c2b4910f25132d78cef1192bef5ae60a5754c66da33cd38e17595cb62e9bb3c17e33524e312d26d6363ff073677835609cdbe14ff7df12a074d6aa7ac8e1d194a5b8e0cc8c200ccdc +9e306_uT09b6f84ea40470655a7a0eec46cf525d918f454509caf485b221a3a0ac2253b24f15407fb188d0821c0c392ab34bd6c50bb8ab3aa11a4b609e904da69c4a766e23a9847d15d2dbe2fef59a6f9c3b9da1ea88fc5e4312e5a17ee006e2b2f815927c7ec2f5f4dc670f59a1004a3ac2b36c8aea37 +4042K1X3b97cfd264d9dfc8a6fb554120ece6aae9c8576e98d00d518bcf15c01284fe615c9b0d719c425c110445521cc07fd15f51ef98e18d868e04b4d3181b4c1e6c98cd3e3c1ec8bc8a1ac860e2628da1eaf76facb9e3077853302403841dd99fe99a45e9e4bfac920d52713075c87f443203defdef5 +1b7dowaff0b391650452ed2b87d843adaac09aeb09f6df356ed975b8e744bd3158b4d89edb96e86bb03acd08a781b9577737ce8fddebfe5ec2b9f2115e0c2c5319bd2c6c0bd7e97f86ca7c40119fc192860e338bb1b633a8c07efe0292fb515696cd97e7a5380209cb1a147b592d089d31f5cb6f8cfaa1 +192eE_gj8b3b6f608dca13671c1fcda4ee441ff221bd1124e4606146ef0346d5deacfe232ebc663652af3ca812622f7ede2c9f264768e0b58f028a1c0c038435b5579f887a03fbc935f41b22feba1f7625d113b218f9f343dc045ae2804b08711b1d4a1a386b2234e7836ae60129520d0518663ccfb06c +90cd_vEg3e3ebdf5857e8c110bd8b74467300a7837aa5fd6c373fcc3305b4bcd2f89d947527f35ba892d1e234fd19b1cdc23b46a5279368221f92e75454cd20aec0783623868adac999370723bb355d12421adf61abd4be15668c572bde7cced99ceee6f77b338e848317f5fbcc4b6cb33b42fa3f48458 +376aI0qz3d5397340be68d1c4af90ffbc5337521b5e3524442d49e7c0626ec23a53da91894813c275b2d7c0e4aff34656428a17dfcbbfca6cdbdad4022cd3cb9e517b5629145e475e567f442fed054f17e13c10bf8c174f4269a4ae782c8436ac0d1d2ef62bfc84b95b13a2bd341ee88bed1ff7f7a647e +36185q-4cebb5c8c7bbb8060243dc7bfe51d16ebda88849fb2e82653a9a00de248db052716ef421320a75a9c96c194316f7b5f982228aa52b961f5197173af0f68283a708edea915c13c0a065cc7a3478324ce07fde31235047e3404008f965decf980b15979dfc56aa2cfcf4337cb83acaa0d71f69666 +687a0dPuffb2b051e1262307803bcf6beda92df9a1d0cf0c90bedad5163664cf595f5ddfb17831f6bfa401259d566938a3d23bb63fbe0dae702ede648561d7905f5e454c54b9cc3b8f485ea140e14ae347a943e240064cbe174a35e964fef5fe22623e5ae2eb574e05795552e175e62f733452b9034dd6 +e3fe52lXfb5578b7514f1d9d856dd62160d3c7ef0c17f6bc13fb0ec8ed715911fd3327ce07473edb6cc90e5cd220ce55fcb156cd443179b38e23892655f3fe49a70044db906e7dbe86ac273e33ad6fdd154ed7235cb33a3fa8a0ee667a7b935e173031b6f50bb5cb156348d955367b1ba385df68023f3b +1235K6k0eb0c2a7a781af990aa8e3303a0d98f140215d4b807876a7635db613a23e97869c7938419503568aa0e5a263e9834ece37dc3ca53ec1db064279f3b06b8a2e2cd6017371bd5596c3822b7d469e628584aa6b705161ba64434eb5cbfedd878994e81e848d8be0d4a41ac3c5ea0eafba1cfbee062 +1222wBFV63e1c9679a7475c59eaccbc023d0c5aa88d5a7fcc4e72a5e0a507f326b2c8d6a3bd0aad159e833db9f7a66b4b70d3e2c41ba2448019d5f015da88fa13cb23320994f7fa4bd166ea4b29326447518c6ebe71b5020ffffd7c2671d3826b6654e09bd017e54b295078e305417ab827ae92f6573bf +272cT3VD267378bdb785801cff36d6986d2372aa4f057c075bc9b583d91963b2d370097eba6838cf42193b10ddf35d9b8b5a55804555602e896290500f21489cc5c0699502c74e4415968215aada9b0d3755a0e7e4956c0b8474f7b21e0ac10901b887c4ddc88fabe593ca2cc8bf2fbfc9111dd3765040 +2f7980uV4ae0faeecff9ba50a9f795ea8d097f261ebb968aadd0c32f5bc8f925e3d2be8d80bd1023a2c035b5b526c9ae56844c58deaf8dc29a24f7000cd327afe77797ec18b30a4213a2b3b50a4017f6a53a4706606eef9589f72122d93519de09403aa5f92d7996c0a0a93ee8f33df1a630a86e8b4077 +9f12HCrX0ed3629ddafa5e95b034191dc373aca2bd4b53cd2888053c56fdcaf2a5cf153a06735cc6559ced549fdaefe7b63e380e48bc4c209f4e14b8d03e17d851e8e8ca34615c6069214e8f466e733386f8bab9cd3e12c1af4f34dcfa293c8be952280a24d9a59b44257f94f3a318c461df24c242d382 +b1dbLb24d6beef993e2a489707013658dbeb756a5c74ac876bcabe358da2e2889c99d3daf2610681cf558ecff3735a6e4d2a6c35f5be7db4a4f95bf17404925cd7f954b037bd6b71564554d0444cf600dac0f3d107987ae350e49927d9f6954398ae3dcf78133b3c54c3a776038b3ed0122f1af9c34e50 +7f9eOkWk9992a7dc4d826bb60d2dde4ff7220e6027623d954510907f2f7c09390166bebc2ea5f8cc7a660f2c3d323fd7f1638dfa3bae99a240360865d57d1bbb4aadb1a56f4ff4a2edf3bb943aef19812ce91d6349588e25d3f832a353cf3289e58c91814575642b2aab3323e0a52f2d4fedf8d40216f7 +16b4xscN5fd83f2aad2243a598bf72e4d955b3bcd3d0fc4d20361fa3c5ed03727bada3dbd2a822f80f281012dd4d2d9503a82a5e30b0b3e2e14f32eca09d47c6366f8f1e8dca5bc57ca6e4ef3ed90697442b655f49dad780a4b6f3f4da278cc182707e816c8df5db83f21683b1ca220c5c0ee33dafbb2e +e20ar9pe8f17a3e24e0064e6c0b9b248ec064d597efbcee074fe81b4f5e2b2aed898236ad8c7ab1f9689e6c915731233fa8a3573c158cef679c9e4e959e42955a410e328375a66fad8609a634007e18fcc84533ded178f02422f09d5da192cb4f79123f13a0f8ec75f523d5f2d6d6638a8768d7b5afea3 +448eD2cB7ba37bdf494f13e4458a863055d5c1dfc7e1c68323cf67fffa79c6567d8edbb4048c8e6696cea38f435f76a8b9b8c4d75feb1d28ca0c03495b2cf41016bfd136d92cbb2b35b41ef6ff0ff999fc5cf895254cc91b3b27f7c0e1cc88c7d96a0c509f199d7082f60e3079deaf39f061f9f579c847 +ebcam_3Id937908af1b86b5b836388d36abdc0b0a1239d867a8f51c0d84fab89da72f153af8690bbe1ab81d1288889224e024b5c3c603f49dc64db29b59f96f9437bf1d4ac47598114e7b73236b467b575628364a77d3d763b46d38b0383493e160a126eccfc5b98a8c932aeebdd6b4d646da195d40611 +dc4fC-GK7bea33165f8267136b8357a0a266cdb7855a44b74c333163abd77b4f8b9b21971e6aff01dea46871a0711b0b184c6603eca6b07b43275cfb7a51d2b1e799f237f1c573d90162f86b31d903ec6b2db7f1a0900cc6ac12e5a680f4ba56d1ce86a11d128ed09fa918a6eaae1e4e7df702f992903a +7c88y0FLeed6188bee34e32f1bac31c9680b540546de7a70a4ae4a95e1deda85b773bd467b070db4c668049fe637c1feea18dae329771536a57c6b240b12defa10f8b987d8a0ef2890fd75dc71c92b3ddf4a131357184cdf7d36926e42968ca9edf704afbbb0604b30cc16a37f439579a2005a3e2a885c +31e6SWtB7e0d2b1a6dcf0896b1fec5ed13d05acfa767a31366c0dae9a0e43b63a55bb7b0c27022708e12e7375f83a03746a96896846038430973a0619460bf2356c9cb6ce7ff801cc67117199e860c072b05f9e096ed0432c42f6746e7765e2b62f9f80d9a4308c8878052444e87f5819c16a26bceed2a +71e6Z0OC81ce61960aaa4b74ecc052756c6fa452d62df8d9c3f423ce412b06009344574d701639d789622644f2927e863564c9712ab269af6cbe6ab8e2d70062a6f065fd9af32faf33ff49d0cdcedd544f153809c9f81e218c3877c1b539671a114d862c064d8bc188622cac3a43646646da8c6bec7108 +901daerpeafa959db7f7da22a8d5efdaf90a4eae9be24d71472db41b033607664d3ba43afe910a3a4e802ccae71cd92f525c66a15fec4a002bc570758e407e8db210e7b766535b6b9c174204a51b33c20078f996492331d521841b0bdf970e5e931332629d9dccd6eebe08798039deda7343737e58af70 +d801o_8F55dec19e106b8df2e2261a8846885c5a0c73a2aeef3c65f72fafd750ef84f6177b5b50978cccddbb491e7e58f42457c5865c996abd642319a5d24e472f3a8cc67e40fc83247f003653000721d0bb0a81b13d0926ba9a91ec31386dec0dc3e9f3520320a8f3d0739411fb3e8c90a18b4ea3fade +e90eXjH46649997b0820100927e47f395da9ca6ed6bfa0b5f9ce350dcf29c81c15ea383dc725636a483e2da8441be7831174615387799bd50fc86095aa13602557a1b231dcfefe0c1c0bb250c302cae235dd7b60316e462f8a60ce0e2e9f8782b66f0cf433996dd111d578855db52d3170ef75dc56486c +fd4dMAcw42ee7510ef86cb6ecb2683831cf7bf2138144c779e8502bfee5116d7ca1d567871cfbbf6e75c344b5d63d4923ff523a20f47779f18e038c0311b556335cb3a51956ca355385831bbc454e4f7c22af8de81a62e8242e2b008ff6b7a8215d190550f113ef1d51b3204f6bfa943aad0e4a201996c +47ccwa-F0a6c2212526f1a58ef2039f63ede167a8b890e9b9907498902f0060d296d555cf55e6f3969194798833811d0329a36efb13a8bece068e0d06ff5f5494cf827d26ceeb41b42f639fd96ff5fea8dbae8935169560657ddce5ba8a5c52fdf127b198975996e274a004cb97a460034437ddceb634c +a630YF1-474252591d296b3a8031a92a7ab8b363b0efcd81e41c360962ea163d5612466938dc5e5ed6198a790a2df166ea2a7645f08aa5e16f32ab1c5362d0e81369f8cf4b0136545e5300f6beabe86987ebbfec7a87b575a40abda096a02be9c6a42ee677b161911bd6e42b6108da927e961a2c31af00 +3c47cY8Cda3d7c4d15ce553fa0497fe3ea86da0426cdd2ce4649379f572b0ee15efe03d9d06ad8e8fbd4504bb31a0946913525ecf820d1fe56b085042ae35391cfac94095d548d00068f92f432e29356b517772fb5de956d15d59eb48e17b840b9b018926efe21b774824df451b06de70cd693ecf75faf +cfbdX5eZ3ffdef72f35311658262d9d3c540f818e9a448e584ee0a7cebf0ccf9fa32ddb158fc34e12276dcbe81c6435a34e88050dcca6a73a9abeef5b022af1917bd59203d999ffce2de6ff8130a5738630db8fb7bf0c5df86bf55bab2c9d64712c0a26fde7aa1e88f5d2947c34cc2c64f695368609f5d +b0937Fb96fd1221d4530648a8d9cd36cbd3641a317bf7a23c9894d543cdf0250143e17b2d74c68af04c22751c424df64301a170157300f062b324f06ded074d068f9b5ebc99617914ff1cd85118390dcd3379e87ceb3e4bce52069c83d2cacc12df70b523fa92098d9638f957bd5b1f6cf1c18c455998a +571ddmkxf602e74af17e94990635e6ca1001a16cc3c6cffdb8f5ffa0e80c3648753b273471d2d2287acbaa94de5600b55a4401c8a81f0532b4f671fa5ca2a164475cff39e4f76ffb3ba4d9982d107cf98ef73fa24481fae1423a83b09db7e78ab261318ec60953e546d33cb24081067acfdadda5907dc4 +8d9b4JCLd9e16c6becc7c8cec22c2f1d130e3e36e5cf21a43f6c7f84c014534c6580c1253b2f564bb3df0a056959101a120c69683c4a6ca93cba17004eebb67174f7f601d1afec317778b918bc79fa0c64400a12516463df425fdf56b95414f8cced252f523dff6b14f57c2288fefda5e6994c743f30e0 +2667bFF1cbd0632750bf0169426d40d773f965806f79e28965b5003f83f75397f451cb62b4c5b3a367e4aa78ab80aaf6ef7ca5b897c4ac90e409c5e5f7db17208fd655e2689715c228353046958e53488315d4b733c1c84952f60b6bc357611e78c2793839869b7e79bc7d43a40d40e718ce2bc7c1313d +0c8fahAQf690725f1f6e72ff75adb3767d3768352418a939d18a45a17004fb8c73e6b82b498eb980ade7a0e12aebb27220f1f90b6c8e32c059afc437a325487eab082054055e2cff992462702667d4b504d8819f6148b53674521cfbdf950471f0be1491f0df32ebc96e6a2587bf8e728007f932edc317 +0c7fU_cW660f51d99b6566f18629cebd792ec86cf21d4af7175783a16505c6d7cb9666d2376c52d84e152919c18dcc24b1572880e9c95cc457c59ada0f0b1a41012c718d487b2363b49eceeb72b812e7ab3694f4f04a41ce72ed2c83ad6e1799d1e98c16145008294519b0c04260b54de198154adf1d68 +d4a1y6Ge4d115ea1695beee527e628e1af6e0ff6ec51f9af88fa1adf0949fbfd08fd2a29a1726ed6afe4489d1d33e4e2fa2771c05dc5a07f6441e906672b0ea712417f4c88ec32245c703316af2a00767e340393140d0138f22a66f671f2e09dba31235e47a83f5a66eba0fbed6224e82e239a8d57e9ec +46a1hYMN47a9bc0eba6a9c0b8d1c81e16ffd566ddda972225839d0bb53d839c4d81879b77e415eee2ee6d8ceeeacea2f78cd072f21f32178ebb46633c3a147df317a454280caed4cbcefabe3bf21a283f30118633c0a890f1c59c3c872647f3b3886e9742125025e49d771374b542dbd71ad24cbccbbd2 +d298Xa6R15950b3ed29a6613a66b1008c327ded101cbd33884320de908b88cb717217752d2bbe6cef10c72488d31e85e1329f0d8c862f512819c5de70ebebae99e394f20f6dd68512c8d9763d867f68ddb665bdae0b9b35d23ee90225a79b08f531614605562aad5fa7bfceb0ea7dcbd4450c969db8772 +e2faIAU6c08ebb77ada4ebf93fb2db2744e67ae3e1ebbe4f662a6e47143c85fb7f712af57daec7abdf8e134c6b43818fb71c98f3a62128d4fb6463d4ca212b5a375f2e1afb773961101920a42408e5a13d098aa3497a144de04531596098cecd7bd30a765dee834415a0efff4c4ff754ec73b6893a86a5 +8fbazwXWec834c5f244ef647ed1903676b59b5cd3b0d060075455bcc95b730f121158ae2558b8cc1a70e3c3041057c0dffdc9d41c1de44aa27917aaf714f1d459d7387065c744d218a787b7846863ec5ac1b2feebf34edb62a3893263ccec1e1fc6659a90cfa3c9d3ddb29d25762d9727b5338bef8bcb9 +c74dwwvefc866936edf11c632f8df987bd1336198ccaa8347598eeee6d02fdf7948aff0afaabcf4fd66f815f480b091507c431b1df97b8bef18719b84d225e9e372a93f527228e7af082114511201db7eef0ba98944d303d7c38370e2be99d175c04dbfb30dde5c4a39445f09012cd36db86cdfca80e97 +5a7dornQ055af50b4dd39643696c40192909e5eae95f5c6486d661f33ddac0f4e418f3163ad09f4f21ff00de5e02e53d9b677f304e4affd965754dd80e6a28fdec5db381368195cc6a9e0ab5a6f1a4aef67095f93d6b070e198a297f5982a3e5ee8f9af8aa15909f22e5b2b8cd4746d99a77204e1c6126 +931caB1X987d1691e54fe4512285461ad711f0aa4a9db983f7c509f03a23d83d430cd922b516b412e21101fcd30b0e4defcd5541da8578dbd0f405f3b44435b41954157986774d26524c4e0481536af2e944a199d938dd526d9669fad9008aa97a07e891474b3a28e118ecc8a3dbb9f1aef7831cc3387b +57a5Wcotd2054d30e9f7e55647618ecded87f83a38170e953663b183c8d2d99504f38dc312ae2361ab65b6d74a716a8627e76354b7e9a4aebe53289216c49a391549b495e9c8afebd912d7cc528eefc753e752f447b3e2dda58ce9888011e6888485515f2f3ec7500581f94f5a9a97030cb2ab96b328ea +e2d3sXDv63602a988b3e1ad22d00acac43b45a2e5a87459f5770d64060cb5cc39cc10e54bd847ec800843a89255b2dc93ced59edfdea7ea9946aea862aa0afbf258f904674a9081b7b79f0fa322df37b169278ed64cd7db038f0ee534134be7244929367fbeb5bbc49173f0c9e80b14842ab9df41fea3f +9436Jrp804595212e3cf71d2e427c67a96ffe33abd393b22f5f0c751f6fd1b96944921ede658c1e0de6e501bc47fb4e5460591239213271b8c78ba030dcb5e794072314b875541cc7fc92373f38ccee22eb070d042461d0433acc2437f00c9697cdd7aa087dfd89eb8f9b83db037fe9dbc8b446a73a5c4 +5b9aIGLY10e254c01f9ddbfffd4493035ecc8d04a92f4712ac0d8be932553a9c4d26d447bd9f9ce24bc967fd4d093799e9a8549ac7c50e9ee4a6dda48c4c68d753af46c4c1465a8173bd4fbeaa79d909cdb59ad28301aeb6942616a2caa03a612e294aca991ec351962bf128ee688144dc493b9366bf39 +770aU_6K4d51ec486edaffdff9f240da48eb8af3efb038d10600b30de070d773f9e792e15f40a7f466d1e5eb7e9ad4afbee7eab6b99cf1ecc9b64a3b4b74363501da0f19407ebe66831dbf358d1466b773a5e0aab35632c9fa24a896115615ef6f2b43d023c7ca8abbaec0ae10c290a706d1024c208236 +5bf8K1J52e4654aae2bd041fcc79e08660da11dae1d0a21e8ff2fc40df3aaca65b4fe2885c0d98cc2c8278bd0fb7c2779d6bfccbb74201c918d503cf2af8118903c197203e8bcf39ef201711022d504ee9622be3367d0c7546128b28d484168acd617ae45f48cddc4f3ef24b0e360ca1a20cf1f27be083 +9a0a-CGz04ff3e120ccd32c6b604c63fe1cab82f26ea5acb9a12f23af169522b2a5f5913fc758ec9aedc7917ae746144147c3b6abe555d274702290deb33c76779ebcbe5cf065325c340a27ba864ebcdbea35685ae429fb8d170c355ea3573350252e0242d3f407a1eaeb24f0d8eb12b5715ebb5df4f5a +1cf2vVOg09ee83d5c072ef87d9555b307327c98a061c0335dec3f01d8d9e8a10dcc2af530afcdb18cbf0241b580284683901216d87e259600392d702c23ca7a3e1a86cf87272e48548ad1b51bc143981507f16a836e7476c3e4d3f08b8d0b8a62c8406af2db4c796b1a25af7f55758ca777b3c8d20bd10 +093572nR8d857c1f5f070d532f0086c458cbf78262eafc586ae93b03dd6ecf5593039fd49161577dbca38fe4b4ce8197e79d294ccae042ad4a81d25eba4b5442f5e50bca8f6dd105b92438777b469b610cd1066ccf1e08898d0189e4f203f93d65bf677ae471c13f1a2bc12602026d4bab51738fc1fce5 +928d8j3Jfdcc5f7e430dc861e2bc8f2e78f647e7567115f250127c093aa6e5fbf84cc16ccfc497d3a60b13bac907e50f13f617006b744dd3df3c15b62b2aba040c52ca267c593c9e5efc0435fbd98e8cbbda7b28cf7fe9f6379832cc7a8ff1ba88cede2dcc090602728756af3bbc841bea3a1b3eb531ac +29b6PYdC8c8f4f1d944ce6e270b82e937d2373350ac0ab5a29ed89578957972867fca86e837d6cf58b672d998b94b02c33c9ac35e8b77a8a0af67a5fb0a06fa348b156ca83aefd8961c2b584239e7e32e1e948bc90373a9ff599fd41856e8d6ebbded62680774bd3c34f6c9f7ac77cc7a2d57a2c690a66 +e613RZlP02434d426e6a116dd34dda8a398f3618be822158a5e54d58df7a5c941410bd8256706729965d7bb21df3fe6abad93698c34e03ca691498859ebfd52d03b930542ffb5e9aece4f3bb310af3eaeab006d173a7c42d1d9e2b4df7e2bf82447cc1730a1cdc38326550f81ce526fcf3b5bd8adf3a72 +c386OgVJ8f7b98c20ed0713a5eccdc4a6bda8dac61fffcdddeae5965c3a95b33037244a2bd0625728adaa298be67f9b3d9ca50f1b336757c8aade0716fc1080b35c9b899696e792269a828d6e265525a682c2cb3b8ff5bc6f3b5a6e61430a0e207a9b8e548f28cb0867db75fb4d9c3f858d506a07d69d1 +3bf7LpHAa8c91346de31479b470d26cbd1f046352f10ce2403753a8b6a618b1709e1e7ede3b9c623f081d23487e66c7dc7f589afb5f0c9fbabbfad0e4f4c2ad7ae5e62db06b1ccf4922f090aafb6afd356c6be4309c1dab8a01bdb082120d61244413b6c58422c7dee4b14c1a9c3f10b74491bb4cfa1c9 +0a47Ox3O2d2f3b468361edcb3c65a8395808fcdb68dcd429abafa9b2a0c64d694142b8eb98c4b573293e2e327764c1be47745b272760356cfe277f9c8868a365efb02673978b677e9b38dd8b16bb840409cf8d24a5242a24897394bc20ff1c4b0e47a7a7c20497fc86dba6f753ab978b08d242dbcaa42e +cc6aa85Q8c144c9de41fe1136d4b89d42add730df45bd4d20aef7d3ffa0539b102e1864fb4c2e1d6d63528c11c567acb9337ad4ad03751e8184dd9677620e1b54c123df9559a496e36275f00cc65548c82d38f0fa367a609bd64af3cabc74832fe3d9ccfbd138cf9015b43026771a21be0843e0c3e5b45 +9ce3IlL0f9dfd1dc1794488a8744f7f377ce9166e6d04573603e5dac410fb8362910f2c79d7a603fcf8648921dcd62923a9d2b513010fde17b08d980bb10f941953ec62bbcff210bd915e237f7499eab5f6b98034e5b3fc71e68a085f5086cd8afcaa46391cd69eef5c63dd318b88594d5becdb687a4bd +553f6DeOfd7833e89690beb15adb7d85c1dcb30877e2337788e422fe2bcf0bf86029456f61c5656bfd73932e6cb286c425bfe59dc0b7c6da9ac603eafb48537e13786f090d8219e40ac4b803731aaad5d117e94704485bdf07cb83f23e981c4509600ffead52e1db8e4db22c3aa2bf73499edda1b057f0 +266eqGpB5cf19d9deb53f977a345c9df3f93c481116b6b7c1a1db5e3e99a09279caf5b579e18bb6b179060cecd150e8975981007ff6c96db39a9475013d1f429c18a81a203061672b7ec10f4213c3d61747426a2327409e37d5e71dd0631d00ffe81b97885f71ae171c3ba5d54d82ea6ecff700c265ed1 +d0ean5uEac7edb0f29e68b6e1eb67716e0e16a9d748eef818d772ed983185c0a28db3cccb912787d04392c059a582863b405a743720f2887cfd27f87b1d720df5d136fef8c049000648fa9b36cd1f911a2f8a9d4ecad25e07581354fc6d38ed53049e270a7f5ed9c3309d3de11503784a11adc89df7cd0 +3ca9gpOe12fe59dda203a8bc4ab5b24340682a652436effc4a10d2d1948c3db8beadc35f9996bb544d8a56062a32e2ce3eda81672f7fe85234fcb7b5fe36867e53765b57f26a050c2ac0999f6dbb9cfb1df7a8a38dd4225a0434170167654e91a68d3458b4adf91dd8912eda1076b4837eba516ccf0808 +e6e8mGK02d2a484ab10684d1b52d0ae5ef0d63946cc47bf83d94e1e49c24c48f5497377802ec725841162340e1eb58e8fea165797f922fbe5b82b4d387712f98c541fd2cfb35ed0c63ca8516df02b72a2bc252cc0917c9d63e6e1987e965f7d1056e8645e973993992df6321ccfdfc8e2b767e4338e294 +d53bXVHE7d63ecc9fa38a29a5c73194dd6f997f7255804e9d19406cf1a576314cdb3d9ec34d63510f40b94aef0cf42c4cc838d5e75beed27ab5e9a07837b6400e110088cebace57aac97e437fee4ba989a931bc135a23b738bcb23b44ad11a2eca3fd21a4c69cfdf2bc917773407987a5e58af752df13b +7e61urq8ed06571a7bb450107ad4b6f5ddcac81abb2126586e45da9d18e801a18dd9f3c65c6e34aca8a437c745c2f0b99d36acd8b881ea06176277530e6f924a5c24de3997371d09613f661673afd4f7d722fecec7ea545e15b92dc263401c2f0994d0261b328bac79b7cde37e8bc68e39c1d00d2ba1b7 +16f7ztiUae7013b644f55bf04383da65988b0f889283366f979b2b1b6640385f15777dcc94f357b942018c758f4cbd29e44c95b1d66aeb6a00f7c8c6da7166fff792c86028e9262cf69d9e06af4116a8dcc036e53434640a255372a5c34187ea80b32b94c489ff98841167d8140423ee99380fa0b11d6c +1007Hx8c57fc8ab2abae5794e1d87110c8d557f4dffdbafff48b74efc042f0a159ce243b9457a320debf6e210ebfd328628d13bd75822e66d677c2b002c4e241404af98056d334a99c551375307e3a0ddd4575ee9180b15fb1c14201b8d98b3030a7905e59fac1392ea9b1f16fcb0688892cb02a2214af +6990RdC_05936b7657e1665d378975ffc769e6b27d4e213eeffbab1e713f208e27ead5f4152e94c09cbec92e92fc970d825d5b75b0cea37945c1d3cb998111d7c87ab5edc550073807f2de2937f38cf89e8da0dde503e2ceee94ecd00e56d1edb335c2403d6e7c4a05739735b9f7f7327119d28817dc65 +c30aTqRza49cb37429daa8958684909c4e7a007ee298c99e2049f2219fcd5aa6c2afcfcea363a27840e6df067a78e00e9766b085309c1428266c04681c36b3c72e8e4b00611857a30df92d44ca70bc70404f1494cc4ce7385d552ddf6c2352fda738ab0e813cf0768166ae3ef83a3617a110d87bd69af0 +02cd3GbF591cf8f7fea31935c60aec95ba25889cbd06b6fe89f203a6b6a799cb8387f60611154a3fffe10c163fed7753087736018c95395a31a042bf7210984c91ec86b9a32f8721e96020343ab508ba1b8e029ee910520f1e9c3660643f8bac72840fbb8680f82ba0ca469b35fa6d975d79e7fcbed622 +da32bgy-c04b46657d6664e21ce83c89234879d7af14cae6736f3c27df2c5da29b9c2d4e3e8f8227a1c2b3b247c4f6b9c7aa4f9a7aa7e06782a5d2fd531c60b6fcdf541e3588b9a05b9365b970c375bf940c8b6e4c07c8baa92a440dfa2e7f7a5b09ef38649633957cd1687f2cac8a5b0e7b2ba943d734 +9ad8NXZn62ec1d8cb1d1682dff554fa510d16bdbd13605ec46f7decc16deb683449839d2e63daa3baa2b2284ea79ac0c59633a2a6499bfa7b95591b582febe7060546f3e707a7dd010890d0f81cf419ddeddcbf7135b1b3dc9b3edd6000c8cb62558f55bc0a89f9e6a75005f23e0d9e219adcbd2739251 +c4b2voRD5514948be8a29951bcadf12a1dbda34a464499f12b5730a1209dfbb8a05cfe899f5d0f5146ea83587386c8e303ecd40c70d06cf38bedabd2452195d704346a11e4695c17289a78c99ceeaec040f124436a022091410e55c6df0de50ac47295db69ed999083841da0c4fbed1d9e9cf059840385 +63d7QQhL80e6c7347edb7052eeaa8d7ddac086b48dc22a4de201f4b77106d252bb3602170a6ad02b75d4a6858b2d41ee0e1887be9c33704ba2edab9f79692a7e41d544bb142b8bf5a0adbf9f5410a7e4b31238e765c6a3bcfdbb506a1ee883970e69ef6e03e0bfc0fa89b4dcd1eb7a9253fbefc33a25dd +df86-pxoae9f9f7de90c893395186924595ed91c3c8e2d59c99381f283aa323273c1eedbc3631eb2051bd14849776b02ac439b4e929f918920cbe36e7cf445a427033a26e06ae8fa455f579ca11887ad4afeada1c16de2b69debeadeb06eba1dec7ae66081e983cd5c70a5369b843e270616b0fe406402 +3d8aktQMe7cf24400bd32d1207287bc922c581df99b553a84b6f3d27bce34d7b54595d92297b4dba0d6608698e5331718913be68a822b6149778132348861fb1e01afd3c48994e65873924136366ee1d41775e0c2d15221479fcaa06857a26c507e7dde5543bb9f496061a590fb950c2f015edd66488af +3bc9nx3S580fcd3233332a834cb67510c9cc2fb5d59757d650458044af8585059fda231dff73c4677cb6ecb2b030ac836b8d11e01469c05fba88ff8fd3cf132ff0d719d60ac00cdd0bddab4949dc0ab60a8d179b25179d4d41a9bfd6c5a12708da30557ce8ad9fe286dcf8be5129dcce2cf9f5fe6d1d0e +25c3e1MNa578734952c6086031835edc3e5243f39ac7ee32a6312d1776e2245760fbec31f686d57f7cb6a140efae32926190d28ab84d7e67c0fa07b0f2998fa64e737f3c39f8e24a832d13ed7012d406210de3ff99f5ccdb86ba646ba4aabdad39edff8683dc3a883e98566cd7a43599fc9b7409a97f8b +7e1fxD4O1960ac8dcf59b272b540423940485a2c5c181965e98bf0ebd2b952b94e63b2937c0b530a23534b203958af12ccc681228db41a06b128f377c1c1bdfd7970e0aada4eaf44f090d8d913c87f8baf84abc42b455014f4d7ad03c5352a48ba0dac8498fa44ed7f0dafaffc8dea4839233ba63c8fae +2c73BgpZ3679698ef8baef5cca8eafe3b3eb772a63bf61d68c8fe37614f948cb3a48070b14466ad9aafbce61b85e0f0f6bf8b05accf999c506ba6a095df0f08a71e06304ffb7a6d2bc88bc8162033d1b26933c193620e4d7179fdede245183f09abc2c1b262f4834a5ee75e6f99a3dc9e6ef5c437af820 +c962SweVe48081c03db956dc22d42537205b29ba13e5d1e8e8e1dc4554dc4705b37d5cf8574813bedce6d8c7d5a56c94078975e6cece16c366ec6ffe6c8cb6a2905200fa92bcda35c29469024772dcf2c1b93cb38ff87443f1f6941caa0faf07912be51482c8b0ff748ea03e3a72eb52e1b4c38f372670 +138cDcJh76c61ca9abd6c2d7488252d321b936605be642aaa8b851685d853a64664e0cc221ce35fec84319c40e22afc66ddf223c76c007b779e352c3d20d110563afa1373e169c85a3e44eafd3959bc90e4f0dec6d3d61f8b54c81372948bfe26eb7e37957b16ab17c2009220a099777287cc2066b4ed4 +2259YXNLc7b8c6480ae74e38a1906983c0e2499355545a52343f280416369100b690d24cb292c807b69d0f72247c574dd8041db3bc76e547bed6c95499eb9ce021c2faeb972ac2b7acde23967aaa57603083acb1ed1d7f050e2ec9a4aa3fb81a102566023680e19d98e1dcd2b769725abcb4db1c4a3734 +5a5cRnqt54da2c10849bbc29e01b207b0b441e085c783acedbec0412543b4574e2baf5ffc4171d77322362de8f52b9093a608f3776231b6e028c8e626154394fb1c4decbb000e08ce3cc1b6eeceeaf34d6d2789480f21217cab92f1ff8f365d5e807c6f648d3b0ea94e5ce532173e8f97c4022b1e8e778 +464dUAGLffb78b92828067510863fd5ddbc9988acfa5e0abf595876804701ba548e6050568483bcbd7c010da473907ba3221d21c58bc7aec6f6fcd9c81c4d42b5ab02ec0405d4df83f808adc4cd9af996037a60491c74c3ec799f0fea6760b6af3d928ba721792e51f78ceeea916fc6c78eaba715562ac +9337T5lSa498f6b872302a10491cd49035d9112ef088b10ddc8cf5ad24cb876421523e48c1749da0fb3b43577e43d3eb2096693e8c646de1b78223517e5895b2e14b399261ab2cb15e61be8d614f1d9b01b804a38ba5d2d7d6fda8f7d44447723e6f7e864fd69dd1757899204ec2b5a4eb2db82166f361 +ceb3Rl4rf805e958438bf0a032aa83f6cd76cb075b6b330e0ef810f92faef1435f7162a786318c904a588451613e04dceba2097e6f8aa80ae20ba1f5ead6bc51e9a78ba3a48e4f97637eb00cf56824b4fcb03476ec3dd43d93e9e8ac011c72a017464a30cb3086f52e37fdbd5475d008bbc4e1b053f2d8 +6a39RORNb5d84762453f7c92917fff29284372122c5cf1136bd6914623b09443fae8b5d5f5f676924a40428ffbad6cb8047e01cc2a615d23266b411d08bfe5a877f73787814db3f9a02e583e302264132acf71c9084f740c24e470e909197f082fbd55d5895c474d19e61e3963b045ac28702ddad5af13 +fbf5nEfG1856cab1fb35c5f6e9b028f5d16adc3a2e4c8f82ffc334699709c458f473d68bab0e5dab28bbbbb591683f23f158f96bbed77da6db81a732b394d69d74fbecd8f63ffb905d670eff9ecbfbad2dd79e2aaac75f086f9c258150702810827c8b5e2eaac031928f2d28a8d9f169c29cb3bf1d77ca +8313IIva259f8f0d5864af8582ebbee5874fc08bcfd730d535ea2ce2553a89d824aa566d5e0f691f1c729e2917c65b39e15d553e7d6f6acb54af219159a594a762e570a26195d0fb6cb32b41bf0248b17ae4232fa3783cb0d5fc6ad7228dab267f48f9f5923a87a4bc314b34f95d53acaf8cb68eb30a33 +2d29EzfUaa2813c36ce96fb134b14f0b276f76520d9ad676daa43acab043b2c99c1d33acf3d7b816e5c60332b770023f1fbc34fa45685727a3384d5aa7c14fa904a39cb338c6d4318d26a055c6860edbaf5116481b1194b7c8604e95eab90a68de9907a58687c471f78171c8786e75113103af7829d5be +16215hfs1479e71679ff51f5becce8a7c97570c474b44f618cc4d6f2414a73e2af1ada61426b577189a62aeb4c646eba9b7619c6515e8ad78fd08e348709ab1498762e17594ff81a2cfb884abba7d53387b1767faffa8e3a506455f7cecfb9602a4345b9186b467ae2809e440736600cae0ec723d4310a +2a4dk2Tudf049374f6e5ca0c2ef6b7861d5448a171caf1d1e28ba71a708816e8c08dfa840ac15af73813d34a767a3cc02bc714c3d77b8650490dc3da3ac157a4244d0855aa75ecb4d7189c893e503b642bbb45f2992062e4c9c7a33dda94fafaa5e1473cedad7c09d48513034f5ff29ce0738bc6bda971 +071a_Rjt5a0a2d9889319f318a8a354efb0096e28972d159ad810d29065ba1710d00eb50e866d3fe44054a90ae665dd6521614ac994a3d43cb3db73689401ac0ab5da9652c760379a3027fc484fea11b3e27c317d486d2cc46f44c1f21a4a1cd881f582c281397183980969e1d933c9349d4fac59fd244 +f9abtMvsade3e5ae3a095a6c746651b00ae7e898cc755fc5c015f3aec4bf98f648f77e718efe1381ed77c2f54981730953b769dbaa11c97fe42d836707ccea397e9f941ec673bc2b8d7c96e259180d1f8a4d8ece6ccd6205e6b147cf80c13bbcc040f2df1defe4ee69832c978dfeb404585b3133ba2d47 +5c6cw2tKb01d760f7e050827b74cf1d8fea098fb6ee33155bd80195dc9f770cb0afd8a11c4fd173a955ace9412988d318c717e95cdb433858e59c55e07c31937e11a7201c3a0ebd278942c99fc0ad1cd7ffcf2bfe52db40853eaaafcb5c317770f7defbfc73d15179dad570d6350a21cbd95132d151bc5 +b6e3_mKcd1006529e74ee477b208d10fb2f5f61ef8aec5018fe32b4b754cbeadbd1982d20abd0a5be937978443d592f13379d0ab07c854e102a31d8fdea0acee83df6f02a109ad59541cbe184db61fe37be73c8474c13042242c5d6de68726b66ad2c22351ad61ad8b6fdd514536966981fcfb6f83da7f +3b713Cne95ea096f480d4b48c6c3e8a04f0ad99ea41e01d3d9b88b8c7e97d9fe70925e81bb955831f45fab3e6f1b3bcd42bc947281ff8013a4040fc2ba5f7c1791354c1ae84923e47723b7582262bfb2c7a193b13185b0b6cb167bc7c1574b9050a76baaad95ca3a7e667a503edf48a8759e2a71d5d7a9 +c633uiJ22c31e4ef4aae73612e0eb546195ef4130774bbca1d893d35c41335d89d0cfb781e0fdc6e6933b4e43d2dc6ae59246af3fc1f58b0358b9dd66717c1e418f286347c3bb5e68524fd4179f5d3a337124f694e8058dc54a032d585c0bbf348b120c74e0e60967975dac8205c1a56c3fd6b285e40d9 +dd4ajZYgd439d16f91d693740590ccd65a5bc32787bb49483fd2b79de957a7cca4d896dd5e112302f4f1c32dab49c9ede74a7e207f95f9c926da90e4fa740d0c94980500722e4a471fc03554ad5c762710ee94952a62ca4d65b337ad71f3b388c5b4d051e2defa2043d674df2c6109040ccf43f6998e03 +ca0fNjGPa70c78a21c402d1073e6df23ec6947e533619a475a55f009ed214aead12437227e072eec81841ffd929a0bc8e07505319061dc277c121b64749b9d8f218cd986475d86d25db92727c487439f383635f859e940326fd4bdf0a6098075648bf46a28a819d468d786e3104955478d4c4c0a0a5ff1 +d743qclW0526bfd9d2dce10ed1c9fcfc9473c49e65aefa79d6cffc3c0cfc7cbb1fd3d752400b6fc1ce5128adb76e54a26987da5d3054645af8b162943a28e6f060fd40ec7b8538bcd1b922c8b83de03aa5fc35c1b7025f84c37b9a9311c18f87926b3efd263ca015a41758bff9a4328385e30a64594b75 +0e51GQhZ2e0ab5c3c5ffdaeade0e4b816e4b3927089277cc18cd2a3eff15b0f041006dbb170a5e34140915de2a9ae39a214725405185bc0d517b8de490405576644f64430f3ff9bf55fe9cfbc848f5ee265939c72ae7422f87db6c0f5a90a5f44383e07b73f4772b70000ea404ecb7bb4b8d9850116ae5 +02e0ZV2R1a12147ce074af0056955e1d4060b8825af91255007595a9af07d823790e642d461bfd38e7fc5a34a52f519c1d9bfe08834e99915c58d154df77e27408e3fa0b7cce5aab7a699837d18bfb9905dd0fe5d50447381719be7a29fb8644654038792ebed13dcc8a1651289eaa9f868ff267a87af6 +5b0fSu7T0e7f1162af8190644a6181dac341f335b59c57a4420664b94c110507fc3186420c9769d08b5f64b50daf89468b5adb73c5f371fc810d06d70d403637177326a49af48614c9841645dbe382a718e4cd4b97e96abf0d46214794c894d5d0cdea02c2cf89388024656ec092911995478ca7597336 +47dbApa6c041b563940710674923d780fbaf550f152d3e24c3bb57f62190e8f9be9a8e41c51fa679bcba35637df8f462a602f44778d3b76504e6a2a8144aed35c63f13297ae79b8bb6b0137a064eb29af658bd897ec56debb36c4c59d47f46c4655618993500577728709ae98b8319716d10e2b8a7b73c +ca2bVUeIaf6ac535a29aae4391ab0725e3849128af6202b2f6ec9cdaf48073948e74cc20abcb2a7bcffe667cec14dba1ebd576cf5afc32beedd1cd7db4a1f5483d44ad3569511d37740ade48155e00a9291c012cbb824af50502dd29142760a9a5dd8791b2d5c3f1035316be5118e99f9c48467c268549 +4b582duM889f88788fc9b5aac9d92c8aa07dc406304d4cb842332d93c8501cdf603f933cbb7e12caad655a0e7bee09cbe80091f5bd03ce67849c7b7ea19db00d70ec223259267ca89205665d3aee336c682bff8c083c2eba0a3d991c246827f22e82d5ccda786161de70d76187cfa09a7e6f7c3ca510a1 +5e94eoqXaf8f41c649c01a80fc95d9a5d135b0523bd843e9d50ae46a3c4b43da51f8b9e2ab81bbd53d4ff94b76d14c7089497ed5a6d335606ee5e407845382dd9970642dff8b75a654465edf8e94c669ec3a2190c48bb32bd492cd1241bda08f57eeef9ed6a0b91bdfd27f0ecfad5e45d2344ed83071f5 +74dbZlkc9a1683a97324b9fa9fff2cc19e484e9c78e063fdea915467c3f9e7b515fda7986016ed748e89e69ab8d7836553f0a3f23c19675cc98a81783972a99c0c6bb93d97f1aaf8f16932ca73bb1eadd7c8ace8f65e91d39f9e21810dcfdaf7b1a4c4c313a7b96f86be404e0c6c3fabfabcb56bd27939 +f10aahtD01d875b6f1ad601cafc8d34ee2b3f32aba18ecfc67cf6679ca4d2cdaa10ab9673d005c01c3fcf123478744025596eb6c750235dfdd7522bd9aeffad9b6f192a591b5e6a466527f2ded189617b46ca5c4aab26e529dcd1e95593fe5b6a684519c9b1364733173382c2913382046be8548e14948 +2efaCgqFd77d7250a3009e13aeb3e45707597a5e7f826bee21912a7a6d9809b5223814fdb129812df59f82b9a75e4beb01ccabe911654742528021b922157849f951db8464e541b130ba83ba8645ce4d24dc9f89fe691925773acd9a70a2e903bc522468fab7f0347a39aad8062795e6b6a5a5c966a884 +b6654CWiac01e466dfdac2269e72f2107e8c35efa307e8571ac042e23bf4202875658b40fed878da95d68990eaad2f493b06876e64024f82b9683d510c84bf876e439a8b10d532365dea63db1de991ee4272bd055d892b27ecfc1bedc7afdf13dc99fcbd5251647c371b1680f426f78e69f7a6b2f5d97d +b1bcBquG81b40081852d068419a1afc9a41f36f79c89c4f31bad48a2fc2d72eb39e739e3eea2e89be3e9efdfaf4526aa00854f95e46a07c70e00adcc4681f73f2f059156a20ec36ec373ee9755eb0cf4f59cdbd232da7a62b2cad4ab1126464731efa69dff5eb1b7312ca21d691a7c517e953d4eaa66d7 +8464A4W6fe6aecea656f97de27cbcc6600486df48af0fb08e11b78f91e1ab98c7236edb9e9e5277a99a489c767d8c659ecce843f3c5146226f4c5271d1df259e955aeffc1c3ccfc545004bae240ef67ed4ff85a3af266deda62a11cc1db8500cf161e6a8da0d9560816ba88cd47add7bff84a1e857169b +3d166K1C987466fd3605ff8274c3234e0d5af3404fcbecffe407de2a315cb2304c673cd8ebd88c689f679c5eea503650a291d75a56d6faab7a464b6bf1e631b737a80bc40153f20e268b6af0b38cae1a74de596df410b3e410311b4018e46e409ed0b97b6417a8396901dffd9e3ae83390edb66bc22cd7 +5d77_QIgc8200b50e17154c234f00f4cf5fb8016c9df9a4396d0285b21f604149589842871617bdc2dab849904d4bb5f6bb9955945eb4a11daece8c8217dabc5b045cd79ce81d15a3dc0565854f9e8355d52bbcd9426434d1a60bc6e44947c11b57ef13eae0b6c730cf72bfb664342466dc4b6fdb43f54 +a08aiLT7b95ff420af6357f15ac5208b404bf2c02d0260f6e0d3b3e66b74d846effefbf06b810a9953901187f428d637f52eb6153a470f25156b7fe43063a1f2ff057321fca2b31f364e2b9ea9264cad4030f512f8d2ce666420a96f57c86df313d923fc97136da22cb8471b59463c2ba4fa6222537244 +a7d0JWNBcfacebc9cfa1f5a8036a8e13429e73b2dd2c0511b94d72bdded20466d60f473647ee7dfd5ecd7ce8c2044e2ac7826d4839918a98abb9ce5b0fe1f79719ae132aad9c17229b48ae3541ff522d8dd564d6554afdffadd3565b6134258c6cb4d39b50b489409afa46537b0a567f5f1ca7e14014b7 +cae9hgbu43595564ad350025eec0888dfa9024dfd864e63647f2045a69bfba8e8cf0d4c2a3bab5b37e12cec7f913e4358954ed3b636c280ecec7741f07e849d6b21886947fa4551154749822eb18bb654d3deb14a69c6497f601f68e6218c10b73f89daebd8fa80c8ad972dcb1b6ecd261af69d03c5710 +b9ff1F0x714239e07e4b3b8d417d40e117deb72de071d77ec67bd84af2c22f0151c9e550dd411167540554cfee0c72dd2dbec1e7504e9e76ee43e756e871ea04a1a7f0a7a939c0b8d4974d463c039314613058e037de44ae820121e48c18a0086d1202b638e922c5592503206b87d0a92e3b3b652ac751 +7ab2841m9070f2b590429908f8f87eaa5443126d601f1a5108aedd475f3a0ca8faa4ebb1a64740df4cdc818cd1e6dcdf7f94b1440fa2e30d4fd86cf6a22ac4b4530fdfeab3122109adebea1471c01d9affd8d7d8a0a9b99945b6e924cd149892a02d3090fd14ef1feca3966fc5a64516c56f291639448f +7d8e_lCWe5f806698537af28269c0ee2eabf5d587c2d6e4ed0777341a233ccb2fab4f6e841df5f87abcf48546b17ca7c5f314a9085c264ec2f646117c056c0d736b5435136cba105efb1584183f6f532c45142ff5dfefb3ffd72d80a4b6ba00a5c51dfe886f46ffa317a65eec2b714e4cc9cbd7359459e +8caaxaCA5944f9dbdbb9c100e0244d7a82abf336aa940a4c3177daa58e1be88cf85f05b2fa562c81d0b5574a0d92e3444117189b81caf904f4d530d2e2d9b59312c6ef30529211b4c80711b7d3981cfa6c758b729d4315b4f0a7a20e4d1a9134292030be78a5144f8626d58c6230ccfa2e90b37fe1dbf0 +6e7aW__raeab0cb65f9879599dcf3bbc54a0de717a963e1b633eb02a1b162b2c30e68b375ff29ec1b3323d29a32bd02a75129c2e5ad6b07874e1e86cea6ea2f751c49490251ab5753de8a67b2af2ee4b2e432214199e34cf98dbc099c7ebb5a4c154058102097437aa87d553ead2b5fba9c97e23a99036 +418b61PO04694a3b0960441ac2764476083e57491c2360ce0a84dbf7c5fee5aec22346dd9a73b591308fca9372c872c36ea952115df4aa0a541a03be087981fb1a84390e396dc5aaf2956b9c40e8b7fd0438adf5bf11a4729b0f9cc0122aa942df0fb46396ef6c3ac81b25a6d6876e2d4b637d8cadbd6b +b3abdKbm3a0f71434e7211dc31bf8af8852d10fc28e9a605d032ef05c7699559b201c9da4be624ab4b5a7e88701886b8c136c6bfaa4616d8eda516fbafab6816d5fea25105ad0b6d3f27fa8521aa999745980afffbd1da5bc41585ab403cccf93979a7b08f7d64e5d8478aca3d579319e59b67f1b1ed80 +24a8WPAl91f848b786cbb971385a840cea8dfe6567aa3b16047f772ce273b5d53a3dd1c8d4cdd250dd2fd857db5ee6e9f5d4486d34767d6e0ecf3c073de521783cc7129f4b18178510d9a5f551af0d104eded5ff22924a87aeeb27221971d9a85028acad71a2cfcfd5983c58dda80c49a57d2e3969b4cc +64b5xEXYf92d4b54d5c6208f26f0a5e520af1e6800ada152720a4c27b7413d244ec643a974edb669d5d9d17d6803c54f0de4f26395657690e41ddb94cefe45ab7a52c2584ec7f2a5d499268ad97433133e0892fa808dec4f09c635a074e25f840936c4a827f0b833a0cca50d3491dbfa1c1d342c6d719c +0701rKHfbe7b53701a735280644b2823b1e3e8eff4fd492ffab7526977807ee533d8e8156a17f3ecb57b8b4e197deec3ee4d2e02ed4cb59c8ed65804c493af3b6d6ab1d3e97e0fa8e93ebcce0918d9ea753156cbd3186b5a73952c42229e3f220ec5a878c69f1aa63ac4792453dca713a84e24c2a9635e +002aAoqc6cb62ec84172d4ba407e8956f695bb10664329179ca4cc3cce27884079d5d657d2b479fc339539e3b51fdd7007c87f250b1f9c885cc09db9704a3756d96abb01e32c379ab8b820518a3fdb976c8af9badb76b2641ddea2fdb7b83d1dc2dee1b4dc15f5c3e00ee4bda22ea98e2003f734058697 +9b7cGD4Ya39fa31a12248e219aa9a08459158642be4a13bede0b0a21fdf565ae9888dcc0546685acd589fb87f293a88dc5e8bc1ff174502dbe163bc76f489718d09f05c433baa54b6174be215db22f95faca91eeb776289236a718297682761c25a26b1de5bf53a3ddb31fe00fcc40f70fddd0b06a656e +617e_1jBe9c64861687b568575b4302ad0775ad8fa19ae33011978cf2d3553d8197f835a55e618ce7c47aeaaaa34847db7e5c988b49eb3a0ca2abfea6473032a62ff61be718d8521faef8808282da4c208c31c8f07ca4880bdebddbda163671b5745e57dac4c843db32dd6a7397ff6b00f9abb8dd8704d +3225LlMY1a3944d2520b4b904b028bd2cfc6e65ea013258770324b9747e2fc96178d155e5b6f99324218a4005849341bd820819bf6e2447907f3b232aedcad94e9eba90432f154d8b2d2c42315f8af98ff6a5930b4eb53c88ea8e3c4c8da0090b2b92fb6f44591d17420183ae45a2988a76a6edc70d211 +6abfhjdr5ae529f1b0925cec6d53d7af9091afe48cd270a1a36b9ddab5b7bc03738bf71447794f99f44db3bade1a5c6c07bf2332e3c2c18666011a7a9af3bf1eceea22516c993442407edcf6944778c2736a0c3799c9c988a7e496255fc9b59edc8661f148bee2fdd7f6de94b751af737df78b322669d1 +d6c3LZsK4b9582ace39a45cb0cce299960980f777dab2a99b16b5fa5b23804ee6be1ad132a6517bb8584e2817b1b87107950168cdc5867d27f32598f16dc2e4dce43eb9074326a7af0c007d6b8573c1ff51ca648a298a5edd44a561ce12ac2dbe95a18160b3644afb049bdc27598525779600d2f891e64 +fd25LLeE390c7be10e3107d63e09c3cbd99c10251447632ce86aa1e46d9fdb62012e932de4e8a01344fc3ef6592557d343c6731263b413c3201fcbc510ef1f1922759932bddb7202455ad108e52424bdc93f4f7826a985c164c7eb853650399e329b3ee94471edc6e9f4fd1c30507e4f0f96280f888ba2 +a401h075e1461dab8f0a4a8454fdecf330a8c8f00b09b1ee83bd327d3308f5df0d1b8afc03d064dbbc13b0611d3155cb5a99bcdd374bbffdcf8bac5b34961292922ca047d2f21f22b508a8121abeeaa7ac7062d66eaf036d3c9a9f71831de1ef50fec9bfa4715a73f8e0f70ffa9f9898e353d6cf250a0f +51e26L6h705662ea00377b100d719945234d4cf665ec2908e9254d0af7180cdfc238e4a8c6cec2a442273971be5a59af678746499ed212d27d988a93103ffbcf9735a01c18acc83506178c76ef819f5194aad597fe643e9d722cd89adc2ac5ebfae29ee7355b9fd093c70453f106f753c9e56562b69c50 +18efT1KI0903b909dda2c0785b3551daa1b1e4a53a046a975a9df68cf7f27eaf21d67bf3865d95bdcd013b2d63cee6d4547e288b2567314da1545172e5d6545ecd556897b5a02719cad7f753309cd36653e71ca02d62f3cc3b090160e169b7c6f2e454f40d51895094490170cd2b2a5c71019e4750ffbc +2953WQA63a03c2211e3b83cbe401f36d9994273c2299c4958b562d12863e8d5f4f6d9c01201aaca1f11055d65de1503dbc94bbc21fba5fb015f006a2124876e221dfc2c50657d8d383a06cc782911bf5d80f8290477d889758876270029e05bb75b598a54e0856449e2d485de320d8d1464ad9c1db774a +268bbeJD280061f59e4ed6743dbd55b38f1755d98c4de3b55013b739635d189b7819dfe0601a0ac1e7cba4339b01b0b40530c9d1065d40a9063dbb1437803a922b57fe25d6f4651e4f8c192a82532f0f33d5772428e9556323c53687898b70d6b0f85600b974b44f83e23e58a30290f3590f9615091d93 +b4b7rG_-f98c8de37a2fbc84f828837a96c5044dc3bbe5cf6124600dcdcbbd6245ce66e9905d2d75c17f2a11008da24226662dc3079fb1263150c096491f96d290767bd3ffa59d0f6383ad1c312e15bf3b23d49e41db0bc8f31e5ddb391f1779642aeb808a1164641fdbe3e2a9e5408e718b01b2066be6 +b03flXoRd150e8aa883b3df7f915f9425c931fa11a7910c0b35a9c2b6ee34cccd560fec2ae3a2c5d9bdfe9ee616f26ce09509c2ec31cb4341856e73ae8fdc0722c0fba104668e405060d28ac30c8b41342fedcd5502db252af5fc56aed6b49badf9a10223e57ac761744f74e65e38876e7d8ef24d8ddab +6517HBf9e110b1b3cc37efa55ae949f6c141c06b01a8e684f2e48d94f25f3fe62af08e7a73747248becc58b083bbcfef96ec70e797dec7ed347e43d35ed999ad45112ffc6a1196bb493f408c848e3f045d927cded7f41d131efbf1f685ef5a52e4908d1fe605fcf4ed7f7e7a5b780fd8a9aa7920ed4964 +58adJL1me03f19cdb2cfd16c4fba0979419832fd94160914b82afb242478f8178774499f7dbc904e35cda7cb5c3e2342dae06aaa30eaa46c41b9d6476ad0478a577ce5554fccd1bb2c19e7c265342aec54ba572f6b3b9afc71d1413220d08c6debeee447681db492d581068d6877b0e5b5d07c1d24869c +8c896Eep21b44bbcd745000572cc9e95158519f4e4ff446ff191ae769f608b995d992adb91c4aee30688e6dfe7acbfbc3a69481e337684ac70acf1a6bd4bd2c48a9b90a82ade401a51b24e322f05ad3f962451353661b6699505a3ba698044d4eef1ae128aeb651220405951db3bb51a034f5ee722c90b +ece9fNLTbb0cdbeffd5315f119f5cdf74db62621cf70196946c431a25e599e457d818fb0465d1c071a01ebba102b65a74d1de61adff19f9503adb099bc84e85e506e3be52164362184ebecc4599652146d248dad520174a1e3ab00d1301e75eca699894b91a214b16342e5a7c4c4b2981baf4161c37899 +f99cl7gwb38828b9a5144242f52e7c6f475cb24d8086c2e7bd0d9287f1d3f2b43066c891cee9835a1c445fb5b52c98125b4523ed3d81cf0d47be4b28009810d27f27af45abf58ba33ea71f198308b4401d6e6c834c292c161dc4e1c5a792235a5f27bf6c927e3c6e242059bbe1f0e8431c1d84c5e57864 +21820d-Rac2494079ed1c93461568714caeb2825f32a91a1bc97275a2545402a8e0d9684c72c3975fc40698db17a748cc7d22494845ef32051c772e1c71a605981a5495d42d4de8701bc7b4ae3d7d201e94284816a313b28d92c11fe201739e3bd8fa8465005412ec0623bb191eb7a77140b50aa1584d0 +41c5fByp3fa85ea28973bcf61587325d58787df85e55b3d496caffc74fa4bc168f720c9b8d35ee8317ae639a4c992cf6322e17e5007bd92d41ed82e4a084e3fbb532c3363908c1d5b65a15387c8b3f6aa05719205b12b137d9dfe8db787e54558a4776c3e436bad5e7708e8c307b7b7d8120e43b54e085 +94fcFqBh8e9b4a10f714c8ce78380355fa603c15869e7ffe54e87fee5f959f15da70dec74cf475ce633e286118ff6c8979dc1edf7a5925c793f085c053f1276cbed91550137ef833e7e2e1a42588a4dcdf0062e4f01ed256117af0c681de3c673a454f16ff6ecb6c3a77137d6558b7395768df5c519a92 +74faW_PM191b5efd7578c4b44e4195baed88ee20df412d8b72477b1fa21adc111741237e358bf2ef47b59af433c731c0a7f640165dfe73749d346257899de64e7ed13154f41399a4c05390652a7e22ba86566c5396af7e2e9e05c708d764dc716352a47c13e644b13e1c65bcc2f08f257753b1b4ab511d +64efiKy5da36531d295baf833ebb48f2f1c2c8d32fe446fc70e2b44c3f2aa352f337485a5035c970aedb0afac9f7d4cb3a6da2b0cc610ce4a247be28560f238a17b008ce67f9a62aead32a6813510f1df17638ee0ad453a0a46568afab48cfb55ba47d9fac0638990c42ad947090b29ced89350ba850cd +0aa3m9Vn70670ba34b425a039cb5d0da55dadcde5b77b4e304a00c661d9b924f1f2269a9840a541aad7f59b8bd84d5d7de3bce607e1199451551d8aeefef3cac38364e967f831da6d2b03a45f89b3af023bb06744cb47a082d318fe2045c9345332a29dfb7082bcbecab9ed4d4fc4de7e2604701801e40 +6bcfjwJdce149145bf63df9009ad63370909a6278e76b4980d692dddd76f2a606ec8388e43ca53e8d4cf92a99969ad426ae8405c27afec645c2040d56a4bc18021438f6bbca412372f5bc824cd6f12306afad09da07cc15e8a8505b6ca8a057a17e49dd94784e95c87133b539bf625ba8d58bf1a4be461 +b5f87bZz1fda9f2997788dc812f736cba43bff9cdea050de6a53d710171f19e03a2aceb8fba0f2e205785dd23c784915312128638811d2e32f1f9b8f5ed54c04815d22c345b3fbb0cf4979fabe8f22b7e976774ad9b9c1c4d6ecdf33ce1f2567d1b6c5458159816ead1daaca632c48334582c17d382eb3 +aca6pOg1e8c792717255be171de40402ea3eda4c26b030b840c5db78c166dde6188728fe04430c21920d9016a23a1acce0fa4042492c876b3524363d355cf009187245df04ee8d18d16affa9ae24e7c6a6f020407e9f90012a48376f0b64035e313db8feec7b358c5678750b697a7140d805ed2ace9afe +3c65FGbyb10d02438b25d598d4de0a94a76edc908f346acf8327528f2a08d26747a9f91a973eb3430f5e5dfa85f17a38d6bd4765e986735ca3a1f872d58dd38351c56d7c43994249273212af54d15c8c1d6186857c0ba775d9722286d0dc2e40ed06e7b010c8c26b2d744bccb083e448cf3d50a60c01e9 +e52fIsoE35dcf0381cf453581cfb38c8af3390eabb327401562ab839f76b974396f318c1fe13dcc080adaff51123df424bd8d2a567083234a174d2663e060246e5fb9124f778fd01c5020f6c4f2621452dffaab5a0a7d2eeb0e489fd59c9c144fc672b3f443b9bc5b696d6decff4535a91dfa59ab4566d +62d0f0dqe13c894b12ba300791bf275307ed9dea66124005ff624339dbfa61dde63b060b70d8a7a5275e7096d8e270b9e4b1f357dcd919d6b250ff646b76aa365b534922622a547e2ee335e233bc42283dbaf91e41ca5097df08cb82248c631c9744194354fd1b2a17d6cc85342b93d7b52bf174d092d6 +36e8men60f38583bd161551d089ac881582db4d6ba7a37f083c0e45441485f5e6d7fc456311bffba4d766d133dff998f6619b749e19b44770d0bcd34e9234f144e3d81688dbb49f413a91023b2b5e2bd083b56e1905fbe0188a16fdf376d6ade89e649a827dd713206c614beeb2834711c367f1a6a7b15 +e78aVoKv0742642b85518ad284f5128b2eff13b7bbe31be12404d416b6120d9aaab3f1f103e982fa3f3b98e70856adfd7953bfcd7d5b81cee1a616304b3424fc71822ba93300e44b789e58a1ce672588320aa0e89fa98407ea019e03e3c904da035523d08831d1e411e4147a32b521e84fe879135ef651 +59bdqXlrf7ee60250005884993684849ddc775df93598a5bb11af82a5db205e9d991351e213d7d70b060d3c03ed1e836364004479c9cc2ad39a8411e433c8463f3cdb4008fa58aa55479d58478941bfdfad189eb51dfc8b1cd3801feb45f5e46d6055f8f10956ca678e92decf7c7a46ac70cdb962247ce +8042Bmkda32f3a20dbdeaebd1bdf5da82bc0fa50745dd2d302c446a360d1afe2322cff270d316bca0cd2df9723d209b29b8387cf90f021daa315e65895bf31c3d25a3c181b3c9cab724079e44b1cbf99e3d3cbc649458fa9bcf49c2823d939b96ef03ae94edb1753569bcdb0ae18f6d5a1305d00901487 +18e2p1nd35de8a48249e9b0123ffd84156d9ff683222f7069ef85d5b8a1da8c44fdea0c3aa42dd06196840a3b5b1aded95e379ff1d5e153dae1110205906263f461487eb81e3f27024a4a4a94b78ff5f6d90ff3165a4dbd8bee271f35c1b2a6a0847357da5975be186ba31ed0f28fdc142fe77fe1a4dcd +b719a0Bicfcd616164386889dd6c867944cd45072e54bab93fb8143a98ff21731ea14511f7c624ea3f9da8e15839bcf953dfb4dc9b20f31828e9a12a5ea454dc9681b869fa7955da7c6c5d6e721ba374eba8fffb16b6cffd4dc4e8c6af44bc579d5e58a6c51502181c1afcb89bc688103f3dd0d6503161 +e30c7k0538af43462d92b8934d91dc083c776813311610f9cee8541b1cf0563dff6f6131d81ad336b66183559d0553fce7a1d7415440cfb27ee1d5c5a637f7a23b1fb8bc3cec446bd6a131a88b863802abad36286107e8ecb21610a3f73e5f43bb1924af193d29b8002b62d16e43012ead257ef328860c +0488QBJk79c7397f696a5845e8798c99b8a7b32bf017b24f464022d8d6b89aa48cdf3e5d859522ff72db98fda39dacbb0b2587f4c7a5e85d4c52edb72b8efb6d73ade8a5f1b6772f10d8004b1f7b8fe631ffac65628c32265a0fde7d436c3e9b9b726649b4d09097257695a7300afa83b4a08e9a86ee34 +a111ORu_5396235223940dc5160e504549887e73feb272b88f4aeee6e2781b990c9ce25c0bd452ea8a66bbe680bfd07dcd108616360c32540a1c8241dcb1e0881ef1beddecaf036b38d868e8fe7ea1c27cd2af02abd9f7220ca8dd6336c54e595ecf3c0a10d3face8de42f72984caf0569681627f54448 +50c4QK_8c6f24375076f4473b299fd566b058e6d739dec8d6efa170f8f2b9b703628f9f6b2c9f212c040f38e4d9c1e4117565751cf570ac29576632c6c3da1809ebc7a7897513f446ba7028c1aba8da95962f5137de8870a52bd01ad10f592c36b1b68ce039d3bc2358b1b487460aa131040b1205df83a +d07c00Ad2886cbd47d444a3aa328d28d830395a0401d5f8f70088ed04a0d1a3c163968a8c0c979ef727d0dbd5b669ad90f61a7286ce6cbc500bdd5bc7a1bfb80b229d71c7fdc17ab364acaae4c0eab416a295cf804ae1bf8edefb575fe4db736fd0f160866a27d10733d2e145121d5ff49258c4b7ef30f +e44fnEqRc3202b7f2807c8ab3010de206b44fd56887903ff537c7b8e447115e42c79303c3b1678b3ccbca968275edd2d835861b253e67a974d637f7234f09478b545b4f2e149fbc7cb84b35ae2681b7ab63eaaac1acb9bb1807ee641ec27cef5e041bb8cae7dd40a55df2258e23eaea7de0a86265c974a +1aeaw0-uc6035cdfdfaaba3f6e6ad5db486e06022e286e15e93e8e4b66e7558e2b739d19408533efcf28b86a5d9d0bfebbae7282b31642b8e708922063127fe5c99c813cab0e73ec521d9eaedede6f878ccab7efe28475a99217c883078d94960b0abea4953a03b5e827180003accf2023e750b614b2ea +b983oamb854dc6ee923390eebcab4ec48789359f2fbe1ffad58d3975a3dcbc6f5c20b298d6ea7f02767a6f109264232d7351453d5778da91149ef235d1fa40702d0d637345bb78e8e75fe0c7c6ead61b7c53d3198676ba52d499b30cde51aa1049e7ac3f00c368c7a4d20fc4dd97498120a880ee655236 +4ebeGHphb37be7f5d712ba4422ac26bdb7127e58b9fd13f85cfd2627d363899519481458eb3b9a9b2dec5172c7abded3ea2acf482421bafc1faeeaddb28c0cad11c51d5fbecefbebe4a0deb010dbcfbac4d33b559cae16c7911e276e455b257f10604dd49e779f882c97ead5407a10962c6464a8b84783 +847bwX7K1adcef04a9e66ad8db1555326c39f36689ca0a1322b99a17f4c2794f59c5bcff5f2da47c8eb3243d2bded4348707f665c3f4ac316342adb78c63af645817e86fe333cc03e83c5fa65089ebdc229afd725f08ebc8d3e578408808b93c3db0c9c69097919596766c0ad12ca46fd7da857f052fa7 +710fwBr8cc49a80ba1d18af939cd4a785ccc58fc9ad2689ce523c9d95845b08d69f796d3c48b342a58ff64f9aa48ef47eef18b7f90ad0b7f89d6df691c87ff6ad319b4234d1748697d61c9546ff1442131bd13d57f6e0db6df4c08e177a8741d6bc6f45a0ebde0d51dd8e405487ba5c20c9772edc244df +d48ahwGE7ff5c9f52051bd7fa79203f2feabb65185c69bbccbd9d0134d7655f8883aa397b1479a7e64ee158874962d8d75cb835de22d49f79e4596fa723376409ec5c802cc2d78ad558de4dfda1caf803909432d47c2f0466930b6f4a159df7fefac5f9107680c898a4da5c9c442ad66af015dea353b29 +f2b9ZLy0f1739268a358204792d0be65c55ef096c46ed11e124b5ef1aaf632435acd10990cb21689b0888a66782f365870a3604964dca5be4b76c3b21a51ae41203c7db5c9d2aaf93d31ef9732eb7152196c8c32684124a3800cb4988d77d1cd683cebf5cc953c74d7727e808c3c1b5a0b8a46d64bf402 +d9429Vvg4bcc30a7dd98d00b0d021e49708ebdd45c01cb2bf6fe49f765254634c24b693d434d14de010fdd39dddf765ae12ddc0dde26d2d6ca2f78f76cf1f877cac8295acb129405aacbcb3454249d6ede40e2dfa81bcb0d1082ce60d19b9640f294694042cdd1b8f4823f68ec673d938a554a23370ec3 +46d3Twgkf7d382fe75421765adbabbcc9e24c3839b62f88b7b3cf28c2ee84dd334eae3388932f00be6deb16d717040788b367246c1246f6dcd92e8b8209aea31b42983316f969711278b385ad4ea1abb2c00cb95678d2fa7cc301717b46559614cb63c6ffd6fea02852e14b48f09d2a13fb940e5304298 +12afAP6q6a2679fd0fd07598993955442f8e3fa3d4dcd2dcf86ea1d7c012754643606884c539a605c30033501ee770e5c4926344a71e859b6d3a2e008f37f3bbe91782cae18e23c9a2dfbb4e1af84d673fcb44e44090dc342b6483495eb214cfddd9afa414dc22a6997a2c265991b96b42b19c32c224ac +9c59rwpjed587b820d6e8ffec81a4732a3636dd4efb6a499bbe25b7fb55c0dd7746245cf0c80ef69c380242723dd0bf0b3ca8fa8ad63035f95cc1ae9ca48c16687d26ea26a7b21517b38fd8d82d4b48c9a0bcd22b59ff4afbb8f925005cd5a95ea55c63875a736b28489720e74af8ededa1c1d791b000f +7c927_7ge424125c5ff63d1a856d8e985991d353ebad69232129569b0c2942899033c4f51cf94f8e17a72c5d27f56537e039b4daa757eb5c765d3217d98d2b083cddbcaf432f3e5e86157301fc373d37e0105586689b2718fecea1a55f53bb1ebd1cb0f1842d5405237f3e4d84625639d42c2ab1733a21 +0d01inRl1073c02376c43a5589e8005513adfcd704e95533ec7bef1da9d50d1fd92d38d5a06f2c22d9904edc80baed4cc9437806c24d2756254e67d0a8332359a72d74dff3e3850bf4cec67f3fcdc74a26878b91e8cfafaef30c7e156e0bf5f249b4307c89ce7acc401d92b79581793f8bb85b6fde6c22 +bf4cAe9n194883d6eba0afe8dba9562f1aa73b00c9cfe7dd91fec0e505c5b5f808e0958f4b69d416724ecab94aa8a45ffdba58eb35860e8dbbc7ba1011727fb3893da894d22e06d18536332f087bd123f5f2ab12954666e6f2fa2b402ba24d4c46265d0b408a71fd72fa4620dd667011cf99fe80662efd +b908GLB-8ec33bc1a6c2c0d1f0b5856f2e039f24e05fb18bf5837aab24818debde64b62c691c698ccb3a89dd6046226d42ff54adc0871e2213a9ff33ce81bd17660f635756efc9376421c273f06969fca2d30b45c15714b954596686c849bea5f6afbca6f2e5799d640f60a66544fe5b527d94a30273b0 +80f68sj14cff719db6aaabcc2f7b0648b4586a50b190ad79d34bb7c8ccea7e53319248d0376abec66c1db23c8af304f4071ccb98ae74f61aa8d0491fbb8a6b567e3ac85a927ecf0fa94d25385dc774bb29d038297d39b38602fee861586a356917ea0e74971f6f098b16b8a4f834f396606194326968aa +eca9GMN5c8b3b936b7ba3b4ee542fdd9087ff27626a7e1de17f59cdbd36e81de67d8614c43a81c7cd2767ed067c03d1129e9bb78073e72968826ac20a58420595d004f056f71a26af1b30e77fb9396f0e95460351e5c2f961c88c355ce0c76b835015a919eabe6f80e5df2bbeefb7f0d500ba07b0862f4 +176dq9l9a3d69b0ed9d64f228fa770bea721802d1daf970a1dc37e96c8fbe62b40d7c1290d8c88ed28c3b432bbac3224eda13cee46c4dc993059cd2c80b97125f5463038d70344e3a9a54e3cc6d8c0d5e46c5521cc510c6bf7c8c8bcad21f9d3a6d567c440fd2e427c1eacafb266f9d4f8b4f44f4f901b +7918Wbas654fa1434591e87145d7df68b971cdb8f75160b291724dfc053a5d97eb0691df575a9bb4744800442b214d04135d9d84187568be5ad26ed186cb9cfafc957acbfdf921b72b3e81199bd98cca087c97314320994984e83b5dc9736bd231d659f284e1ff757181584936fcca5939ed3c43c357e3 +f77e26w_6434a7a574f389ab05ae5486bd9571f1d4a6e8eee278e04a4b3ef49e0af83266a8120ac253c570435eb75518f7dc2ec470a704d8a0e57ef5ba1c9a1bffbf2e7185c16da452a0ed18f23acab8f8d99f9eb562fab7ced07c0ae155307883ed73a324987a9d0b49db3200996171710e445301db31 +426dVEg05927a01da3904eb5846317585d792cb76c36c1592720a6551ee2e2b8965d36722afa4e7d0accb1aea5b84f668ec946492e152cf8793a174921440c14acfca51d8b64dbdd7cf6fc98e52bffabf0664d09d78e3789a56567a780ffdbefa8ce6a5054a701394e64ad8962e3253e461b48722b52eb +cb97XK023e95f98cfa25b9d804809929a336dbe4a390e7b489dd475669ff49dec4b82eeff3a16837481c720b3ec6dc951219a662ed512f5e692f2afbb608fb29d9c6da0793599073092482c3c5d0b9eb4f79eafe03a43af6cc1bdd0bd06e9af913435bbf3a43e001f181ab4faca80ef1fb0c2042749610 +54c607hA74f5f7efc1f9f4dda6d11e72a0d72f7cbe2e009d74661d8bdce6513ad683422340068e1c0bb9312161e02c1f6983a45f7962d6cf423b1e429170901175dc217714ad951e260295d00cfd29fc3bacd9a00edcb6752347bb1915771f9ae872f2da972bd131edfce9f1200d1b619d21060cb6d38f +760142s7b2cb2500901da10259368ef1c4ae67dc0623e6e24361cba1c6b2dfd9d4e5d5c452bb99f1c03b935e1eff0b27222be521da83cdd3bc838f4d6f8c0da0e1abe458b01db87cfd0395bf401a97ffc78b502adfc1cd0d74fee8c481709cc886e33cdd77165eefd3d207218cd0d69d4e29832f0a59d0 +2528wYZo281f15be3d6032c845c672695daae3267f19093ca52a764c83bdff2bce781e926d40dacf856c2a92f29332ab95284b4ebad117ed8f4962ddb817213f8752dac4d7f2e708f77772e0f29e11e19e7890eddd5ed5dbf0f88686713c2084fc769226af72d723b892d708f45561429fe8ca5b3e7d2f +88f4iKFV843991c3df73b81d756de03afdfa66f63b68bb7df1b3b92b6221c9409f5eb139b473d8e0e998c0b88c0e937928bd8de70d7e2d007970d2add8ba9a40342af753a8ede938cc30bf059a4efd2285df28821c7af5fd1a3b447b7ffdb83880e49fd0dec00223de114496852e40a3d68bf280773f24 +1292g2C31366cb197c494b984a512931e370116581eec8d7534e1e4610861f135864cd756e8f9d5428a0ace2af266e5aa9fa6caddccd10bfbf144fc2b85741797fb5ea871bfe4f31d33581d7142fd364b68f6724d20d23626a86d3eeab416d5db932e16c5a84f0f68fd6f7d694a6afd0db6ab561f07202 +44fdGFT6088cc5f38b1e4282affc70cf601d1e3a2519d4dfb23b7d8989970fb839180cf2cb0933609b108a2f1fa1152b5d4e5cb55f4a07238089a6db8f1ec4aa7ceb44be98813765f184235fafe88fe7ed14e38ff1f257c7b1fa00d33e3e77d604b9a6d68d09b6b15b6479ebc93115d39d39959bb71993 +55d6f2aKa3317b6ec11f4ac625e6cb2b61bef8e9b2b09887ea5eb143171dc46e1e65a644ae8137a45f510e169247850c7055151b374b5142acdfc7ed47c6b38a1d0783c7ccffbdfa96663cb57c2a7fbce15588df8b6bb5113d4394d93d921ac7d961cb69d4bd05bfc7c5c9739b195af291e7ed583b9246 +JQeBWznpFD_0dgLpbf4jKH_EKFF5lwlUbpjXPxbi0a93gIghN-qlFqPdVi86FhPGxYrajsi-sf1yN8Fo6WzAacDVlAQQHtk4fB4pUbnagczU-485OwtOyWyJkcnSvxKAZDPHE2HK56s3ZpWBLde90CH-EUQZgpn5S3AkT7UM2bEPqoe1siYgKteccV1i-dbQ6B0NwIomJS1Z66Om +hTqLPXOLkJefXk6Ecy) + +# +# In the following for loop, we'll create a leaf fully occupied by +# only one dir item with many forged collision names in it. +# +# leaf 22544384 items 1 free space 0 generation 6 owner FS_TREE +# leaf 22544384 flags 0x1(WRITTEN) backref revision 1 +# fs uuid 9064ba52-3d2c-4840-8e26-35db08fa17d7 +# chunk uuid 9ba39317-3159-46c9-a75a-965ab1e94267 +# item 0 key (256 DIR_ITEM 3737737011) itemoff 25 itemsize 65410 +# ... +# +for file_name in "${file_name_list[@]}"; do + touch $SCRATCH_MNT/tmpfile + mv $SCRATCH_MNT/tmpfile $SCRATCH_MNT/$file_name +done + +# success, all done +echo "Silence is golden" +status=0; exit diff --git a/tests/btrfs/227.out b/tests/btrfs/227.out new file mode 100644 index 00000000..2052e4cf --- /dev/null +++ b/tests/btrfs/227.out @@ -0,0 +1,2 @@ +QA output created by 227 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index d18450c7..f4226554 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -228,3 +228,4 @@ 224 auto quick qgroup 225 auto quick volume seed 226 auto quick rw snapshot clone prealloc punch +227 auto quick
This is a regression test for the issue fixed by the kernel commit titled "Btrfs: correctly calculate item size used when item key collision happends" In this case, we'll simply rename many forged filename that cause collision under a directory to see if rename failed and filesystem is forced readonly. Signed-off-by: ethanwu <ethanwu@synology.com> --- tests/btrfs/227 | 311 ++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/227.out | 2 + tests/btrfs/group | 1 + 3 files changed, 314 insertions(+) create mode 100755 tests/btrfs/227 create mode 100644 tests/btrfs/227.out