Description: All revisions to merge
This file as text.
(active) Revisions in this set:
ba74d7d3f83de24f4f9824309943a4e234aa11b6,70ae0a2dc99eb1fa4a11452e8aa1b5e133389e21,c337575f69550827da75588311ecf2714859be15
800ce234991a53d652a31090a6bad7b2f40a7856,64ad48e89ef7d164e9517d02ec9eb5a124bfd826,a21397e356b523a0c3e5faf45014f104fd64b96e
49e7e5f5129a71a6ef81d712e0a04c650ce6533c,7855b3cf1b46021b2463fcf6987f9229c91d77e3,a34d4e715ce6bfda8a0c07be4fbfb53f1690808a
51644f497b5a301f39600bb4b799fb3bc606ec73,10f72ba2c897fd03477267faeb2d1985780d6e40,578e60e6ef29dc5a082fe253ef871908154449a0
5cb8bc546e093d2f14206c1aacf9a1112d2255c6,b4a7d6a82eea9ad71bec75571d7c051cdd68b141,d5f0d8e30624ea69c18c50a4e200e39552bd1092
352fb866ef19c845756840859c91088f9ed32740,e147f6fb48348a0be410cdfc7e94efc6ca3c46a2,c7a0022146dcba901802ed22e1b1e76652e20883
8c59eb1ce5f3632fc6f63c974755c5f6abc51a8f,46b89f0ef97ada43531294be3214102723bfd325,ddb4e37104a4923d4fb2841e89190769dba2f86c
ff3d7862d6ae93341c08514f02da0a0019bb8e09,5604e98b1cb8f6d6b4c33daa096315c0f510818b,172384feddf1efb5a2ec4525972f8765dd7ed0c6
8943c0584edc3089df819481e646371ebeae03f7,40598944f80a7e50128c10e037c9d21407a42131,2f6b15b1e2d9f02b1222345e9f6bd41df35771d2
4860f3934a5b7ee9242a4b90717807f55730f8fa,9ef7a17390094756adfcd480bea058de3fb2b2a2,68bcffc3e0c358a7dc84ff3a9dfe3f12ddd9f132
aa89182bf5f55404265650497f976f741d7506df,4c0a213f0d07ebf3ed1d8309fb4848bc445bd28d,84b5129f1dc443351e7b914686bf70e9b81b99f6
c306f57ecbcd6098f8442cdb38c3a1e8ea2e13eb,e60a5ebfe76d8935112337011c7919c134388f49,a29290202f7fc8f440d965f74ba2c0740130324f
692c287c3e3d006e54eb72fab484b00a2ad3a6f2,7eb9b23fa5224f9ae4f9db985f8f163a7753bd63,c0c602f76dee156f753f3b4c6f5393efde3d7898
aa6f6423b23d1e72640b09fceac64e544a8c2030,bcf03a52d897c926adda3521c489eb5328d72f10,a9972b430977a23c3e1ea893e19a1b7bed3cf697
116f36fe56bb53c4ead4752335f07411e678aeb8,9febce6ffbe18b5cc3a630bcdb5da3d690fb3dad,af7dfbc970145b96fb3b1da40d80eee77dc6211f
6521918269eb70102aba2c4c5dcf03645b53a766,02e03cbd860dbbc9b32385d2a1132d3f6ee6c4d7,88589fb99d4b12450a982445d52c9590a5893a31
33463c86983c8db5cb3a903921f8acbd600099a2,f27fee55662aef795e91eb821cf76e7ee6c4c6cc,379c2fe821cbbba289662d2db0acdafde41d29b8
0a5e6d29cb32b42dd488fd5b0c9f377e138f5d63,a47f153daed4b95925d299168baf916a65573f73,112fb4613b0e0f014f12bc29da7ed2dcbe99a1d1
2b459b30d20db31236b4fe1695865faa9f2976fe,bf4eda478d267055cabd7621ffb48ad59be4553b,18a45d94a36cd61afd82e4313142190af31a74cb
6a612f90032fe3b129865fcfa59ed5191638faab,cee3065f9321d84ce0d76cf6c016a51814077c54,685d090bf2b5db6671b77e33a39c7594ec42fac3
b6f0fa055f03a70056f4b9447fde0c880b0233bf,aa7bddc62129bf70e79272e11a492f2b66a15d17,82b2e8a0804fefda6ab19dca1e434d6671ee35eb
59aeb8260345ed2899a780a4352bcaf6e875b339,cd209cea53e17ec7056a7b414a976ce61b236636,eb30bfa9f0291b247fcb7d3f84ade24fe8776c47
c5e35e8d117c75fa2c0fb181fe31ddc135871b62,c10c9607f1bdd0810304842349acb812718dee47,e7ea79d71dd0821336edb3f2e337ca2fd30e91dd
a7e13587a06f91b42ac671c7a01ae15d524612af,011968e74b105e7fba13f10d1bf0c35931feff0b,cdce68451adb2285d3333a059f6003e1b32d55d7
64e8557180e68379b17d2d1a32b584c57893ffbf,a092da723abb7caca19994e66e60288060bf0c79,2a016889de1ba62b9791ff68ac039843a4ab899b
47c9bca7f23ab952ff0fe35ddf5aed3935de2613,59d5d6ec9536d2e2181d1407448835c5b64614fe,2a9ce2ed6cc1cbdb8623cccfbf19e4981fa793d5
fa2d82f8795c06a3964e462d5ba55ad16df5e06e,2dc64e5fae911dbf7cd67233c39eb6b919aeedad,4357caaad882705021c49bab78882f65fe52a612
a0262525085fe0ea885f8571d336a366c4c750cc,30d64cec68371f819a3460aba3d9776770d08977,a077e0dd90cba0fa1e388ea2101abf66f6d394b3
78a26e53f800e319dda7ccf6d95f76b7586544a0,a19528efa1145e2403104931dcd153515c215810,9b0ff05ee812e389651a5f0be280ca7837af3dc7
0e546d47ca72794e9d3edfd3f15435fc09d9cfa4,0a3c94bc72b244d10cc16c59d2656d31dd58e34e,c9a7503bbb0728fcde9decb9201bd6a519ce2587
8fba43609d2e6a3a8fc65690f06ffda024d36752,f964dacd24b0e79df796036f788e8dd50fc79b71,95d18cd0525963be91fd1e6fc43864c7cde6cab9
c2c942374d35ac90b5af802a805082f596a19275,a7642b70c14ce826822d39f691b70adfce0a03ac,f5ce7c572b7488e7b53763d88cef4a8e9451b891
5f1933eecf874f23c756a3544621c0d26ad7737e,12e66de0a60ddf16adc466bce267675c72568e53,91766375c73f7c7e77b5c9eb0865549efe3b7097
aefe3d8c552287fc0a79d1b3a626531108b98fa6,d38e97c6616ada8556c94de84668ae26f69fa4f1,28235033d742b7fb75e08fd661724b754e2d9d45
58d899bf75308e6b69159dd531e1daef7b4b06e8,ba4d10ade0776de1c8bb10a6a41d3afe33c9ee5d,3101c29dba54326550bdbc87f30921ff961b5ad6
b11588693015a51d2cb70f4be4cca08cd3e4ffc5,72919d64ef2caacaea28851fa8288bfb444fe092,bbe65d06b9a9aca06cd646a978c82da3597d7f20
d6d4c68c86e0f93648e8ed0f41a87537ac2d3e62,71c55b4e533c0db4236261e9d2a31516547af02e,c632b232342b544d62c4849b2932b6ae6269729a
98e77922bf2d5667315633180e563e6b9406463b,33c7d4c67d179e92088aed30184ce635ab8a1979,d65d96d49fd7331e0139be0ff87f9e7ced0c2965
dd6039716512f6679aacf46e24a5313673a3eaef,5c5dc2ed500be380ad85a1eac08c08536f9d1b4a,e1e52e334d4f71438c10b1d12ed08e4cc5686d5f
4212b6a92f513812e59fe0072a1f66b79326da90,1d2414a2b880b7c4320a6a6105472b298dc72177,db8f3eb0a7d55df62b6345be3e140c9cd19ba76c
9a2e1b99cb890ef06a238b37b7873fd6efd6b31a,2593a69eaf0a96b39821dab37f402efc0fbbf4ab,9f16c34329410b03b01ae0f66c67e2f90c07b864
e949276d9d91fa49e88f014bbb97b8cbf0ea39cd,c37c485eb78f7e827cf5b66578935fe32080de5e,0d50a63c7de23aea457bbbf9a979dd64870e5a4e
9c041afc7c11e9d47a1f866e09881237f0817a71,063415fa72d9b7e83e5f7fe814845eff10f94374,95acf20544191f4c0d1432b4e4a1fe7db323c05e
4d2d26c3183165ae27d2ced87d124f9d7bcc5f2c,e157939b4102eb0b52d0b93e05ba2f1f2021edfd,a40335de34e27666392983943ce18b4c672c4003
72416edcc465a6f9a9fea43c4219566750fb8db8,c45806c84f088e194a9900fa2f1fd8dacfcf02ee,e8ebc00b3b863f7072014f469f0f1096225f34ad
18a752d20ab3e0b1fd835d01a62d0843f6141af7,0a511ddb30bb1af327136091a99123f8876b105b,7d638a1e390970658014f762bcd8c8d743bc2e9c
f05c6666fe97f365f376fb3b7d8d8c0f6b91fb3b,d681d51e38659918dcef5a7322d286ee94dcd698,658730ee85e39e97635a2822653e452c7f8d32ca
04debba9dea61e81e1b75f3d2254439cd374bebf,3e135c02e79abff3fc26da2319c811b007074d7b,4f482516ddfff69c94bdcc0872ca6e6e8d04ed4e
6a6ea6729f4d4fd60791e504fd15e72b1342dfb5,aac266e82de41fb899e2e2be34b8ca3ebcc02389,7c92412c74ca66345a3f5284e07596c3a138f078
a8da1b51309069b1c274793ddf47472af131df2f,095bd6da7d845178545634c74cb3ee4b7b31bc17,11851d274c8c040067b6e61577f2b1d7cd7052b6
23570bed33014b272064e963180c76184ed51d1c,baa6525a9e73f885381e94a7a8acf03c2d4f406f,5648bd9bdc283697604608f4c9b43f18f85ad047
7b880b2eee41a61f1ddf5e9c21f428a67e2a5012,55c9af86f44712251fccf54d518205b5c39bad5d,ac81dc399611d348fe81df7a4a96288b2f6d1e13
08d6ca72604e14563234849c61ecb13f071fb5f6,6dbde11f5a46550784eb4d288b765c4339cf3c4c,ae8304f65776c3bbccbe89f6eb2981462ca96e52
cefb38b6054db7f9978ed12b95c4c6a13cfebe16,d1361ca6edf25dd49e7184b4312b3ed050a575fd,3b9f5a5e96f6871b119fa5dd6b68d64ac6bed3cd
9d56387e7fadbea2e45f49738abc2e376379004f,ea69a5b372db2e43190cc502392b965f76290de1,ccb8e8656020dd8b550dffddf6d2807bc7b8a2d4
b96a8aee616b2437cb5c5b8c8e2d5851a11f56f1,ac37a54d794ec134ac49fe81710ba0b45b774831,477d7be6515dc3e5e3ab5e01f63828d62caecfab
c43cae9231a40132bb9c3f446463152edcc472cc,20fea3607cce1b6c0284c7b4c3c75594589cea99,413a3599c1c35857c5be27e9c61721aa072524c9
97b40dc16daccea9a2ae62cff12366c3aa197c39,026d06cffbaf1658379a61f657415acd3f43e2c8,50ab607676f8a7eb9abd6e499dde5362d32bbdaf
758a8dd34a5dd016c6cc4447d609ddb1d6541556,b60cbf33296d21e8d207e6949dbb39717d0b2f25,67fe756642367b1a224c6dbaa05026fe61096bc1
31ae109a317d480dec469a000603d82f58d813b7,6629e72d795b94e237dea897f8526617d6c5160d,eeadf618b8320fc653e66ff4b24b58017c10c607
2109612fa3bbc7feffcae2c52a7661e65eed250a,b7da7cd654a752872057bd48ac17628665750aa1,122d0d36d61c25a5a879591b2923e1f904896de1
8846041b2358ad39ae0872417ba5b6ca3b24e8a7,32121de8aea0dfd64109f73696ed7530285fdbe1,09d6b1129d3ec5541fd69c36d2380561a28192bd
14f3676b2acdc1192c1183ef0765e36c01936107,3b7efb5123d3f0de813c8963ddbd0c8e027af90e,51502874aff7417cdd9050b3d0e24af48aebe176
32a51d7b6247b9d0a65a031f49beb5f42c69cadd,99528f97740d688aaf92963d6de291ad4f9635d4,97bc58d2488f10ba7ae2590a029d41d60bbc7245
6e453a1477d6525becb22e90764547e63601385d,6b58185bda1b6d467f423d50a326857c5712f2a0,ff002e266434a261eb65df57b1b9e2241cd1ee0f
93e39fb0cd4f769d46de1db0c6ae9b7898b7bcd3,820d2f7135d7160dc85370c27758e2f1f6f3eee6,95171a1e2281d494c706108394bc0e695dfc1461
e69b4d2d9a9e1aba83c40a2b92ecda28c4625b44,ac8411f3cf29f0361ee963ef0d08d84ff85a723d,8845f4d1ce390679902873a611f9cf0e04e5b185
2330164ee2e700dd8e651d7018d2836bd722afed,7cc7268635512a76eb3f3473e6ddfc454ecc2294,c6bb85eae998ed42c242a3d5d7e24c2bf3231460
3b4011760a1dde45618b9b48529c5827d4eb8849,c55ffa8cc7574d94b38c7b5f7e7d41cb467e4578,1cc995b471f0e708abb9113064877d9a01a1d477
4f72edcdd59d7976e26aace0e6c0a393b6c4186c,f87304f5caf5f9e3afb96d339d12f90fe5dd9772,b1b559f2838fdbedfd399789c2a34405d0e74f91
dd290884306f9746c1a60a6b85f137d58bcfc759,eb769e3859d33f1c93f4870d97be243718de50f5,f3d831b480dabc787b9126e3929c7fcb387a309b
c9a7afe053a4feca5188dfaa57d2e42075eb48b9,70cadc76948864526b147e46052605cc7a69377b,f7549785407c1ac00df6addbf3c7346ef877debf
b840db72284ec707b22636aff5d36d84ad95a228,acfa2088efb90c4eb3b58e18f9261ab113287938,7f5c2fa3aae4273980635a703db4fc4c8fa828c4
a7c347fe567eead26455fa6be3c579a227673362,ce81e509075e2a186a2d9d854d1bddb891cea6f9,9c03c298567dabc027818e995fef06682e91a226
9a797b9f494d723f8b8b2286fc5db0338f63d98e,dee105654693cf7a8da064d3a2530d9436b07fdf,df598f186829a7074edfe4c4024c89e07abb2668
f6e32ae90e7aa852390174ebb5b8aca0392bcf25,bd4b7a6bc420196d0e846b5f058033101219c2cd,1641585655db9a22030745cf709105cdc3ac3dce
a2cee252e85a2e04b1e13a04d48060a3d8135889,22365a1f5700b924faf970f2c9a36e99c0f3d709,4d03f3a65e9da5a7d9bd71c0b9d0a1090cd4bea0
a72a12eef6133dacfa6d0a93ca8de63a71e92da7,e7c4fccf41056a5695f6aaf39c4b12df95af44a2,2ba239ea6d1474f2a6699f725480bbebfecfa005
10ab893de389cd0dc689ee4b038fd07487f5b0c5,3a8f25348b57a50f4e26ddca28c721046d8612a1,1d7486748a27010e304589d415c961435d3e0812
59aef99f5222f572b06408bb7a95c39e0b00a495,5182dc37af6f5df1e6fb2e0f08e6bd0c702fd033,cae98304f830a4f9e9f7cc5f33de1d3edb250af7
078d8e9d2abc188f4844b28b9f168fa6ec1bd6cc,51e68eb302c8f7fbaf95a04162bf79e3c6de3161,3a52fdf997f14b935f95b057925f1234a51dc629
193df0204ae176fff24978cb00539cf7481a1245,1b16ff3629c51a305b9808e751456f7eff1a5df8,b223d1c3048a22c1d2bdb3e8d933414e2843a737
644c47e1213118690d78d593a1c217335215fb1b,a527a40d12188f698526bd4827654b95e7da5d48,4d1ff152c4019ba3dccc64a1480d4d98b7be6e56
56f0a71466be36f158e239238517287a47e59335,b3ad384547fc2f8fb35b5ce7b1e73274f13c389d,fd1a09a254edd18eaa752fc34d7aa13424992974
6c82b2d1daacf29cabe1d6c22be050f12cfa3303,925531b99c1ffcb99a838a3991005eee827bfa9b,94d7a02fae1d06a40fc9313f7e42323f97d577c7
75a89d21159b3c4106596993f938b77e43ee048d,fc7ecf32065f1671421518f111f51c9eabe008c9,8c66e9a2eb763a9dfa37e35c7e31dac32e7fd7c2
4f0da5fcc3d4c0dc053cd88b1b00775b22eac668,4fb7b5d3ffe403756478930a33574f41d05af580,8d3d5276d74979c670c7571d10d698ba09e5c9e4
cfd0790f89641b4c7b98a24314448ea5ce6543df,24f6cc0da52e0c9f0c5285c7961e5b66b6c88891,6cb6517411066233d517a2d97d1e0dbdaa1255f3
c7bb028d35b0db4355ebbb7d97cfa3962db938a7,597a23d278f2c870dbf0a5d7fadb83908b365ce0,c85f7cfc261b20cf50c1e88418ce5f5722727c68
7bc03f2590d15a2e4882056c8b4d41521a950aa4,d1a097f6c376b8a9b9ef9dcedc91a35d046ebd2a,db055c8f0ce18c07a7263291942ee76a724234ab
22c87afdd1dfd31c8fc5261d26b83563c60bedcb,40630653b7b9ef8b793bc01a72c2d38f2d0ed37f,6d279fdbb9c0fca0dc02dfd8d17301fd782f6b41
c3607e0059f95a96bcb5f291a1d94f14737367fc,9906211f3b1d9dd39b16506483a33d3aa541750a,d1878fe5b21ed2cf39dfb22c5197d02aee2a49ec
6c888949992e530b72e641603d5200b2d3f57b9b,a186f484427dd09971c4b5c335b3a7e807eee796,4db5478acc409c6070e38152b0d24b7693c4df9d
acbf7d15c494c68b0f8209ccb0d041c8dba351f6,afd4599d26c0462c59d0e9ce9fae76a47c6d333f,2f40f818907756d1dc844bf3a5c9899986a3aeaf
04d295f1865d6c011d131ea4ccfb7dd1928ca758,4869d0ace9883ec2e0a4aa9bcf0cb63070df81e9,9c3e9e80a3e9aea5136c0adfc5bc8b41b3fa689e
2d01fe76f6debe1369ae3a345fed259282e0cc10,e52cf555ab862662622817397df755cce1466621,2b6076a719f4671b7bb838bb3ba8bba19f1018d2
6c87b89e45184fc5deda0c5af0e4ad9bd476776b,248fd313f8b5e37a8bb8a38bf92d8d1ec2fa1a5e,c24d525b9f1f1cd221c2f5e73b5fb6f147b2224c
e8dc54c768639c9c99b599850e8b2eee67a4ad37,25f6da706626b6c6a09a8c9286f1e949e44ca501,848890e54be05d7f5ae18b98757ea21d656f4366
a2a0ed53b235492d0141759705b6043ed9077774,8cf5779297f990693e1511eda3280655501d634b,7f44f2535ec808acb333415e9c395eee742f52b8
4082b8c7fcd6705ad1ba4ee02f4dad2c179fb8cb,4ea42ab6d23c4e56f47f91cd0a0caac0891dc842,63f9afa6bd0fb9741e951166239717f2727a2875
59a75ea42955ea59c6765c4d856062df8dbc83c1,ad677070f41593a6f8bda86e5840c2006cc17c5e,178217821c41221aefafb166224859f8f789c08f
2a0eb54fd5579a1cdc721ae604ba8d1b16b392f2,c7d8bd966646f98d9a5dca9a6a6e3583aed13cc8,cb5a1ed72784f8ded30149be51920d312f8ff80b
ea340b94816f65b6a170293073b31de9b566a6ea,d86da195707736005cbd7815d803bdf3440f8aee,5c4af27a7ae30d89923b197105b9268913252951
1d7ff66602c6ae042c39b6ac4ec5864056ba1386,503ea604f33b5a7dd72d7a6417f9a38774f19263,f9668f8c037b6202cd558fc173ca1c4256a1c6e0
ab51e8637c2a8879c3745dba029b57590c279630,8c362eac67df688f6c1fc7361f0d5c06a78c02ab,da0deae9aee929f3ccda08afdff56bc931a19e52
7a65e1f393fb3ef10fb4ac15865703a39123a8a7,353be907c76801e05832396087c5b653b301d7d7,7af95cbf063d4634f3e566419cca85ae6823b16c
1abea6451c7faeb0754df984102edb34066df709,13ce27cc1d4a7b148e4236d1a9c2d7d0d2f04071,ec45f0069a9f29c767cc632291c89b1a5a2aa774
26486bbaeac7aae4316d7b5f11c6a9bbeb424933,de80621e1e97e67b79a3cd3e58ff24a3eec93ed4,f5f25f7ae6312448bf71a500685761d660efbcad
bea9961d2d1a3962d5d3553422fb2eed94289234,eca60a0a89cb5b5afb264471aa561ab0afef57ff,f32748a8e7ae82084a5c0837a97f7da67af078b2
c728a1204a62846be24a5cfda23c61ce3eecb91a,f4718831ca31f2c332ba0d22301220f417b08114,52b4fc039c6e064b9720e16b34546bc7e18f4d71
e467d2387d64c175b6e09d38f15812ff41255673,00a67caa40dd518bf5476e6847257be9cc36a400,1c64f4c7512b4d84f1f628472e837f4fb935ce90
4d8dcfc42e965e3f5688b26f066c80512dfd7ee2,8b17af1f8995e8bd2c8ec3c522fca851e8622d1e,ff90e7622aaf4ac14695f30fa799b1faafeab558
b0ca862f32e037665167254d944838daf518ffdb,d4e059bd41b62841560790c0051c9c437243cad5,4f573b50adbd33a2b3d9daacc86cefe5edb68b48
5db8d6bd5eca39bd1205cf3b355a953d219fb9bc,fe47db32be35d0de7ee99d09e0fc6f51c0bac52e,43db73cb54e82f5d40448969c090cda730e5ecd1
e3546cf5af9cb17fd98cba5fa50f54ad16e14c9e,4ea55963ef78a168686761578fc8a3e840279ee6,0f61895194672675bfcce07389a8099c71ce2fca
ab67fe179567312d0c8124086e22ea60b23f1aa1,9a3ddf650c1c150039b2f63fd84300eaa4f1ac81,fa4596a08f2027787c19db2978208781828760de
97807af58d437998181982b77bb62cdee0e24a30,2b1297c3970f9815a35c3694920c634e0a30c3e3,0f8db5f590342c65f72e2d26faa4691a1929a1a9
9dd394a5f74d358db135dc4ad948879096080080,9c63675368559a4b41e15624190c09a0c0cf9164,3e8c7f66b71cf633a74971b60150d67690b43959
3a43ffd57bc989d3e5facb1edfefc49cbc0f18d8,382d5060a04504cacc56a365f02100a65108ad19,af36913469cc49f412cb38dabfe52400bce229f9
1a564de6e6b90d9d8acc1cafa7ce6fbd1a873abc,1a559f5c608c31d1b5e11e99076f5b8b9da19dc2,8b9e90dc7a9c45eb6d0458daec566d8064e1ef52
4e5f48a25ed461106a250314f5210f160aee1199,38a7f7c9756100e5777b9337aa0823709a46ed96,a51c06f90760b864d865b1956eb754062cf77857
bc77aad3d935e43807cbf349ad3b355508a961ee,e829596750b6e556b5104bf2308be97cb4b1db98,a87a7270d5fa1ea935e2a5e0fd411061e3215263
607126346997c1c34a825017a7c00d68c4cf72ed,bead1f81802eaf2f58a58bc4181e29575080d492,08791712d710acf57282b09f0846b1c8d27b9c5b
7c4e7d6bd3d7df2117ee4a76929746ab68079fc9,57ee0dd00afa7c2fc0eda107222e45ef257b1f0a,a277a5f8db6a078f981748c1f73b8cb43ff36f83
9f88cae771bc3bc99e02047cb1719aefc64480d2,e5c2d13671435042f61ac84d9634dea94f00af57,4da16992df594235915d715c8bc83f53e87a1f56
039aee956804015b1a6c3b07c203a4bf3bbcc49e,a04e4971fc3ef9b3bf5adf3dbc2a3b97de28b287,c7834af3545959d7c104078eefb568243cc71876
ac4f00af1eaf877d9d6288b9df0b3e5be5e2eb6e,258ed213e43932ba3a44dd47264269517887c669,ba1450f7e9488e1ae05c6bf46f3c13065180f642
c23df60ae5c3f16bda2ce2e7530368a65324caa5,529c76504137cb99b98d11f153999410a38f6bf4,d3310cc731fea0ed1e3cb2bb473d93f53f6fc24e
23957bddaaaadc8f174367f135c82ad2f4809677,5f9f97e75d35f70a93bf8f95f8f3416093ea48fb,1961c8f27c62a67561d9844f433ef6db5175a548
d68e48d1ead5f2ad7d5fab090f094679ff632db9,97995773a0fd567f3528d0729285420715460a87,3c89ec6f83f2581ca0a8d42705424464a48d27c8
0f1a20b8a48722ff00214869c30a7e99883bdb4c,2d68b7c7a9e175fed0ea5607fa78e8a766041859,af12abc939bf12fbb48bd2ff4759f5021c057311
9a82b32cde500d92b029746ad3c0847612f64187,7e16f651ea41f4657d327d97f266ec196dcb40db,d8d6c857e59bdedba1657b56aef66c3818b84726
889e50ed58004611c225ceb82e6559f573072679,774317788f1b2c3442ef78a759d9a60a8c7aff89,075e3da334bfc9788c2de0fde5eea479afe9616f
da978acfd97eaf08a66038b151f7f83cca83d769,982a4f4c63a4fcf424b9ff998f8aab846bced537,1e94304bf04a36497098ff282bdb0d64de6bb3db
f78e2072a193a49660ff8cd07273cb6c45b03779,41b93832c0ffe6c05cd2b14796642a9979414a6e,5c6d6b030d0ef310f3b83470474c25c2f9332d3c
0b850d9883e8d956a749585a212f6c0473126159,fe60708baca8ae1d15e81ae8f6c1aee2d2b09e85,bf3865a15a9429658c230b017d641e05cc38348b
0e7f562d19387dfd8e60a6f67dd1754496927888,62cef8eb2b66c464df6ae66827e090476bffb657,a7d45c0ca012f8d0ea1632bc509f5e31112aab1e
dba71de45bd7b7750383aec27608e092783b50f1,bac79df17e156e6b2cdc457ee586b4cc1957d01d,504bd61c7f56caebec1cf8fd75bbe11d8fe7d1eb
36899f65cf83f3f6f23428c313c561b02bca139e,1c86c0de48b20fdb2dd80fe4c867f4243eb1aa9e,eaa60e45465f1ab252030ee8fb79d201a6872a3c
4034dcc2c68797c8159978fe6d5a68b550a589c6,ead1eab3d7342ac6476ee87e871f6214872e5b1f,b5575c0829373904a10e532dac7ef26764705ad6
e583341877ff53bff386d038c2e387a224751121,837659f4201aab4fee9c8678fe51ac8a3218ca16,973741c9197c2b3217ba10f5058b7a2c3377d1d6
b0535d8d0fda36ec637e31343fabe552e8cce954,ed2ae508d090338a706418fdf740bc219b614776,d78dbd5d5920bb7279937138fb529bfd05f44b6b
74fed2a4cd6aca8fc399ac0c39953d07fb766ef0,bde560dac290929dbdf0c8df20a9c7e1f4dec727,1bb8bd471ae32a1db840b975616fe17e9653ac2c
5358851f84b9fb9af41df6290decea1c5ec7610e,2c1639003c50bb82167036f7372eff8100863a42,cddc52a69fa7c3b75b7d3d3d94974670f69efe7d
1c8a1407f5388f8d18c31162e71017c873db0d89,6bfaec84eb4bb98b0244eef228210f5aae6eb471,478b918386951fa9115d1b7206c83af732dff257
0b61b5d4cfd624402797619075436c57e0da3be9,1b0b81f714555cc0726f3679ddfbcd55c7279db4,47b8bf5924b835920fbf3d2f27137437c3c056de
b9e3a0692cea695c2fc7a65dd5826aa36d0e0d56,927fbc4387efbde9bf4865e9e304385026e4ba39,349bb2ff38a56baf6960a0196326aafbb1aff9a5
2b78a8fd3dec629d91b9fb74a01d06d904384117,53542b7c5ec57aac80fa55eb4efc9c85fdf33129,9b7cbb0e0b99bb2697e93057853c1cfdd1c99599
f6e13c50a91459873d9da21f14ad9e1eebf9a7ca,924b4c6f10917bdb65e4ff14f20c17211e72cc62,44beea91b5b4b6a43d55a215cc7281e042f91cdf
7b3e027dc8fdf8f4b188c8df7af23ac9b2c1d4e4,8ff0aaa36918970b7eaa0bdfbfa320afa564ad20,e008785152df10d7ac99ff2a162190d2f39a72f0
b9ddddf9b153fa5178118319c4d245d20d24bdb3,d9c109a4dd3e17405a567f2ebd657723dd86d259,6f411d6355156913f10c37aa700e1559a1a498c2
33d57ac646240541aaaed7307758d44eb93ebc7c,8d19bb12a2326177304ca963f406dc9a90961cd4,55aeac44f0c462bb66b0025884316dd13ce033dd
a83bc6263903a51c789545d381bfd86e3ae9f1d9,639adc314f4660859264f647b2b5172847265dcf,b365fdd4786d21482b7e3a5483cd399f50b35e89
819752c334f6784a55b1ce151a8a0e11ccf87c7e,213b87fe91453fbca07dacff506b7687e42494e1,8988a5e028080ac37c20c06bf8d0cfc134cdeb7e
5c7adf9af382ee5919ebfb7c806cab3d520977dd,5f4a0c7af7b8f605338728aa0274ad1f877e2a75,0100c4abf8df357f5c58e9d70d8b35233e994c51
97a144ea6abfc4deecba0e10786e17519e1c6ce6,079d616978f27a05004218d3fd6724ef05b5e4e0,e7e96f98b2d4664f0561037ed7d465cf4c9d9cf3
b4baf9b49c9cb02cedb212fa9b444489ec9ba097,1d9220d2702a27e90cd6cddf2eb65561c3fb0161,1e4442f1fa25431480c9b1f4194589b04b5fd28c
cb4b085a99c726875ec848162770185a00f388c6,12647c348e57e0a0fe5826705d6e1c2b049e2fe1,fae45b20752f63b270c3d270b0f7588067344802
0a3a35152d74441c8b221e9f19a906a1a091396f,a7a67f3d3c8443304eb268ee78d46d502c1049d0,5a5b47fa24520aa9275ceca1d20a36ff3b39485c
60efc9e81c1624e3d206082cdd0a658e45f22ba4,f76cde1c4c5a6bee8562d5b754dec8e9e99d84d4,5c20481c7b0e0521e0747df6355b969dfee293ba
281b3ad276d8b66085fde25139123a574ef06afd,ba1b4b1c920a86bf7f8c6fe8777026e0092a9651,58f1a8513b9c748e7c9bb752bfd70eff22c0a36c
fdccb0d62fc1145356a31c16d8e340d6f4130ae5,0227c55b5394997da79ac041b183ebc2afc7605f,883d1f2a792ddc42403ca08d7a5202ba1f1333e1
dc592a888fd69ab284ed8996f18733bdbefe68fc,e4385d1b194ba1704a6e361f7f07cf5cc29eafdb,b291d17fc5e3b53ce4e8cc5f37d6f9717a9f2288
cf9596421bab9d2feb295e2bdbf013195a8061fb,ad6897ffd87d759c5140bd4c4f7de76c2d8898b9,c8129c52284769ca11e459b405caca11c4f93acc
902ef73c7c5112bf522e69501e74121be8d2f5e8,c0f064a35ceb3a847e6f976ba8879bd288bd2cd8,2ff391c25c763d3aa585160c5643293571a37e29
7e51c5e8561c905ef0041a993ce933093da43798,332679e28aabacc973453b31ba062f4141e919d9,c330f5080cbd36d4ff747dcb4f382063f5e57dfd
8ec3cd6390b6da0f42cb4cf79fe910c04dc9dd5d,47812c8a3d5e4689d16d577507214929af857ff4,eb0f02348d240a2f68c662d83ab0cba140954b4d
4c34b7b67d9869f889d9b62a30cf2bfe1231d6ae,15532e5277d103c78bdaddfa11bf1fd40deecde8,a418dc6c912099c870db748c09be7bd87bfe199a
aad87820e687fd71d0c8f87b559b8f4b367df657,23428dbf4c62c3e6d23546f6322a79f68bf606af,669e705b544c32ad0cbe00973b7bf669fde04cf4
dd418f24b594340b84eac3805f906c7dc97e2b7e,41f36233ea4d3366f988ec1b6eee3ec8a9024991,77658b925bef93b5ae127e686acf63cae731b234
353da84b74e1622d006906c6c93be5fe3ca57b3b,9313ddea78051cc7ec69710462dc2e880080a1ed,cba4aeaca5dcbed78c85b804ed7a5bded119446f
322a717c446f4cc3e53966e908790a87cb309d2c,dc681a75ecdd001fe5f3ce6d245f3c83651e35e5,750567f8e36edb9af45221299f76d2e33b1ac8bc
8e5e8774171802b15e395877621b2c5d13174890,4dbccce43c24eea0f0e9d97e66ba84ce45a40e6b,ded3dec22af8e83e1338569ca7cbe6daad23d3f6
465e8a99e00aef67489c91014f6bf2dcd67b4545,1dee4c41dd487adbc3eef94ac974f069deefcb6e,17c48694a50b69e1f8ae9f10b878a5057ab4b02a
fe99252a9b71bac16570c95e54f4165312d12fce,4239742b35471d8c36d1dca9c2bec527d66c12de,7c02f2b5314b4527db41eba28860ac5e121779bd
2487fa76056397bdca5711c3360bfb27f0620b4c,1e07606cbfb0166728c305cd73d35d28a3d9ccfe,4f2ab3fb1130a34460f5a2c5c0fa8db24d8f036c
ce8ec3ab5d5d8458b16c2e19e2650ec16822e542,d2b3da1f145484472d9ab905805715dd55a8575a,697f2fcf755fa92f67644acd88b1c1827c2ad8cd
dec03b5ac7d43c9462d930f53a61a6e1514b5b08,73c88619293407e62f358e0442389fb3cc10a87f,a9b015911dda052989f7c64a5604314a4cdc07b1
1474db42e45589fd8ee3f4a060e7efccacb4e7c7,7871ccd0546ee221079bb9f5c173d6d3eee4b23e,d3c3f2742c87a5dbd6360e5e8f4cbfc0d72dadce
db1903f45d6757f3d18799002df426b66fa4a0d6,9eaa46f7919d676acae31c785f8eb35b00138a1e,1f3d5e88653a37b06dd3de08d68b2083a323fc31
fe49522e6fbccf6fda941da340818b23e29dc1c1,cdd2ba1a4deadb65f70f19db565c8136f6722885,0db19546efc81de7638ea76bb323d00b1b8ea20e
4f3a5cfd1ee6cdf21242bb730c2aef6c1744610a,9fe80d741686ccd0e1ad78be9af35c82de80a4f1,85684eb66d671df344c3395aa97ccd3ef591a137
eea3eb1a8ec754748b565690cb590f5c0292da74,cbf95aebf44616969cd12b1f3f3a984b1d9f7295,fbbf1f4f1cf29d23bdc337dcc7064e5e69aa3218
749c4d4e4724910f52059874df8d6fb12111a6d3,d80dc03ccbaae1a432356148b88f20a36a9ed72b,5d4af28c0ff54f1b7d6d97f35a55074865612445
25878f9eb2e6859a2b9a64639a8f3fff25a6ff7c,d6174499b1fdc948c28db191080da7f144c93d15,ee1be45df9e25993bc8c8289e7b8bd814064197a
fb387da807808444d289240bc5f55b66dc379e23,243c967967070429195b93b0cb51d2b406badb4d,7ef3d39d93b8a07c88d5359e7d40bf46cecb6614
a57899323426c8e1d5cd5ae6bc1100464c1f1ae7,982a870b15184d033e72efb19b743947c43a8db8,c425c51963854f592da4b9dbccef198959619cd6
98f55b1d8605ab1e5828d3a710df8c6e1afdad18,6b97c712f69b190f2a9139d829fe5741d4430c3d,0a91fcb44fb7cb51476ccc0ad2bd833d1f5af8c0
789f13eb247ab4a811112b430d294a4bf70b9c44,cc9f8b7f5685e205695165386f3d262b0c02132f,40f6a4ea3c36aae0b4da2e3185b533826286b089
56acdd3a11576ff9473ac42b59dad47ee2f6ecc6,b9649d17a59522fc9f069b8707b18c111dc73a88,67cf63049d4f37852306f5be9681093c5e760f41
c964eab85d726ede55c745c4a0b9187fada7c858,6aa8b718f46b6926836aff4e40cda9e868701eb8,433f07c407ae63042733d51ea4ca3348fb3e97d3
40082100e1f688f755fd6726e01162fbf2af3c6c,e53cb61b1122262554c744b8a9a5e10f11bdc870,a1a17447ff3d95d0145d4113ad563f7360480a88
0f57327bff922d389dd7534cfcf29027efebc7a8,449a14dddf92a0a45d0e810ba01d482ea5f27b9d,3fee990218b4648ab020d85f783959b1d8fb0dd4
e56b58c2b05124558bc3c0d18ef1d1c48e9b6d01,7f772683cb0c265dd3c8f84d5e2ee38c73e24b74,0a94f8fc085580d97717c8a8f2e19a9a53a44aaf
b2932393df279c6856cb7fbc12a389fac3de060e,f91e38d1bd3ba024ff15a4db488e2bd2d69f9bcf,84848df18d3b351fec0651a9873128553e84e522
39bab2dbcc3961a59542c60abd70ad73930087a1,ed5f19e7e388356d644a695c16c8c520811099fc,869664c6dacec44c2e05e9b3418fd8929e7dab41
24c4b90343c76d18eb4fb3ae3d85000d03c321e6,ba413bcdfcafdd5ad69be04685808df1b836608c,38fad4b5cf28dc828e72c473183d0e1134492a27
d137e06ade00a851a5370367243c11fcc79043ea,5153a288dc63937a3b79d305f72cab94e5ab99e3,788d976f3a2d89bbf59721280c4d6dc193f6624b
ee940c8270c8fbdd585cdcd548930e1a6872ab55,e296b26e9ed25051d1d70504c7270f2f649f5d81,c17dafc2f932c23033c990232e776f374b19cc81
e060a43d70c9ce31b6134a5e374c907fc74706d4,5532ac3355218e18463313bcb2f9460a5f3de957,de15025a4760b8abda8b57606c426d958c00c37a
a1b556d2118d91a235a1ed365bf88ada086237d4,3ad24c9db8725f6b53e3f3250807ac850a7769a7,f1715ff337103b83ce632e92ea9425b308269fa2
62c137a6d801c5cdc3a2b9f20ea8731836523279,ab2fa724ecddafea7950d8998665d02ec5af3354,db37146f128563ea196aa00b118dbc9376e53f48
c2146482247ffa831e0dfe7dbb3285ecc8859228,3a20178d96463df72b4357fad69838b87d0a5825,0e04d9b4def9447c67da46cfc22b8157d44b34bc
b5e6c0b98d2c04b0d6ba105a9c52a65eea00609d,99914b427931330a22b9fe9210ea44acc6ee8101,affa9f9d9ca31c0e28cb61b084617ae4b3d6875c
8cd1f1973bfcf432f87e5df74beb23cd45b03c93,d31dd4ac7b6a7f2543c130bb10d927e8688be5ad,f9cda608fa3b891ceec7d21cad66ef75bd4735dd
55d5bdc98d787c733b84b9381a992d67f27d9cf4,71fa4d1fe2a5eaee061fb71fb2045bb5fff2db1b,5cea37425532e2ca502bdebe2acb19db22a31db9
d9d2515ada949fa0c8993ec3ff6579a08624a865,0b63e89ba290a4df67893b01019c3614f8cb8f1e,ced3885dbb54688ca8e0ad3692949eb4fc108b9e
402728239f070c34402db4a5f8f39c98788f95c9,a64a8f8debb219661633a1121082bb882d8ccadd,3a02393584b6b7e4e4ce5a4ff12353f78fa38b0d
352ff5f82ad07bbd07430a1c433d1c417b9f78b2,dfb9fffcf917260a6479ce75da4b87b733d1b4e2,8ce4f9606dbbae08b8cd9c7060ff6021943489dc
b945e66e2807410180709dd0b967e1ebe6cd912a,a72553eea27cc4a8ca0c96456e439e283d9ef972,9dbd1551310b08d5255d948106ac4d65508b9844
80ebb98431397073b582bab01c14a1555f3eb015,404b465c33823efb0294fdc75cfb8da79928e749,90bec938f6ecafc9ce36bd3fc53a73bacb0bb20a
98b1b04951f82c981675a16c2c462287ec5b699c,6d0c470a40bb3a58f2f0b2473c597d0c39a4ee7c,87458a065c54d01aa6d0013299c55d1b99d67f80
b7a8dd9479f550b99b902cf61a719bd3da44f0c1,6db674cd024f9d81069aa1e019afa101e693af38,4d6b8a6c45c5fcd9a7120754358cf94d1a8a42fd
04a50733ad9ab91ff3710e9ca24881c15439bccd,55dfb59631a5e666c3d6e527aebad5086aeb359a,c0da39a35dae71be2248f6ac817ba76eaaf8ade7
c932dfaf7058a61875276af4a7a9100c2addf1fa,d8903ce6b3af3cb3fc5bcfa48ae2823c1fc2c57c,3206ac35084ab844a20ed8d97a58048cd0b6e7dd
f04afdd5eae60b2ff1d7a1bc46bad34ca54b19d4,48b8110e38b6b08a393e9a947b1b439746802ae7,4d6844e731e2d65760ec0441cec83e6ba097e169
43b5dbf6136f053f082c975c8e8d5cb1610ea750,900fd35f4abd574488c8c85d8a62874814ea2a3b,12e63d8a2cf992f49656895e45b6c79b752546d1
145f4299b49a634827a46f3ab1c8a8762c5be06c,6cde8ab4cb9e41c81b04c310b6f0da5afed26e41,c282f21b1b4f9eb8403654abc51bef8956baaccc
e97a2cb03e21d32bd274d378a49a00acf9295a0c,217ae6e4bbd0c927967c8d5d2effcb9f621ea89e,e7fbebfef57f0cc75dc85cfa4ca85571e9ae6f99
83611b83cc9b24d1db270e1d545536c651f97ffd,aac8559a8d55b1d594ce91258d8cb66a7a3d0877,a60ab40237581e8ea583b159308438cd62554d3f
18dfdb423e18ff7a16f90699fbd840230e438bc4,6eafee72d78b5785512f113ff1330a9ccb572646,a3a39e164040751afc38637a02a5624063048be0
73acb4d1c134f218af71d06adbf3a980202647d0,0c27ea83bea2f8afc7541d7d8206396c13b1f8ef,4c338b1f70c86f29d90f6af2e44f749401e88315
797e336222fd5fd1dc4f5da49131381a3174068c,5313f6e9af42d97848ece601fc8ce3a18de4ef73,67bf76c50e40f7a039429835e97bec38f37515d1
db83612b2c220def234fdf6f78acd565fcc483d1,1da43f67d40dd92ea2fb1cfa327d6088fa838aa7,789f28877190ef79df431a76d5ec95fffc0a9e43
3fb7c19482c482119c37b99a09589b155fc5fee1,b0683edfcb6596528a75ff44a21b81f1367630d8,1a67ffdd22de1d5e5ebe07a328db8806d9831ebb
8fc5c9edb288168bc986a9480cfc1e2e3c45ceb3,0b3418e9787ee6953820f6ae07c5e7b21559ccca,811d39d9954060e2eccf78147f95db4345d44db5
3ef319c0b059d8f085fe4f0df8501a49712d2f08,99af7f2781df0ba8475f99d20acef464fda91c96,2b6ee838f9745f266b22e73abbcf22def8b11864
46bac33a2d1bf06dd8fd27742ce4751cb0c12232,9560d63e428923764dd1c099fa1fe0ccf8f81158,bdd4b6691ed2d4348719fc6c756a2f29136109a6
26acc8fb2a6f634ae80c2a15ecd7f95a8684ba3c,99f92ce5dda2fee4170b359c5163060986b4ea78,d2371f4176f73f22415c21cac3177752b7d27024
fcb6072fae11123300b6418ccdccfbc794319be8,d77a8fb5f46c450921938937ac1cb0f9a7a0a75b,83861799ae140cb032cba70e7ad3b98f92304f09
05c420fad517d77502e023c720e69428a03f5cab,2c4c34ef9b2da6a74ff850053573de7c160a9acf,d6d3e171ceabb0e194e8ecd5de51b6cfdc1922a3
b768673e96abdee86b807a52842d65184e373bf9,d10fb705e4c39ab8c4ddd6140e6f86166dd01725,93a08aaebd6f9dbd709c700d092e2cc8aa06d895
5d01d53a962a8dea8af3a4a0ccf6b2901165cfe4,83afeb2e9374c4db290c5669598663211c86cc10,7809930b08765742aa3bb1ee307850e5a86cb0ff
6952ab5baf2bb78e2edd6fc8439348838c39f617,c32ddf42ebaa64e8cc136c8aa3ec88110efadad3,30e7406be3f112c3cff5bbbd88073ad8db08893b
8e436e6335f79785ccd5b4629882877fd13d49b7,3ebcef32ba62ad3f66c33e983b6c6b62b516bb31,1258439767d790a3cff8e567ea283340123e0063
b739d79f9ba4e096c35dc3da134db47f75867fee,2c176be2fd61a5da4520b9ba74e6d4de0e4e3a4a,868030b3fecc84668396e5536b7211d389ff65e0
34b3af7e9249c80bfd29928b6e85d722426084f9,901dde5fa58392d77b49bd648be0c72b475ac287,dbafff24fe5f38889834288c7b2b0dd6d1bf148d
c70f2c63cd9f0675a11031cd63d7ea707f3defd6,ce598c15ec5ce27ccaab373a292f250fe0cc8d78,46afcbb362df8f808307a213e72ecea43c4c6634
6b9f2114f1910ec9137c1ac06b5db161d04f7a14,d6c5a1799ced537479b012392478218b5aa59ef6,5a3883b1ab9f38bdc9f7ac82b62e8f0d87c93c74
d7c24c05d0ee92c575f4bee58429b8bf31eeb114,7132973847c3bd55518db8fbfcb2e410430f7150,a86623b97a80ed644ae83cc62f285bf0cde3aa43
295daf4a7fca682f9a043bf284f75c0661f9b53a,321e4d5837f7747c6ac08b58e3e760321df6b655,0c4d02ff9cc3ca0c9055a6e594c983b10edc3902
90bab63e513c3db6a75d67bef0e76304935a1b63,6d2a7a1b27c85a67ea35210900d5e5e27d8ba9d4,70b2904c48d6075c895a9d901481474cb2712346
008c1436d808d779dc129b38155ca2c5d7d68f23,3b08c6b0ea1c7d2a960bde6e004ee8f0d59b786a,35a4f96100870dd1de78141caf90c03477ad8758
251a93456ec25acccaca2cbbaee7a09ff608163b,1736950d58bbc94bcdba43bf1e79848c1bce1c24,d5a18f03a857c623cadf41ba2e26bcb32d9f93b1
d24cfcb31c283c66bb67c2d57e6be8d6e1fba971,deefeb1ca0cbd905cc9e677eca59c8e6c9f60022,dd9c76eeecbc3f607c7f9973e66732a6fd61f0b0
1f2354752ccda1d531faef430b0094daf6c66869,8dea445ffe45d8630f7835058cbf8283cd6e7e93,7038d18d5025accdbf95d3b6f8ddea4025542b06
7e78fc1d7faec4d9263b3551e0c3efe55fe5553d,bd168fc5520871b9b53601659a92f68568a31276,262cecf5285899bf64f3be1511692f34aeab7dc2
4b54cbea1e5de056d503cd1c195d1759c0b3c474,99b1283e2ec3b51085bdec70f7d60f02bdd98d27,3da4cf0792d73fae6a0dad36f2f58fe6f02a72e2
8f3aa926781ca9fa06f43c8394d53864a6498b0c,2d77a2c10478d1aa2d65520c5f0b4022e4280fcd,9f0f31a1e91daf920f45121f11e569328377011c
d1d2f6b7017a3ece17383831dabf9835bee88900,7bb6b525b1183a4155ebe3c51c1aefe84a2a5f78,90a164bcdac5e814327c161d2ce7dcd9e4a3c725
b7a4965ac31cdd9584e980ce3082e8a63924e0a4,238c9e576ced17809f6587d9114414adeaeb4329,f40736438cf33894a6a7b408da788d889959f699
2b767c4f8bdf972d3413db62b76de03b5ba59a7d,4cd8193c7975bb1a03ae2f9fe36d043462a5a38a,cc7e623802c1dd79578718708f0a54647263fda9
817ec5e6f284e61546c133fb7000f780c3c7d7bb,141f2403d367ec874aea7f192e8b9e1d003b96a3,d69cf3a440201fe5ff83b55f8c3332236319d0e1
955ebf2f098c47de6e3209fe55469965c79542f6,fc46b6c57c2444fd5a87915e683ba725f1a10c9f,7f8dc75604598da1d48340c5c46f471a5102e9f9
4c9a0403f4c79d12055bd04f67d9f52cebce3a6c,5947143d8fd2a02ed2b0d164eb4ad5434c335f88,8015bfb5a08f3dad271472b11da7cbf3b2f87515
24e3d95fe018bc7f6b9604d008b471855c09023a,ae953214eea3c5b8dff0255eb02167bc7cbef58d,31431d99ab5a655837445adf2fc2339d25a1ab98
6398c42a3831550ff98de4f629f474bab796c086,5edc520468a3b2594d7ddd6795a2d806f01d9ed6,5a379cc256b6e89d1031584bf2d49b1ccbc82c1f
58bbbadc16877e99d24515f7e05920c47854eac7,f23f3a4c5e194d651d180f28beb810848419f716,413beee9ae1bfed7219fdfd1249a123fab87aa71
46b4f911753672e5044af4db7468f3ffa02d25db,fd70fcace6f414013a726b5f45df78e91459befc,5d8078f6662f7dd4d24cc5c20696a5be1cbacab9
85edf1c1ebd0fcd58ec25d8f083ab5345d531bd0,c418d63c16021b2bcc97e6c5e621acb6945445c6,867df5362c21a89e6aef76d32f6f6a717d80c9e3
0a0397c9f5c30e67ab1a94e4db4b5cde8288b92b,ba0768b6a6156b8c57274978ec072111b419ed6d,3a1ecd4f167c06645577d18c1ffde5374b8ff445
0224d632f1fb094078200318febb294e828ceeec,71df2911da2124b7bd69428bda51dd6964e51c5d,81fba52adbb01bd7265cc598200456d2367f5167
45847da69310f4b42a005119be640012399c961b,03cd0cce594750e9b0b1e032fe5f65032b654798,10af6fe2fb5cc09e2573c81f3e51eb4ecb01aaf7
663040a666d46d3c47d40c70dd2a36ded405e854,0e79bd2c70f21ad1df82353e163a6014c0dcdfe6,ba203c0564691f1637798193368a292f14b9765a
970ce7f24325e13a153816d8612fec071e1e674b,f0213a2c46a9fd1ea047da6c8f54b78823ef9c71,9230ae5aab60d4e085da647271f2e77779862251
4f38f12815c7cd5b02c1dc987dccc248dc442450,3d5ab366e1d6d2df5ec2c6edf3a870df2a0213f0,5d1d9858d1fc68fddd69f5c7d940f84ff79282b4
14a7429e19059bad9c62c2d2e0fabb544db17e56,693e72ade31fda191fac405b81dd5f28afc6e47a,27a4a3d44688074a431e652ce9cd97410a1156e2
4936358beebea71d5f20ee4673549db61dc60b5d,8fd0a27875abb2636a1388876f590a3a56d83b56,6f2b027e511472be397dde845f1703f8f44afe14
e7d590724ac8b26537fa90051f065a86d86bb443,94e22f1262e2a692cf1a39f1e6c47af351ed436d,c406d0121eef5cc8546cca9eec41f680f5ba3f5a
e8ae49012860a2031a52ce2d8ea071c2939f8dc9,a652f9e3041b2e4de8ce2f6d62974bdeb124a3d0,5ed7bd35df9ff16f85ee06e12f2ebc6694c00fc1
9b0893e6aee0028ad29f5e741d676736aaedf336,e45ad64d41bd3f2e8505042ea588a4e6fdb2bae6,162a62d4ce596c967180bd87877cb3393b83c309
3662afe93b6a35f38d1c7fc50945c14fded32d59,0c464605483132ac901f4004aa69a8d33555b671,707e05d131eae05c11007aa6cd58a64baf73e938
33f6adfab6658afd26b1738bfc9b7b69bb9890a7,deaeac82d0841366ed1ab02ae80e96222c3ee238,e7bf200fcb59edad3661047c902635a476fd6fb6
5e4c51056338e42ff6877b09cbbe990c27a2527e,00a418f589341d6ed9f3ba4ee80f6e6d552aa541,91ba1214d262265c80898e16748a68fad3875694
2dc771b7baba950cc451ff4c1c4cdae9c770cd23,7e1607e095b2c271a636993186e26a5d32fbf06f,d29f44e1c730ca21c4a283925ec1241a096bf9c4
fd20dc1086b02fe2dab270a5fe77afb548d4bbba,c0212353d9766674574534c5a4daf95056d9aa16,9c00a8b616c42979f807b6aa818fd50b4e724ae9
a5a87fa84c08342e41d177168c616519ff01430a,69786ffe73a1247e34ceaceadde679a03e0e0d51,8ffb72ddd0ff843e830641aed26fd6c6bdc126c2
ed688aceee660abed27f84b18fa64e5d4af56fd9,a019536cd5630612bb81e87cf98d665456076d7c,36286441b245ba19b1deb984879e173fc7de8c33
0c6f7321bfec374bf9542a1e664911fff8e893d7,de095c4631c4ab452e02f0efe665b4d5ce1adfb8,5eee29e5d1fd7b11f97871235f722b8d3aee391a
2a87b885b1c4d20f94f85a4467daae794188b473,db2875cebaf152bf1dc77e3517039a77743b5b6c,fd1d2271750c608100173ad89aa88cb9517cc211
5d9771d141a145cf168ad7570c99226c3611ad9f,16fc8c8d9a05fc4f94c0e489892f0e82ad530e76,50fe8f70f5095a318683cfd9435c5a8d56ed95b5
fa1203029f8885b25e9324e3c811d6e9b9f1058f,353fc13257104a006558df876a8a2eaf61424ab0,cc49d256ea2bd7324b054a63a5f4051dce2ed135
c3c3e99c6426da68c901d4a2314133b6e32d7df1,ce9e1a3419a525d024fc4f9ad5af6c261cd44f7b,d25820b83050c192461c02da3803cb16a066d2e1
aea0f3e667034d0aa878888bc0ff3d870a25fd2c,dcf4e4cb2c04adbd4bb299b389913c84ed56d0fd,cdafe680c2353d46fd1f00549e158a4c5f2fa8b0
58eef0a5aac53db1d7d5d7bed2515a535522e6f0,fa2e751f9f0787cc827c7cead21f3b36f12d9b3f,e3e23df7e208a0c72832b3528ed99446410e8dce
ef6dde6de305cff538f8cdd0bc4dca13c5574f4f,9b70c7623dd5abe9501d427e31f68c2970fa335c,d14fd51d0b2f47c2059215a388a512a5c7d6b37f
617cc6984ba080be830cad11f3f18bd0e717532d,9e7cf37cd6aa8d01ed7ba2c3765877631505ccd4,bd35c02257c37ef18d28df181583205ce126fa69
13902c1c7abebeec9688d3b554554ea36775535b,ff2d71869966b8f39c8a0772e108b766283ec936,9678542ba611d2c0a511eeaa844d760879903910
0fa70759a20202281c390ba48b8b46d7eee37d14,eb3a470f456c12ed78c52e9584db5bc8b87581de,19a69640883fbc5a0c0d607863a6a85673d6f8c6
435b57bdb120166870537cbe299aaaf8b86820b8,eb71d11b9914dc9b448e7d1a18603da807947c67,ad8de624b8c45761a7fd0b9e3b1be18e503d0e59
e4c275a3499437e6aa2671f468a0c0c0f4515786,02deb7d954b37850bdd92822433cca41d27c102c,bd1d6f335db93b5e5912e4b60966a254e07c212a
ee22dbe5898ef29cfe1c773e6f751ede99cf544f,14b7eaa46f2d80ec8db5efbd5fb71d4469002504,5ed2475c85809555242f34b9b39b05e4be58bebb
f6667a5143147f88a862a703d1baf1cd922dd885,56d91b4ca79540828c8af3950d6187cc210d17a2,d8e2db269197b6adbbfb23103d3a7a28b193163d
c652cd629acfb86e787765e3d1c4e88b5b1f32b1,4064c5f39befe1f71d70992b9e3e02eff8f7fffd,11319353fd0d5275bdb7a36d1ccce97cc0524099
9e8bc7c93574678628b613fff8319b541f1cac21,3949be69898e3a724509357a28617376e8a339f4,78373569547165695255cc67117a8134bcf3f296
9f97e18aa2b77f213edc0336385de1577d2b75bc,b99323bb193977646957bb6ac6529e0288c0f963,49026e126182c2fa2dbdf4941e6d6d14b3b24c9b
79bdee3278415121dd1c7521cc4457c8ad3a8f25,3ae1b04d09a165e164e3697391125710604f5124,03f7ef4c6336182ebd5a053f8d962438abefc644
03dfc615dc450f38fae15cd06188dcd56b877616,cffc69ec1d0fd94be0ec1ab6f54302b1d3158371,988dce14c7499b599e7a707a88941c43a822a931
c3f4ad39a3d93a445a490b963ca1015d416db6cc,abb9401011e6985631b99c28b49a8c1053b6d886,16163b74ec9daf00f87075afea385e54f9813e5b
b7dd63094fd75b6cb8e04498806eb0d98f2709b1,c0372f80e00913d849ff6dbcf3387e664c74a6ec,7ee889d4ecebcdd72887fc65961bd4a362db0dcf
a2d3522812a74b2715191f9d447407582fda6951,df4ec9e8e3b59f70b37bb762f50d37725c22bda6,8ecdb2e9ca9b32f1334f237612411e7e17e5d1e6
35e11cd6d4df412a4a193e63b09fda3c9ba910f3,c6d8bd73f7343b8fa6ae514e6187786542468b4c,245b58c249b4b29ffc54e6c1e50a1474cc84f7b1
e0041a8244b79abd964007b694f78a8e15bda682,29bdbdba95bf5785005d668aadeebf3033d3e29e,c189af0e3d8e1c5293e9b3f0aa11092cd262d976
6c29ecbd1cd0e51977fba16d6ebb09ba32f4e520,67fc9a7853918631155a509ebca0983100e613e6,00c2fd40055ff5ee214326de04c594231b9a095e
533a1138857ba2ff5daff90e569c521483f2eae5,5573bee314cc43d3eab0cb29ebfacd0898f7b453,bdcda8660eaa0f02365a9000a55c7ad8ac3becf9
33c4a5dda713b26acaf35da6ec913ebde848f54b,626ef4ae0ccd379e74fc660f914e5524952e6c7f,e02321029fbe2c7c62e12ec475dcc3f03e135340
88648248ec2a1eb3cf9af867fc586943332d0523,9d765af6932467e439c8c850f43be86bb40f0ed9,84ebe96d41c2fbcbccbcc2573bb7783e18bcaf68
af8783e8d2d8312897ac6406b2ac30af9b6c609a,e5de269664c7029770bb2e4092cd28a9a31545cf,7f8800eeb15ef2db9dbe43b91db194b0e0d0e53f
e251c8e2ab3909dae2b91253044e8be67a00f6fc,e80eee5da54e32313333c2ca1f6dea016bb95c27,e3c6ef21d101b8f95dd6d410eba8990ec9e88845
ee3258c0daaa60b9cf3c12e06317bb17ae886c0c,cb9f569906d356aad9005ae1f22966c3182d4452,6f74dd42079e2df27a5a5a38fe3c7fe2f47ee5cb
9dcd897ce630bf5d3e9b94f9e47b5c9c26726db8,fa9c7a92c78fc257294bfe2c9e7d92dfdb69be18,7e5bf5a9fbc07b8e2459545411ff41499679687b
2d2015144653ffdf597df5a9f24e78a1d11941b0,cc703a9c59d1ff69db1349257be86eb7b0cbeb16,421b06affe2d3f2a3ab174fb60934feb9e7c11d3
31e5b2d9a4e1874058b586667429956b61a46101,b7f58dd8c8eacbbfe8aaf8632b6617228ded7485,cfec7251954e78c5e2353a6f842bd269582f5d96
59d300fc6ed13237ccaa37bd2478fd07b1588a25,2bcf1b7f59ff83ec538c91fde1805dcd5db27348,172a4a999bfa8f9d0429bc2e41fe363a778d8821
cb67577002b81669c34ab1edda2df068058b2334,e19eff13324011b667e4d1b85cc521b8eecb8eff,f481587bee170e0545df260fccc9c653740e1513
fdeaacac21cfa72ea0148158fa8da9aa67035881,828e961f3d0191c6f20c930d667c0eb9718cf3a4,ae04e5d7f0c2527677b7c4ce6be2c235a4635c82
c6a08cdc6e57c5dff6b586c40ad9fefe8c2f2a5b,5ead23513d29a185a71dfa0fc3f5314e4fc7aad5,c3ef42b164cfdee2dc5dfaa5b2bbb7790799fcbc
f9530437c2fd229250b3ffc48c0536df3456c192,3487c34ed9a2c87128c39bab5a5dcd336e5ef66f,6842c5784d5a6b21584bf26428a01457c21c60d0
1fc7667b3bc86cb83ffce20cace69ceb679a269c,20a47afe13d37f5d4f77c65f3437b4849f5eca48,b8f186dab2e09afc589407a2f1a0dd2db2cb2d89
d3c5bd2a3e513df586faa6b0c0e2555399d556b7,7d12e8cc6dfff734632d92f9f6a8ca824a7c6cba,fff3b67b7e3f2f7e820ab782d40d680f50d18539
ac1e0f96bdf26510682788eaa26a813cbb80a7ba,490f057aa11a32e1322e842343deab8d809c47a2,c8f746b88170196adb878a3166e566be1189dc35
d275e7a7e658debe32497a50c5e49d61d154b294,9a9cd15ec4427bd0e78d3e4048663afe71b30fe1,d813edef7239c683355be089ff9b089599bb3c4b
1c3b41eb543d85cd8497c89942062ca54430d489,f20e6ff323dce8717477f7d1cac6e70ce0c07b73,40bbb28fd2b877cb94ce03b5b0ffc5f45760a83e
137f392c66a298d58a03c3ca336470e5a5274efa,99ce957111b021c5739d96df65ebb11fb274e71e,8b89a5cc5109c15a716a1826096258caf8b36997
79dfd9fb51a82eda8f6469a6236a78e7ba6f7f6a,88a8871c622794893012bb90c75253245a945d35,47dcc5b05b7d41ceadf0a7b10a5f6867ff110df2
2d295a381642e32edbbc08e206453d9251753d53,e1e89864620fe33d035b7987c470847d87b808be,7747c5fc27e6e23247c4d200e3d9fd4c060b9770
4b455600b8a6c98158383c01cbe818a3d80df6d1,7464c880034a94a76aa06cefa0b1c4133d8969f0,9d0389aa53e2d49955f37707250b016cf07da1b3
5f3050961f57c1ecc58565e6434ad93ec44e14ef,2f914ee2d89b64e629fa93132bd1ff126322b223,83a11c2a7daa26276316ce7cd2fccc7682532213
1d6e719e381c3a58254f3fa6cdf2021e630d0871,5c0a5b73c7cfade35d402e59bca06c8a6167a3f1,7ee0ad4d639e5a93e73056c343e792b7b03e6d1b
ae6b204c9492b9e7b369239b91af6a77fe998c60,9b3447a6a4cd9babd4b870b4f903bd58e918fd74,6bed497c7c3cba3bde7cf91a4544c67e90b041a3
e1433adc2e40670f50d53cbb7b20616728923478,d82335bf9a833519e0b140c666e7851f6afdf226,0ab0eefae0d359b976d1db4ec81ef5f3709d853e
632f13c47a1208c1f3ea5d05f880aacbad14bc70,87b3b089d6e5cf75078b21dd4a389b4609e2ea04,bf24882c33b971c1bb31effdfc865ec6d67eb692
3238a07a5495f45960548ba0c31c62af1264226a,fbaf67e3f07bf64a25650d55db5c673e1ccdee33,11b1d1e6ddbdd9d04559e1b10798923715407fee
a09e40945caeeb55c4ec2b0e68efe2a4bcbefc03,d4f0658c0273c43dc0e36ad62c9aa6935096808b,798a1b62192d72ad565d4cd642df9c4c0d9d1664
18c5881e602212be0532ac220412e01d4228c497,a969097a8098a6f34d6d0797c9d0de39d9fa2d85,f5d5e84649a1f85334edbd986351dd8d161dda33
13ab35e3efa733623f0af62b3f21757b4de8e481,851accbb4b332cc720d4723075d8ba42bfd0d3ad,52cc02aa3b9b9b4987a724423789e415c1727fdd
60b329659445aebbc9468dd6e28a4e33124afedb,3de38c489457a05fcc8a933446cafe5d9bbf01e2,91f3f022fe4d75b8fd44c115e5863039d09829f7
7eb0be61273e009d716df175d8c321dea5230859,f505822ab5f7702187fcbca8fa5511236fb581e1,40c54e9d37736815438e236c15df0c996b3d16c4
da54d0e8f7efb83515a85c84b49c9311001f777f,6248a127cab04750c174f58514f492b759bc7553,a61a0cce4c96ba0173533319b973a48ebf0e53e8
247f80abfba336b27c28186d9f5fb14abfedfd25,e8b9d8442e43d3e84d2b9b35cb739ac765e48f7e,23111a71ea4316d6b32fe0fc8b0fca1c5960fa97
0e0407ad5793e54afd1046b9933ce1299f17027a,b990c59693cc47cd9a306f528b2fe2b78d8ad41b,9bd19b050b3b5edce7d6d1cb98c6ec87528e3620
ff415ba39c27148c52edca43e145b46d4cd4ebfa,bfb4b885cadeb195c7c404c95cd6720b14e9455a,61bf55e0fe5ca647824e11ad1254691af65c52f6
f5caa9940ba8869791a45ac22bbcaa461282b9b6,04984e9af9c5105b0ebffa308b2b8f97d72872a8,276f5bdef86a1a6edb28d0fdd58685365eb357f4
f13200d68b54786abd242bb1b0de2f1851386add,f4d96906c2363c66ff50f2b9e526d64c37ccd819,85637ad5fad7b0df35d26453779b00726966b164
6f584333e57f4eeda948203e5e2cace032ede931,6151f7af29ffb7a09cca8e6d49d0fce3eb564c46,da1312698b9f05bf26fdc7ab73aed647849b06a8
06fc84037ce1b08f1e26f4e571fe6f8270f1f4f1,a041f899d358832ce9e08d2111c4f26143ae8cb8,2e259ee3cc5d72202d207b5d6775974f791bc4d8
0a915e883ef0479aaca0db5ae9b68c2f17ecff34,4b3ce0c02359b0596f8099beecb18b6804a7bc3c,cd7e3f354b0c0658929aa8ad3648df80a0b9a0f0
f28ac2bfc6424e5eeb9c3acfbf5df4fcd8a6e6b0,1e66b2464a29125b2ff9570e4af8f453574cb409,2a1d26cc905b54f2880fb3f2c51c32a300f32bbe
bb3b1b06a735f552b0861973710a6dfcad99ed98,40c11baaaca151271e95ba91ea6973de369f5bb0,3e9bfedbc44836e69263eee77dc88c9b888f75f6
17c422c3f24137f2db2d1ffeb80664c85aa70602,0f462077769536525b247465937637a22857f1b6,8ea92a8280cb2ce9e847a618edfc2c65cd1ed6b8
c882828fd06dccda4ad6914fa4b71c5f3708f5fb,39f4b97ea54f64ee9b91db074e4242b1b155f2d8,dea1855126c0c5ba379d386253cc03808735bd30
d444f750f9d58cd751f5d567e4e14d40f14aea10,9e307f5c3a408a44d0caefc8feeb86c1b23c003f,94b728005d2dc935ffa03fea63af09f10c5d57bb
acdff47554beb7135ab55f2de0957024970760fc,e775ecdc439186d8d2491925c11835b8fe2f082f,c6116258fdfa92ba483a20da200c968f7611888b
ec227bb75942e940502ac23d58370fdb6a7f640a,0802edb7101071b56a56ea62bf6acd2e0425ffc1,5b71ba2a9bc65a6acd50edbecaff5a1caaa5e24f
97eefb6ac3dfc18b920dd73366ace4334670fa0b,fb4b1cbf35264749d6c4dab1e3050d6cb9237620,af107ca8fee33355e8c35fab6fc5ba5290bd3ebc
cf0716123c0f1feb9e5fc84e9831a8d6ea22fe9d,7e6eeebdf01d8b666c5005383b5e087647953216,7000d82dcdcb5e061628c521d4139a8bf43ec8e8
ba73f7376f07cc32f8ab20187909bde68e348fd0,a9bb9f7310e0db16b56d31c1770b901bac8dd813,7405ae275803c25325ad0581ab3b3275c43a1010
fb33da5f412e0bfc3f36d73cc2ba0d1dc0b24000,3889529e4508035a61e270ba60ebf4b5ade11d02,4525edd9f7949c1a8b72662e9a8c77b46f917171
d8f1aacd785f7d10f6aa9d86e861c3ea5d71c668,92b0ea7d02b6573a4641d1431e08675fbe0b3eeb,4e4f55ac0e34fc39db0c76306aa4a1f8b0029c0e
06c1a17d1312c1ed5d2daa3fa1bfca294c6b959d,f2a8b8ad6a7943aff36bf84bd3cdc8c75f086027,b8a78b135c3dacbaaafc1475c1dc9ac75fe5f155
80a4a01f12de35c02a443d59af55d7ab75da6e88,ea7525392644e484d6fa0c6315f0a28c2c496408,3ced30f8168409baba430b02bd843f31de329c78
f2818bfe7afa76d1a3a7e006e2065c51d1330788,ac6e4f59c65e551801d0a6acf0f5d86fcbfd370b,2a315df80c0dcea764dd602e5152812b1cc56e12
599e2df71f6368e913e29822de9f7547ed5b103c,ef7e4f6f62fdf6ab920f3185dcc3006791a249e0,f62fd437b1c432d46c0db85c1162f623ace1444b
8c2aa326833e7f287a2059547cfd7fa5af59c130,a6354741e6e9d4338ed9b51afce5b14842df51df,bf5d75e5944cba197baf85a76cee434f3cd33b20
46a366d6ae0dc38d606a849e2b34ba3462d28feb,36e32ee607b644e0f2f4d963b0916b75e501e606,22ce9006ab7f5913237f44a5e4b6e088d7211957
a352a12bb42e507cac1645106bce2daa671335ec,c477816100404a063cfd386cb9ba4feb1e33585a,707f7225314f14f046fc0036b8580d7a2e44133d
0f57151d36944e190dae33e2299cd838e048ed9b,5f2410b87106781c786808f3ed3e3b38b574fe13,33fa211b8497b5f8d3b9511e4c29ef8d888873e5
1779011ab4dfc7e883f49a837d311bdb59fc789e,0149d26adb6aa25b60d995fc88b8dccfc0f29880,30927039a6f2cf056aa57b69534cd90a70576581
8465710329a692ef64b2d88295b9d532c0dd577a,b8b5d8410868bae9efc28c1692b0bf18757ea049,2f374a37b7ad878b277916d0fe7c4d410328e207
99680eb88c425cd71edf808d6084fa51a636696c,0dabe496019e970e657cc95f3c34d45ddc3fe4ef,8b24033e93b3cc381cd27a137149ca5cd870ebba
4de6b3e6b9aa3af34516ac8ece2fd8187bd17955,cb44d7d4e2e6a9445e466f1df2ea659da12e727f,abb79553d293bbf36d93cb3f3349860deaae0560
cbec738829ee9bcb2e7bdb879d439121a06c1e41,ef878794025437980c7094b25a71e898bd36dca8,e332c17bbd89f3a6223798afee6c837a370dc9bf
a20209e691bfe1196e52d533feef12c74cb0fdb1,1e3f72403eddd7eebe95ad4ee956c4d3863df9ce,f5833dc0482b39432519552050f9d9af6594b02a
96dfe3d03a8ce36de71970fe02610be8eb384389,b89487e7217f9e9c534ae10e24e80d86705f0a77,6d51c69dbe8e5a256704400b57764aeff2200248
1a9e246c29df8ab0b38ecfe715917c361366d8cd,114c27fb4e921df3808ea748e3c6fab528d9b26f,4ad7d552a1057da1ae1f7ce316b6e55411774f18
f59eae4f81228d9a7f06952dd15349c8f96e5162,fd0012deff5ef06a302cbd81762c3bb4085d36f7,051b9840a54206a5d6748e67b294db13aacdefc8
ccf409c8a08876dd9ba7f10bf966134ab129506a,94d222ba69e59cd4b1ae254b6bd31d6e10660a8d,00859420abe2f23c644087fbc9c319c0389c2e3a
9bd7401ce9ac4d02501c0638c85ae1623392cb64,f7a052f8846f8fb76723de3d13f04d2514efdee3,9bd33f7a45d5f62d7be937a3c3e17e8b7dbe8abc
67dbd0cdb3aa69292536a0343c718b4f90872ace,b355ba3d39870b671be98a13cfe64a571a4daf1c,797077855ee7ac488a555b7ba65c615fdb077359
a6a17efa42d9de2a1206311b536b5de0487e6a67,3885ce98ac05b1372ecd5b8895ba323d925cd34e,6fc79c7ed04c57dcb67a64c126ee960fccc7370d
f6c16323fafbb73c37f0df3a80252ad65fd46e82,d409548842031d600e52fc3871ff71bf0f830512,9b53ed53e3ebaec026ed20aef53cc4856a76d55a
1f5efe2a95174c9a72f3f4e7884dce0d3cad441d,ec0d98156cdfa010b029c88075d56e414db885fb,044d9467820ad2c79dc6200d8e36848303fc4993
e1d9be897a01c86262f7d39cf1a4a136d694bf9d,ebd674d40e107e4e8f093b4e28e067beea068312,1201cc024ed4f14903cdd59e26a458985f8621fd
451afd6e45d61fcbe6236803fb12eda7693355d0,7da6bac960893bfb3d690258f0fc11472c0aa1ec,3c16324f8065a20e737028144cc624f6d1834bf5
73c6cab0961f0bffe52aa6d81985f56d08e2d654,a34ae2261a45f4843fcf8f257b1a162b962ce88f,22cb46fca9876d6e199beffd0a68e2e642b8dcb1
d3f3f81e1627ca65878c1539e0dcad32de5eb382,76e7833a201b8de2b67028606dd45fd0ad972e79,fca4d3315bd3dce1f2013d66e2652bd157c60de7
11784cb76af3bdd83a034ed09d524eac48b39e02,6371d5f26d849975c0a6400fe46c153327603796,ae0ebd1e9326f2c863b23eadc2f0a24b1c007960
6612bb44347f5b978356417125a92a715900236b,9b68c7a5f5f0da2e43119f5845b60923b09ad801,92671c9b85c7320c80d6ded7727718ea94047e41
3dd6a8e24e228aa6a8883508f4eade692e088726,872c22842ec17ffd691eb365dd4d956687f4ed7c,404c6e0c15075a88a0128327e2d9dfa4449a0593
32be078ab8c2c1c7930d48b5b2f8552178f2066c,a75247d9b0f072cd37310da1d3a47822efbc77a7,9462d6b1eace21998fcc832fdfd343479ffe4ab0
31ef82b9c6f18e699ee8a9fae53dc5c257456119,3abdec9c953d6bded0f7200e4392c65a61caea5a,7a3a4244d105e3b32d79b52b692eccc62b362bb2
11287f018fbf940beed20d4e1c0c09f9b872a006,d8298c9f14ffe98e06a766597f8af54c81ead38a,6929da66a87b0185fe1f2d3762a189ed5b44fbf2
3eb14dd72264b06f2ec8f8278e2ac785ae232bc5,3335104da26fd1750f200cbdcbd815a56856b217,b5659df4251fdacdd80697632708689cdb64f8a5
f424ae392999b995c51a205eb14a183add9d38ac,30e186be784e320264a7b422e52d8541f58131fd,6f87a572affeb8d5a21d9085e986d98933abb22d
90d2982977b802d664d3f9f2d5028693d894ceba,3b39ec84e46f32eba0d2d328391f7b67595f8e9a,2f2b378c0346142566dba0f71a25248b651ee9a3
a9a711763f0f41b97f806beaa2509ad77ebd7542,aabd7c721783ea8db3983568e75918d5b8b6db2f,007df5d0face645c15ba7ccb1a851d93c795cd44
236c11ef71f341e9038730cd56a2c732670fbb45,124c64152d256c1e62a1f13103c2bf5cafb33155,2b70c64d09d8d58476034e1cee01b30d96c19e3b
5a1e6c2e914f5fefc3e5dcb848b5c3a5182b63bd,34fecf90f34c9cc9f6fad91ba024ec9cda3a0a36,931d4dcfeea91a734cbbbb4ff28beabf8b9bda34
7cfb87b325aa1b0300734c04f338395e8d0e56c6,02c3f328a21d35ba3d4ba62150761a33d5dc4cac,2678522db552a5d377fedb1aea4983cb97ddf324
70a836c4a21104120f9f993710fb08e9525f97ca,b3c579f49c891b155f6b89539ad22bd12630555f,81848157808ef123a1cb244b71d366abeee39aa7
22ab6dd329e69675fb1a213e2860c743539e7082,48236401e002fef040b402ecc37844edaa13984d,4b4e316af02a968f27147123b189b04a9931ba79
799ea31a5f228ca212c94de2284d7910f3592e4b,069e040e49c79b8ce1f8b73d85e02a05df6126b2,16152cf948f30f16e1e185626dad97e298c843bd
fc44c2d4c965d246fc7915dd0212679d9a27d77a,4fc02d3d09b3ee04f0576ed25b5318c6690295d5,9a42625cfb4b042284bc2b789bd4d3f65ecc5522
df28fdcbf8b4ab20479d264ddf92b0737d5585f0,90a40ab9ca5f0dbd344b28110a5fbe31a86fcdf5,7b4292c94e380e85aca13f6644419227f3f7034a
d87a5cc9fb3dea2cda54a06bfc4fabee195c446a,a807e185912a5ab61e3bbfcb7358e442256562ac,993144b91b468ebfe0cb0b2cfdbe93b8022e748b
6c71fd461daf8161fce6e1d4242a1e8b33f21271,74272975afea5cb9681b5e23c6d5df3e94e59021,22197641b883bf4ad288141feb49caa0a53962a0
56d64b007f7eee75266dca41fc570e9286ee6e61,3c18dee6945d3cc2d8d59fd7909bfb1db1cc3061,3a31391c3975aaedd95a50adebb3f4339e476073
797795e2854990cd5abb987a721e9a13bef0945d,405b01f11684c9b9bf5119884a66e1ab00ca1950,1486ab7c708eaa3f901a49adc7a2cc42a1081d2c
4a756a2d30b395b5d1038e3220da45c012336e96,1b3a3a7983c3553e38b1a2bf1fb3166053435b66,45ffa40b71d623e404c72413e935e1b0ef97389e
871136d4f2beb86ee8056278c6d9b7cae070c8ff,43c83b3ae60ade6916303a524f058febeeb683ad,df6516c29f348078c0f86034544445eedca59103
592df7fa5905081b23eba908345cff67fe584679,08f9ec98e597e7afe9848fff43fe06608900002b,b625afe8001b7508a131d683108a2e1a7550667a
254b85c352c92f8e8f7d4bc1acf10f5faedbbe51,7bcdc2b37fb9f3e81657e2e06e5b56502b629fc2,8f707903df96a5132592aeeb8d84e88f045fc5f6
6b47d9d9ed74d375c3c17b38ec215ac0cfedb90c,d479069f8c045b26678dce30fd8a14cefde3b611,77b54f501f0d1d6a45b8b3f11f4f6fec1260a4c3
5a87855b062c5cc8d0bbae3311d82eae2e099ec5,2ea35e55b199904b69341b46a3f25fcb29557f54,0af71da9cc956f8d70c81ab5dd7c3e8484af90dd
e7f5b89c2c7cf856951f65c7698f6d2a351852c7,1993c5d1efb6811791df0d7d78472e383874eabf,679c4454c476583f1b28d179ceb8d54759aa63f8
b777dc21d70691a94c36cf921b428ddbcd36db2b,bbcbd4eae1c0e63afe7bee64469decb6d789118f,de213ba258297b7c28e2745da2f18bc2e0b5d6aa
f4702ee139ed24007942b9b463974d3958fa1bef,6b9d3ead7a3c196651d09b8b6c12d8fadb556022,38d0a9af48bf9668da9b831a5c7248cc002242ee
3de193467d7d304aa1c0f3072af2a54f690eb821,12d015a9356bfe9511bbb24c05d2a9cad9385e0b,991ce83a2b5a329abdf175905196cf1032993743
40a60591430e4639b7786a1f0a3c34451bf73bbb,e7d2c93ca7c764c4a7f9764a06f9ba390a76dda1,39c48f0d0156f562e8e286003d5504baed62ea5a
79bbc20f29632c65b4aba5f51503738cb6088b70,c6350e2903d5d431fb53e4a5ad5d5f2e9fa9e9f3,533777000a214cc4a04dfb83503cbf1391e31702
21565c22849db95277d35ae21b17298adaf0d285,f632e2e7be71448f812fe80f5dfadc8aed22dc8a,3a5eb0ec59725106d89f21b1086f22851dcbd1fb
251b18b9661df41aa9de94df5f0fec334d3323f0,3279e6335112c042ef8f723eb1476175bbf5e48d,fc42953814ac01124fa964dda48de4d30e2208d9
147559349b257db80d94aba077a3bef23409f581,20698bb36f16566f16a52d7c2c4965d6b1131512,b7afb2431c1fc7bb7e29a965503dffd9e95aec00
013491c69f6068b74240153c95bcb50be5da21fa,3947922fea2604edcb2a4af366332cea338c5907,a0ed685036ab33651b4ec86569e2e8dbac33f527
e350264db18d5ddfe8458caf6a88ec687c3ce4e4,892454ff17bf5a12d3b7543c71ce149b9cab8f8a,2ad3c6dd97d08494ba0406b59868a5fd1198cbb9
ef3155c2eff240ffc64af5b713b545e5a0ea9b74,42324235bd7b9a00acae016699cb4f9c7e46177e,88836b467e591b57523bfdd06590dd6f58977d7d
3188dc18d41b540d6241e9ea20e918e217e55277,9989d408fd2e010dffc655e492d7882d9a52449e,27e89e07a359c9f5388dbff82bcd169823553154
93521ae8e87b79fde427bba35db6dfc8cef108c0,e50c4f6373933812d8fe57ceaf4ceab1c963cb32,3099e10f41016534a49548a5fe82e93ce6e90138
22146776564c2b1032ef00534b3982347cd1ee25,200de64085083dcf64a836a18dfc5a8cbf31386e,346118187b41859b88ba7c4b196493a809fd54f6
95e8992e2f2605f96187d057a5adb23b5109f163,bb6028a27516192fdc8e0629389ca57524f4a030,49f789b92aed40ddeb16aa91b95fcff61b386982
c146aecc0112091e382e8c709026076038783409,4dff373feffed88c558076962dc7a9e9729033e2,2acc6337d817d6e041281c4e0393ef7fde833adb
af1a4c06c53b7486965fa31c8bc6ce7a3dcd16f1,c7b19e2fc96f01219e4664895b13a5d86ae7e120,a3573599718aad825241c4926833270091ba8b52
9bdfbc24731d670ecda14897eca0add4786871a1,684ef3008fcb26dc1318e6807d78e72942d9ae4c,9132b54b3b9ad8817fbc5bf20ede4ad947c193bb
62129db44cb6ccf173a6c2e34c6c1a29760c9479,80c0fc3c9268c59a07747f7ae88a106097c2a2c8,8003f675c5786198a1a7087060c05debf4920b07
507fc9c1ff58a7b97b3739016838cf06f35f956f,ac974c9ab7418908c996b52499240a88ffa210f7,34be9e464331921895f19699348ef7c663dd7e05
f42b0bf6f556d1c8c9ab2bf04a5c170d62b44b8d,9819df6fe16de513a6c253b313cbd00ce4b3b11c,cea772308039d52e7dcac66ab46c1fdec607e67c
bc3131688af996b30fe4acc2e2b55d953ab70f8b,8f0376c888e2b8626f37b8c8ce00a704df869ba0,424c8a0ac0edc9a8cdffdb62687fd1a750727172
f8339a43eaa2808fe22ca13192c92b5c8c200300,6cac8cc77bd6f36cc5f312dc7e932108ba5f467c,135a88c888e24e3c4559af7fae7d2f25a668f7be
c20b27ede9fed9798af41af9fac56b3785ac6cb0,a880367b37004dc22aae426c0da8618c941d1fe3,96a712f7ff35dc5ea1e148bff113c3b347c1785e
b1feaa9458eeb5ddb4b162d273a027503fecf815,aca97274189a9511dcb3ceb878b2984138b71f62,db267dcb6335a1c84f3b28e05b250d0abdf59818
7b4ef925f0502e4627d3a7a4bcfa8846be89852c,fb76f529ee7a4c5a590cfb5b38054579bd46f6b1,47b5d0b92edf48e9dc7580137262bf2b60076412
08c12ca4392fdf66b007ef89f4d391ad35a64b8c,27349661e08faf0d35056945bb9f845bdd4c7030,9e40d536cbf5d42a95ba8c69a15b64b5b2b25e78
34d1b90921c78fe89be27ec77cd3e61087063c06,83a6efd75995f6da1f5993a608550ef4ae12b1b9,cb308bf5015c9640de99c80ce6ec9d3ba6d94952
28c0a47a953a21813de4ef29172d0257641de238,73c68236b6a7943b8f5207a78e58483bf96a2737,729425447f65fd44cd5a47a4379dd807a8cb8130
0d2db1a11c35a88e2c24705550768792acea5f61,d0106d08b9602633c00c758c36aef8a3068cbf5e,ad99285fec1def7dd295c799935a8082f95a4715
77f5abac667cd81758ef39f889cf5107b920904f,bcbdc4ad92c91d8544741bc36dd48f0f7fab9671,30a4f667c171a8a352952bb008f7f7fc7e91284c
3189e4245d158f1a9ccabfc44fbe5fa55be2d2a8,43dc4c7ea08093298ee0facc3c3bf9660a5faef1,678ca16d951ac865d47b2218af3ce8de81e86aa6
cfa9935c15439996735e322741979c4394545a64,5438bd66689a1d50683d9e1740a85c7b81d3624e,b449829a40d30c6a3de0a3cede92062c561d0dd6
5fa7bbfb9be0ba2b9c0b1d434c985daaba887c93,a156a9246badc08990c28fda1b74b6dc4426de23,637ede68793715269928afd0f0b174249b73fb86
cd76003b4dc9a82cba7b8cf82fd771d7a5eb41fe,65330f346d46debdc53afc0d8723eef18422453a,a48d40e08e38b691207c557589767a1e9e84c368
2c689fa57253e3940cce0c90aeb41dea25eda155,e34a7596596e71081050fad9fa6ea77f55606930,46e8cb3e49219d01e61279455fdc6778b64cd954
fb2e262027c88fcd40a1f79cfc70401bdb9919ef,b1759d9e9181b23b5298849c2bb9ee2b0389656a,2a8f2f3662e15b66ea1364d057d011e08de8728c
8c9c1d9798636e75e24410f8d18cd1de9a75e566,014785833f1cdfae202ceaf2f33b45408ee10849,2146ca3616be92349bd106477daa15a6b95a17e6
222cad35a9915a39ed2f83e44106b1c35a05976a,470cc8eb1c05f2769aca541105070c4f5031da28,662f069a219cbe2c73d727086623964634800f93
aa2907cffa51957375f70b19a613b72769ae153b,819e2638bb490c73b4f73473238aa5eb239e5e83,65be647bbd03d92d01302af29576a070ca82dec0
705218fef11b511c23a0e5b024555332e4a5988e,2a957e77bf1b7c61414c3f18f41240510f135c37,639f1c476f25339367367195da4c04e7ebccd05f
f976083e7fce1a1b274667ee4ab6a2142321ff99,5631acc401d8f2149e0a8d50732aa5e0ca49d152,7e4ee79e65eae2721b5b2785a9fd3eda878bd7d6
47f6af4416d8ef3d46b315a80fcfd9c9f8e5c574,d7126bd42cd8a697998355c31feadc86312414f4,c239ae9414d743ba417b15abcd3f4b638abdf5a8
1aad73217cc17f4e41e222ffe127ed55446c1317,523ebb42cfd9705ef1cc6b4614e3ccb610eb7a87,e858343c38650d828b410d1a655116ca54cdc981
28154cebd19d30ae4f3f0219cfc3496bcecb0a22,0290f364cc73f8d43bb80de8b94cf942393c8f60,17298086cafacbb5bd61f75d8860441415fbb984
41e554067a781db64def61fdce3d952d1290f8ec,db71a9428ac5ceb25078f792019137fe560f91d1,8fd53df3cd8aff0fb6875649a9d00c9dc5c3fa68
f51a893d1dc17579e99157bc5e8c8b91e9b38825,d1bbfe4cf75aca2bf00ec1cb1df43c5259fac736,ef13f52ba8a7ce3f947faa520389cbe3858dba5c
a9a85711d51c890f453df4212ae866a911432458,c8307d402283288be0859c18336a8a7446f3c765,391512546e73c8ac7687b1a6f7db65aa491447b1
0a40d927cb5a9e7ddc2889dcedfa6980c6a7c9a6,b787efb7fd4c1dcc169f3ef38e4aee09d426df3f,b51f3d6e534a178ae60fb26454e49686553620f9
0d41d86dd29e5a5c73692e4acc841013809d55fa,1f00875f8c0c8abbc0ee7d7af98b8282a4556f8f,c5fec35652b970712b35bf4fbcd9c6793cc62647
375cc2b44343b143fef34d06aeec506708a59d22,3031a4da319316e6c7ac59a74071920a22f39e05,c7136b59c78e0ae3eb9d4a69dfbe6e9e6bcc9eac
b96109727c01f496061c4a77d65e0f50e8498eb0,923c891b3704b831a5eb60fd8bb8ec1f8ca6e737,79974a96713d98fd78bf838755c31fc44f2d0a48
26db93d78cbf7656e49d700b123a33d10b5adea1,3135effee3b9b61ccf624547eb4c6f9a22ad99ee,314b8999aa9e96440feefa15167f235a00f61267
8e929b2879b133c1d49f9054d3a9ed5a0c7e1c39,7ee874fba158020461e2cff0fcc20df6c8760946,aab0884182ec68f679c454fcea27fcdee30df7d5
e147e191ca2aa54fdab540a8076f047a5e36bcac,5ef1ede0a4f4f63e977d0e71103602c25f8ff579,a96a43d0d8933118e0f8d6224dd21747d9316769
81887a2eb3fcc7f8e23a71a70483a175c1c1526e,625e847e56f1cc40973fb0c5d6f5d014d5fb24c2,48617611500cd54cb7f8fa6b32f3ba665251815b
b41c8342c859189350928b08def09ccee5318ea5,1e0640c9e99f3c498d3ce4cb726589fac9662093,c2cf21d176a9a6db501940d2cd7931f1c651aa0d
ba9e9305566658b3153f311fc09ce20eca55ab47,44d9498effae13337ae677dcf2c59e52e6ec2f4e,b033ccbddb9c6ce1b486cd21493e07b6949b02ce
4ba19f5418bb0dc18ff708c2ad73e7cee160fc5d,afd0ae44eecd5252eae6dab8a34b0d4dc97722f2,d5de84c6c52ce7403f6ea17e9330a1cf7d5e4032
ba3de67f3bbe7c6fb7dd93a4c7dca28358ada964,fa4cbc89a5256a5964460afe6a105e1390599a17,c1c201f93c721dda2fca9058649b51ec53df9757
66cbee5e31091693cef12ba3c533ffea59e0c549,fc98a0db4f917852568e8c777bb229ed7f2e53ff,6c6a16a15445cc5cd9343d31f8634eaba9e013e7
af8202be3d829691ed8fde03d521581c8a61820e,3705f95b925b46ea38a795c81425d06de6e2fc5a,96a368fdf94976f59bac41f4da6c222a2833ea16
f5becf9ac60e6da9d9f3e323b69b89a800b6d5f0,e0fe8bd17510e16653c8a27547335b692978b91d,632353a8086a6aea4f41062028e2076ba678fec4
8d690546f306ce23f32322d8c20ab3e630cc2eb0,8816a0b601383633d690c3cd51b2b9a4d6374441,086c897981c05bee5a0d47737877823cfa590c03
0ff034216a946c540dfd170fb611834ae9f66bb0,2f5d51436e4edfe944a9e5b276b564f63688f3b1,e8fabb752a5bb2506421e911497b1cc0aaaf9969
eee2e9f950fd49954fb68db74f47a6d92f4d15b7,460369405ecbc3200eeaf38350bf8b2e082fd34f,4836ff29bd6df688f05ed8f1047cb43f54ba7231
79f74bf8cbc84baf1776c08713b3659103d86541,9dd0a1f3b59c01b9901688cb77c93a86e33abc24,6a6ef1c8c1a9c468efa24f5bad043c1836509b5f
04f3784af5fd1c73d88a00ece5bc26566313fc2e,759803f2689c544947533e29231cd63e42f6bf9e,2e23e2b0fd526e37e53a5ed07821159fd9a8822f
f99fbafabccaac7dd1cf69debc8c983973c14a1f,b599574a162f804f7bc1f68aafd525928242d020,1dd914ffc8989cafc9415682a178a900249ca091
d3b09aeeb9b7bd224e2009719feb2a6a706f509d,b7374401fd1c7390bf675877e56e3b386492fb14,2a0eeb41dfe764055b37f0680eff6977088fa7c7
9753dd964b78619828120f868b6ad78c9679a45d,1cebf9f183e1a4c457b1e50ac0432ce9b26780e1,093e227edb4839157cad181ea1ca84af6ff73132
b9cc9f2e8ae08632866645ac8e885cdc2008188f,5bab6201d578cf0d5f8901d5c08a8802f3839902,301acdf54b9052314eae5ec755bcf23539db46af
75fe6c23a5242eddfd19537e00200bf425cfdcbc,f2d45a0e9d7d46e4d86ccb2b3bb66c610a8cadbb,b352449eac03cc090900bfa8f06b097b88e80a91
4141df7fe6b1eabd4727d02d7d025c4a62cc0d64,f3560004cf486d89cb97dd144337c825d7ac0346,02ed51ea2541071642818c72552216d88aeda71c
39fa96579079493b11e2c94e2dba6c924bceb13f,71784254ab5cda0144cc92d0909533fff965163b,497ff94cb096fb436b9916b60120b7c235d01d85
38c32bcada3d600fccd74eb60a1961f0dbc200aa,acf58acf4109d35d1207100396b81a61a9acd0d3,dcf08c1d4d934712519c3d5a0b7002e5cd73f09b
d772a42375334be095f5bdfa06b601163695b9d1,280d5057e86a037c6baea33323b3b4bf9a387c3a,3f579c10a4da61a89014c28bcfd99909b97cc382
8b95fb8377a8c05c378186f6876c057a95145e34,4d73a9e637ba7ecb7abd2c849e5683dbe33ada67,458a6000e7c0665adcd9e55e7b09351fcbeb47e9
3d4cc7c2f663e3a4363c4f16fdface50f50ead8f,7c2c8581b7d3543cf28d8fe6c917f09f190d7835,2bae2a451c4dd4571b3ad81be202253050fb447b
3dff78621cbf792076eed72a35848b4f572c5d9a,3022927a6f73b6a74eba24ba6f941b1e78096037,2276caae243820b7dc60a7b7feff79b908d96c08
c4b66c89f7c08409f0c7d82869e473ccd84fd8c6,9bcff94e9e7674ca6b87f6aa45b5748aabd65dd3,73b563b3679e0771fe3d0f546da7695b9f911e1f
36e4db15bcb41e1a5a207868bb9e9f59e461f66e,2f8fe76bed57a0d037c9851210d3c034a51dd01d,c577e290d13b2b1dd2c03ed0db8d607fc28088e7
4f14f0f4e53ccaa8f37830d0bd614b66c604c69e,7172397077ad2126b5d59b985ee1f266d65663c3,19a9d4c4acb2d5dbe4bb14756517d3e3d85d79be
9176efbab4ef437703b08d88958ab3506accaca0,024ab0a8541406375fe10c9f8668c78667fda1b4,db0deab026eaae27b8d70662dfba25be86bc440b
1bd66a605ce4bbec1143c5e50afc2ec9e78a1d59,f5fc806c9d2cc3c880ff98e92f33f764747e6713,4f16473baad47661a858c77d100d8070af688941
09b6bed27cdd337014ae0f8dc85957647236a8eb,001057b52ec0a30b4ab3a7c5888b11de9e8aff87,56ad37133e6225e2a4bf8dd07e9bfb19e0805489
5a07298ea516c581c06c1ce1b784fc3a6201159f,3a76f9f477ae96a04700f8db2a66913830df3dfc,7125cb505c0e428110713679df6ac681bab49a0a
218ca87a3f71509d27b3f77374046adb87db6a10,723430ac34811b2a6177c65c0f9067e4d529fbf4,d098600c67613ad067bb964b70e8be97c5f11efc
4b59bcb0ca289e88f97d84afd1dd37502c48daa5,2b3d7dd42cddd513b70d4f7ddb61e2f7766cdb37,6ccb8b83dae165f9c48b9db693d7cdec6dbf1ab6
3ec0437d5fddb885c204ed9be2abbacee1b3346b,9211e6cf936ecc789a8d31691bb288bbaed634d0,d7623be563119810e3182b78e08d2c6a9a6809f0
099faf2d2babda25febee94149772fa936244b2e,a49a7763079fc5df0be15ec3fa932015ccbbe69b,2edec13a0f2be3066ae9e6796ea7811b60971a56
702e63e59f821d2dbbdc2ca9ac21ef4846959fdf,7b2bd0b91766036ea7a58a8b5600b10523c5e52d,c2df0f23006ec371479ce58e37e5f1c86878db31
db19900eb1c6a4b8580f03fd57506a2592b80314,1643fc52106c05039db71882b3762db3240d8069,8cc76b4b338805f53bfb57c62b1c434612817d7d
7eff3adbcb31ad65fa42aa2ea461e569fa947995,14d46bccba450eb00fda58f7be532e5438eebbcd,0df2c867ca2411939925f9c2639742c4ec7a6b72
f81dac4f6fa55f58becce7099648024b861bec99,26ec913725764af0ac22e21135a965c5ed8b502e,6636f3f0dc44be5d9f4f4cc17dd5a66c2c634274
c96a3cc9d1584825f4b8d56fa8b52a1140a2ee67,be50c77f342dab9fa790edf5597594c665dd97e8,0750fdf4102f004b0363c871b3acbb9e359158dd
8ac8c79a71abc78e50e5fa2206c93ff1a555f144,a76c0db9dd55ecd4e81116fdc1779dc110376cc2,57809eb922c2d9e6dbca04fdc54d3c020905df88
4b5f37c2a7c9b2e808e9e56243988bddf789f337,4888c379c433c51d7dfa68adff8d69d785cff9a0,4d25558519f9662785c16ef3717f11e1716c1617
3f9e6aa6b9655f8e5310ead9fec42b59a78da003,cd6de6a4cae00d2a5f9b09cc62947f94f6724445,068f0d2ec8ee953998eebf578bcb27d821be4dac
b4ff93c9fed1d9a54bf4a58f9f24b42779488589,6630f47ab492f1860723e58ee36496b94a8f9f32,3e29742fd9b4d483b0cb3c7bd1b0417e6fddbad6
5b941e3cea65f1bc58bc2189d6eb371b3c3441d4,3af74d2fd2a9a431d0b0b966b03d2fa07cc0e59a,dfde4def62ef9798084f4ea4a8ccd2963b9e354b
a6f1c04f22723ea2da0c5938240f74fe87552aeb,3b1d5794e9c7b06e2c8ce9f11610b479d3a55132,40633835dcaa2206cf041bb5abca51accb39b1b7
613a6e796a30c0e4ee4e926b92f7d5ad8213e817,79a4409587318b836abf829fc01bcfb2a6364638,c474b95dfcb780807fbc982182cabe6a586e05f1
41b17115895bc992f9c34aa8385be55f4079c75e,12ef0668970c478becd1661e2825d0d0aa2cad3e,0cc592e9eea8cd2d1943adb20db14fc32d5a64e4
61358b1eaad0f8b5e605d58983b43c1864a38da0,b5a4f8837cb7abec3818eaaaa304ae2a4c2a17d0,3f62c5f5ef62b791b22aadf5059041619e88a5a2
3f40e00392b6701dffd95c5aa1cd38a9a4cf9297,329710f5730f6aa9baabab10992a50435b29a390,f150fc6b7cdf797f9cbbd436ab40ba388f4328bf
fed17122f85f08ee9bd0ce89ce3fdd2860e35eac,f3c377f8d1e689d70f39e831701ab243162030c2,25c6f3a667b24d7d9f9f165e0a5eb6b37dadb357
c152796bf3a25f2a9fbc9fdd67f0d1cdb31dbca4,5c898fe795be88b59ae3c650abe9d5981a9dcead,bfa5bf80e20e47101e4253f920895acb098436b4
4e06d66d7fb98e634e4e86a1d43f3856da429fec,2b59000d563d6177edf02ad3d6bdc73afbbeafba,96c52ef16d0848d46da5c47e5981d09cca082d94
ada6d8ce5e1dcc4c5a86f63348fbe1c50be3c8a7,6143b8b54d03b8af9704d64fb25223629f0baa6a,7f0d582a4a46297bf021722e993cd40fdd121997
531c93a04e58755dff30399d08c243602e404080,042aae24554402b152750137c37ddd0ba079418b,b88107fa1d7eca0004f0cdeb149f2cb15b711f13
7f4b94e4087a46b3c89dfb8731ddc6a0ba2c015b,e01de8098137ca8a8fe9f5d0a95d742d6e8e7eb2,55c1ecedac40f079be9fbf04cdbd1dbcecc7660d
2aa0e508731a84586222db50b8937831ff8eca44,184d6d61ed2ec9209af5f696626243074ecbee93,ef790adc28cbb70befd6571c622a353160c6db47
1e32b96bc230cd044d6c37faeb5a63e55408778a,c3954a0cee3ecd2e77124ea3cb0994dcf61d1852,2d3cd25fd8d614ba0d95c490371be52f8fe7fccc
0f4ddf7b3497938dce9f1ae5b20179e13c78d03d,74abe873151caecdd73cb2442631050bee0bb7d3,483837ae5cdf79f77aa935f79598da4c3740caf4
8d95da3feafcffcd7b2bf539bfdf4b90a09c2963,8b71455e3b43235a283b815771ec85060dedfb6e,670e77864372d4e45300e6cadbb3d860064b7e1a
687b31575bb459c424e3666df40d36f806bd864a,951f02d188c6233ff7e08ceb54590e27f07cf1f1,60345366f254fe85417c2de4e9d0ccf8f2c85d1c
f5e89ded35caa36d5dbf0aa664c0d26de59a8983,7757306c7885c915de6620ac62ff83cc7db96f1f,a46733218725a7650c3422aaf18c2fde35551330
258331e91421c438e80c926e79833b1f4845ffe8,287c298f378202ba9e5fa38f30f9d12bf8834366,04554d7505569d1dc67bc66f64ed61251ca1c51c
f72a795cc7f2f77d88e0c41056cb7cd4cc996036,86fa90b400d87c26c3136734d4d5eb408811f83a,8ef29235c37f5c8bb054f134b8eac6babd4b825d
7dfefcb1f6cc31063342cd5e5040f758d2b68b0b,1395b2850e61574e905737e4056d22f705664cf0,db9a284d60127aab3bda2820b952df53d4e65665
e7f7927ca9d6db490e75d66abb30d8b71a358e90,a084c8829f6375f4ce90b68d7502b8b4a1ec6145,29d681168a7997875dd5ba06f0aaa7198abc5631
681067749330af9227ec8771bc0930a15fa9778a,f202249711646b4b836cfac5a0e3e95af0bef917,69c95115f6a9410d7067e624db594f5c5b03e5fe
fa052f76ee041de1d3978cfa6b2a617af18d8ded,a5d36e1bc6578d7d0ee6bab5f5defeb71a21c499,491462fd023245fabbd711538a8fa57de3306bab
db1ef439b5dee9f0fee101db4ea4a7119fbb1e3b,23fc0fe66a9d780615f6cbf78f0fa955070ff426,573d69c8fe2c62d414757b026140f1afd8bea956
a506fe95602b940cb4a5baa3e448d486fb7bddf1,589b2b956fbd6a738073b760f6e7298ba08c9736,6dbe1368ef95661336b3d81157dc67710f7e0795
07a8af33b16ce3e69e7d05630bc6b7071136cee7,86e04ddd5c5dc2024425c268e2132ebfb28798d3,8aacea88504fda6d66e6026e223ef01a87ac37b6
50c221670f87d0ee44a000b2bfe47979787f0dba,04bd105cf5d2446cf6953e424af99437327d2abc,60c73dd14be996d98af574de4ae98f99e56cdca7
c20641545042b195962241c5683e89d0980e992b,59b90c24ed385555cb8e42b1fa98f105ff9c1d8a,594138141af83d43148e8449d1ed8a876dc0d536
5b2426752982777fc1e39b39fe01749990ca8a24,695a260ff80e53ba01376beb6ec8f0d7076851a2,e60ab7148d010bda30aad8d5e6c9591b5c322ae6
cfb28c765471db145c14fd64749770266205c2b2,f8c2d4a6320417c267863bfcb026ca0b3d687702,6654faea084f0c50bba9a059f5593769a2be647f
20e2a0eface9ee9e46ca52b173ad1c522402e55c,365e320119208fc45b355b96d743af7318c16b47,7f769f024b1772c5b7796b88bf21394a39cac89a
9e0337f2483a3b83187e09c55f1de6f66f8a690d,e08c7b3642a18d76bfbb16b94224fb17390fe3af,5e90aa27d5435a07a44f5fbed44b2a5009a5a0ff
d5b8e49da276f3fde5443de72e5c338fe6283bb5,552107f577ddee5ac76eb2e8ee6e17cb94b49bb3,a063a538638d32c10ee10e4f5210df43e3f719bc
4c021c100a496f2ca5e2c1d8bc8a376c7bd94516,a79d12ae415573a66f6e8f3aa83081f0877d2d2c,34112c932c36c7162f866b4460cbc3700bddc92f
2f4390ac9bb56128deeaa9d0c1a590388db9eb94,9b1eebd333fe8737fce6ac9b31b2c186e4c0849e,19c1ecda547a4d1c97887a8479ada467bdd7ae8a
c0ffa18ee246fa8079c83e3461aa02a774c21dac,c6b0195c5f248a3d2154ccb9ce5dcdf62867e1ea,95ced4a7f55ce63bda60c0d3f6e37427650a0df7
cfe2d94b251692eadb8b6e188be60e5c7aa49efa,89d9679b53d03e369e22b7cf92c9d5ec1dd2cf98,2840e5e1fda6a4d222057f583c6a65cb08a0074d
871f60ef61e733b32cbd5b4c4baa9be196f33443,43e6d84f33a40cd994ea08cf3d02ce617da9d892,0794878b41a2bf44dcefb86d202a0b23ca13af64
950c1d1693007106f9c8449640ce5b91da4019b6,aa6209ab513c9c7b00c73a1d84fb3d5cd87cd5df,e3870079b223386c5f71c993b69843a64f5fa44f
a61e18091a2275940cb7020abe3a0faee9ca03dc,4d710518598a90b8debb01d145cb3af298d41377,de805fddcd15b4eaf9d92764d043d5527c30311b
187cc46b327903667c670cf6c50a4b524824d892,b6097a0300fbdb8a1d2a18429f3aea0e384b9782,3d2945726a482fb6c824e4feb8005782b40b7b75
8d1660893be11aa243991c52d4dcea7bf4d63a24,66a72cfb726bdc5370de99c0f6524469f1af218c,244f1dd83c703b6ed07377cfa50b88d1fb23cfab
763e0a14fe4b1077e2dc03cb764bc1bed43e72a6,8e23dc99a110b33a6e24ee75e2cd71c4564d6f1e,92e86e7673c326fa09cc93c9ecc0abc2b05068be
bba56d627fd799e9d2daefdef6c6f3ad64abe7d0,23fa725b0127903999c65e5068ff98e745f8354e,27e9dde81a0738042331616aec0d3dc4f50edc43
5d2be4da1cabec726ea95c0e7e5fb465a7f9a9c1,90ee079cd15ffbffc9309fd542686680e4606f95,256597be580a279590586176daee4e9335b3140d
ab878adfff2f9622574cc7f21fa6c29ad6f953b8,724676db4315a9a3a5f26bb6e4c05f9c49f80ebf,f1f819516ed91324c3b9680dc7c2cd9f10e3a423
569c40611687015c57eae7bb15d1b814c6cb70ca,732f1d9df6b379ad8548d0b7348abf40b672aa7c,03acadaf1ee9e47ae80d8287cdb9d5ea133089a7
0d11b5bf29f896a93e3f3af271b92628f2efb00f,1b5ee0d063119990b66b0952d80ccba4f39c1fe7,df275152c24173a66895698413d767f52602152c
f2b924573a2f26c134f2da49277afb8772fc0b37,5193e8332cd0c3daf4f661a7cde271b13483e2af,3ab5acccb175706526b82a53805d2cdb77366d0c
a4695a7015b1a3b218cd15660e276230e5f9e776,7dc6049de9a13b7d406accf3fb16c649adf2e6a5,4fed57adc13e75bc70c1495273cf9caa295c0d07
58d6d64fbadceaa81b96543fa2aaa02d88b971be,3e14eddaf6137e2604fe3234da7b4721f9c3bd6b,43686720c3225b2390c413452dece43a9b4f9d39
381be050a50fa99a05b168145c1b66e66a0c7d74,6422e9a803ed33cc9208a0a375f5671b69f5a524,be26429159dbcab219f1cab5ff4494ca89aa92bd
0a0935990636b0600c4cd5a606eb145002614414,b164f5aa65ade5e2cb8b2a3861bd73cc8fcd3baf,c81f433795128811d65ee618a1e2b5a17fd8965b
6764056eff5104edaf5eef1cd8dbdec087ad67ec,11a7b8592f043c9d4f5bf98379afb1aa9bc7ec49,0d402a13419f68233a97b28919abb3dea383333f
997184778a01718472c29a67e70ceadb32194e47,0caba1e84df0a72ac4c3fcf71dc688854360d2d0,bface9fd9470d0a8fc68ce8b3d8c98540a7d7038
4aba225c8bf7e64fee347d77557731fce563618f,616cb382922c96086cdf5f9298f690af5d003429,75ce122d36626cfb3423bbc2a1273bdfba1765f8
c1d124d497149d4ffa1998e9c84d9eeffc04b04a,40504a6f9de8930c6e308427631af0ab225dcbdb,56b79257a12806069a13c2b655becbfb2d4c1022
ba8cddb546484c10b7513ecf36e22e8cc1ba5591,69e89262958c00b6f17d73ab5ca0894b31e87eaf,5aaf863d560f9d6dc88fc511a27bbab06ed96a23
52572e10e92018a165096c9a530b4cb7d4cee936,4f4d8191f00d34702cdc0f9b10ec90bc257fb75c,92043c6e209ba987b8326b8abd2ae9b0a5f81b52
f8e7d0bc097fdae022c6e4e2fc22ee61cbf63ecd,fc5c35362bf995ea3d9c4c5ed087da508f7fc90e,4d428d945ec6e13053cd96536bb3baad6149c66b
d5874b00881a7323897b6d80e9cea2dbfddcf0b6,bc9b8af04b6dbecc12d22b592a4e4790e21ee3ff,6753f869878e39ec6d0a4bfce351861c5f69a462
04a42bef84f38626ea7fbfb102ac949d1b819e6a,bd19575f92a952a6189349c9fef5e17194ad0cde,8b31df70672bd6e7f949416ac18bff68326ded1c
bdabf674e1c9cae5387bc3abe884fb1b17545c98,a316229ef67f1c58f6b33996637e888f11cf72cf,254d0c0e2c7384bb225f8376cb1fce78d4047cd7
7cda3d9e57c4cab68647b2de91179c13472fadcf,b48c8d8596400544396715cb4a268adc6dfae619,7a6bd84bc055ad95ecee0f3b150090161b8a85f5
ebcae70d72fc7a381f3cebd8760e3634eadda5cc,e5e386f94ab4f87880c4358e40dbc31a22e50ea2,2a2ec77b10bf6f25093123f55616c5791bfe9eb1
0fbd418cb739d5cb4dfc4c21ce6e67e7d17dc961,b581751ef339554b63e2556db2643e421829a1be,9ce97e6ba58f78ee3132c6a9b4e252506560f055
06a728df246871ebdf1dad443f12df695617f425,5947adcd7bdd21d7acee39eafc39266ef4776e93,4263ff44c1fd7fb1c061a79b6c1d67e24e48120d
531cc0ab0d1b22803a1e5b55a4ba7782f853c375,1f8a9c708efd1f18f40aefe98e2cf3f3393cf07d,b98cc1ebfff7b107ae3429844e19a78e1c68bdd1
4abc498f2f37d6b789eb3229779f6e716119a479,05091cf0dda02c86b90f46a20d1aff82309fa1ca,bb4d7a7a50d593ec2a1676f105c43b0411e90063
fe120269595d5fd1a50660fda2f374f2de341117,c6c834949fd50d42e5b724ba4a5981ea13f9c5c3,4beb4bf8b20a899174a472a7c5a5c52c54f01bc5
7dbab3a78f0cefad954346be023db3f0460e407a,3aa253c11d215bde7ff9312c9e5ac7a5287f0818,5ffc1b81529bf8fa013781e3370ca18069df54b8
406d17a4b6c75e5cc81dedc1f091ee61b7ce9660,ae91ff00b962a9b53ede880aba87de37f70bbae8,c77ef7d6dd0d1920ebf0f4b9ca27dccaaa69bb38
7a60e044e3bec9814d891d1761bea3445eca284f,a2174753c1a89a039af948b9b7a72142b3fb6324,1df56495b7bc2d97b6506537f34e45f46e19456c
4559620efaefd84906cb6dff08ae912c662eaf13,37b607143a8ed79e9cc4e497535970d539cb2933,b239365479351d525b6cf372e7defea70d486f7f
f0edd62b88df48c4a4d97f5038bc6e35433f542d,6f165b6c01461a821444619b18fd9576813b0b5f,2c8db3bb9ebf1e76b6a30cf16f3e9ed188018d69
d9eddc50fd7d1d3b9becfc1f4706113bb49bcffd,c38efe6d18f2b49a3e6dd58b8a45019543034462,5502d6cc58baeedaa471cbf75ec57509dd3a3c51
63af4e173dc10c05c6ace5158732eb1f6bb053dd,b54d9cfecbf88fade10380b310742c78d002dcad,f9672b53a2d4e988e99575a70fd55eb7f9cb8960
13028db5a4418508c42143c2574275f9d2b0f158,fcf2cd2bea510174b60d78d534d331aa2477b5f9,97efb03ae67b7035d31b89984f04ba301198b7da
af0ba7be83258ee9f9b21f45fd645abf093953ed,edcc14a5ce33716e0e51d37dd4e281c0465ac369,9b54588d75372d25f022459da9bfe131e7a23795
2808873d1bc4e9cfea75304d1e99f39691298657,afc568cf93fdfaa09f75eb0ab65d3cbaa2f628f0,30e61067a0ee062c25830ca4aa5415972a0dc5c2
9d1c81438706b4f59bc37d7f7905e59617dd48ac,15baa272fecd73081cb57d776969aedfcf7ba1e3,4f707c3d7eb52dc9199a7f369436ba964dbb67d8
2507c1ace69387df7feb0d805cb33ec6611089d7,cc47a49c81781928ec5a59e127d0040dcce8a855,88b6bbe6cc9815f45f954e955a2c0d1d69e82c62
56632b720c4b0dfe65586504aad09855984e8cdf,627fcb4354a9027f4008b793050a60e66e482958,571095773aa21f75755eb19c928568e0edd32ed2
4caa471a241bc1bb67d6374bd831e1f58687dc41,90c1bf2e12e1f69b049d0bfb394df3652bf27722,5be84e807933f3bb545db3502e9787d5e0b271a2
bc1b1e5d1f2bcb777cb06630abb29cc36b6a5713,e76f9e5b36e164ef69a4ba68cb10c21520aba710,60d4363f475b8e429856d51e6a90834cff295895
58af742f3a57c156531c3e46332dd558194c77ef,6cc818cbe3e70ce85c23f3f6bba6bc22f79909a4,9f80b11c5db115fa5dbc78fcca872ff3d8ecdca8
d2879f5bb9955434a43b394995c8778927d8dce8,8f0a3cfce77aee2a6a85f76c1eeb5615d45cd7f9,809fb8333433fb37349425d52b026fa43a99d61c
aa243faab836d9287b124de54ef2fe125d556198,0bce44e342eeda9f92a915132e88de456b867637,3d81c8e51d16f919680b66b71d3fa68a7d66b177
78381bd1ae37be8526eae9e6979c55c687f71d67,82a3877126afb9658096f981be0ebe1ac2d18a59,93eb40b05c4157a929a6cf9c4946c0bda6812833
88c98a57419e0aff7c3ba8b7478cdb119c5e7ccd,afb68dbcf35ecfb9a3b5671ae481981423b4e0e5,84a1f614d96a2104f99e3be8b707846462ad0c62
36323fe424c1b3e543c4706dacd3754a806e7814,e8af7427bb0ead629eea25ac86556605b1dea252,850964f321a46cad5912ceba6a7d682deb144279
362d2b50df8d28dd4f769b6c90a18e23d5edf12d,90d7a7f03add5d973d9a30455281ad09662a185e,c5d04d1a541555b29b176bc2cb7e96bed089d8af
f71b6f341b7ffdc3e6e58cb60f2f8884fd92fd25,195e7e09180e7187ffc1bf5a83625162651ff051,41ccebb7371d261c79dc6f05a0e7daf9e9442935
b4de0b2e9c8ddd9dca7af3f7f24bbdd825dfd7e8,0a62e6040b062e7176b404926328281c3355e42a,c49213c561171e398d76eb7957f8e965cbf2295e
d88da03e7da8bb0ee227a558db7f18a6cfa83942,3f95fa50efa96180d5c9648b354d280090ba4cea,651f5cb8a1e914c77dfbd99336b2b6d38da558e7
1c5d0220fed77c8c84ef6df46535435e264c74fe,2353b1adee799a3821832dff63cfda1f4cd30b2e,0acae47310dc0a6fa2ffaffe21b2544ba869e100
c5d7e6807cce2042f90ce429335ddf0bb0223144,11cc085870fb6f58eac5195496f64d9d2d7f5ec3,3c8ac8d35697b44a8caf069a925da30ed5aea2b0
4a296c9f5dc776d68c1e52443758efc52c5f21f1,8ffd7565466fbda97e7551cea9036314fefcba78,42e4d66c5e4891900162f826f868e0a177a82ab1
b2714052d1a10ab417ae2eb783b671403c43922f,6104cd321c72d825b6e28c708bc513f8375af515,3685b50e752eea9b4b5c234ced112624b15a9b58
7eb782446e41d1c60614af575f74b560320bb325,996eaf16b36c0517a1985b88adceffc75d86efc5,8873a199ec1c07867420b46d0637633801194e93
31b7fd8965f0e707d2411c82dd03a11d96a16493,c8337937b374901d58d7aa4b9bd5af7674084a19,19a66947bc974b4dd1f42314874c26348717f1c1
792cf056eb5a2c82f83b9b81588a46a6e6337c02,0e54ea6babe4b1966ded98127de92435e6cf76f4,3e2cf16d1ffa53d02e375cd9bee14d039100f6fa
d0beacc35fdf89306b82234e03d99021a5986741,6d3bfccbe3f2fd59bd3ae9247b992c43522ba8a7,a91b42bd8d65dc68ff22ce64af52a5b9358eb3d5
ad66f17a876853bed249a1fd0727740b352af9b3,788797d0786e45a34d2715d280fc91ac9a358bbb,6d3b74f96e86e18a02101971f6d04d77eada3911
996ab2feba4407d20b087817aae89dbb13a659b5,b29257fd05f4ef1516360700a89954e2f1b48506,4a5a2f5ba2467ffed2bc718cfacd963271af636d
9c54d753f56bab86b9b451c8f4415cd041357a36,da2bd5f78908e630cce860ca25fe7da8454ce6fa,a5ab1c03ea466e93f6fb92f4c8da5dec7ed24b1a
4b5c8982ff496d89a179061ac28cbd1413776ebd,3023a9f0e2c82664c26c89c15dd2ca71f7d0c2ae,12dce172f95e77e67672ea56f25488e3bb42b288
84cd9e129b2cb9a674dd105856a6fd6441ec585a,d1377777be89c2515e6769e8f551257bd6d98d53,1263880ef02c11403bb728c7a61bb557faf0138c
f5489b567809e6690dd4603154ae0b0b50c0fbec,b776d48367cfbef2debb5c62e383192be8d05ba1,17d6999726b0a5a77ff029e05c20558a8bb7bf2c
b2d6c36e70cf8e5b1f7fd558a70ff67ae41011e5,2b7d9c5a1fe1802c3ecd429e6b9f6821865de9a9,f095bc59b01f7edce0764dab8c3634c19bbfbb50
bf96709e398bba07fec3462e83d60dfdb1dbbef7,1e1c17cb61713093bef48b63540533a7692e6e22,921e73ab0ca3d1af0b69d86d165ebf67884c422a
a04ec36a611c043b00b32e1165df1debdacdecd0,4cc739899847f1591973d417a576cc50c880fbfa,e2d8f7b68fc4ee2c687c2e16497660aeda0f6418
ac8552afc2697be02cc955d42bf0f62ee2ea3a3a,b3ddd4e7863b16b0ce22c239f298f418afa20cac,85149ab9a4c96bfe1b9f1defe7fee3b4b6a2c1da
3d4ad5b69487e66a162ce2844350f0e57c05470b,2c053b4f9c15d0cb14be6bf39c5c5aa1143c2a7e,5f67d830e74a409b9b17d52c7005cb15472342ef
5678baf887022814ae9a72578adc06654131d9a1,c793f4227167b5f2bdb8e27396ae58ff2bad2f70,ac5093274d32b75bce4cd955862a1a5ea52d3056
95f94bebba8f42a318f10cb342975fded7df8961,d1cb341cfacd61705fe3a2b9e098243faeac85a2,eb6f503badb9d8f5475ad81f1146466090c98b09
9710b2cbb406c6fe6bfb66b88fe72906038056d7,3c9a5ff75846720cdf50f539de81771f20cc1c82,c90f78488c5c590a17d05c3880dba5077263c207
09bd361b484806a5d45865a963d3579b1133e787,dfa736bdcaaa5e466bdf59563601ae2cfae6345c,47ba80a54525b5ef8662f28282e4ccd73fc7d698
a0e2cd36382e3ad061e54cf9a32804b729e527ba,5816a4a9403df29aa77a5ed54e02d4dcde5651d9,4a78b7e0730278224eb7204c5e94ee557a484e4d
de08108b27a2df1bcc945ece1b86292d90874c1d,aafc22bd74cf83c82037e51a1699abb3517cd9f6,5f118da6001068537b38bfcdab33319d1a0243a4
6698f6c56b76c60476a15f20a4135dc8ca030acd,20f6514d9749d3e3a2323be70188df6eba2858f6,b2ed667a86f9a978c6d2eb6dae48e3f1932a86f8
58eca57feb4528a423fe0406ba0bb4c838c230cb,4ec76072b4e4a02cb94cbe38363c12014181d9a9,c45c543faaef72817b1e1d9ddc7e774f599b9835
febeef03e4830cc4ecfcda0a5236e6f6b86d483b,33094d263fdfc7c0aba42e6bb9c48d349831207a,b3817f6d9275f887b48fb10db3400ec2c3a686fc
c6c996f506797b54228c248a3784265582a4975d,62c417c8bfd8a82909eea05dc63c52661b545e67,8738b4b47f3868d3c795f94743aebe743a1ea49d
2e36783d0e4fd89fecdf84623a1dddf32e491109,a2303bd89994f2997949a6f5e4a6043604cbaa98,11fd466394d945f20de98d013acb95b8603437c2
cc23515927ef60eb3675a5626802cefbce0d7d2b,c15b6f4516adb7c8e524adc70d7adfd1c1682bc6,7bffafdf8b0adf60492709c939e24c73a0de0139
4e1e35aef550f6a05f9307b0d39346f39e3eceee,78698beaadba891b06eb4e32534e95b6fcd08c91,27943baa2f65cb749ff9d0be8c37b4298abc1c60
a423bf64027c49e48d69cb365831a7ec15bd628b,cc7b6d0b05fd4871c2ba9909d6aac59a74837800,a7c0fa0deffdb9341c31c45bd3f1918faa42bab5
221d8d84aeeea1c61d689aadc1a13017b9cb5af2,e63c03125a8b066638cec8593d96eb8eb38ed3d9,1ae70c68258dc9c4c85650adea494c8aecb2a3c3
e41912b07644864a3a685ac339de2085d252706e,cb11e2568d5afb2616e29fda4fe6cb2634c1ab40,f94518a9aefd1cd9511a9816cc842e838c7d4266
cba109c55d10bf8f95b8cdd88782f109c6e1e7ba,caee96399eec1c792b1168b222b809d2b424fb57,d22e24937a30273c189fc6f01406e6c82ffc44a4
d401639b24ba6635c3dd05718459557c216b7b27,d62d6af7ec5a5103b53b0430ea07952e36700e8b,225b06e84a29cab4fa183ec914291ecfb74ddd4d
4bacec0ee36e3f999ed33047be4136fc65aacdf2,eaa2a2006c6c6ad4502c71dfe3f7746b2237589e,c29a0d029b5c22e27b14b4a5f59c9c389d7854bb
df42716665d467eace97490e4e27a8f927388fe1,cab80d121874b3e5ae2a4a7ccb04f2b873284e79,d41f4c7c4e806156ffbec259a83016fdd598e58e
ff295bf3498bb353abaf168a8834a80c33e8268f,8f91920c9bec7eeea70b2557a3b417aa8d90b58a,b7ef93030aa9484a8f1e34196ee1e314bc069817
965964d07c0ba60f9e13c5ce1ec577be698d65c2,b72419e2a517b6f89fcfa7dcc9506533b30745c7,72f6752b1cb6920c6483abe4705252f2eb51275e
e73dd883cd4f1efe93cebef228c9b2119b1edf4b,9142ad8950d2e2db6b115cd43b7a9471f1ef227b,58dcbab10e05674baaf11635fffaa8fa5b4c45a3
5ad02a3799684c950e71879877469b1f1021de1a,3caacc529a4b00dacfcf3b75a0ec32305ca79ff1,ec3fe2f99029fcedf165d41049d038a75f8382f8
3655c469825be8d1b8bd81810001049aa0e28771,f65f1bd80299a486ea1d396ac25b9381ab6fffdb,d9d231c87534ecf76b51ee362f8ceb1509a62e19
ed9f39032056bdcb7c1701f4055fb4d2615d8d87,792eafadef3b817d59d64706b32906f5b33d2ec8,59379ab02b290b3dbd6ab457a68db0a0b099d125
91149df87f25d472ee905860129da887fde63f5d,cb41b22fdc575e248db3ef960ad4efd449fda102,96ac7f29f7ccf21a55fe34dd90b511076b6f706e
e67236eb969dd5d0e7ef0f6d859de16e3c69e276,7fc94000c4f69d058d50f45eac1640f7f893a8b7,a62534d11f455e37605a3796f131c4c036b60cf3
39f3a72c625daaf370453334f069b170bb7e3d5d,87bf6a4b5680796d37efd0d6779cbd4ffdfbfdb6,78e88f4b77d0bae3cc08ba25f75c62b70cf08031
350d2d92f991538432c0b980efff1c04a2c02a2e,fb23834367314528567e4bae71f0299a6ae31c1e,0cb21e83386d432ccaf8a98d56f72258906d1b51
166ccc49a108d29c967d0d8e91e5f4e435507b86,ac5407268cf8b160aaa714668dba7e2986c695b2,834dbf5f802a9a71982749f0c58a65c08da5074e
7020490f81b308c24d88dadcdcd21faccee544bd,8cf26b7a0fd84602757dd7e2bd0dc788f6ed3c4b,cca536a86a82719d2ffabe7ed1e54c16c92162e6
02fd6f6e54e5e947b20a87591708439e92f1c587,7337515137f87d3ce7e35622250a4d68e2aa37cc,13afd5c6c75487336b6ecef0a62cf0220f5e015b
0e9fc31dd7c0a55227f1b360acf1b851d5d9ef3d,dfdfbf896da044c1e175bb194ae79b189032cfe1,bb6d4929d88b68fae8f0eab3c43291aa34badeaf
db250b04e05e775542e030bbf3c1fffdd616671c,3e9e0a0f7db475f96238ed76722ff083d470ec0a,59331c3d3cb4cbe05ecd209ca2c221e598f842da
043c3df292fbea7a70d7c86d70811dbbf00b1bc3,d6d92e366675c7d73713b66966af423cd46fdc87,09125e834f81eda0f3cd6aa45d51e1bfb4401ba5
0c6998bb110a06cc739c3f0657e403aaaf0dc0ab,14bc6674a6cd8a7974266635487bf09f384d02bf,667a0103573e43d1b650ef56a08a2108f498e434
57b8f28574087bde2fdca66d5f26e8eecbb2f433,72654864ff75a0b1455fdfe2e82a2fd40ec7f2f4,17685fe9ca5a5ff73a86cfcdf0c2306705aaddd2
2c3792a1aea113b378a88e4acaa54fafb3308e66,adf064cbb490c331528e6ce7b9697a1ea440f984,5da913de0ee29c1d4f70569ddb248e996e761e27
6478a727d78ec4d0fda9522f279b1cf3c7184c46,9f60f5093d0754474dfb49550a3842dbbcc431f6,d7122c6338b637f0a4ec5e780764104350a39dff
80facfa0bf6b866c9ca14d2222f3631f8f7caa54,15f411a3328e2f191fdba93b851ed2cc0fe008e1,a258774ba958dc8332d0d0064bf8fd4eedbd9f47
06b1e65864528e48bef61f8adfe47efeedf12da2,c455e942e5dd3bccd111e086d798d69b9ed4de10,6edbc9ed7e3453a0ea19d2f64b01d6049f9aeeca
b1b9d1f341feb04d4dc668981e469a0fc864cc62,34a5dfc8856ca177e6cd8848b41ef2200741f508,28395337766e49f89b58e690ec80b3a140201bdd
a5bad32b7c1bfd2b0578d7cb2eaffa71bf4d34ab,f6e6b807d5db9adaebd4f17f83b331bed1e09399,72dc2145e9692cae4667563847612df46e37d73b
e6b89c98f526394b5b7fbc197a551ab3e8229c2d,3db27945981318c9c71a04a585d3dd76f290fc06,a1720647670f3e009f0543c741c3dbf46f7e778c
55c4986c8d14bc058781031f016bacda3a8a4c41,cc936710a0818e446e8154999a200a5d41f5e450,0b5c50ea413dce745a264bf418f9bc15073bc2e9
2b86651914f674eeeb61d4c9a739a4b0f45a1003,2d8873d0854df357c28def22214ba55d5f0ad2d9,941020af1a9cc9f5136668d1fd03be5aa378c7ea
546a679f4e0114246f934e9d638dd84f64fd9d73,42f2e5f8ad0ca44b0d13b98b98c167354645d19f,b62045809d9e996591c2bb9f2fa80e34108f557a
6f661e44d0af94fddc382f5c563e44a53b2bdcee,04cbf32b1ba789ff52f5669af195cffddfc39ff3,48cc5250f9c17a1dafa3ecb4ec6b43501d557566
107a2e4e854adae9b198c52faf8d461eee253cf9,208e7fb33721bf96fe9c73abc219aaffd2311eb5,f542ee7b92e90fca148df15f35c50d3040d3fd03
08949c86bf39b7432bc36bfd13f219aecac21646,ef099b20756f61a6c9a9be44f63314907393ff83,4964f5cf76586871ef5350d2c4d62de6a9156599
848ec1d2197dfbd696b5c69a8fcb39011ec5ec56,346adf7f556fda4abeb469c173efe806cdb4b7a6,0daba072460a9e6d5240b61fb28da62c7483066a
601e05f17f1e82cd60a2b4f863f68b5f44551459,ff820247c3b3ae7ba88bf244127b6a36abb33423,e70c8985039c67cc4dba5371dc515db77b3b942d
ddea92992347f28a2f9a0043b7743889d3e3e452,0000682043decf5ac145fb13535c1de0ed570bbf,3047ce71bc0506c71e21db1725009fbb983ae3cd
06a5ec5b5c771a120f864753daeacae98f6bb0a7,055cfc177140e5071a549eb9d59904f57603bf16,c17ad509e2c3589a781f96da8128eb3f23188806
fdb1cd38abbeba81032f75edb3df6b05510774e3,a5997e266fa55a7127445bbefc5269df4dd8fe59,a2806954ed29a28b47f03bb8e1a356aa518bbe6d
ca40956a3aedc76fe335ff1a8843c58a16320de3,719220e8a4f5b2b30bf8b7261581bf84c72555e7,1d3ed354debe8b6a937517192cce2abeb1dbc347
86d55055df60fa6c773832076cbdbd29d0e2ec78,738c11199be19de4806dc6c96299c3154f1ee2fe,dcdb57027ac01c861ffb550d599f02238fae5499
42866bbde5f48187dcea24520d0f2fa98ee2ce8a,644678daaad3ae74d7495f7d864a69f835d7fe51,754374d2eec1e6dfac22fb80f431b420e0f2a5ce
6ce1b7d272ee3219d7df9719bf79d0d044ef6afd,6f27c2390e8523fdbab3905ebe1cad82d8b340f8,aa633544f1adf5d8521a99b1e2341168b1611c87
ec10ee8218c9247836264bcdfcef44331fed62c5,28f25b2df0b1422fbcd6ac195a83cfbda40e4d9e,e14a3f17e6d8d6ced42026b3c49e1f6d179e983d
315819692a6a92cd1c22f7a2031a0c0f139acc63,d9db6809373f3e8ac0a0a0d0123988982dbd661d,fcf085b141dbd7ffb23f79e3bc37f52bc7b7a1ae
985220d94c6092336c956ed5dea464eb80c6c0ce,af1e6fde5c8e7e77a96f43366b0ab6a69b1d0609,bb25c604cf7281bfbf85edae9f90ecf78aaf99cd
f20c76d73baf4c534c487b2196b9291de88a3d1d,d7ba09f5432fed805603c776afb6770daf65bb53,e2bf83b5734772ada599ce9176ec4072bc60f18a
995d2d280a79c02d3889fff62aadedc74874ec4d,f798141d30d284a7471c1c4c5f8f2edb89dfad34,b3adeaaea9bf9b54a47692c686784f36d7251033
4b84de6a72df0b82b9217cb336190203b263055a,867786c9539272bbd6be20a4614bbd5fbd0a0a94,87615458481ea121410a7951a387694af6a65a7b
2de0be96334891fdf07966fec883e1b9c612fcdf,fb0a0cb65c41e07549813b86cc6b9afb3d1c7430,a668814613173d9a682271b4c5a85a5137c83ce3
cfff96f44ce391ecd5cf16bb7c8dec76142cd1b0,ff34fb16455ed861cd81137997c187b4906e7011,b88d12c7b9e35798bac97672a92ed9bda401696e
f3541984ee18971ee2bdc8d8580653828d85fdba,4faea3a1869969c91c3a17f891f88a24fa1219f3,352489c397080a5acab70ec57836256de380dfb0
fab0cf953719bd6a772552ee374c77968cffe928,cdd80c131d437af8bb8a435e4b095a34bb21c2cf,43d66a4ac8ce315f8d1bc523c9fa529344947a99
fbb8e161faf81e8ed65524beafc204c74eebafb2,dc4637862ff15560c16e5438618e8daf125b627a,17d583a419b65457783dc7b816297b69309157f0
7b65f85a0b9c398dea2dd5bac7cd1b6140480950,aefc1be555590a7dd6aef6a9b625f7ace096651b,ac6f74a6a24bfb0cd007bf8745728dbd506c5a04
887de9f27c255dfcba30973cd24b1c98431d6b05,631ec771578492fefe448d4f861283f04f1a5521,9d3b105fab0d6d66192678520c14c20d9d638357
f7d14128b53ad2147e50042d1d148e4ae9de62b3,1ba8255af07aa5e3c5a75d487c47b7e97d4a2016,313790502da4de79b8c7b67c1d5e5df59025e923
ad7c3d9a098dd5d354390c3497e95681b2ee0f73,cc14f066771b4f7814b8295a2f85e037fc14f6bf,18b8b9c566f597015de7e0c3a03ac98cedc2a6fb
154ada9e86cd4b6b42857d97437caedbd4d0104e,721e89fafde6662c200a5efc3d67bc5480e4386e,2ab7cceeaae9b79a984bf6b8041f70c207511753
f26735fc778f7f1a9ce234c93f1fad5002fa04f2,a88288bab3803476bfa3e54c432f8cc3ed264b0f,b4139720e60b86e64780e535c74176676ee2b67f
f72f021da42839f838f8161a5d186becd1f21368,324deca817a97a8513ffe60bda659485b739a734,66e682dfdd0d61ff6ed172e40df4fbaa8d10e0d8
f9ddc3ac66d587eb8547bc09d33e855db16b033e,86360152650fffd6720af949cd52579a735badd2,6878ffbf041008c0300f263ec901ae645ec0414d
222f981dd17189cc46d30d248c13d9e50e128797,15d1d00c34f1cd0b913afb83bbd88486a6ca8053,7e8a50452b06928db65533720819a259caa877ef
075057f929f9a197b4c3abca520edcd61315ed6a,2186846ab1d273fdab3ad47a053db8bf3cfb717e,e4b717c81766d4ee4b614e4627887045a781d771
764227193a358e8e5ab83e5a141631a8abfde89a,c75953c12bf0ce476422c8b9ab4964de607bf97b,17e75004c5fac061abeecb38bd55f136292faba3
9e11f8122f49356bf6f3429c67052d95ddc0fef0,580e9e516970c6788ec04994e130f3192d5f8faf,004ac4d1f4e0d67c811fdc51d3070c0203b0c774
b267f6fcb3f3e7d7f2e99b10dce495d510863b27,4873ec73a796b55e7002e8b5971189dd9ce570da,97eb32e6fd2216cb5e284329b4eb9758720b8a16
9d41a435c2c9524623f4c6002cfcd33f3c0822d4,e200fde888ff418fd79566e42a0b84c9cd2740d9,120825d1d6976806b5e7ab02e77ef1455598b03c
9a01bcf3dc185dac2d310d178b62d5e48e608529,5d0e1dbe5a148350b5aa041c511a5115a04a5ae0,8bc2326b772fb85d3fbd297582a04d9008c34d60
82346563c118fa536cdc0b5472be1f2be0e74c6f,ac36a214bff45a88a2018584105934233a524b60,b1ee6f7fdc9bcaa9e249d6e7403e3ee2b5bdc113
1002a7c5901cdb185711fc197b4b0c6cee1de91d,75e5afd45b8ad8fae83c2931a7d04e66de893f7f,c69090446ae513ade58e3c803a3f1d6092b8e6aa
e28fca97299911fbf77142d001c0b905f4337711,0a34a090e0f6676bae0ed2afb9570969b37a461b,de3a479be3a56a2bcb4f43c778d735b4b95e4d99
1ad31dd32d342622dc7b63a28facc251a58ce5e3,7157bac9fddade13cb9325499b12202009d0f7d5,0881e4fd9827791a508b5ad985e6f8def25f496a
85d19af48c004817142f0542782741e0d4a46c3a,213d2905dfc44bdbb83e475efc04aa5de59c5f59,5801a7431c7f923681ab48ad4f29332ba2fd4d9e
1f073818bad405b90da52ca942da5f70db6a1ec4,8a36e63a56821d703a543085ddd8b5de42cdca68,92d5e613b5bc2a33c97153c0a736848b10eb6a37
5ec489c018f207fa13ef58ef1f86a07bfd93fae7,c2c7ac634a3e201575638f6e4452ccc0b1afb28a,11b601d44cfbcb80f32c6d83c90e678dbabcf711
31cb670b2013c0128101c3b4556891b48b897386,6f222e276ed1cba81b3a1cfd328b859eb00d2556,e81920af7bb3c8ec19ab284707c357187a8250ec
15fe9f104786ec06addb735eaa3e4aba863ebcf2,eaa7d95a9d1994bff8d476b57ae61e93cb663760,26e2759c272b992021388c1cf0685194f6d45aa3
6e777d89671eb2d303c33a31645b9529e6848d38,04846345b2c8b7d805869582e9f3b6f96fa124ca,832c3d89c83841bbf21cea783064b14c6a5ad6d4
8cc58423174fd272b2890011b5315b2d30f294db,4dcdaa259a4396078bc00bbe98b7fe2853a4b415,a45f71d0dcf5b8c9605c20f63fa2bbe62ad6c0ce
6a3971c9b631c0e8a0f214d27125278dbd6aa6bd,eee67af68444314bc1668862a77548d1c8882628,5ec101d578ec46059cf5a619e3b30ad85d0be7eb
00db7646c8b9dee96948af82c76d2aba55a13089,04baeb2bcf31735ca563e3806e7c6d4c3fecf4c3,e5a923eb7abe7a6dc063a1c297381d573418be66
d1d3d7cd089fdf840bae5269fa4655f6c8054884,ac18c0090a4b12f532378b3860a85d57c3444fbd,ea2ae3b8f0a677dbda1288f158eab2e57379b0f4
27fbf8c91e97f06d972c43315f2fa9c2fb6d2b88,453bfcd37094c40c7baafdfe477eaa137a3eaa43,3208929e176a2e6664f803ccb6db0fa03b22c246
03a0e6e82f4c6616fe6215e8a241b9aba7b00c23,c73c98d995bb251f0d9b504eb638e6f2d7b5deb2,03b147eef8abda8567224e3c91f4c17afef584ec
46c354ae583e0e983ffa0bca2d46402108c6cc9e,d4c9e1f26047eaf2b6a6f339db190d82a93f9975,836a932b9ab9a993bf4c88db06d08e037bec2453
3c6c403b7b8b289f64fbb909539e6b4c71e75319,5aa3da26f5ed043a0eb93cf4b7bcb9e09b4196d7,6e25a014e636af31e6985d017fa63455312b9a98
f30f62231f1231664b155cbff22f37ad60ad78b5,f4ded560cca46d7230e612511bf63349ba4ab3a1,1041bc5a17a99b5584d67b523442429d5febe323
250c0750a2ab541cb22a57490ef1c2dab64238f8,de7cb543e625d9b911dafb6bb2cb003ba2d55449,47d6699a2ee7a439b7bf02c4b53ed1f3638b2d99
f4e27dcfb655923b02424008658622cbc36f48ba,fd0515344cd7b29f9b3cded698d44cbea3e30ebc,292574f3fc2bd068c68d7fba9425954ca3fa6eb0
3eb7a130885beda849b90b73e4cb54cc3c92c711,55e6ffb428b5990d330179053f2547e5812e5a5a,2c00016fdde15638a0737f51c75582409eea4e12
867ed59459168b90f10f42cb7d9b2450347fe61c,b36597c76ae267ba6b245209b1bd3e14e6eaff5e,6879a16cc33d649b0084668fb59e9775f2f9d966
4407670d15bd4110dc758305a4d74923a3710f89,d5ce344b67a811e9360b47ee0f02cbeeebd44953,2dcb31efcea8273af940376a91f35bf8639bc722
1cbdc9cc9aadd23470954741b89771f417014e35,1e38369d06eea6c5e8c7fbda743b6af27d147a62,03778f9b7f74d53acba2c9368931202b0b543e08
28e2fae09d4580c6df1cf1a3f726c19fbe8cdc91,9a7e9771677176ee2e84883424ce146a95a4f095,b2177fb50e628d3a1fccde2245428b431940ca4b
965f759c0df8ec5383a0f0f6fad9b5203d86d99a,cc315e0ac7d0022197a7b49f4473ab219c3aa6b7,23956e9f10e8bad74b4521ae2db58b2d75b9d6d6
acef1e22d36eb351e2d9e7bf7b3c8929a894d118,c2dc342c556e5fd9a6db27b7de8f12e193b0fbb0,71fcb74e956c0022724c7428c171146994bdf2ef
1edf99c324592b9d220984f35b754ccb8b52eff9,451bb09e8f570a00db9949f7b6e3ed81652a2ec8,8ef63723407a4467752d2c482d92cae4ec67100f
aea85fcd66002e9c80162781f6d9b3458f4c5a75,243300c85fb465f5cc250bc3574667ba75dd8b5f,9337b2a3acf2ffdc6a43077a4902e71e7f4f616f
02df6283998d2b90f4f4ab94c8068f24f3159031,cdf1f710e58de512d1e3504b5cd61b66cfebc49b,60c23daa91f9ed7154c8566e86113aee573e53f7
93eef547ae2ef3996a290ad16ce73d783f339977,e159c9296703c2ae67c48efbab431db049467474,d34168742e56e3b6e9f38ac2961eec23333f0317
c8f592d26055bf2ad05afb611fc5bef0522a732e,b49aa071ca8e4d2396afee7a85cdf34695a664d8,277d98431c0aa3a72664b639fcc02124bf870a14
27b4f3df60156766fee4f681dac5f3d784de856f,ddf26cb3d2aa757a578531e5f59ba2bef189fdbf,8e74a04dc5fb758057bf1cc3d856d7596123e698
c06744b62b251146be8ecab4bfb42cc5fcbbc169,b5abefe03ed357ffdc0e7c69f76827899c9fb87f,d1521e80616f2f52b6c8fa6a1db55f872e3e763c
f8b17c410b1e347f39de7d988b5f95336b73a1a4,2f21f5ae93a99d573bbfca779593100b70db1f5a,d7fe9914a79453141c419fdfa3e9bac379868fcc
7f8f733963df9d4afa363f206ee71aa50f619cf7,2c54477807cf33e8ac18cecb469969a65bdf6797,288c7e3c9eeea0b079dafe0f73c98c23426eb968
1a4fdc7313a85c25efdf0279a422dbe26fecd34d,660cfc49e86ae4b141544a526281883538397a49,16bdee8fcb093dee4c57d49bea4b6848892c0b5f
2b023c62c5bd7877c890a7701b38fd3275d0af93,f316121d53dcb540390ca8fcda64a67e53cf0f17,60bd9c5ba094da176c97adbe10f61d4ec878ec2e
de180d765636fe651f86a239e98b0ebb5538041f,d3e18ccb5eef80f35ccaab8f8551cdbc7acd9f7d,2ff18e48a0dbc1fa9ba54c0ce9f0bf670ddc7d80
bf1eae7bd67e6fb7d3c29733068083f66f4a8762,15141124f4462ec01e052f93aac2ae4c679b5c92,449cc8f152991ccd697dd7eb52dec1e03fa5d478
2c372071fd140265dafc10645cabda2080c57e2e,e83d214e984bd5e8eb4f3d64fe7c78a3dc0f38a8,9f42931eeb56a4073864ecb6a1d0d45d11cfb53f
aa75d39ab5e07a783f97247d544f774a67151579,0904ea0c3fc4935d25173ed734e7ac16ed283283,0bdc1fdea4812db1a728171fe9148a5fe95d2209
6902539bd8fae39fe3a2426ff5d6bd824c31dc55,08b61997ca9e025df4355079a3b58a1db189d736,b55c74070211d90ee90c925b1f6576b07e9c95bd
9d6e34ffc8e4776b8bdf83c522b7c10c621be7bd,ff4e1345ffa0adb4d28fb269aee7b1dc138528fd,74e83e9d8ba5be9c594849ce8ef3caab36ea0700
4de5195a9ac9a3dd0e90af7f93c717a3c6b10cd1,37f1d085104ede10a8118595679d8fce7db34c94,dfc485c4f44ff22cab66875a50e9a7e4178f8391
d52aaf63eba440f2d8c8c13ce38c76e88a7f4e7e,85f14ad3577848238a217654db0fe5087bc6dc8e,78dca42b0e30644e0514a9abc0ca62e92933dbe2
ea4950ee910bf3508bdc57117e601682571faf63,0e72cc94f6669825ac24d96cec22cadf16207041,a4e520180f0ab00ea3d030a151081c2598c9d39e
df6baa888b23c4b43c8d083b68eeff8eedb1983a,882ab946ed9db7e860e6eedc3b1659fa1bd276ab,61da70bb72ebfc5b119b836c6b74cb763740a4cf
1fb7603f615884cb678045ae687636fe27a00da1,aa8fdabe1f0ed4157fef8c25c4a4ef688877a843,112f8a41add94fb12a75636a4b45a155725d9b1e
4ced513363c3a2a387b144a2b5639cc331957b02,1c370ccde1767aadb4d89aa9eb48b4ba68a39733,7f53d04ffdc6b44800ac1caf9276116754975ef1
eec51afadd209e60c37699ad2cda4b628a6e3060,bb92fbafa061f028aded7d3e3a22149b87af31a1,7c195d2062b07943d9bf363702d985ab84fc9d2f
aa745e031988c17c151427e3f61034b348baac48,9f8417ba522dddcbf40268f500d7cb3eaec440de,f3e140fc50d30b617fb1bab28b7e20e7eac13cd3
322d04cdee3e455656296bd2c04357175f41d9d1,e124b07e868dc1a1441aae5306d5d8cadd1e375d,69fcacc9487aac44b1bc9b5cc9aef2d219122369
64da07da48c3206567b97cbd03872a73206afd54,c20b51a80679c899df57fa933ec3d4d32d939520,fa12dfa7b5fc86551e7bbbbccd64300c780a7e96
d72170f9a33cc70bff2748a07978964d28526d38,4a6358bfc1c2433ca4a17ff95cec2844b51f7e3e,875bb32e0be3e0557ba3d2a1b1bafc12d3c5e197
58bca9cce18f26cd9c7c4a7dadae39995621a53b,284aca734872cdc6c60e9d5c3b94047907ec81fe,1e4dc56155d14f7531da51fad19b8986bb669b1d
7e0c21fa5fffcbf548f70ca3d59e436ff3d6a045,1bf58c2a55dfb16d6b000ff62812eae3002614c7,af20b064ed643cd726bea2d5b5a3cc03282e28d0
65047cecdb6a57fff0ff84673bd5e70a88be55d0,3463d469bf0d6c8da57c9157e2592d5b1cb59598,e47f44234c68c167b7a6123e56d74a1097ac1869
bb51a2134a6d5b19ca3300a0b7f262feb7b0c834,0685319be877914bf420f3a47d21dfbb4d8a4ff2,963fe73d195362fc615e4a8ee08b0534ebb43851
399552d3509eafa399565e66ab36f3a89fd4665e,e718cb985ebb6cb444455abc48ac674cd3fd44a5,36d21d2d81dce53761c035f1fd68b59d9dd04424
549bc49c4ae33ae3075dc5d2a8bb452e92ef4cf3,ab9fa2012b7edc18d637f63cd2cd55c4a78cc0a5,c9fcc68ec19dcebaf16dedb4cb0d3d3c69bfe726
e4f53a7e4100a9671745a7e5ad1f8ac20d49cf5d,be371d901c436215490ea3a16c4f3fbe90f85b17,f3a660212de69847743829a0cac380bf3450a61f
8e62bf649ee02a9f4486fd2e9340962449a1429e,cf153b0854ebc825c54303fdf943fe42382fb612,c2684c0dc35bee9fb91c408187c1fe344af147ab
00c6d530b56e7a1c52ef4a07d130e6e234825bea,ad8b2eaf8a2225dfa1059870c0e601e89ab8e6eb,a8b387a166210f5ca575c65981d4706ea51d7025
f284a6eda9e33a6617b958e476e92b4d09e64fcb,a3920d535629614e9d03ec76d143d7d0a8f34167,99d3651da964ea05c6baf3929c8f9fe70c8c95d8
23af096ef6c0fa3d0f74666c56b8b54c3b843354,56c58b517d9290198f50e8efa58290a5724ebc0b,637976e83fc692df21a49930461d41137145d1c4
f4898588551c5c96111e2a3d8c9dd0d716f33c08,7a1903cc8f084acdd210300c16d39641ff468924,0c2494bec82fe3595b77efa1b55ca38a7c853269
5e6ec33a59602b4fb5ecfc9ce6d1ba9ee5d0e03b,7dff106d14e7f9800853e63b4267dfba8f01a91b,3b0168ae162ff2b7a57aeb9114ad6beb42c8b02b
d0d07dc3bf21ab5cbe90f242202556f942233f95,9376f5a43ab500b5577ad71bc9b5b2fce4afcbc7,080d8c28f7a9725d93943ed6e4014ea729627046
3f19bd693ff42aacf053098d507cab586a642195,099134b54554c0c4ed5b871f23952dd40647393d,8bbc7d5df3d76fa56b90b07ea762ccea1b10a686
91a622328105fddad75b9a1794450c9ccda65d49,044133fc87e120b53f7091d4dcba965028b2ad58,6fc930a0fc30a339624476fe1f0f79a261632387
74d145bb16994e08bb5255a15f4d0d547b81c0ec,dc547b1426bcf6f2a15ae2eb384a20c41f9365f5,072934081799accd4acfc667b7046e13a0a54734
6d0ce1c4b60c142db8d968ea82200784c512de3c,703941dde56a38672779439d3aa3cfe93a6c3426,8fa62752d4e8a21b569cdde4644f4d1b006e6d1e
297f468cd6677a0d16b78c36ae34df5f33f1f63e,0df460f56e6b48b294ee3b0a476587c066535e0e,985c4fafeba5fb46477a227e90868ac70263bb77
8eefb37b42ba8edf21d2473c44cfabb25bf258ac,8badcbdd0d77bc2393f23e51e44356ff2b13b3dd,225bc70e7e5592b0c33f219ccde334c442d62be9
d51213d26ada2eddcae37b82be384355361a554c,52cf07d96831bf8def50a45521582e75256f2dda,ff6a58ff89a0334a64329a29db000a0dbf91d9df
17c0291e86d90a27181304b8adb1d51d79c5b618,bf5b85e5e539afd6c964afe225614d0c90d84ac4,438bba76b9d154b8d963b54f8d67721c39252009
dfaee4f04b1c2ec66e01978b3d2377685f366354,3baddff71e3e04ee92cb792b904c9b9f5a4e4043,13f1fb60b4cc7ee884a00de755d983ae0790bb6e
f80bd9b034171030819d9ff7efb0f45de375c1e4,b8e6610617d5067d8010610b50878c64771296a4,075966f142ca9ccc05cb5db2291a565832c141ba
5b06af888693055fb9d52146b70c356d28d06389,ff31d95a694c2c9bfd4f788ccc280c1d6593e527,7966b29b2f3a2e98dec9a097a3da18be690584b2
f674ed0324fa2af19d0c3a896ec06e33a1db024a,3d049a33096ee1906af356dad7f8830c95d895d2,408fc819b399947025669f134ff779bd78c5602c
8369f035bf5bae7a9d6af7902e514722f89a55bd,3aa0d92c792b4ecb32eb2fc867b770a3160fa9eb,55d4ffa9de2999f1f8f36b7ead07d53ce281b4d4
c2c4048e928ac7e6bbb806c30fae4a35221b03bb,dbb0b24de8b842780b547985e52c434d5b8a2d71,9d425ff4ca3d855ba303b815a93bfff98fe153a8
92beecb6fe00ff0af31bb52bdafefe6cc6c2b255,58a56e38d108e6ec129ccf1ffe1bca4822dc74a6,12843498d1747a87b7e0c0bd8d07e5e861b92140
e80b1d9e70ec37dea35becb348a1052c55301677,ac36eec71ae5a5c654ab9f4e8ac366005179d97e,a36caf90435ae9ebdf620d75efffcbea057c0e07
3e16ad9d6c3cf176706ea2cabdb2d66cfd79879d,1c61c30cd23c625aabb759d0080ecf6965a3fe22,38a059f0398a3f0594300f1a39a222c45c3821bd
312f1436b1fbf5445bd97935be451272ff4fc80f,629b2a89517222e73f472b78a365f262741609c1,0bf1af08c4262d560977260b9f12029fbed5605f
7ad4694e4bd4f2b369b0599b880ad0b9b3031aca,519701960c0893ce801572c9604a91cb8912940f,18f364a497a75c718537ba3157ee36735ff933fe
eda7d535bd5d232c91f8c23fedfb26c8e17c98e7,60bb8600a1248ab490f5b5344e781967ba423bf7,37e934ffbd0864c0893f250e14c45130f11edb1b
f8d33dc1885af3d8eed394bac11f86455ae491a3,b47d2bd2c206114dbf07007ad6fce88f208015d4,1add3490c326215fb09024fa987c80435c1c1b6c
0d36b05df5d7e045c106817d54e9d4df0ea6af7f,691fb2c9fe7fda02868baddb8c0ddfe730df6287,3ae370b1908f4be08df639ed6069f6e34fad2c26
2e48a13bfbea0ec59613140edb9d271148edbb2f,6ec460c619cb339eefb54d4b83a456882a2047a3,81e8982dd4d8d0d19899e55e511605be8174f926
f7050ef41ab48de9884816ddda2c2b1f713fe200,49fbe53cf36a122eeb6526e7c7f9effd069c1f62,e46b426ca13519093fabc509cc2ce2adb507300c
47066f0ce7e8dc21393d07516de90e094610e52b,954123deb3b2d134860fc9dcd4424a3abca23e64,c8d18f5ac64f8c42447d5596eb3eb63fac58ac0e
b425c97fce8bee5326e55e28151ddaa6e8d65d54,d5596ef21da4ce337f95cd8a3e4df272a378652f,c496b609d18b20208fb0ca54f0b9137fe413f5db
359ff64afdf1eb6b134f69f7caa5c60d79a91222,091b0fde0ca1d8ab1aa2e7904f3a95cbfec60431,53928dc0edd2818dcf55b9cdda7eca3bf9aa73b1
e0555c307f44c89b2d70abe11cf955c8ff407d1e,05d680902e71ce9a482384009bb3aaaed9f231ae,82e16f02ca05cf1e64b877c92918321bf14da188
3870c4791c18ae55c748e04b362cfc020de424de,c3bafd3a8d454bc3f335a117e07f37afe4e41d26,a17ad61240ee2a0c6ab6c3b384437a0d1836fb52
3d374727dd2e635beb37ed5de8a8f5b9ca44228c,78244d89dc7bcafd58ff04c29e7d6f1ddbb0777c,c3a0e0c6d2e401496bed2b9a377ad2d949e76c3c
55b99cad045514328e9284a6944b5fb2978ff053,5515b62c9e803da400a307cb68dc72e8503c37a8,da042f77009d70a65e01126fae4216392a1fa18b
51d8ec90a7556a5a641ad5250ed26ece45456919,3abee173f4c473633fb4e9e1875ea18fbac71128,c06a020c9cd174fd641da587b10283ef56329d04
eadcaa5dfc55dab3ed673f4d104fd16c0472bc51,245e0f7cfee4e11d8e9eb02bd409e551f7fe5dc3,10273e54dd198984719a932ced572c056ef464f7
d2247f6539e5cea8e6b31a3a4da63b307169a66c,eb67d87dec24d79a68f523e0a2e3683d2ed59137,27125b760ec7d07abfbd47eda7814ffdfa141ece
f75e6d8a4899ab053ffb33a727e54d0d0de04ed7,257ef24a1e9647c25b6607f3889251d55e4006f6,fc960879dee7f26270e4baf2bee8dacf4c6f9b33
e440bf0e00d4d344b855693664da99ed9221e3aa,bf7961a9016220e8f4ebf9a4b2b62a39863cdc54,b64edc0170da3fa6a366f9564c95b985ea566613
1635d04b7bee15f943952680129098c58d295348,a82a587a1b750cf5fd2a409c9f1a942e78d49c64,e5d2c1a9803158671d8e7e2e32b27a3ed7ad2fbd
157e8792c58f6bb207d766c38c8e30dd93f25975,98eab07abd080e37907c99ef0934a62a54574df3,a0543f7f9bb7702d795e4facdd4da7dc4d3efbe7
24226ef4af57e9fd94deea2fdda3d23913054da1,f2ee1dae523eb5b505aa1f9aaf78fa2a7cf5ea8b,2a733aa751453b8cb285026da61e716488d7b03f
f0b22a1569e315faa4954c7afc00450a35dbf2c8,14b34e4f556dc4e473c69569569a8e130592fa40,edb555f34f166984adda0c40a82420f914b2214b
e94fb2edc3aa38c27a17dfebf42cec19eb6345ef,6380df9b42d29b7db0301f50fa948f90f78521ca,c44095733c36ca1505caea5d389a35c0ebc0476c
e154b9933fc030f4f4e894c48c91b026f688f8c0,aef337e67c4960aad357391e17a09dadfb1708e6,d41579fb2b8c8a5c35d280065944a2fa4aee3d7a
b0deefec4530dad64851d3aec5f1d55b003049fa,5633d5e8aac2d3da9cad03f29a803371f6a98244,33b4772eab459420afb5788ee18e4f4c5d21efc7
1d34f0f139616b1336712ff0e25ce8e8e929e4a1,9d67adcbb6e2c71709eb2e40ee69050c0eef28b6,6f59167c644a4a4a4090e8a1ecbfc5183816b00f
84e1be805c5888ff85e8c564d8e4e89759da0ac8,68d39628891463f399871e60c4432cd06ad034f8,5b3240c8f1cf913530ca5cadb6274d52f44255c0
c06a931d5b7366d766fc9e5f2797ed557e9a95fd,47d96efe2913d5dcf8064da8697aae359713c3dd,152208c0be1952cebbb1636d86f89f277df3b8c8
f68804e9cdc1a0489145ddd82b4a7e8ea9713b09,ebb199b9d465a72c1784c5cfcb4f07b4d324f38c,ea11517d27fa00f40b626e47213f0caa8832d155
d5dcf5cd7ac8b28c6079aa2bd7358f40bf6f3e20,1d474f822e015968b3a0a5b592a454cad726ffc4,9c7cb3dbd7c02c54cb0da8f14f5c05743903742e
76406dbc36564d820b900665579540f4d5b1ff6a,7ad8f94ec4ca74e2fc30ac8278ed0c0accb090ab,1014e530813f01757a6ee4b4b16518fe2a7206e1
ef1ba48cc43b53d103b09b23906531f67d2f7812,4c0dac48649acc8b85729a7b6689661cd786d781,7444733f5d8e946afc88555d0073f32ba7f5ad5a
6b1c5861afbf20bac0a2462b7340166fa7b64142,e35e5ad34914c11ae2c76a7c2f45334cde844503,6d900039c4e731978286ac35747a7cd7accd03cc
233d883731ca365b96d9ba4c1e54fa452accab99,e4e1ea586c5ce61a5862f27c19fe787418189ee4,40b7af10257e530132327cf4d3d90f911fbc5269
9cf99b818d67babe783f4d9c48f87a46d8fc87c3,96f2e683e7b4e27d7e12473ea3960ba800204a80,75eaca8ab4880c58ecf5643ea05c4630e2ad1892
ffa1b24f7e9bc8c7292367cf1a58c08f61740c7c,ab2db33b4cb91e2897263feecce167f40a3ee391,aa1bbb591c1aab4b1731ecd3e85039719899ac6a
f9d54b7cb746a3567a67493940252cf9da000f76,9dcf85a8efe7d502d9095949b17fe0ec34f8a337,4a050536501595ee343b8581c3278e7a22786497
6ac2957187119df2b0e6295fd99faa6de10abb2a,74eb7b5050dc2dd172e2804b9a1cae3505799a02,45fc515400db981d1bc9f9bf94435b23943f9752
3eece73a89b8433cdb9400ce426b87857e95d456,6a88f2fc28bef9aefa6bf0ed3cef4693273ef7fa,2294472ac7fc458043166f8972806ace349de4e8
fcd9625d6b2cec2f9886a02fa1df9e0319ce71a8,d8997405c55b3454df147adae413ff263f50d1eb,64866179a980ed3070ff888603b9e44347a90612
834bbc4c7bd835b600210041962f51dd5b9f70fe,912f8e8817dd15d27d7dddffcc471737c23050ef,c69f1a20f498f1e8b5db8a59e83c3e5c53ec95fa
078ff5c2268c00a62407df7f753aa524c3752507,c3e2285c45a80f3683daaa9b98863b77f6580442,5cd4e5a016fda0f446fe775e6b0de4a4a08c5b7d
bb80851d656c15fb20ddc4626ee230f8098ee074,787899b9216cf4e13cc1f584e803b2081baa8987,9c1c2acd64559533d3c01ff58a1c0c2938f8f25c
c4dd3b661a6c7a91b75e4f6d834702092dad6a40,48271b880cba5d4479fc27890f3b4bb4bf69e60c,07a9767b630b72b0b3f8bb63c7241f395cb50142
5207d0ee25a8bb2f37088e654b25dae2a5ade454,1a0ba60de6d14f019d6b3fec2126037047bf7211,fdfe06382a17e6daa86523b886dd03e013853146
3af6a9826347573ff8a33b50748e48541e41a1e9,329ec242cf6c5391861c7f6ba2f65990fe1a4669,f4251bc11a21d64cf80df90db853c8df12558b73
b0cbff646399f64905cf29fdb82857a1856adf56,f8c84dd1fd36d1647cca55943c640964579d13d9,7b88d1127ff9e4d011b4ad4cab8dac70e190811f
99d88b91a9ec759fca2b345d7c38362ed1c285ee,ff87df758174e4f7be7303fb40f03895beaf270b,5ca2356638e7c3a144d832668a06e8dbe035993c
ece9c98362c68a9eee6527153e8c36c5cdf424cb,82957ec5a382eb151a7fcde2bed5f5ca041b887c,8e13adad4c6ad7e1b5a3a2f6358f0ae564eef30b
8192bf1b3373484e96c6a31c368b9dfbdddddbbc,fbb2e63fea518aa03f018f42589c14d8db8ed78f,a33256c1fbd5896ef346b95fb95ef966361afd92
91229dcee9f6b783f7268da54aec3fe416735657,c47d6d7af0ee2eedcf79aa76b91156ed4845e48b,6854f171d1ab1e7bbe3916d29b0e379e21e75f4e
f982317ebd3fbbd180f354b72dad502d8e5f694b,b7e2b751cf1683e7f4f93b1b13ec706a7b7bb3ff,8ddcb34e60d63a85c93a845c968d5bfb89816b97
0a3d980f7e883862dec13db1745e75646c5f6f09,9758bec36c75cdde8f63d4d2f822c6fe0ce5cf3a,9730a50a5badf6803d2f7412d98cc227240e70c8
ae71ab728462e24367107623c19c4ba6aaaf8716,c890a126fe2ce05614b0bbff10b8046146824d86,792b629aa6e33ed5f9dc8bd6427bd87aa9c2606d
7f07c9f94d9e963f5bd457ea667178ec0b73c1e3,84bf87b20dbacb2db9bc8770043968fe1d4e35d9,d97929e9cf8db0b23a936830ec3e4e64206b6813
9901a11d223ff5407a9d243a343e0811b1e41bf4,af17e9460b17f9e0cebf469fde8c221f8b501768,8b06b43c1aad9b68467844ca51acbb017d0650f4
0b63068ad2b7270cd9abcdb79026f77956303d7d,cbec395907c9c3e8871c2ef08f6fe1fa57e4e44d,06b229e1c33157af5d90c1596dd62b675ae34bc8
ec4556e03d6213debed73786cfa6e9f7cfdcd801,a7fa31aa10ffd22de56175d14a6321fdcad160b5,6230de31bb7507f9a4eb6694f283f769fe0eae9a
482698e566a62166d5cbb129409ba2d4cba8ea86,0cc91a50c782509d8fac0ed8f977f60a727fb387,0530a2f6e718ed0178d417551b0d4235506bd190
28fdba2c08f6fdee34557b1419e310e70b864a41,9c6bdcfbb793f7557fc0339c251a727e8f14b701,d8d472cf68aaa59c255456d23a5698d70858c45f
96fcd2e760881dff0086fa86eb208e30f0d47fb2,b2615a9ba11f613a7920efd59b2199cfbc4f4017,8e5a54c92e47f1257e804bab50b5e045917870d8
4f3a21eeecdcd63d878b4d010796a2bba43bb380,0189276a12c2784225e4d97baacb0a7bea6aac6c,19d5e4361575564889b0d4230a10fd84973c43e9
28d248c9d41e47fff2237448b7c30d1096d7908d,6e4997265ca10e315fa140d645b9166c64c95b7b,57dc416d9608f12749c1a50f7b058b0f62fd2c10
e60a367f1b325b10428f3c7a274a4b6d24d60ffe,7da0284bfce4513392431f80b2b4ea35e29c0011,19ce665b3d95ffd9a59577f980819665b32aa8fc
a16b34d951e1b1ae145419cea7bc6c8c6682f794,92520c423e7d6a78f7f657ddae930b6abb404794,4f3271500a84ec359824d38ec2a0f1da564dc4d3
c0d75c1c69f804e924f79271a188a2f5bc590397,1a9678f4c4fd4dc138cdfb5e1e94dee81877ce97,d49453edbadd3242cb7a1077d5d5390aeb7573ed
8d238cfaa17fdc886d8465f3d2416243400f30bc,aeca33e80ad2db7c2c885c624b534c0b19aaef21,b3680eb5bda0d635435859166223dcfae6d4690c
6784bcb033971a2f6250e9d11cf17fd30e8298e3,7aa94f6191bb586ebf69cd93e13c3bebdf10001e,a7232669fff29a5a4054bb64ea000f402d31bc45
674c3f04e042493b93c3b89990bc321b20df1287,348be7657df8af9c28ad0230bd81e85ebb42dc2c,3707cb4b1ec8931596f2e0c33e820358bbf0a085
a0e96fd55111b9f4512653f9f782b43a8e7b479d,a849e51a3c698f59fe89facb9b161b2d8d91bfdb,7f96a26de03564f81ba124211601a0b969243b97
8c98be824df6e28fad2a957e4908cf96be65d400,7040587cc3a8be4e692a4eb85ebf0a73eaff2b52,2bd7877ec00e5de5cb954ce87403c604aad204b4
1efeb5851ada4f52ab63cda11fc1862198744a63,bb8c3fd153083180e5f527eaa95ec5a70f0b08fd,817ef6949ae0334c4cb2ffd3a1251b4f16439bee
0d592e8d1a3c232754f0de04a8803ed0dfc1b8a8,67284c7452b0d81090c90b80233320ad6759c6b2,f0298f63d0a2442d867f9565155ac77ead27541c
a0a8a6911a1d0f9e17fbd6c7f4a54bcdb1a9adca,0ab69ea0ad067a2114eb1e5142afc99cf5f5d965,c82aae59a11fdfde4b5cf400392450312126e869
324032941a3b4171b59c99a1663c2a6407dbeec0,9597ae1f039493d4984f35fcb3b97e59ade2d06f,53a4e6c513bf1a7e3d98e869027a92041b2b40ee
88a0d4d64bc49b3c18150773506a11a487467132,6d7d567a25a28dccb3f5603644a4fccbb9f1bacf,b90ec52a0eb7042ce95d12843c246c80a05caa4f
eb722c8294f91f274806673ee4941fd40334890a,00af340febfa4f8b38630d5818f3003d8e74d4dc,2e2f2eb78467fd70d59196033a7197e9428f3992
aeff5b3577af8d13b99a78e0021306a2c03aacf5,9a0107a19dee80cf629e147e6ccf70ac5843500b,d6fdb384590bf8306e16b990dac52ca86f90deab
a2b720da564edba0ab08efd53eba8a6aa126c0c5,2a7ca7ddc721fee3a36a0af405a47fdad1449af0,04b059268bb291cb1b5471481bacf5aa93a756eb
25b27281375284e07b7b9047d7cfcb14f2805555,fadac6a9a4169b7354b908e7ac7eb11b17927e68,9af9f140a52981f0d88b7d26bdcf2f915c95ad89
9858d9c5e67ffc9580feda5de1789b8e7f6d1b2f,80f87edffd5b383a3530571bebdf15899c7c1724,ecf5e515791cf5b1c7d22b89dc41477661ea19dc
76dd6ff6e784410972d33fdd3aa77d0252a46ea5,a1b252538fc592ad908f881b5b7aa63bc152696e,2a897f5b6b36e4817a73b18bc9e2d3c346befd30
295e2d4dff621a17c042f1f48474b140f7bfb1d4,518db35eb075e4bbee9fd9f55324b96d292abe4b,072be7b0f7dd383df9653c900080513e12a38afc
1d92cc43bb5a80894d732202acd658d0add06c70,b8fc193b0ce6c478d9d7ea0fca2486e3817fea55,75acaad1219d06bb3821c4d964dbd6bc17241ea9
213f84ad6ce093b49829e9411b597b626fb113b8,2a990b8167e0da36ce24a4e90263ac8e6cb47aae,da468719df559b3d0e0e0561fc8537de10a5ce2e
4f05523db92992b8fd91fc7d7620c5ae267b08bc,cc92af8423a84a63ca73688c50f211869af3be97,01691e9ecbe3a4cccd531799227886d3d1ac92b1
2ec8145ec543c0babf24ecd8de10d0114a91dca0,11c17a87de784e7cd6dd4e412336a6d2094244d4,2bcd2a4a937cb2c8eb5e2e090e03816e934b8549
b713c7380bbd705f224c1bc1ad1e26eb8f5694e4,3a668d9b7c1720851d9980e132e0201d02b6a1aa,b03eefd5d0bc17a5bcd03eb7850280509aa17b0b
6db164c9936938755328022913d2985b1d3eec66,26170815b410639e9a1b233a854884f913d47068,0fd7a5cb1fb05d0ee521c98cdcff695e95194b79
16a21eea87c564e9bd99c95eefb5980c9b230cfa,053c42da3376a83975d1b45b78587f466d28fcba,6190258f5d0c9b9992e8346bffbc8c18070f976b
33afecd117abbd8c48433ff6396bc3b7419cda09,98d3473a1a699919fa8e27f616cb2e2e660c2430,c0c0acbcb9edd11007a891b0942d2d74ee315209
3e047d3691851aa988e95fd76fe241fdb2386470,5d51a788f77f5a9b6610375c5b7f7598274bc6ae,5e3e4437c442a0e916cc3137f1a17583161a78de
8ba4c4bcf0ccb8f927c6a15dd9cf07bb02789946,514db355b1fce2eaedf4efd2ac2b637946f4efe4,b359080f42f427da88a6dc8790f00f486ac2351e
6d03f2807a94366b797af7c01350beda4fd19b3b,6169bbeed5936ec152279666681362007726f3cb,17cf72ff2de84dcf1414d664cfd6576e08c8e17d
a0d21148b453cf1c6e879c4989737b829b0c8229,402f0d348e68536880a06507689e175ab7428226,6d1553984e1a418d63d2bd4362b1e55255a073cb
9b2bed6fdf168b694b7c62751b208bc82d075c16,e98771608e51c0ccb8b4910376e9e563b8b0c794,185f20b9ecfaa598d6d6e3c042707c4e87273e0f
93be88b270d425ff7725db6f653519d2459ae3dc,2452e991b86091045a296ca6251b66ca3f6cea5d,b7ade3e566160485a9fa8c5f16c337fe7b5dc47a
95fae1a81d7a92d9e7511e02400fa362d4763bbd,507f0b3362db9513e09255168306a3c46d35f0b3,2fc672452d27fe93609cb52bfca8a90a1b002cd7
eb7702bea42c58dc4591524ef35fce8ea9b5b62b,6866b0726693946e7e15903c10e83a2df1bc2bdd,edfbf2ce30215262b7e8c2d5f0b9c516bead4fc3
195c8b599c1ddd61ebaa739fd2def0db21436cec,7bba64854b52c877aac354180ba7928a903ff23f,b5725ac3ed071ec564e8f49a80e89b9d46b54bf6
32999fbaba853286412aed98a5d2a89262a0cd65,b4a6c22234aeb9982a3d27ca0c37e0f2b7963958,97abf6b49557961c9fdd525b4b4db4e4763d6e37
e6037961e3be89a55dcb273dd8327fdb85d5338c,8b080792240467c8df06d80cc87deeb06fca1434,7de94e7a1dd1ee7de675c334fc936a64f72fb978
f8fc0073248b2be95224d2419bb844b4bec0d5e9,b6cf482fcf3fc1f916615c8fc80e552e241ad15c,3109005791794f433437c6d452e72f1bffbd4a4a
d854d18bd9730ffbe4340dd8a1dc9c2c1efd65b8,9179f9d43b5ebc1ba356a7d0ad12a13a2ac52b3f,43ba5b69d2b86a6b00908c0c1664cd893db22f9d
f42b39a7b5c586378c5baef31567ee53cc427715,a65d778f73ae920d4eeec28438c254ad9ee0f8cb,e4eed4e25994349c28dec79ab566831565bec643
7343e9c4a273b789577856915e0edf6613fa4b41,c96029ebd57c852dd3f006cf8769d9fd5473a605,b8578f804f48a7e7fc45a176f4556cf729dab2db
12adb47d65e06d4d730cbb860c711bb668a94367,3362abb30c9eee50eab4181333c3a99b866c8633,57861c934d5830f9187b2a06bb8b6c1dd781ab8b
f2568e37e422b9767766ef686ff77c8b3e9b04ad,7d5b0d23827e124da3eab2f39fe6cd52673ff4c4,38ddf2e8c5883189c13fdce704f28862c91fec07
de36d6c0499c2ce4ceba4825d004767f0ba944bb,09c009868604cb1a9a065ea9c739a37c41c93923,c84c4eb1a4cfffe8cacef0193af7a854f34c5bc6
c3b5d0d5d5b522e8d1a594183e2b49dce34decfb,ce1f115b2d17e17832f36c91b285e83aa3fe8f74,28efcfba65295ebf1b88238906b79594fe54fda4
57d9884d964cc8e1208814fc3b0f381c3140e642,aec18c2426a503c0c85e057bbc2f029d649fe3bf,6160abe37ec2fd61fcd1424cd62cf95fd2f8b1f6
38cde3817754458936db1662687ae37498500da5,80282d6effe141239c36d02d418c51142b38f6f5,d2b0bcdf1fbc5426b6f4c2331f3ea34cb38f99cc
37201319bf44a5b61336a8273329212d109bc816,7f775abb6dc5c5b3b3a1dfe347304a81d970df77,4e9b42344e5e19210d8ffec442f1bba631df9078
f42f62565bf31b15c943b91eab9fc5a9569e01fe,359bb64aedafca34fee136e053b69a897b9c428a,efe6b32638c26cdd511b8ed35ffa9074817dcf20
227bd3e9041fa1347905fcf666a951382c1a0f09,eb81b981cd66a1ab82fa0dcc05119e3a9c5a09d6,469959d9b52e49254c45885e9e9f6d631a3481b6
217e9ac5a5714fa60214616b33f0e7a0860c2a64,b7c519de81316bccb8fb8e71458ef89d8b1f48df,5c2303a76b1a616d24f9e41679bf61f79020f4c4
a286ad9d774c19718bea0cbfc84347dc67dd4862,17d1b8afdb7dfe862aaa84d4bb012c2674d8cfc6,64e796ace2f58eda26c7c732c8d592029f5cf297
26442e45d542376c709ca18923c0ea47cca312b4,db2051e2d2c07c5190c93d7f19409b2eec5c11c3,7a536df60e1acc939157b2608c7a68f33223c9b4
ee07cc4db5a9dc3fc14ce4661000f3a605e4bbce,472f8c900b8b5dd32333c930ba1c6f4a75828102,ecdac1dd399df3d5dade5151e320686db821ef9e
259c865667d580981c3b8b0e98287383f38b40a4,54ea8468fc0fa0c2775c82a10ad62785c2a8f11a,344aadebb9e2cc9abe51bfad885a57400508d088
1fa5edd34e6fe5bb45b76893a5a8b3b83f8d03ce,9003114a8f7cf994275dbfc88b93a0c8d0ce25d5,50a13b4df4e2b0016883d14571eb2bc79d15e334
707bce74d765b6442a28036f5bbb0320c61b7560,8618a3b21f4079b12a7b439c9026d3ace63d3925,ecc3ce64eaeeca34fbcdf297fdea90420845fb11
14ddc59edbfafc8f7ff20ca7bfaeecee4ee3fd16,d4ad618a702802f02fe4196ce6487f15c5535bed,16f201292c0690d29ee40a4b525a60c13d203c7c
dc799a9d49d234980b4184d2561bb0ba04337177,555ecd826bd9b6d28784f7e285eb648d49e251ee,fb6a892d9eb0babcbe7660c1d8985f207cae61d5
ef621e70141e881296ed835ac2730aee0d1ea13d,c2a3f03093d6a4814d0d740244afa7800194781d,85afaf528916ef20938b019e802619d65dc3f778
83a1f5fbc3f60760e36fa2832648b82690543b45,0055023394e23271b641f9bcfc38606b6b4e4f36,4111e13017f90f992971a522ec67f3bdf3b46b85
62edfa558412e5708469db173957eb5799ce828b,149f8ddfe9965e73e3e0acb94b46c623a9c0c087,4737a937b17e6e4575ce5000952a3f0ab24b1a2e
7a3eb453d40af468faa5c395a6bf301cc0a0cc40,b88f9ad57cb67ae1b565d9564f2d8e938c239ce0,8ad127ca309d4fe1e5761c02207b43a66b363aa5
22e8cd3fd3ebf6b1747cb17064419d9d90450985,84d05a5b0e7dc18cf58fbfe7e003b1580e811a94,3bfb995a4871cfe088d6753086b13b06a613e4b1
2b79b117445d6a9f7f1cb1669390ee7737c0e443,f28629e8e122887b3658de1e061a1b6ed036e5f4,1351ccb3bfe6adad6be0246acb7645203df8b3b0
0558fefc5179a79f11240d503789e3e538162a6a,2519fb126663d9dc4184d8ed9d7edca2e65baf78,9803318feffd8cbf8904be68d784f062eee3ed90
e84fbcedaca496d292598a9800c89b90cf8ed6c5,64c586b86dc064d1bdb07655975f1787f17129df,0a021be803f923bae563abf7eacc9a1d6bf36b66
221efd7a806a778f59a29b7f9baf74048e8b3978,9c265d71f0fc92ec1065d0a19c2565ff884dcc9c,402876bc1f6ceefe3109ecb7ea16add202d8865d
31cd3df783edbe1bec40a90ccf4df82b5c327f2b,0ab6b1ab4dcc5a513a83831fdd1070ed8fbe49db,75491ae21c54217fc1838dad300f5c86a247db4b
4fa99cff624119b65aba0c5c6fd0af267ad0dc42,9b1567f0546a7df6e7a5818dab3c614146f95c7b,1f49e633b6599ef4acf917a4190a62bf171843bf
2567631aad9684c8b6c4cae9e4d94e3c93a2466f,04727844b5c663cadd8620aef3ec2fc892115d0e,225eb8ed12ef191cf97a185f1a405bbdaf9634b2
268f7bfb5c73b8e6dc11bfba6bcd1c61ec0353d0,91649eb2e5e882700c3f08a339c163b7f24837ca,e5c6e91bd0deb773586b10741d8435409313bf56
6975437da8f582ce6f964ba1f3d95972477784e0,5950a5f97b1a920fb9622f8897da0d1eef2ec04f,0b76059b37bdb2553beec800b2d4134a9d0df826
0ab4515e587d6eba0c82700a003dc3a0ba6a25bb,67fcf0f03e9b81241040ce5e31f8a8290384d029,f172d87925680e203f51bb062d0a5e8b35d9ed10
0a254b46bc0c01773778e93497609b5e27d139a9,1112e9f30137de9ae545fef8bda72a397d473f3e,334becf76b7140af2f79a7dbe64e32c143bfacc1
684bdb0245b603c5c116d90f5fe2438089e1201f,ae97668967c8d2dd3ddc05e8ae7e4e54519bb6a0,56cc421c77249e7efbe29493c27cdf174ba6d31b
5dbd9eb2e059de506eb9e13317b7645db130918a,d38e2920824b9e9d6d129744afa3b8144d2579f7,1bcf50ce701c200fb6962226b2f48274d8a68985
e99827246e52288205bf3dff3533634aa553acb3,4bec57702f93cd54d61f68b1f8078ce4a4d985fc,ee3c4629aa1157fcb97db79e962b522649c7abd3
de62cb8b021a39dcbd2835e2c8459d492afee10f,8496690ed0f812c72b008f609106c933871be484,8b24d60df752458f3b2ec1eba42a1143529a7af6
b8dfa1b8e68946db2ce52deb37c681eccba73418,f8320dff082272a41e6a2d6d0f8a5ba50b4ea80b,3f852e1444278f8d146f93cd39cdf239f0fc93e2
0d1fef96a1d0b4c7c70f9eed24b6a8997e3e109b,d13838ac0b8509eece4f43b7750bb9b33016f851,b13c8e3ef68607a7a37694fc1605dbb743e8650b
90113ef819430c8dc471551e5c953fec06cce03c,ea3124ed4af17414c0526ffac7a80b6ac6178842,ce6260c8971c9928f99b79b34a8e734a06288865
cb6ba25e1b1a23ac2dfb3c17afb6ada075b54b9b,d5283cae7fa84ede4b82743a762bebd51ede8a55,c907f4cb28fdd9f561086372f7f7f1404f99e916
bc6e837100933671e8960bb499f42341f2f22435,6eb2cd6dfde2bb99e1bf7dac9fc7b963497f09e4,e844f748825dc710c80277804bddfe65b90e1ec9
3ada628813023a9ff9eabb0892e835f6d5fb8fa2,cf1fa4cf7f0d84e4eb347ff33cbac74dc0872ce9,66cdab722370350681f7b381b815a23033ce7602
a67c184200c266f2cc586323a8e55f5f3e01b85f,d13d625090c4902ebcc2343c2265c0bac50eef52,bc9629c446de8fbfec27dcd77e348adca0b1c218
c43787f7f8f30126563b9189d33f178916b47c1f,2e54def8e5bc837a86138524a2a99c530b7d0399,1e960a9aeb12ae75877ef9321efbb89f34bbbdce
b9fc7729c66f62da8345cb461bcc977dcd5a0abe,e309c47ed619cf7161ef355b4d1fa3128efaaa38,91586331b550f102ee2a90e460807b75177ceb2d
d0910b5ac837d58c141ceb758c366bb8a87f56ff,b1f7fb4ba18b56be4ea098f93393306d14e013ce,539a578cce5f4e05bf46dc283a0fc96952f22bfa
aff1f4999c47aecd65f1f17bfe96e736a55b4ec7,4e151d5a6d8b1b11617cc17f3fa3e08f612efe4a,d4913f490f30a2f4521573fadd6229f0a7e6402a
3634e7823f3b50deecc14b4c9734501cb2567c7e,1b2e13bf77c36b810e92609b199c687a6a0a3871,2746b0e035f558d7b67366a5633f929e73ed452e
453bdaaafc71dcc467528063395aa3188886df6d,11db30ab3d347f358f6ca5e86bc1640f8930c11c,4864aba47a325c28674bc9581ed2cde92b94b016
6109c5606624c41923a1b3bb5ba2107e586ef2a9,ec0fa8f46f25ec4f307486dc6fc9b7fe2d8c3bc0,834a6579d7ea7caab3b8e40d2a94ab6bda4dc198
75db39f06434280c32980480d52def9c188a2c66,44213e33895210b0b1ece2353414355ea364dbd8,28cc421b13ded883a6c2e6c39a7d2e3ee63271f6
e341e247e99e1adfb84f522ea6a9468415d722d5,3d4a242974f5290302e7afc1f18cb462ce6942a7,c5541e9376af14246897f7013d1a72a62da7032f
1f3e903c107ef366b8c1ed2d57e4e1efdad13d02,be64fd707a6ed1aa52ce366872b302dd18270a44,b564e400fc76fa5f429922849a96580d6494bfac
3a0eb110ec513fad178844309b16d66347f7525d,4b0edb61153aa71dea42c1f6e270daf72753384e,0d76565e50239b58176c9d8a298677c2093ac3a1
8a7ba17e12daa3e03c89e4794daa07e852105f57,3297a453ea0717b1c4858015adc494c4dd467239,ae339ed8fb7d5678db9d5f9db3df4002a21074c7
7fd8562d4a19c3d271ca9d8ea912d006d1b8012c,6fa787674f53b7e01dfb9f2de12e92367c44ba0c,98132ce24e7eab0793065dea5d91d14ae8a4e075
c9cc530d948d4270e528b63ba2bb13493366d907,6198d4a0a1eabe00f5ba947f24747f5c1bab9f94,bb06c623c3100372c1cf7a769da0d7bf1eb94ce0
766162a3481880e0c0533c0309aeb9fd19a0e545,e8a0abf075a6ac777b3928f5623f6f3e67a0050a,ecce39a3b253b55250ffa0133d8d6bf3cdacb4cb
763124567d20c79d6bdd9ca550899588367bad2a,2b0cdc0c15d6012f580a1e2e578ab1de291c5bd4,c540ef3bf85d0bb8298d57025400e8fa1af4323a
86f36c66c048f4ed692d829fcbd4a28e2f9b7a7b,8b0747f5529cafaf0823adcb7d9c1184f09a2f04,074f72b64b551ac877d216da62b17fa1dfb10aec
346cf6a32ff9d360f363715b940d081d713a475c,17b748ef9ae87cdff765ff1aedfdf23f643f7367,08c5d9b00773c9f1bbf7d703109ba9cab2b89654
e9024877110a89323c818a9d49979c6c627f62c4,eb6d1dc73f9b2694fe6baf692936a65939c026b3,4ff66758ee71ffdc5a99b86c3b824a0ab5f81b66
ad35f14017ab89059ee8c608c77a34d93f902cd9,668d859cc2b0c341f6a12b0cb92e7dd4caca23f0,c92235f4fd4c9430e3468e3b17868a68ccbd459a
3f0d1aca089fbc674fbd8a1e82674e4726d03c0d,0172420df7dd4f317c050084d39ee271a6eba17a,3fd5f452cdc50dc2cec13ac9b03b750aa2c252c9
d373397f30324be8f0e7f1085ed5322e17bd22a3,0fe68e7c9edc24226fdfe9fe93d6ceef9fce4824,d659c731d8277b7beca49e25df704dc51259eaa4
92334d86dfafcacc31c0c2b5c184c029e8ad2cdb,e1da44c21913bcfb21cd404276d37dd726ee11ff,78862011b2dc79757a001c92b0e7bfa975ce5723
e60b41f2ab405edaa1cb4020e6ca4503ac50b4fb,29dfb6131e6e1819591bf69a009387c6c8dfd07d,90b422b2d44eb1b54cd9c98d9bed8e6f97686296
cb6a66fed0ddde682706434bf638b8158b616396,1ffb6c6fdf22c24e7740462c04d025df8b2d84ec,047b435131103d0c4018745899b2cf2bb6a9e2ad
88e960cd00ee0f4efc259fce11e6c0eec287c0a9,f5005e46469f038ac3debcba16407bdb9f5c4e84,a9a0dfeae387f49a9108263f5498f78cbe024ca2
79aac426fd35f18a52a986656abd7de8cdf84c95,ddde3628ba2c1da90fd28622221996cb341ba59f,5dae243ffd4b2820b7e0bb54eeeefdb4e3bb2a30
2cfab10cb1f9f6f6e44d438576db61d56f5aac99,297e9881c6f6fda8865e50267e033cc68224724d,5e9ba29d89a34e1cc14f95f6ce47b7b87e6e683e
dfc65acfa8a117265260964da616d70a7f4d80bf,4cdc665ab742d4a019897802dc92c373154d380a,ddd262168846fbf2ba5372114ada135af71225cd
4d7538a0da03e8c177c4367d1e7080bc73fd04f2,5b5f6b71581e282d9e7b68f953eb682269f9c79e,0d844aaa4150d4884ebd1ad411c791fe779e41db
7cf1d227fb2435978788ec6f283a7410d5e544e8,f0adf5d6120953274e901e055edbb29b42b7f616,25cf57b085ad8043e1a7a82ac4ea5f1335a8b537
d5ef64fb91cddc665f25bf57c93d1d442604843a,6e845e397fd1d96c6be0ad0caac80bde3c34b27e,1d0ec1b96671437913c86e35deffd2f28a1ac153
5013e7039a3dc30df510941eac1cd365a50fe10a,1a643e250a070d873a2c7b4253767bf457a85643,f64bd5c07974559809148d0872f786122b881b1f
d41d6de6ec40a38ef495924e4cb77fb2cd5f3d15,829404a9570e15839ef15b845b43c009afe2055b,be726fdd09e05de3695f7eb75e8b95c17d02e8f0
55337def9ab243847853ef9b1dd58c0b564fcabc,057b786fbde4ec4963a9d67dc57fe6daa0791642,8a0a97576a5e762d6e6be33b82ea40acc06e8009
b8baf3bb85be26c3e10dfcb44ab61d3d98bd7738,7da5856dbd930ff246d76ec588438b7cceb87b49,3b49e95415b79b02d6d74ee7786ddf1c1177c1a3
71c314d7d498c6c346f11f5f703272a2307bac1e,1c9c84d01eb06bc3550d67836db2926f54eebde2,af4d301af9beb51331fdd864bceda75e1710f2f6
6cbf84eca626981e19a379371614a77b1838a6fb,5d3d64b3409efd9a109aa87f6bf2008a8da4b85c,c466caa0c8b439e563c41259d98a872abb77b0d2
0470ca8fe3958822745063a37481389e56127484,98f42567130bbd6e47b357b93137f516b7ee8d1a,2ac661f63e21363d0715a4d213f8a1710ac8f660
5843d66a38276a1752766f5dfb853f44bdb08d16,d96b84cf1f81413e6ff8f8978b7712e34cbe2e88,9c4d842a6f6c80a1972d5ad8aaf47e66a3b7890a
b240b78c9fcb5daef7388e60f6287e7f93ec308a,b8a2c613e31d808436a13ba2f747801f27632e42,c0482743af23100033e1af8490abc856ed70a580
6c0491f7c2faf4f9c6ef7ad68e9ce5315fed1291,8dc55d82942d36a5723b2b97f4ec5699563edb14,818d3f2f6c112fd8c2fb70e7128e198eb7a0d1aa
4245b20a32206201500e7d9c646b003b93f4c6e9,1c99c2655e3996df83e847a442e52eec3ae171e5,7f1aac8bd71488208af65d46e2bd3783d8efe725
5225dd00f60264f6906abd4006e2a4c477e6b364,3d37b958bcc1c171c66cb654aafbb5546217e7ea,afc80a84cf383fb885ae3366d429a5a0c6ffcd3d
8d21ab9d67d41f06f26a890ab7e346517c1f4f2d,772ea61b12e2320750ed1b3b697d9328bfe2bf0d,87e1dc159d85ad4f56cc8cb3ed3eec71c93cd273
5e7a512777b6c1ca9aa544fedcf5c28c7f42b87c,dda9f83dfe2f4841bf4fdd87aac87b46b0ae833c,a4b35d16f2b168c58016334e1f0c54731db2d84d
f1883c4e617085250b91f579760247865abd01fc,33ce19799b268409d89e0ed8c1598b73728ba970,0316a7697f9b6c3782abf8c6188df983ca1e9f7d
c3fb1e3a658af94ce69f431f739a80522ddcc546,44856e660c4ee3931003802128192b2d77415244,a3d68e6839f1803353d6b575f34fc91686ff5088
cdd2832ea7cac413d10a38e61491f1fd99622584,1cd0364c50e44b6d2b7d859b4e4bc556bfd3593a,6acf8abcc96bc1326a82233b81b409d83460e41a
1f12cdefb98091c855b0e61d2f899204f943f0ca,e694897bb3bdea5f4606946dbad784ba7bf0af1c,09d6398942ffd3e1b139d72067cc20e8ccd7a400
436a0d3f9ee306b55bb8d0b232587668c8ecf48a,5b29e7a3ecfdc47203c64ee8b26e5db5cba35b60,599ba8cc2a1d68bb9dc6dae9600cac6b1847d046
a7e63b66ae0197943a89d4be7431acf61d302407,ef8d520e8277925f08c06e3b635a54ea80b2dfa7,2b73b5bf9a867a8d7b6527835bcd0c9cf657aab6
5677ef4bdd585b07b2669cc38e3aa519a528a4d6,26253b9e88b568da27460734798b26555ec58eac,9bc0f62f45d9fb8291d16e760abdd7d60b7199db
715fb8007f1f7788e8fc2dfe28cff63dd90e6261,12139483933b35388a7fcae02c28a4572174e0f3,80bd080293c5e81123da68799d866a28a1dc55e8
4ab485225c97d77ecd8e9bb7d1836d97da0ab461,8c06529ae21c71b8f9251628d1265ec31c2b0ae2,a202b86f37a18c6bdd6b9d346ed20a481caf3c94
e583ba6cfaff78c2b890a32fbf00fd96bbc71237,545dd0353bfc15751c6d317370fb790d304647c8,89c7ae42afc2511a8cb40000db251f8fbfec4c9a
2ffe777b446a42bc98d278288906bb924bb806c3,fb5cd1aefd30fcf278f494acf5959cb178dd5c38,29b071241818cc4e75ada65bd7eb6fbd08df323e
8ed768d48613b3f49621fe839f1be290def49abf,f04d87bc3da1959e635b1645c4f8bfb36ef7f5f6,1b27a955fa60036ea77d34629d963f104a3bdc10
0d171d91ae78ee7513370574128c5ca22789f613,c271a7106018c7acc056a2ef6bc01b0836923f1a,fb7fdfaae438b1497c6041755bfb15dada8cffc0
1bc06ec2767faca0764880bf70605a1fcacdd2af,83e492235e99c1ae079c87995be30b5d624370c9,9b419b800a2ab0a588615efd4b98f6190201c007
60a7eac72b9292decc314749d9f5a12f4d48ac20,febcfc8d20d5a57544fe394a8b4754731e68943c,91167f41a6f53a6db27085ab0ed9e930ede13ea9
700b30851e8b1294a78c9a50d4619e26f011c3ca,1bedcef063aa9e1753f6905afa4d1a65cc378a04,3d0eac3ee60b948487d491fe851e2eb981c59bcf
99f3a03386df8edd37c2eba09898d39a23314c94,0c22ee86781c2aae8457bddae8b88fbfc38b6cfb,71887b902b76261ed14f8cdab37723f585c89125
f333fb08ec41d4886a8dc9a35479bcdcc08f3b78,34f7c3e6d40e1702c5b9008ab852e5fe23cee7a2,60c8b71bae73cec85e5bde74239f2bc057f264a8
c7f4be71dc1048ed4364609f838bb5e79e372088,fdfc40e86bcfaa5f45bdc87eb8fa74a01b3be8f6,2912e38e91f1940d84b6a846ecc1f9888fb7cc67
5a26c582852c9e6486bfeaa164158a9521eb45b9,6beb28316e004311744aaa46f047f7048b989889,8751e983397d0712e92c7d19bd2c8f7a8d02a41c
cc643608a22e9410c9d6391f40a7ffd9480aa9eb,59a60856dc0dff4041ff1f4cb33629a6aa04fbd6,17f7cb0e45ac10f19dcb7e883365c2c365d1c16d
e539696f29a48912a4e2cd92b9f8b0210a5e0535,4944e9296fc9c3b55367babf31928e8fa7169369,0ca1e2fb424c67f6c6b02eda1dd1ff22773af2aa
75e42870ae10ee5d446ab6d4d8335aa7eb02269e,b6d2c6ccb721bc8707fc992c407cb695a5c5eef7,646ddb82173c7a55d7b4fa34c7b2cc75e9fa7c87
2ecca003dd15e8f7c082eeb3c2ff6ea141487017,d4be82e87988cfe921c8843cbe6856176a1209d1,f9cfc0aeb4de2e6ecb347b011ad2ab2ff2cac007
ca1b315e2799cc3c94e9485312d1b7d2b36a60fb,7b71eefbdfeab44a93695f93dfefac81fa8d09fb,c669b8ac83adfd33d415f1e52cfca03a36cb74bb
46586902f4c11be78d26048061e7203da14ae9e9,ea0213810b5f08a5c8df9ec16c160547101b0151,6bef792f3303eba2da048ad8a9950cac2c2a787b
028c06219290b7f1aa35c581e27b7a7dcfdc2ed8,de770cf1bea6238680853db72816a29f55098760,fe7324a04ca69b5d3f76fded91041f21111c671c
c63534af487eb2972f258fcf5d84a91f9c902095,2f36069dae8eb1f6aa8ae4149c878fb55437868e,e430c92fcbb5b00680ac84579d6f969a4aa1c1c4
cefa05c8b1749d9f5b3d322f93eca52a13ae42ba,2cd695120564fd22f063cefeddc882523a86fd69,5afa26ddd1e80d78959af421ff64edf756e5ab13
f85d7d25912e308b7d77acb246f77633141d6266,1c9fb8ec7dc83230dd264147ddc167eb5f323804,3dfefc25efa6ebced10e2e2dbde187130bbab2cc
2703b36fe16907fb9fbbbeaa8d497e17eb13b4b3,0216f778193aa057395c3632482e751402a21048,e2386ae876c8f9a0772be80ff7711499ca4d721e
236bef961c21611f2969259c8c8fdec54364a225,cfa3f4fa8c3a23fe72849a14532d02cf8bfe7730,ca0d11e308a6c64fa6494d7c904032280ec83111
1893babd062d1cfc3b1db3632885f8c2c1fbd1ad,53d847f26831a212e928d4970a1f2373df60db76,857cbddf04ae8d54abca518b94792e30ee481042
a4b9fcffeb9db818dc6c620434612be3ceed3b65,41399354ce3fdfa9683f310e168427480c01f9d1,c6443809bae23d8f0a519b4b3da501858a2f50c8
8d0ef71e37e6a59066547ebb898b17ca21e3b601,fe312ab99ff41531686afed3ce0f7446d928a765,ddd87e09ff91b16d0926a857787e753eda4baff0
00beafae5be8d267469128964c6e901a6817e0c3,1b1facf87991774ff536acd4bddbd00faac243bc,58171b4308cc2c7825fbd0d33f84c1b67345ee0d
38ef18b4f4af21230d751a546f71065ecd3512af,a203313bbf29d192763141b828b0077fec440f08,3c3f43ac665385b2c259c5930da9452682ba3cb8
2f442ab6d09cee0c7675eee9578288609f6fc510,306cfa83e4f044665e23369d2ddd1bb513c8b839,b681e2cd7fb8c12eb55d374b2adc7e247706205f
2181e7c61d14e894cabe6bae050720561164b685,87777ea10b5285a27ac3cc4e387ee65392bbb6b1,0c2a1ffba8bb86294b226db30e4f744eb2b1da9c
78c3b698b183c690592e3f63fa8b2e6c12618607,4b6eea19189dce34125eb0e3de74b07de5cf8e43,4c2e0b9ff0ce9c285f1aedeef6a7146c81a55d0b
40870af6a7dc39322622f7c4646b974c0d0800be,6ca821950d7dcd8579bd1e87ca22049aaf9e8b8d,41a51e8e4a6220935ff65f6e313c80380c71c1e9
ab0531f0ce5b02a4a91430a979f025a4684e2245,803779002d5bdfae8960d95520a4e5e5107f61fd,9c831677ff1f6d00592d7bea91a3fdb6d65e0aea
fe57cd353657f96ea5846d9f2575811e1456ec6d,272a0e3e267eb40a3c3e1a0cfaab9d2656792331,e0a1bc66750d810d57af27e21139203bfc2f3125
01178532e5ce1180f56697fe7d22e907d1afee11,efcc3b2ebaa8c3f84430c99e6eeb362b0efeee5a,493879d28cc1c2f76193c44458344f838ac17160
af19d2a98285e96995898cfee325f97cd706a9b2,52a29e0ba7e6dbf5cdc6dc0ba9b60c88e2307856,0b7d4801b077856035a56c7a67806210306df21d
3149506d7f82ed315a809a0c76c10daf9c4ce3f1,c1dca28cc5759a9190089849e83d6dd3c72a77e2,183fbf77af9c614b1201377e00a095a78ae52433
3b408e6a6a986e8c1f0493e00e1645db3ee502ef,00efaece74a2d399971a8aece991fac38cc7fc70,316f2429f02f3f4ceb1d1fdbd857df0c500ee5b1
8ffa01e95fec30fbec3961b0df8080020e5b71ac,a57bda94defdebc54a9ea26cbda85d7fe6ab377e,6aacb9696184f25755a7a0c51041eb953c60808c
088a52a1cec23092d2c918cb121b44bd9391ee74,12fb58325a6a24663582762f7296fc903cef3420,063133f2f5726e0f71d74149c2f522ecd37a882e
4cc3a7fb120ab462c03757801f0561f7c6516605,0569ab4a2859d1e5ff60e996deaa0bcf2fff737c,01937c4630f20652dee29b92dfbb2ab3d58cee8d
fa8bbc43960c51ef1fa09ef630ab53c08e76ea29,afd1875834151ef12ccfdf156e9cd5ed65dc76a7,e6ed010e9221f2de56c39988762fcfe956ac0231
bc42999a09d3acb45eb1b3daf3a2223e828f93ff,f9f0f9a1d1b388b18d80f648ad230b2ff0bd4039,798eb0e768dee97be6c729e35445765dbedb7d36
da4be71fc8befb8a2def2299c7f92b59e1c51541,5d3faa5ebd1f1d4acbf58d563b5b38c9a4ae6cf1,913bd009e9cef31344cee42d9351fa25dac3724e
df49a3d067c591e06c511844edb6c0ae33c51151,d6235174ac37b3aa7ba6ee1e03a5abe450d2a4d5,18b868bfcddada94c2f0398ea873cda70b7aad5b
ad753c0bbd52d42685ef5cdb0406c2c7e369c605,6b9a3bf28333ddf87a1af3182eaebfd5d977f2d9,3dd6272891f18c415998e167f55b53c00354c8dd
c15bb07bf60ec1b6d14ee4954ab67dce787e1e79,62bd0068b65cb0fe8b553d08fa4a667276b40625,f4486039704b5ee3ae17e74e3a537b51fddb44f7
83ce289ea4f738bc0599fedb7fe153e804d1ea42,ba0f08018f7980cb7ce02190e4586370ce070251,d7a45c646e8e557dde5917cb7ca1451d8c502fb5
81402bb077acdaad13e50dd6e093e886e8de3ad8,f620f61d3b0ca68f601c3b76d9e5335fe0a77ae5,6f3fccddd1ac5b363a3e02657cf838b87d741a40
8735d09894a9162ff2e4d73181f8c2748bef6b6c,d1fb44044f4711db2430d267ab8c884d242cb13e,6166084f08a6ca4141a846c45b4e07708539a9d7
b0772ae749bd1c8073b7638d0d511caa54fb5078,5149e58525a560334f4ac1b1064887939769f63c,4be5f07f276e2f8c9080a05f7c297fc9d578b5d5
813cf7b45ec3dc7c0b5c4e3fc681ac9026fb56b6,2abcf62a958476ba80b78b3c7875d9272d9f7e90,14af3cb5cb48b39589a28dfd34618cdcd6000ca0
a4db719eb4ff6d62a733c0042c0b10716b0f141f,df95478d19bceedd41a86dbc3c8c006e91b2a0a3,c6bce8915ff4b0a53ce295d6d14da5ebce9dd200
c603477ec4c19a62a35e5ca3036705ffe565a1dc,77279fb5ef2f4712d38ccd1fcab59f9f9e9802e1,62f8899c1b13c58ab3d318c55c607ccefab9b811
ed670d2ce7ea9d99f1dbd915d5adbd41f5467137,ed0ec9468095a870767b3cf0e54a9603548bcd98,ce9e1e84669018bcd10c9cf3b163af37b66e0c54
40eede3a7a778d383ce2156a595069b320fd8aa0,1c961a498677e41dd210869e4877a27a21cbddfd,da569e952e0123da0e54570dfe32b5377e671939
15ff16d85218ad77941878493af4b120cb11da47,bb97c5ab693b170a31bb7844d2bcff1e809da1f0,24f33871c01400fd685e7850248677da0bb91cf8
b4a002e3e777f7a26040bf42a2372a8f1908e9ba,b7fe338bbee54f18f2ed4e7bb44883972a5e2fbc,96acda5ac9d49ca3e574aedf3a3b288e66d7bdbf
dc3bb933ee23dfcd7a4090e043d39c2afbf96e35,8fa04a0cee8de2d8f6d1c5a72090b4f9a0a44698,577e584c771de341a03c62bc93f1ed2fcda3e2de
3ac178f519ecb990b425b5bfcc65467f55ef7d0f,3c436779521e71c2cd5828508206e25e82be60ec,e8fbe6696b453d9a0c299e68e10386c51b0f0188
a04cd9b9ce7a0dad694fd8bc7fbf51354c4fbb21,8b84ef9f4b7f66c9ff85afcec81082d7b481133c,61a4eaa30212cd6fac0f6e955e3c449981ca191e
5821143387d15b370508efafef84fc12f6d26f80,a399627aee3c1696a6d34d2005f6577c77f3cefd,1e5cbfe546555493b7ff115a326b2722e0c5c978
e047e7db91918a6356b18e5a76eed56aff2db155,62ea31f255cf83b7037e4d56c6a6f4e184d26084,fc32428639cf7761c5d3f1c73afb44921d6be014
445ca8b995c14e9143c771836813cb8d0a4a17be,a9f4c8a16b904ad483b802f4507a392d314faf42,9775a13e0263f14cd74692b3df566752c8de16c1
9ccdf2b3bf4a4da9d61cb657c1800fbfe3e8ecba,d399df83ba9478ed63150abb045fb2db9fb2a186,f5389cbc2884d9d3a77026ae159f86855c7dae38
d1881d09519768a8b2fac9ae78bdebaf49ac7f83,03d353c1f5203640f225f84930fafc8787372b66,649bfecf62a644bf0ae1f79c79af5639a9a07414
314e55204655aaa8f2db239bcf34399e52a04718,77f3acdf76d54e924dbb77682eb9352b5626f88e,85fa313e597796aa2035f39504c467078f51110a
a7de0b365b9d10dac141f7a7b8889e92e12370fb,a70feeca7e984ee20d6e36298bca6a59db539ca8,f7dd8755ccd15cd31e30863a62b0214249eb2907
811cf381ad4f00636cf8b5628b663d7bb8cd07f4,c4dfb2c8bda32f6b1279419accb7b58f294ff27b,6a9279860356ec61d0f133b00345da12744fef1f
612f063795d944b9dc7ea0ffc36a9a0fdc4ef73a,82450e1d57d684b3858b280cf96f045a4505b631,53effea0f5cbbe4e8670c65fc55ec65b507829fe
39c060dfa726274fa05e22652431622de3cf57c4,d608b4b689181bd3bde42078d6c9641348f0a050,3072df59ff4a6ae0cd4665180d68078ed8da4bff
9e2bcd940aa579c470990d60525be160ee191760,85a8169c486dce73aadf89a0a1b1de6b28c55df6,b9affc3406b07c24ffc76005f71d41adf22b08aa
800bb3adc2362456af74494503cca82bd12c0598,c4ddb94cb42420c8e47c6daf181a64550ece1615,90d9f80aa5716874c72948aff282de6ee9f6c035
e8b92a4a7692c4922d7f8d4e394c6f145b193103,4c209a7dc2aa1f0fe43b104255d7d7670942bd4d,bae6ca6883d84aff6c9061af6ddf35a7766b51b4
1105726dcf0065083c5f23921c1e87c9172eb61b,45b5e9215cc4bb6e1b199034aab9ce893d5b526e,e99c9ddd7522d2d07c1bf4f736ea33aa0d0bba55
7fbda0e0e8b1d071e72ccbc5e487dbb1c2173c63,50cb5707eff57d51a30dc2d2953dcf91a7a93f68,c2ff85ac5ba307d7cc10cae7ee17d479c83c9119
632e3ff2cdabd20aa38f8e1f43fab0fcbf79adc3,2ed3bfb58771edfb9882e193506554f1a52051d2,869f6993911b6bbfbe48c424077413f6510eb3ea
2d255cec9146f690285cf34bd56e49a6065da38b,067b9b2922824a6801001abe1f2c67559cdad78c,ca7c775e3671ce703894d6ad4b13fa11ae5c1ff3
308aee42a011e796260906a9d99699dc6521d3c2,6218254e53d3bd9bd6cc2c62b5d6ecb86235dcd7,793ecb3fa67214c2b6da67609c5f4e6ddef96bd3
3ea0c335c9e22f066f59fdb7f0e6cf4529d701ac,ff71c51e4ec7950e7297c57178a3e575ed2bd83e,9b61b538d8216a27fc02e03c203ddaaf5ca1b96b
47eb7cec0cbe9a6c944ff570569138a3d5aff41c,b4eb1780adc03586278a8780b376300308b33727,0d895c5826f0425712611001128e5575e06b392b
8ec71bc810be192183c9dea7ef4bab8a33a2df66,47557e0ad24e6df119fecbf2d42a65dc9cd20b8a,bc4a22e24d21870fe797d495cf5a749cdf89a12c
07a8e6c1d61cfa4a588d3e88997940c22f25fd6a,c8c6e647be33882b84c2ffffd9c4b84ea4fee1a0,8ea95e9b9518ff3c9b52672a2575287d613bf5c9
7811b915a918cd014806bfde2085bdbad62c8b2f,8b779975aa1d93f7a4e64b280ff02179dcff0d70,682e29c4ff6b494b468fdf0f1295ec85fee37ec4
d712c64236a3e5d684975ee2a94a77c17141ceb0,2885d3ab569ac5143b094419de211b2c1405f568,e53d18d876349d27b75a9dc00340b4a8edaceaf9
bf65bad5c5c92a2bffcc5dff4a5ced917116a8a1,3999d037e3f66961a2ee4993db53d1d8e9fa21f0,9e7d80a8bd1f1fcfd60bab5750b30c05db3c3f6a
f38f9ff930b754f2b94f8dc876f53d22ab0d23a6,f879d764917721ff3bd99c7e6fb6134cc8ee7197,f3d8efc8ec3690b97f3d5f15d6874359435271fe
e6f01065ec67ea82b1d8a4484f07d4680be82b8e,d12dd1bdae222b6a7e30c46ed31d5428e1c516a6,08817f1aed8b29c9e30d7d9edc9530e89bb0bea0
87a67a3222693a0b627cda9a47197d8c4893a205,755c574a87c2505c793dc7fa51fdcb2c572ace70,e4cc8af8fc4e66ca5bf7d2741d749c2b5d30c195
9ec85f940e650d196a66510be981d6f8b8a774a6,432cd5bdd36b3057283b1907fbe7dc4f0170b99f,9a39124118cc4b065774f84a7a7d7cfdcc8456c1
3ac0522f70fd2e0eaf66858f64d3d00b73eed42a,44e39f454a38bb3cfc8a61b8587fa225c3ebec61,3aebcccdf29cbe199a204f573fc1390e3760f678
934e3bba63c67b577d941d675cba3dccb2d53826,4bc957a1aa3bc241350f8ee2f917dfd0cf80f8f2,c90616944d3bde7b36e924d27a0790195d61f95c
1b34fe90a33567d41a103838648df4dc930ba2cb,ca399f3c7166947e42e507c3cb141cfec46f9e0f,4166e8c46409c6730e19c5dd3b1cc651b7bcc1de
7b5e58382b8cfd6f97b6928ee1107512741db426,f13b47289e016d61dbf154ba63de090699e0694d,ab0de8eec00aba5b957e2db1b31528a65dac18c7
80d549a73449381204174b98462fd83ba9aeb538,caa2735203b91db513fe8af1e835aa711c0ccf77,08023bbad0df203030f1998f7f5ea724446efaab
d48019247745e8e1b644aa3381ae0303d6310fdd,e7681dfe5beaf76263c2fb7d080e12f8f8c682f8,f5c22b7a9310e0f9f0fa118b04aec75914bc05df
ca475537e886a36b1ba76127db7a3c0bf454e3a2,b09669dffe04ed05fa7f4c19cdde5a2531be0668,b0c434b2b2e41bc2fed97ca70e85eff44134a7c3
243ddea68697120e162f5facac53b0ed59578ee0,9f8566dd84cd77faf02816ff11b6b4092af5a0d4,d8021a11029990117503179f27e8b9af6418d32c
c970c17ecab522488e125c6541c1368a43d1295f,500e29e5e2c9b1ae310bd2193c493a221e55972c,f26c366e9ba6dda24a080f7d0958f4915b584850
ad66a1966650d522a1d9ca2543c9b0de2ce4c93d,f3a19aaf5976d5356a4def9355bf2866ff2aa675,fc26e2629bd22a1b8d7df4dd033dd15c2773cb21
992fa3eea700295201d78e109b33140f63e28dc2,541c65feb758859aadbb99ef66022f79394cbbfb,3d4e677db0e3c2aa309c6513249bb4affc498bc4
9432aa4b69a471904eaa57f44edb1e0cb0e82511,ad05434401e59e015f311cbda833ed0678b39fa7,81bd47343918e8de171f1f53f26db490934ece79
6ec6d2043b1c2c2fa2c5554b142610d9d333075e,c7f3469a3f6135de5990605db59ff5286c6ecbe9,f5bd3d81e78881e7311d4642ac4d41445b0d86d9
1bd9d4173e21a73f4b2fefd1b7daa2207e17d7d4,0188a558d1fb63818129f3adc8513dddb6bd42c7,726ac5a5a6afb3017e06ccdd75d6a593b97a72a7
2cc621618accab4ce12b8f5b34c5f883fa460b3b,75a9c5b5009e094dd4f1abd166f9ef47aab97c1a,c8e712f400aeb5f56d8b370f7e0feb5a6405b6cb
b5216a19907d45ffa87661879b2a571e589fce75,3280ec322060dfd6fb333d5f789d1b148c35c5ca,81287362339a70ad44e20162e6ee02b135d1cebf
9e7a8f44aa47d53c47bdf6081ddaba0a99c622d3,a6d475b9b35f345bbe4dead1e176a99afe8f9f50,8ac821613fc84d5488adc81ac10f6b371bcde021
f90324a02af28994799012e81c4bcf1dfb106bbc,da252e2f4b81ff3e626500454c1974c2b4feb62a,86c036d9ed8a63040dbe4adf22c96668d94fc7cb
695665c393c0c3b0a67b060b5da4c86249c77f38,7b9ed5fe466532e6057a7378ce8028f36fed3b97,2f90dbbd4403147c2131c03b0d25876cdf819d2c
8f61df817aa2d6f254ab5f118f569b826079806d,5442e9f9d86ab7807f917694eab6a06e037ef45a,665180a579b47a5d7843c4912086bc6e2060aee1
0d5260396cc16d63e444670ea9c32cc6392c7241,d53b17cadcad90200962c5942a47cec174047612,b336155be64943a16b297d1684c45f1daf3f9b6e
9969da24e17ba35e319a904afe1f55cdfb888e1a,a0e88efa6a73f044718f233cff76cee983a96dc2,711efc3e3aa0e87dddf71663036337434065bdcd
d8f02107a1c79c2c4560c5e6ac260f516f083198,f5e5f9645cc90c01a6fcc2c89413ccbf0d1d3d5d,f9957f30a5a70def090032b803925a9733d4cc43
70760208bbc0574bd170e3acd7e8baad3cd90cf2,4da1ad71a4ead2a6643e56087d03c1ddb6303416,71dc62dde61909bd587485a20f3c234c832b9389
6dbcd17f54cd8b4e2e4853785d405233e1948762,2a7aa1116397a409066dcef8048db673e50f77f4,f718567c95fdc28f629bbf213c0e8f2507064f3a
77681333f520d55157353f13183ef0dce9dd0e4e,b1497185660cfd390c20390e00cc7fd61b0d2606,5e2bf257904d57b5f5d5b3ccb2b9791351e7bcbd
02ec94c81831f969732b95b27f4fbb35a8de7507,29a5d3267cc3329ed313bdf3e6b8d59e659260fc,43c50d0a3266282a69f9e2d316fbc73b478c0774
a19e461ee05154f1934c39bfd925740b3f28e4da,c3f95f65eddd3cd96601243c3b69b6bd689a5dfe,17e3c31b7ef802363f2b721f076427735d7802e7
cd3570caf14145f0f75af95171ca4e773cb9bfb6,5557dbedf27c88984a322047c57b486fb7a9fccd,1a71ca410691438f182910025443da0580df5a47
f261146b6fe454bb829bcdcde98b2b68c332bf22,822b46009626d3893cf23c2159d3a632f2c1168a,77cc2f4ceda166a09eaf04ca07756f950d1ca806
43910756170672062ac57847b98c16a4096f7f78,1b22962140eee3b11bef19380d071ce49f5f4329,db02c7c85aea5f66f4e083bba8a8ba649e06c313
f1d30a5bc63f4bf5916ad20a81c12922ceae68e3,c2faf6a8fd63727b392123b69f5a403b9ed991cd,d06cb1a20ac5674bc70b8e8da0c419f004afeb7c
423940afd7c7d8afaa4d45a5c08d36f83fcf5401,7721995c71a089a8796aac9c6570dd6eed606d20,77e3a402dabc6622fc48d31c641177452ed49867
0ffd4f87808838f1ddb563eaa2863a4d0f984a6d,72667f41ad1e1b310052fe05a244276c7f813ad4,837b433abc0378039d91f0f03061d982b2cbcc9d
b464d3877781b483ed4a1af04784cbbf175019aa,595edf6f9b5bdf4d04ce6580cae49debc72cba89,256ca9d210e9fb9ddc11ca3caeaf811ff1d97dea
dc13516dee4daf6fca861122adf329177d1e6131,bf5f7144972fe1b99f2dabf2f6910b5e93090eca,f0b322f4ed22a2164aba0abad84925a1f40e383d
cdc7fec019bc6e77d40e11c9c3bb173f95a3b364,f76bb5fc5e29998effe2021ba7fa563a9a4a8e2b,c9b90ccde0e43d3a26a812289a383353b83ca220
5ef44c550a605a72a6f8b34fc3690185097aa49a,9977889f4a2dc700ff8bfdaf231d59910fc08739,02e63411617bcd6f99f666cf341fba063fb47532
394fd2037a81b069f77b0704c63a651967aeb6db,53674e387f1eff6ec7febaa7bd763a2c657002aa,8c1ebd8353f7aadc5b79706e5bf8b65ac9a450fd
6a35227a50cb62bd454f46d4637a798084dc5e36,cc5814dac195e6c3a60030015339e18d0296fbb3,210674b9a039da69dfd1444c0cbcbe7d5cbaf4c6
f6a444c6fcfa9f1993841e8dce9a36899a8d8c9a,ee187f78f411711fe221f871fea01b203114264c,9664ad4138ec531b0be7680bb274db0fdb39b554
542c3f0c4c916a61cce0614fc855241ba0e4e8c3,c38b8ac28fd17072e2db87f4d008c36e68e8e0a7,d0b1402e103cec251219270215591240103d8bd3
4dbdb4f0f1ec9a675c22f0f5650a8cc5b44275e2,0d37e0e0f8cbc66df8267d6cb1b571d0c919dd67,0ba689de84df28a0a690aa5607ee83df7bba26b4
f383cf4deb29c6ba3d89c830bd40fc1e6632e98c,39896a1b113912c28ee09155ab6f81cc9a14428e,dd9179043e1dd2839249ca4aa2b5eb25bb4760e3
aa03991088eb1856cf7ed2e88a3173dd5709d210,cb2c0ae59406caae7672f2f8d7488515c150e04d,a6525062547065325350639064508a3abbb6a57e
3c205f895c6499b31004cb82a58942d69c34a42b,d936280c6b5810d72bcf1db26189339025343143,9bad5180bb210fa49437353c7643d9bc574af68b
964c04aded9d81191c5030d1bd75be285e36d8b8,ac9d2b3cc5d8eaf34ea5aa3cb89cd850607be49c,4de8ca83938b98367f4326d5cdb993521173288a
4ab310e0ed49cf72441c1072beb3e24206eb6e12,8535c758efc41d890c3d343d43e064deed88d132,929fc500043b93f1e06976d0735c3cfffcb2c446
4ddaa26fc06824c8212e34d8ed99f20a0298eb74,da3eb5c1785feb0dbd417632bff6f791b4b458e6,022a9b210ffce670dbe4d675baf3b70db3e74b92
d77f249332f6a73ebd3750a5c7463ed5b738a587,bc21634b467631b3350b42f83894a7339bea54b1,f0cc2c38b8aaff7b6b407aeeeb8bfe9556fbfa5f
6fbf4dfd9059f8a3bdcf5efdf257262dcd17d178,13f3cd2ae3f3d5197a85035b8d8ee40792eb66ff,884d24e321d3db6a74c25a2d0bf09b1e755645e0
e72665051f16a80d673a8d1f92a9997fb35a5f26,e57059eea3959cfc9daeee5bd558b07a4ad21713,90afbc81146d59c0cd85d73f7cb8e8091fdc4c8c
6f1d965dace0a9e093ce73faa9e02828db463694,430b2fd7917e4689de57e75a67ad864f38b570aa,c43d8e4adf47edacce499563558c0bbcc9c7fc3c
906d0ba06ef076fa6bebc994e1145bf222449b47,12a0083c5924a69f6928a7f28379df4cca86f12d,6f482952dee00a2e14dc900815d660a32e46bc8d
578424cf51d3c1a127c5eaddfe462e82a5588586,5726428dccfb87159f31ce505ab1bef04a5f59e6,cd5c2b82717d3168587fc9e853f8a0a0c71ac565
2bf7676f00a35ef8e1f252bae8e118b5088638a2,c9f875b15ff458afb0c28dc1e8e95aa155234657,54f761b4dafc35325e2d49dbfb12720dddef0d42
70011c2306dbf89b7b1b5c92c464550c6ef8b126,94693e5f70828ae617af1a4c1c008e1f4af4b366,7b03bac5d6171b3c1c29e38ad81fdc12373647fe
19876ca805828d1d59625790bd443fdecfc43e63,e9b3db0d78ec4a3043d69de785b951b25179c2ae,814b68fac0e7a2328bf4cb0adc995bf20947383a
8006900e8e969fd4f8078398ce762f1575fff961,73448deda64923dae27270f9eaf7f3b9b9bf2987,bae583118a0e685032f2712943d2ec5bcdbb900b
cb953f68c24fdb97ed1e8b5c2c59c7cdcf3c38e8,d56a90e5ed984b10ce192d3197e72fba5b4e184c,8e2478e6328415ca01414db2a77c2180c23631bc
30df9550019731ed3cf29d5e30fc6bff4bc4cc03,f2e0af6d37956caac79c5acf8c8cf5ad08475443,d5a0dd3d2577809d169cfe18aa78e8372fc3b856
0a3efb67020967ab55c4bb96f87507a45a85d572,8cdbf5887b7cf1bd5a17dcf0c406e52fd6b27d4a,0ed69fc662821756b873ad3bf9e81fd0c26ca9e4
5e3efa4455a0c20e72ee2d970df1fa630308192e,93fea6de3a0252bee42d8fb20f38960907994184,ea5ffd597f3b8a50300e9e7d1ea2fcd0f1e14f48
99f33824a7994a8e4fdbedfed79093cffcda03ad,1957ea11cba7537976c6600b2334a9df386d7aa7,3ecb41cd2dbbededc213dc54ee4e44880dbd8336
f59aab1371a008ff7c5f46d2b4d2fa56019cc15d,5085a04930268442e1dfd07f325291dc1f95d086,87111246ca24629d15385f9ec00fc9ee57421ea5
45620b11c0cca007cb38c94fc201cd8eef7875da,390be44cce0d32775bf1e24756f0535a1e55d1c5,27ff471ff4f9c54bed5df5e04fbdf654a8bdb5dd
08520e032a7dfdb7cf01c355d5a2a451ae4f91fc,d0b3a599a300945a46abd020fae9878c97d75c4c,1e34f047291dcf6140f89250d85a7b5fa5f907fe
a7dfbf012441cd54a960c7c1c153ca1a4f77582e,2a688eb948ac869dbf4165d2315e563b9d790e17,47b664ba92ac1e129b9401d7c0b1a0265f68c4a0
cf857a22eec513f3d131912a7d53c4239fc8924b,d6fc3129b390702dc0ebf94a07ef44032402a343,3d56f75ba7ac99a0bb6527b860209dda548a287d
9bebe9bcb7cc581f700600cfd0f3b9b100154bd0,84b3036574bfcc4acb20b211afd2ae9df63f8f50,c02b43fb93381fec8823752d0ac24e76e143868b
c69649782a27d9234c3c9d4f6f066fdb67a1e0e4,fa7444a0d81bea369311fbc3b353bd5ffcdd993a,de7ebe219c562ddc18e07c9f437d25cd42c3e1d6
e830ed6cbc39f0b8899447a1e9f732aaccd49eba,e00dca144860bb2c8d5e25d4d57f54853700ddde,cdd7aaf2eb015e2f60a49b263bee54d74998c0ef
385c130e8d0f1f2035dd1f9059879e3b80cf5f3c,eed9bc1f356acc9da3471b862ae0b35e8fca0908,1eec91056173d563a084787159f1607c1e712b39
5b192cb82a38a4960734493e781827d34124f14a,14ec15be7b0f91cc2892928e38380f8f98b16308,7c09f0be9673f9b95326ed2a442e496f011b50a4
56aa1e1bbe51ecf1143700e03119cfcccfd834a1,378b5f73a5e5d74b2504828dcba698475a56d245,5dd48078a65fee0363c11b44e80bc72b4b194bba
c2c7982a22f940366468c2b78e6625739d584be4,e6e49baed14c826a83e384fca0e29e739d3aef22,e841e95390eecdfc83dd7747597d3bc15195f171
33b29b0df4454ea4fde0782c6542668b324780b5,aadcb0097781d53e6b555da644d3dc05dcb5f3a8,4483343d00693632b120151f8ea67abf2a2c2d5f
04ebdf8df81632e5e3e8dd13d80dba4c75ea9c3f,6e4984184b94547a91ffdd96dc47046377693a0d,e89e87372e90016506c9a0bb904bc3e4ade3032e
be1461654f507d8210fca21236e7b5d6c3e9e1ba,40e1a09e6c73c245cbc1bb3ea1b97a0816fb29e8,b3ced4de97192b965f90325e14466e7f247d8bd9
e41c1ec118deaa1a65b58a933dc962699a932c9b,134bc7eb423c398b8ae1d1b93b105c2d1dc66667,214936b90e2f67c323cc530a4f022d3ab957e2ed
464730dc44dbffcdd9fb0d3ef0847e7f0a04c633,9374155344b33b1880042527540133700e286089,97b2f7a5e13190319754c19a688e000f8a6f50d7
9d2e71ff699c447a2fc954ef15928f6697d60a8e,776667366feec2f8f00a81ba8d3f016730fd1e5d,8608b82c015f13461728170613e4eafbcad067aa
2e086a25703995d5f636025fd9d478988c261104,4e159b3d455d51054b400595723f80c76998327e,7ee31ae252e6796fc32a3e1de90193e6f936920a
c19355198034141ea35c2e75cc148052e677618b,2c418b988cbfd4d9737fb34f6c81c52bd32c0bcc,3f8aeadb916de0d20cdef18897275c348133e90a
e1d9d1be0aa9b4029bdd144bb97374c3bf559d5a,ce2984e16abac4c2b1ee1ab11d19a9edff8bf25b,50648f2a6052a27c6ab8591c5817d63c830aa0ff
85fffd7a77f5dafbf672ee80493fc42fe09aae5d,43b29375899276a2734571d2be8daef68e5b9008,7368fcf4c5a6845a0c2257ae0479556850184565
89d3d866d2370f8f332746506e97dea19c9fe382,ddb572513c5530c024a83801b13227b6b2ce5578,810e62b7c9ab3e56f6c49e4a2a5b2b297dfbfd0e
436b8c212154e4935b3f030e92169a639db7895c,356afdd25bd80af7c674633df6eda10826dbbf4b,bbcc3966445438e2d97e07d21491a83e9b0bbb99
0a384b09058aab280c58752a46916d8e53cd71e2,d3ce008cd3c8069b1b9cfae5f989c52c756a89ee,ba3383f7e350afb3ca07b3ed50941edbd4170604
bc08af99b04772a62fdae261eeb9ddfa8c147fed,144d7ed97896b31ce9c18cddbeb3ffb998aec35d,0af333bd0f04010aa86fca053d29b8c53bb01796
a7b3747b7beac97be48a3d868355c6dd564853f9,5ee902800cf318036eb74044e4e87ecc542b080f,5718b33dd868a8266c933a51547e168a301a7ca0
17fac45ddce93a1769433e72688eddea046cd597,539ea53babd8f10c5e1b2a2404bf2e2639a6ceeb,125dbdc21cd23fe9f4184d3c2444b1291439b154
615e1c0431038c38ed1a2fc7710129438d05fe2a,ba1dcfc6a4136c6b8154ba16d05d977553b30160,953893267bb45dc8179f55da4c4c203468b2777c
25a9843ea4488a7fcd462ba7a20964c20933e96f,c48f27225e0ca6dccbcba86f3000f48f374df7a4,827f543289dd3f8ff80c09d36cad489b583c3410
720068360ea09dac6fcd35dd47e763baa5805c6b,a5309a5d0cdeb9791a4ac59f666aca5628ed6f0a,3fd6704582a29832f9aa518bd7a178cff083aef7
9efcd4e5548637e8c970dd693bd52b4c859ceeee,67c152092835268be95e6e35f1f31b50d6546bbd,90eb1351dcf77267e4a02a699b6f21ad2995ab2b
5ff2af5176ecef0e9f0deda6a007089f82d5840f,ca3f1d7b6d507c5f4f3e4d681b85cb9ad51b659d,4240279a848b8cc4dffb4dba278d3c1c1be60bb7
c275c3c7f2df5eaaaf1080d5685280062db1d246,afb9c2ae94e020a1061aaeaaf8d44bff2b95e797,433050a2c41069ba5dd519058e47166aba1adfc5
618237a1c75ec3d2c19cc26ef9f9595084b7bc10,73aa30ee0ad204f280309e9e36102d75f847cc3c,5eac35664fa0a3df98a3fa7b6bbe8c129e5fe7c0
d7a9a7319493dcd61d41e68b3baedcaf9442ec5a,820e0dddcdce4beac67320a4a3d683f00db46883,4236bee6f1832b11845869ffe99cb8ea0a96a230
51996d628079dbbf5f6aa74d55674a1ba1bad2d3,ba1b0883c2771b3a4b9e5ab3954d2a9ea960cad6,ce1f9cce01e1f58859886593ea04e5a5bfd0da32
51326e94f38d72e89bc833c60e20df237502d811,aca327d7873f16e89b3ed89846c1a91b6e2cf0ca,1e6952264b61d66f62db499f9ffbf405f7f4bcd2
49ff6f512693b6c6a0ef94822ccc31be0d4a2595,0219b4018cc400bb18f8ea3a924a5a0775186408,f0543ad8d523e40068359ddc096ad120c55cb5db
94a15faa7f435b1b8a5e0776446b2352b0359065,7a4110cca91f7fcb4097d156104bf7e12021bc52,7d6b01bfc429e2bc70eaf7449a2f899f0ce4b0dd
ea47cb313def016b4f6359126d45ba9da4054411,5ca73c61f4d95f688a592a93cea607417a734c9c,cb0f422eb1f04ba531b1acdc0212194eb1c565e6
924f9466f0219cab6ea5c52da9b5676c97f9cf5d,c185ce02cc24c43f5213563669fce7c2c9727747,d7b509e1498336660abaa1e35ca179c724861140
d16160be915fc86a6ba634f9ea8500255ff996c9,dfaa12e9d907cb7a8923cd6431e0817a6aa653a6,2247691e71814b68089dec04bd0b7f4b804d6700
9bc7df23578e59166cb0bfee9097c36587f4acc8,296cdf89ef05cdcfddc9d71fe1b84533d5b93aa7,f0a78f48f3ed43d40632c17fbaa8ac8058d35066
6c0b79c258dbb242931b90418c458b610ef018ea,723371b30a1ab3707e30292e4906cc983f92c0f8,9394158fe228595a8ede81b3a9f9b69a89aa413d
0d6a1d24bd0adb93608b17fff1e956564cc4d975,1c13db554cb9f11246951089bef3647f760ab2f4,2629bd7ba92a03ed6b106448b7eae6429b63e94a
2a2576b1d5c6335deb98c92f51344903e912c7ee,c67d35b8ccfe8a4de74ea6f33017fbd9f68979b0,db8c723b9d503f0eee1b7058495170b97326752f
46507f956552ac35f745568284ca6ca7de4f328f,eb96734b2062ee19daf54cd52266164d70e84b02,7a8893396d2598628075a4f3e001622d731e1191
415bf22e01cbb676fbefc4de83ee4d18bfa6145e,fafee8b85b91942bd60adba63c1348a6d89d5177,0e3d95b589923d8701e9f8c2dcb3cb06e9c27f95
4e4d268963dd6d2b596d1cb5a70332015011bb04,ddba001b651a404c2b01bdb88679599cc5df118f,5129c2cb9ac6bd7756bf77f8d94d60c0390e9734
17514ed5c0dcbfcc2d141653b021adf870d825ff,2be8f01efe35eec1c1bb9b278b54de3715fc5b2f,cebf880df914dceb662155d130bc6b565dc65a35
122c6c92cb5e494385d3fa3adffe6bee6ec4a51c,f0d92b74c1341cc1d09177718accb889d3791aa3,cf1d3539feebe1e8726a42a1929b19449defec2a
1699471b8dfba863d6624edaf18b63e075286b5c,9846fd3f37424ef692f286dac238da33de9cd31b,c3798a4a38335681a17ee0a35a63baaf8daa93d8
c6ef087850f57667612964049242965bbd452481,63760fce6a05ed9743d7af4a758009b9ee8e1bb0,261aff9de8ba3435e87d996689a074c6bcbcc783
68c964bf59c8380843fda383273a05d5aa44b27d,d33e6d639b70ace8f97c4a47953b0b910612d2a1,650d2fcaa9a463f90e17de0b719c41b7cdb4e8ed
68e026ab2dc225e950bdd85a59d9106cd9de77aa,a061b2e76386729992137803cb9259df66202ab9,b3744bf11fc50891c3769b1268f72dc93824d5bb
e27ea76b8887c6d4c597054edf5beddc40100867,5350ac7d65f1f595ba4e3b6d582829fc9ad3bca1,c1f6a7afdd035f96168c58b3af8e453962c69de7
5920d169c096737ad6288a96a37a9377fd8697dc,136f0429725919c7759358a0499a4cec09f8a3ad,e1a75bf6588284851b11c20f55791b496a764a86
8117c97d921cb0b56f4e958a0ddb7b6d34acf0dd,c5a128fae7e1c7671b05bbe286b4bf927a6c67b2,5d826cfe3cf1bcb0c5da68e0d584ddeb6a3220f9
352435cb75c53e081baf0dd311fc6cf90a804884,c0d57d03c232bafa06d80fee74b07e91300944c5,6a3f32ba6983dfda5250d03b9b2d33c8ffc6022a
10acbca82824b6a3ebf5dd829941da61211f947c,306fae299e2b90543f863504cd9a35be802d103e,777d536d9bc826fcf5d580dd80ba2c25a73de1ee
07698050e56747de32c7ce580467cc8bbebb2a28,a7d608dd431df9e641b147bb9370daae4750f723,9d9128a747adcbdc2a7a3fafb17237f895dbff21
7fbc82a9ffd9fda11f0643f32dcfd675de7a53a4,7d890608b8cea84f701e5f88a32f7a6edea3f173,1d18f2fdbf2b190f9abefd954bcea71795de8bc3
eaffd1deca89d08f780f34c7788c28a0ac49b939,c67a44c07a699e9c70b71f28370f875e1e010bb1,722a37ab2f8b008c750a4a143d49aae8563032cd
676c9a7bf6e181662c5838ced35d0326fe5da564,bf2e3bf51a1e9a5c2156edf112fbb8a83aabe42c,af47d108af4e289f6018b2a386b9c96b2a65c12d
6a2f596b8eb7efa8fb672451a7afe0a00b5a03e9,da10b8141c184e592b1d8d4ab65d675c0755fbcc,c4e20291797583b2d172f804c0c684747279e70a
52c00037d3600f819bd8495b470c06a2f026dc10,8fc1bc276f14fd1deadf250385c408b0973074a7,7ccdcd3d14a35c350c5463d2488906f66d26163a
964a9839d1ed9a4fe9400ec95ef0a0db563f0659,ae1c809a2de4d326571b2f086854feb70c35fdae,410916ab6bfad9c66f396fb94fef0a256f9610a6
ed861e5343dba6e3e10d75a6db8919deaf4b350f,c68c22e9e88413abd80866aa3293e553fb0c5b95,dd4b4af6a53514749c8ed329cbd9c41ab6f1b7b5
c64c0e617d070de85b11e171d895886c064b1bec,5479663e560bbe906bf05274b74cd168dac41627,122ed4b76a4e735ab76b44d52c845879e6fa5535
c78e9557f81f7711a60400f8709b5b1fe017bdd5,64ddf22e1b77cea0a29d13f5bcd1e09e8bb17ebf,675312c201c678c8446482f7e53b1209684b45bd
d502a38f2044a641fac2eb94501f1b49d3b698a5,fdaa1a12d03ab0af27d783a6ebd8c989673f145b,fc3685819c07008860e35f2d727d55365a4586e0
3ca73da91282ae5ea53ab61ece3301dacb454a43,40c359a5510fdbda573a1eb75a50977382f0996d,07dcd22b1c812f4dc659995c84c51fc580383a59
4401ef32bb51ed138015821fc2c8f51c467fec6d,4fdeada0a5b43442f09ebe64cee3cac9f2a2a860,838cc89faceda7b5439d6a816da8a3f7567a3855
f6c476ae79112ef1866dab22cee7c307fc8ec98f,56a8f295190f31bfb90d2503364ad462dc0726f5,5bf9de22d696143e5e25a350cf407312603d183e
f7265bf79e0945845c2b3e9472de654b5a2c9c35,181653162cfa3807e9077176b73800231c40d808,db0d1501e0bfe9166e94f8eb0204b31023f92940
27529a7e748ff7580e0a05865f7738632c61a559,aa9ff6c225997c84ded257d33219b60374470786,b2d2c5dde3260dbb688849aead1fe72f05f458c5
ab7de664719e8421f17c32307eae700c832f2787,4ac009846c7a61d2a3a9965b6e6fc7257691d427,a68a6415f2f559afbde579f1333043090ff5db8d
bb9a1af24849031928f0db2ddfbd1991f91792bc,e6f40c196a4a76aeda73632a67eff84f56c2d7bb,aecec2f6df34e7ddc759215a258899a19bb2eed4
4697de93793690818baef08586f3f06cf6c776b6,0f0b9833fefa846d3291d275d5d78602212c23be,74ebc15596a6ba09eb663919c340df005291924c
58b252705ea9be56262b384f2b633e386b41f69a,3892689ef77e8cb86add2760482a7eb72e93345e,2e608a3dd025db0a270cfdb17a382e46547fe62b
61a3f6603d2fac4f4b88cabb5c1ab1361bf6429b,87e9958429835f501f83e8714f2a407c2ffffd12,7b6f273023059d3a905fd35897f2db9eb5bf46d0
c4069b5fe8d22d55bc667804aa0301fd00a308ef,592c2ea0fbf6b9fb44e911fa98725a005e6e1ded,06d99b1e6822a8c8cbf63b0af2b820068feb530b
6c8b7577958cb4d7589ecaf9705a4568e24c7656,848bd3e0c0515ff84b72a5300f03992d8a05d55c,72213d42da79cc35d4f158c8a8555eb0cbb3afd3
b4f939a4ab82eb56fadb74ee53c183d9c814f5c2,a73ee4f403dc037bdc0d45e2ae793f55f994771a,bc84f780ee3baba239b7cf99b16ac8ad70150c7b
4fe3e1f8f8712a12969583853c4cd1059f5dfd16,26f4d957a0e50653dfac5a7e594d30154146fe89,d354428f42a29010872e8aa19afc7cc2c3b1418d
23bf243acdec7fa418833975a25d80edf89cfa15,e310be017eb68e356085ffb0495fc1d042aaf294,968d00fedf64ee56f23796069752cac3207d48e5
a18a6b4391ee8c0786fdbccf8154949b41be86b1,9526fc64cde63ce5768ebc21f9cacdbd9b827219,4a67f098ee5f2077417ed8b47e6912a0e4794d1e
c28995494c33ff0cf4c66858e8a7de86e10dc411,5ab67753769a4dd11c3d6c4d2356a18a6bf14fba,f134e3b0eec1866a21572feb012813fa14623b87
dbca95518bf69f6d236de3a23cdd91917d208065,b31adddd7ed834ce5be5f15604ac14d528299757,f43a65aec22e9cfd0085a928d05e5ba85d66f9ad
936a35b587afc45921cca0d0d7753b1cd9373061,2ee32623fbf7d9f6a014d71036cf2624441bd61e,94a5fd4a5ef66cfeff2a78fc134f4fbb68e368c9
c2eb68330cf48af3c1fd21a1a1317591b16d7c79,bb2fd561bb253910d57a33b067c269e7894acf08,4303d62c2bb5f45cd28fa672e280f83f953148c0
bbb01506c710df62b55cf7e4127b4f088a7d6f4f,5d9968366bb9b52fda32bc3b99fc18b0383f5f42,9b8a6438c786637768ad435c10f5cf179b0c4760
d5d90499ee87981a8cb373dc53ed5105e98c36ab,3ce6cae11d0f754038ac31a3249431903a7909c3,bfa0c60e7725ed63f2148de95c4651541716515b
56c3b5b2cd0acd8f0aa531049f7d5b5fc86849e6,df6d2896931c1f7b9bf9f7b401109bc61dc0fdc6,54e418c5e87435e6e1889d755c499da4554a1562
f6587d950520e36b23d412c1b370b861e21e62a6,14dd15373670d02e90897601df347344a3dee709,cb05049c4ffbf9529cb1545ee497ac2a86c134ef
1083746abf9bd7ec09161cc0819d7ef5c5541d1e,35c45dfbe5a1f1d732071ee4e812684ed1a8e58b,ae0cf1b50fc3f480dbed602d27174f84b77b8ec9
468975aa3046e252c5ebbf4c9a01088dc7d86952,9305bff861034a05c8919a8dcc3783017eff6c61,b5fca5b094bb49c03264d6e33a4a1c308b7172dc
133f76c8b7d13e00c891007cebc4a4ceaee80594,dca4bde3a2b43a31fa0e6dbc564c823f53a20da2,4d8ecfb42270e418060c9de45ac5a1527150c66c
1f272f8f90cb1fc0a0a9ba3723aad13ebfcc5f03,8efae66956c35ef07d5dd817cfa20d6600b6fab7,8c5446a03ff70d74427b933ca13c9519e141c0ff
54e0d972783824a2172596154f73bea1d3481944,5dc1d5e93b04b6a5d0afe4260fa2b40278ec0f0d,955e495c217fa558e713aa82cab81ddf7f3c4ea6
ccfb34c518291419b1ba48edbf651335b8d4f8ac,6e5103f3c5da7a9ca8bc7881a543890de47ae30b,0b96cc3a30112d75805553572a4ac75d9ad6110c
71457e64081e43116c8293ed7b28bf2594c53c27,cb22b7a1d5d331b571b6efbcdff7a1eb8ff7659e,3069d74ecce6a302ef844f6fa2819f46af7eff2d
008214ca15812e7f4db97cc9e1ffadce94d68d2d,40dc7380dc3dda2d7b08082437de6bf285e21700,84c2a0d89e1de298659b7e54ed7cf1b589493839
261c0ff708862fd8bfa3fc7487ef6747ff91ca45,2ce34f7bd3a648cfa5c7af111bbd0ef0fc991f8f,7ef2012151438c314d82b279c06939140dbf0c41
cb73bb939bc433b9ce5137492fc69a6b5d993b7e,f9c006ca9f5eff265bf1fdba8697e58a1d09a1ef,66a1486f325f7404ddc3679422366fc020185525
a390a2742024ea5a1820ea20ada0ba0ca325111d,4dc1e22f1f8a8d1bf150c3ed1ebb6498439909d2,a206deddfb5f6b634e5da5a7925c1f867d61eda9
886baf4cb901337929a5bbc7a21510835c089b41,06ab6d7fa71af5b4f14a4a31b9d5dfa74c3a4ea3,bfc5fcb8d15ac2ce9dfcafc7cefe67b387b7fc8b
b36154671b20b843607d3093c673f23bcfc89fcc,396a030fc2e0389249e58231d8c3134952c7a78a,714f0364205c9d439ed762a868648c34dd3c3677
985ebf3b6360c2850b38ccab36aee38828146843,d1bbc99e4815cc1d70dbd9fa475150b8f0940613,a2146824956673e5e356da1b3f1429d73e5ebd36
652643499a88e937c4fbaf95169013339b207052,6a9d2cae93de921b982958cbab49ac5ddf64aa58,b3bf183fd37dcb46c4a89fc48005cb68dbed4a50
d2921dfb55646401ff156f85a7997ba1d17f2d22,a5f6505edc01ba35c0fd05c2b048b6ab7aa306af,3cddfb4e2ff9fc38925ce973bd29fe36cef3fc98
677f8297324e2c089d0cada4a7a9185594088a8e,54415f8f4e0458ae2ab2fb7d0b4ed97e8461cb7d,6b7df6d22e246a54b7ce60e08ac4474664efe90d
33ad038bbbf5d724394d5c07aeb4bf7aa7ad71d3,d20f18634f5d0dd2bd365dbd8f2ff6b69f48e351,ae8972083f6e97772c480dabdf923d5165aa5faf
213a0a704aed3270afbb0c9ec0070e4cbad85d9a,2650049b2cb15178fddf77cacc477d910a5b5df0,86d48207605bea3e2c72bf3734666999dfef14d8
7c6f3810e3e73c4219e6f6f24bdf702c61843d13,f8c92914c2f33be7a3f53b4278b50792c9c73b13,dcf64d8fee683749998f54710fbebe4453f47906
810de9eacacaad3a7b0093e64f61f4c95aa060c8,239557237fa4351aa0b35a0d2dc246b86d8d6334,6007ceb9083c0b27313377c19f65dd8fea51fcc6
4acf8d36b8de9bdeda81fccf8968743e577c7a89,9a1ccd2a16a48e980662be44f228d549871e8b22,ef0aea8ca241aa5d021d74efa830e690ca447bb9
7e57e4514a46336b724174503c7a628e812b24db,679cfab709f7c6c9415524d384716b063a7dfb8a,67b08734cfe4bbe2aa19c4cf4020817abaf74c5d
bad14c5dbd1f72a2ed532636d390fff37b65b195,61cf121533572a72ea65a7ec35bed1a5b3621a5b,37bb10e893d97f44e4f130c06ad825a2b4693945
b4df9dbe1d10937f7e61265cc58cab832f6b8506,a4821b1d0cacf6458dd21544caddbc52d10255ff,2781be118f8cb52757eaa7b369332f72550f6252
7e158b6c9b70248ab9de3a12484a9c82f6c17ef2,c7c8e2e0086f1f257af5f4fb927beae687105f4e,9653406ac6c2633ac2ee2b12ee857beeed5efeeb
bcaa2c9758c41fcc05971c35e14d02faf1163267,c27823568a0c35eacd38cbd8428f8b30563dc452,0567572faeb96cc58e54c2c48bcf6c2ada713936
fca357e898814c4b8d8f83efb3fc82c6be4c8a2f,daa05f19cb49aefb80c3ce974f29f45cd4148fbc,64812bdc6013bc09f6e59e0d554c3e8e3542987f
80c63fae3052241047931f7b0acc9dfacabb5f7f,c30ce7108e3c6f5719a2be4b95b5d20e518813d5,1e072aef31dbc456da749011f2ede30dddd76546
5762e687a3ab8fa55d3d7b14177de991b044e9da,4f77cbbac4accf137ac2683b95f5ee9f7c628ce8,5e9eb673f8141c2a931e971448cf1264d55e7f04
9bd785c06bb6f3b7c1dfe2190cb5fbfcfc6f76d2,5065e4ba50b7bcda40c0c010b404eb228a4d3188,0053cec8809421efc739d7f2e5610fa7c966e61a
59b49addc0f257a695aedd57f28b73b96382ba3b,6c4198fdf3b71e24886479cae3fb529d82e4b556,ffc3e1780d7fb636bd11692558012983e45127af
9b4033fa80bff4b50cd2faa83a49aea8ed71c17f,5d571853acdbf9ca26966ae9ddd0eff94aa565c4,e2624fdaaa0a73ba637629db116ed2c6287494d5
a7e234254f19327d7053f390ac93d29f53d40803,abe3002b5badb867b33dfe4457e92535b089a954,b08c12ff8ab31b63044bb03ef025dc3c175648a0
711e659f5c91098da657ac2f9dcb4cb52f14a937,3e621f201456c6f1cd7c297078f618ffcf953001,b8befe3d1fd54329845387d8c7109827c55a0b3c
bd4c2064726700790c5c6bdd0a55d3d471dd0c5b,e121a753e116701c5a8c68f44ca90b296b67b6e8,b2165570de567ccd94e192353900000376492fbd
4a7a113a30030675eb50c9b1d0e563b6d0b82c73,81e83ffa675a60a8244c2a32723bbb00b70f3e46,6b26fa0f9a4c6c7f8d12a10737428c443c7750e2
eda6b105b718d810129c752ec7749d6a8e6132a7,3a242a17f4ad59a3bccdbc1b7982ce92b9dcec76,cd244cbf7dbd85f2a28b67fabc27455fd23f1e33
08b07122f8c0a270d4f9ccd1bd925e14402323e7,bdbdf2616830ee919a86d5181440b8db1b89ca84,4064694a5e438b10d71a24fe5d1d24bad40e4c48
3f26551c42857ba03739f2e0d89fa1dfc64979bb,a83f5749debb1409e18f0ef92b2e81bc9d0adba2,33e25a3dfed57b58ba8576e846e63779e8d6c9a0
962c5bd727fe1930421e1897d0c8aaf6fba6a489,d2929586652740f02401d6c9f603cc1b2faa56f9,f78818e38727ccefbd1c3b1415d186ca67f34fd4
5a2d884fe3f3f556bec5ae3a74917d31c5ce896c,5bcc530707062fc715a4dab703848388d67efd7c,8a0fe7bc855ef5b4d17ee674c94bca42fa7719d9
d14c13fc7213b129d33f5ef83213c245ce85dd3f,f10fae66df3eac37f6e2b9808c48e0075921374f,0b5c8030e40ec3176d667a3bce0db00222b3a809
6c1c4a66e820f3f807edff51be7abbc357b661e8,a46261bc15ad93c953e8d116a2a7bb311a4fac0f,a13694988df7925be96e917c3952e82036d2653e
fc41306c4585c17e34d17a5f3618b59806152fdc,59ea39ce75fd1f8f5d3f9cb5afa264c3198d8a96,ffc5131087cc627c3ce957de0998d92518a3d958
fd4d6b8fc3f139bbb41eaa96d82055b25868ea4b,c200bf531176074e75a0d8efab36ad34886a3cd6,967b721e4ffa310891361e6947a40181e7288d2d
429454c8f48b197db4f8d25fb382cbc074f23e38,698b5de389b0342acb28bc6f753b79aa1b922933,eea8f3277211a2df7cc299dacd03cf600dcd48b5
e45d8578e8d8c5ee425f5efc31439f54ffd02ceb,2563cb6daa45b7b4ff2034f3c383a5c080c5f756,8cb92fd49a8f89d830850e3f775550342ccb1a8e
e8c3f5d6b0a19348358d039c2f975c920b39b26e,905f0b1f7819d50eaa2a0cc0e4c9da7e491d6847,12796d176d278f11843fde6abbd0935c21eba2da
455f603c8c6614f10993047e3c047fb8df3d3f2e,3c3120845af13d067111b13bcdae08ce00247333,92592be8e43db53a29b9f12d49efa317fefe844e
bb0155141ad1afa1869f503b585f9d29fc5bca6f,b97570c8b3b0e1c0f3b5d6c337b026686d5d8a68,ab0d7697c3038537c983dbedd52046fe27022d70
3e760b33c736290988741ce7354824cab306e952,781da5e60d334d6f59cfe97a511660b353bd5ddc,69d5d648a9630a85a0ba9dbe0f79345152294112
671c674d6513502c0bb5bc477d83d4ee5615738b,a0c0a8fa8c1b8d9ab6113eaa6ab6705b2b071df1,01d6358f93faadd4ec8f61c1146d6a5178792580
78af12b58483e701da0097898e26335382e4dcb4,cc8f8dbde854bd3e6ae8663949660924817bb44b,8ae1b6eace7813158e0846dc6edf1c79216aeea1
5abfe21f39cf60800c77ee5f22198d94e8341054,a3666aa8c96c198b294bd794cb1fbc6eed2c28dd,f56aa9abe79fff9dd5f36e5f092aa2629dd1c6fc
72a49b68cef4c213f089c79fc1d47b2874ba146a,27675967f85208af3308f342a4e2ca0d0a8dc0a9,4ef2a889464dcf5b05569da5ef97cc883a4a6938
050519f16fb7f00d857776249fbceab350196b04,7e53fecd092c55b7675af5e6bf5dfafbe9e74da0,fcb646bc3bae2cd53070cd608bf281b1da534271
e924dd0d16c13c27bfee35e98376e05bcb887415,6d1df899e61fc69117a2e061b17cfe241d2637f1,dbb6f95ea74a7d510502818c38e9dabbe8784448
cbf444bbbe699581354288d36b27c43ffcb47c17,a5d1ce26a00d1196bea7292c828caa5fb8a93f27,12496a638b4c5b1ec45b5435c8db03ea34e851f1
8295173f8665ba60a3b6df56581b280b448cf6f4,8c57d20abc119d71c86bf24088623dbced3565b7,3e984294181d96a590a814476616c1d3e365f458
2805e44ccb58b9c8a31864c6ccedccbcd024487c,2d2906205bbbdcc4769ea5587625deb9fa30c83f,ad8ed4b48d60ec8becdf5609d9b1a63cfbd1efdd
5066a7eb2464ad8d4a9d10bcbb8c848c66c63e78,217b3ea3cc200030e22b40831a479d5073bb299b,25af28de1ea5118b84464baeaaeedf1518ae0218
4e4910cb8409adc60bcb4e02d907d75203785a15,67cbb7032e1025996309689fc2fb3687c48b64af,4ebf857ffcf8997a3d5efca9c4f2ae2954d49b09
6e7e6326822490236e1c46895221212bd1840366,83f2f7bf375bd50366d8ae859ae88fcdc8ad795d,acdb65c2a33517d623d8468388f323969a49d946
bf5048cb5e9655558802a7f369fee009d33b57e7,238d09d875d38d19c2ff77a12a8b463ed4a524a8,bd6bbb6cf4fd0ba52c1447dff58a26dfd98579b9
ea401ccc826b13e56965ea4dbc0b79b8a01bb7f2,392ca81c20b781db7c33eba2b8609f71ce90ab15,efd58317428d3407d7ac5b5986f9674698a4de70
2d1ebe4cb3087935ef30467d6d71ca74cb8967da,07461d0fc3a36fd6071aaa9bd13f2d651ae0a74d,c881d057937f8146701634e884a44f58e29d24c4
abf831c430aff63659113e53150debbd0bc8724f,79f60923bad6ba4e0dec027eacf66a892375fae8,e77bf0f3bd38071b6b635750896b1e27e6d09c40
15b2f9a7b1482ab9b1abb457066d494f1e18b57b,2940d0f45f41fd70107d2660a5059f4682833fb4,346b57e238953710adbf9b576cba46a5f2e33817
1c8579da2e401ee0dfb54bcbd170130c0a653659,99c84da071bf59d35e0e0ec85f83dc0a2bde7bef,2102fbdc97e9cdcdb56bb5e549018454197351c8
db843287a2d21b94049af809161a9dab8884331c,bc76487b878e59133ce3c2cc19ebb13f9a9826ea,77b898fe45cecf6a52176dcdb86ce0f63b9a8f57
d37117c460f1cb65e6d750d9085f628a0dcec562,0bb781c92876ed29bb962e9129a4f9f1c14df412,6fb4b9b7dd751e41d7ef808c31a33e7810169c24
10db5ea5dc0093161900a4fc88d2905735c3d95f,a1c8e92904f3504fe6c3a7140134b910aadc04d9,8226233aa3f6265e9c29b120493fd1fff3e6b5ee
812732cb6ad97a11c9aa8f2b0767f8dda2dd29e5,5ad2d47e236b80d0d091667a665c6a4da736c1f6,2bce4d36db45ada7533f2e6d3d42d84d5b58b711
e85aff2b967839b9597ed00d613c268d1a6ccf50,7b3154911931d4b92c619c207e37194057c00b68,b46c010f82aae51435dda77ca93d91b1401b0203
e0ad427b6c83a334362f42f8d1d3782963f76fa3,82b6450f198b15bd2823554d47a275eb836c9933,b463f2a141166cc739f27e5c93c9274db683ad2d
ec0bdfbdd9235119d210efaf7243b0ce2c9decff,f701d2f29498bb4766d814265995bad14c68ad13,cdf1ceca765df8b62d4888981cc27f023978c39d
21fd8cd5d3f98ecdd2847aa3bb43cce64af8f7b9,c9fd115ec575728f9a8b3966b5de73f1477ea549,73bc8edef3ad66e208cfb30fd0df3e13f3b9fbdf
91f0f1a86c293dbf972ed684ff196244f5292af4,0c3e179652842f9f65b810ff64447aefaa9d76f4,3836b0be04762387513cd7f6b95246cd5fc5e295
99e449eaa1b34d4d45df59600ea65cd8c82b2e7f,bfe3afbc62ae65e79ffac64f12a2ce2e884388d2,93b3315691f3e89843c8c16edb9c0b22226a51d7
f2abce7ea58decf10255bdfea14740578068dd4a,ef738f01cf32f00fdd58c7687dca7581fd54126b,0e647a073e5978f2e6aefafc0b034b187dbffce7
7ce1a7c6a0722dcfb6db9f2c2c3a0a54e4a5fc8d,6e7f0744ca11202c2defc6c7dfdd5863245612c8,99dbbcadcd19d4babe656949c20a5c643dd22a70
6e6c946e0fd1765f99110e12c79db27a400c6587,95243ed6ede742a891297e91d687bf510c9f31e0,f42817d1a2d3a3efa595c90d58aa82aa57f77cc8
8822be8a1f1c1b6affca58be1bf337be4c345bb1,d84a7d1bdedae4f5bdb31c406c4f052ff728aaab,f6b4a54f7d2de15793e3da1a477d1ef274f31cb4
835bc62e2a8aa887170510ecc2ebdadee27bb4e7,91d8009b531b61d41604406e3a6a94e92f1b9c41,5446d53156de14483d6210297a99a934ebc5909c
1f19b113983906e1cbffd428eba4488e78b4cdeb,abd494624bf2e722938b14f2eb01ba91f4227799,4d571a19282490972e9434ec4059cf6a01fced72
2e5b895d70f68daaafe52ecee8a66736b055decf,c6a549eb487f3bb5b0578a56f08db35559764b0d,188a21bbfdbbd2c5c0a2b6a8232bf5da9f6ffb90
968e23546c6614cff0607478721e181800ac38b4,baf5ff4e05987a027d8912aa231ecd3c79147dd1,4fc763ac5033ae56e908ee263d538950f71e544d
9aefda1e6a34940880f930df300985aa542e49d8,d2726c240648a1db264cab515969672355746c97,02745b0b83f9ea4e1fc98a44f753d513dfebfe62
177b38dfe9423dd714a99e9fc34abaa7f032df66,b5c7997c88f39c0803a8a5f48188848843f9cc6d,c1d8e32eaedd102759c3b5132228aaf493026b8d
39164ad732ea12af79ecf267172146569297aa1a,cc5ee6b868935bbc3fe22c349b9c312029d88523,4b39f7dea0383c96f62f381ab46f866bd8e2270f
026d23632aa3343756ebf454d4d0961048d34fcc,85207e94f8e4a1904a67ba2a3be06f7b69ef146c,2e3e3edb5fb5b137c79875e5f018e456fdd8c664
3258937d97b8ca6a4ea6b6556fe46664da9d65fa,cc2fa67dfa475710c57c4b3b73631a0f3a959e3f,c450b63f1ccd696c8034142a985222d3f01895f4
020a58b0750902e161a29bb1f8218052ddcd2d54,c1eeb8beda0df3f74741677df85259e86b0a789f,6f88919f3775a94c3df98f6b3d2c03f885202e03
77ca8ba16d0a5ab9aa1b261b4d1b44c94a1aa2b3,0a383d8c0f50bf3ed3333dd57f295864fca02cae,5adec3ca98120bc2c4110ebe354dfc50d7095ebe
be90ad1672cec33b15f8faa09715190f6279e75f,799cd957e625400427836e7309748bbba32e2d72,41db71c21c1c00dc83de8113ad0b35f5250ca2e0
3fb0fab410ac4c791227d74c1bbd8ceb45f653b8,b00c0e44a596bdf167ded7900b3ba71ea903591f,890b899842b741f54f5191ff369c8a97a89ac845
2e8c99947a978f8614d4075b1ee0d9caac4945aa,190c77e8633d185d983e3e59d62443bd443bb807,ab01b0ebd72c646b66a6bb3fd55ed717b9852541
494dac5db57f60073f2d538f66b6570b9fd05beb,2577180b935364b1a84ee8d38f8f6a42c0b812b0,1011c31a80e0ea9e67497b335a8293a49cbdecb7
9a85ac204ce5e0996478c0c4ede0138ab5ecab15,3989a01968ddee76110556f2cb2390da751b9694,c745ae4836a0f19a1733347f208d263d1a5829e5
7778d20003ab3b62779243cfde33bd0b129bb61f,01a449c807e4ad9a4142977ee86b16d6461ad256,1e136b0cc7ff37f900adcb91b2783962cf9d7622
5124ab2521defb4623b6866e4d5c36726ab74608,30b503abc4e628dc3c2299595ee76dba48d308fc,6599f1d898003773f70c24898419f4bf6bef78ee
d02921d66b14ea499ef783a834388be1322620ff,5be1bfeecad2af3cc4acad908fa649849a231bf7,7afb665c92e9e1787c518c1fbd6d205476b36d04
7ce19c1ad78a75d84765790f077f228b448129de,a5dcd1c44ddeac28ca8fda44f6d60e3b179266e4,464b3ebbed39dd87480513372caadb5214fb1e3e
f7b1ec24352fc4eb77adb23ec70fa47388734c75,a01a6021409f83d80ec80d95e73a66912d7d1211,c0cec218d64e082c373a6f973d4cf2f5798f84fa
bab60d819ffdd3c7fa6081634ebf89ee130cc61e,d9eb8d75b9f6005cc36f66da635c46f3d4aad250,7110d1e48e8fe40a95738cb993cb06fdf535afaa
cf7ad98dbfcaf699983d813452a0a5dabe68818c,023f08d54bef139841faaf7c954732498e139277,674ed4069a2fdf69362353707cbfa08fa222d998
ddbdc529b1e3d99244e2d0cedcb20195c0fb55e7,99ab6bd56d4d60aa3cf5ec2680514a143da4dd1b,04a41fa5b08de0a837f11af30cfe9091c36a2830
fab4ca449bb6ba351500c5443a3e9c0567ba19eb,387c80cc57b691c887303cc224ee01dd46684a0d,3c58f26e83b91e2d79e894b03403d469073c7113
074ce9c50fa5d97afd1ebff5720ece287f767f6e,e19fcd2b8b826c69b9ca97ab19eb9d9b49a4cf16,91cf1774dd59376434dde4581f8eaad74696aa0a
d134fc1ddfb6158945bc1751e0d2df1657f89a64,7533496505e52d2df2fa7bb3291c23adb91046c7,e078408dcf76a282a7336afeb5476c75779817cd
d45915b6ba0f99a70c51243377471bd834a5f541,d5867793f6d16bde39e0e209a11741ba8d8b0388,ec40db3da7ab1d8143b4276518416aa2816d792e
4752230c8f5f5f51774b90e52ceec3a142b3f62d,b93998c17c7b2eb81e13fbb93bc987f0258a645c,6bf4c7a68d2491971350170e80414a07e11ab4f5
7388735b11726d1263de7058d7492d9f87f9bcb4,b4bf371b34b19d4505b8a330a1b9250047a4b8ca,344da9597f1dc072a634820a9431146d0b7c60f7
8f68988aefeec865263dfecb29140de582470949,6c7e6191f64ac8cea36e963028c190263d8a2ea9,bff09e8e9e2f6e09d351387fd22b1849c5975ce8
fd28cc0db04b00612387baba33f30f8e0dc3825c,d502bccc1b03094d5260f1494baf49387f674273,bae50d80d246622a958d57c8dc70c3eff91b1b53
a925522ead1e0ccdbd0c77c57e2ccc147b61dc67,85ebd2c94c5fdad806ea96a1cdc3ff3400692dab,a4672fbd1c097752430017fbe84a26d702e43e83
cc3cbbb7b96d75e816f38a83abcbb08b9fd8843d,a41e991a130a43f368a6cd1054fca2d38e417620,0d6b5338d0541b6a844d1d832b09b7709fe2948b
a62c7555d78f049c711cfd594455f73fa04b6620,64db584eefebcc5e5faeb287a9d10977adb4a886,2c180cf101b6a49c1f8bdf462cd7b4e729600ad8
07413be8b569f000a158c290fa856365557c3dd3,25ac1380921c96b933673c8ec9f3e10da66f47d5,13c344a3a078430d212f2f523822c5810157a3d8
d7755a56f6fe705c8edfb955e0f071ac55ea5865,60d350f06788a6da9c2054f2dc2083066d9b10b7,a0e7882692432d6487acf60ae54218335f709233
27df4e98d2f1bf8e64b6037edd8d4643bd764809,aa4070ca8a2c27b818269b42c7470e5b7b03ddad,62846f54adbc08323ce660fbba6b33e1e0275d07
0bbc5a75280fa0ad0ee39e046dedd9d6d97ab90e,305393a9c11b8768a2aaa89ca8f1ff0e852ed94b,977b2f2a4bf7bda09554b034f2112d761d680517
09e61201d221bf098a42d5f994592f7df51a203f,14f361e13f82eceabe67317ba5e243d404419233,4c89eaa6cf12074ffed3b01cdcf30a6aa507aafd
05c6937fd9dd592eb643bc94d1e16c1f95dc6e82,c8d5bd77a31e088d4f5345a8294a27a75b3bf6c7,2a93340bcc22c2f6c45c22569b10a6d81ddadc56
8f95c14827ec62cfe7435e485825dff98b72a8f4,38075ac30c61c95b9371b07312eede596bf0bd22,94d8c22c6ac229faf084188fe25bc04966a47d7a
068f781c7a21335ae04ed8e63a5c18f1a841280e,ca9384fd6c265aa76a9ef59229b3746153e6114a,00d5bb5bbc52baad3f2e268c2d51ceba4b266b04
fe903f2ae413631591528c2ea9b33fcc05eac4e3,4dc0c37678ca9102dc0de687cf27963124bf9bdf,aafb471bc880fc20a9b73cf0d60f109163793794
1e5ecccdc663ca646632cbd46a1fe5905cba99ab,809277d2b15b2c4e713cf7fc81d284429e935c2b,7f7c5785fc77b0e697c15c69be56ba7c84bf2fc9
00aa7b8ab3843aa3d5521ffc1f15cd01c4814685,4e605fb7643902e82de03ef4b43aaa166c30a42f,ca242e9ad0e3ba047fcca8cc95fb8e41599d2d0b
c4d7773c0ed87047041bbf32d8773b70b75709aa,a55980bfb85a47c711b31f6ca6ccf3ad74c66d94,099a92733113b683be425b3400f744394ae2897d
00d4a6889dd2f79981ebaef3f839be5354d2933c,0934df505cdf94d24ff93dcd6c23eefac8799795,f20de5d583cb86f6ec3bf856716fc85ab9ce4a95
44f862fb4eac9ff7383bc57dbd18b87ea314defc,34587a647f791f29c0ac26fec13059e516507c40,236e10d03aab15949f7c2114ddc39b63cf2ea364
66b7ed45fd0f260e2d9d9c00b844e27b7b8b3191,6cb24a392959e10186cb0bdc9347ef78ecc53882,321764bdd93a675343fa0045ec22a1c2d62639c3
ee387f7c66f418a23f78a0b6ceb162bec71a5d1b,3511b8097269e7622ef97c9a6da7f0db8a948888,df92d88f39a81ef2ec20499ea82cfdee6df04df6
b91fc3a0d3409b39e20bf0e0120ec8c072bc410a,dcae87bd5267914c8be0b57481f355a3eb700f3a,0da5d57c1e54cafdfa4f2233a17e4d17dd5ff694
21d843128d02fffcb8126811c16846420d570c32,d55b2c2a35d9a30f4928cab612f02d70e2704fb9,5c75ef30ce78ba8dcf467f65ee6118e7dfe87a09
99d04fb5b4df12fab061bb445dcac84ca2b1538f,4012c3dbd47f661805bb7a831c6c687807ede3b4,ea6529ff63225e13baa4e1fd2c193b84d1432048
ee10850a5793b69b19dc82b9c28342bdd0018f2e,08050086b950a6bdb5a04f6054d58a497f45d7a4,bdc826cc18a03a833735853c0c91268c992e8592
6cfee2f5d5cb602c9a3a199d943fac48be683629,b8102dcdc0e24bd7f7488ad731e330828ce32939,d4e610dbc3a75859ce53654f88ea97e4e3fdb8b9
7e73e0dd2314527e9b9a79e51fdd5727e6efdad8,c6168327925ff1bc96f06fe9df952b147bf2b8de,b2a0df0d10aa701c4e21d215c42fb78cfdf96f62
de3ab7e46b6c7f50723da61aa992b04145cb2472,78c4585b535666f6c2f99af64dcae76c5bbc1f30,6cd88575c63e91afaf914f9ff9a1c67e60c4408a
0ead28c1e05b6eaaf53455be86d8cb3dfc97c669,090cc8fa8f7e60f2bb0fa6fa6d21d17509f39564,8e730d20db57219db3aa63bb97301a0a1591d1f1
8c39213d39eca0bfe89168734159f86bebbcbb4a,6921b968f1cdba59d2403a81c2950336ec2839af,e1698a59691361696e8ba2db1914f70b9d195762
01dc62b1275ca935ab65e856495faf3300f6dc62,b876a02daf2e8ea67b4b6a3aad8a3a96a6445e0d,0662a0bd44c557d338e577cc29065db54b57f202
b3a9c36cbb77bcd8079505ee9f16b68a09307ed5,dc9090e67f48c7e23f7701e46427169be78d03e3,1ce2fb8a4acaeee52446e881f0da0d0540097b2f
1e80ae406d66ba18ff5271d413c72f48f0f698ea,3ceddfb2d682a6440d36ee15fc4d2ebdd599cf46,9f077d4ac04479b4bc3e46a3eb8465d1916df5df
703ae75ba6a9d8d1c39e81e319e72a4fd19ef702,20ae686e31f47256d657a3bb2b79751a98deb38a,bb3095866549b503f6419b773fa2e65c0b88f320
0aecf4d89f40156e602576f251d2ec7b3a442a73,2fa60d1af3e3af9a2c39fd1dc6a0360310967900,03513720a3bab8b168cbb9707417c915d9654608
c96e20378024002d340434835ac2cf912c8ebe90,4e3a6aa5a812fbd1aee6394f98cc4c2425032735,e018264ad93c77e2855f144d004c26873d2f772f
4546673a33b7f31056a5cde492b080b8dd56435e,a4a469ae3786be89f66b7ea635fbc6f3d398ced5,afa1a549acfdfed6768edaa710258230b70e497c
5a0956d8050eb4f3f54ba0d8b9fad41fea3a09c3,203b5e636fc2da4d2c71d9688add1f07f7835b00,4c544d7858f5e74727a4ff57dae7e5426ac73ce6
3eefff75dfcd1b9429b4efaf2902b9cbda3db38b,7baf2461f06eb90429c07950459801e93d286b05,2ee6a81cffbb95c32c08e5b8474bb05d6658d69a
429438fbb9ed8127d3129ad0bfdec8081afbd05d,f4580ff612b2e24eccac30c99a709019ef4dd457,470e77a5725fdb0eeffa9475a14937779dce364c
d2a091ef8522bc99a779f3de26e2c6f1e2065061,6fe647ee3dd194e7ccbf230782da0c42134245be,1b6219823b8403beea600fcdcba775312aacef67
342803532de444c5c0710e625bcc2b884193fc51,3094f756903a6c06ff7786a1fa972ff6a61de457,12a2c56461dd689b24756292d4f069e8e24690d8
d0fdda6da718e26af14c17fc9d7d0fd3d5bd9fab,7997f884b70454fcb9067aec884b947b1d6e7759,7bef4d827d905fc57ed773c2aa70f157a573e225
7f1050464a60977ad6261a108e4e839bea8fa8a3,4610980f2e9ac4269074d2d0613290ab78c50bbd,10fcae34a957e94837fe376fa828815ab99d80a3
5c7974fceb768f96853b4abc05cb122ac8ccfd0c,4b157a14988b5f0637e61b5555ca6e420e896b99,b58fdc3e584854a4c4fc02bd7fc23f378263d25a
c9d9d42f0e3cb3d413bb755b7ec11d99e5446ee0,42eb06f5c660df09a392d99fb41166ffc614e0bc,95ad8f1694dd0efd0774767b0a08b79dd53130d4
76e6beb9298e48f7dd218101f3538f8fd539c420,284317d877bb10d11ffe8f6f8d3cd34bd51ee837,fb7cdbefb3f14cd66a4960bbeded3e6a739a95f5
e657aa64317a385a5c6fb52bf6c752e883220eb9,ff3acfb8cda7f6a077dfc585cbe9acb0d8e34418,fa4e52857646bf1d45bef26d42e9efe75e84cdfe
5a617cd1082e80008559a012673db2eecb6304bf,4426d0da7abffba27f125112a1484e3c9449761a,15865e760244be485772a53a6eaa09f80e5ca8ee
fcdbb31ec4f057f1eb169a1214f6c50a0ad5a90c,1b8170d18dde78045d7269bfd58fb537b59dcabf,c4a1cdceaebf8d01151fc20ae3e3a053180db9e7
89d27751911d6904fbbb10660a0194c43522fc8d,dcb1fcd9b81d364660b9ca5906e7b2f5e0fe688f,d0cc6494280732f5be8ccfaecbafb2b6b7fb0f87
d96600a02d1dd4ee53ffe9bd4efc718f906e80d1,b78761efd30a814d055d78078c3f9d0422ef6291,5b32c81befccea3ba64fc012e3e4216bb875dc17
7e4753bebd600951a76838f3e7c08f17d0e65505,e0a78c2485bbcce7fb5972b2c7ab7fb6263674c0,82cbaa0dc5daaa7b2db18d96c8ade5db06bb0a28
14d589955acc5cb7e241c64130021414ab38675a,10d9918596dfbac73b84c4cf567ee14caa6ef546,2240c690784bc6117f8d602c9eedfb23d0d8846c
44051b4af33b097a1069a0702108fc4799864c84,4dd01de381d056c627f71124c5b6dac6297d7837,3271d1aac712184001956ddb2c0f1b157b7c1107
1023a6ff6b975a44dd4b8b4ad536160e16646032,b760863046f7d2f921c8a9144c94374863a806da,9feafc7bd73705fea94842a34ef704192350fe01
9423d5e390b94f34046ee030b5712e466950640e,716e8c8e8975337c2f40122becd0b596b3461586,8e5c2467e29e86222877085a43575f04ac1204df
c1d43df4a1e58702a57452499fc00898a1e421d6,f570b6cb7bb10b90a7eba22de9d4d10a09e83703,c917639b91bd8d0d784a0f84e6dc3c3789ff8520
492d75483d05af525822561fc8232c52748a24b0,7fcbd1d7e0a24bbe476d5ec4e67c458b742190b1,d708bef92f5353e010bb13857469c55e671a6e05
67e7dc019453212065181dc5d80c92c11e14d603,292be9029e729b03f4f6f2ac415d43ac90fdc03a,8e7791ac232d88f298bd3a5ed3c6cd511c48ce5e
e4ee8fa6a2b6fbebf8723712c63d9e0504d1396e,03ce23246f11b42ac3739f91e2f2433c66ef25f0,1b06599e8224da182c91896475658796826a03bf
550d0481b343effe45626780f047ed090a88bb11,52cc8df0797f3411e29b6480e5d9f29185c5c826,9f60628e5b8283cdfce7e9f6feb7055eb4b52a22
5289aab4f2bff99cbc0cfac2d3993a7fce68252d,dc161e519f1641a8c44f289387ab2880d18e6c7b,54f2308d2aeca1b90a4ae98a94ab044149c167d0
802f24dfbdcba129c833416f1ac273277637674c,f4da53344019331a799d2d5ad0890646421fe99b,5db20610dd8dabee146efd6703a62c2d15bc641b
4820ec07468d58a7809e5f591a9c39bb8381c514,56ab4107059e7220b437bb205174d5626f4b82d8,feb5bde09cf9cc79e26b01080ec9400eef03f600
e86d3af7e0036346c5f189dfc8c49138181f6d6a,655a5f526cd9697d5874e85727adae18e89040a8,565168093009a3403e9dd2d42edbbe6ca15a125e
65a570b77278f47ffe788a1ab1c5aeb86a4e9797,a58567004b907ab6841dfc7d47d9dfea7e824df1,cd6bc9aeb7642f5430b0a3aaf49143a6e1c41041
e994bacbba097fa4cf38f59e9772c7b9b5ccbaed,2dc0995067a410daecf4b6cd8744823c1f876d19,0327a4a04ec16d2d8bafb50d6ddb3c5ce93ce0d3
3ce6c478ccdbd58c04daa6a07a721ae1faebce2c,29ea731b2f7b4140806b37a7b0ef7f1bf2cfaa0b,6404478ea444cda85cdf7f8784efba0ed6669ebe
55d5b11deb804401988e60e1e9163de36a5f8fc1,75b911ce68c27c90d91b7a8796e936ec7ba0a947,ab809fa93cdf48281c334969058abd9001412fce
da0260262d80c4a4c3ee0c854bf1009247b36946,14f62b06d2d4633db5927eeb69bc2c7d74cf6864,f1cb5e678cb86be0ffa57a4336cf9d3f58a7d408
67f3a7502d0f1100046abd87c5df2565b8d945b8,78336d2cbacb12bcf3518cb0ea7968e5d697f26c,b733e21fd1055e821b9d9fee644e54c917be440f
b0459a19f48ea41596fd1f0ca61afa1f7598d5d7,fad6b0e4896cc1bcb805051237a9ca6557322b60,5c9de7edd77ab687a891a62315ecb193295492b7
65ef6f1f3726680eaecc2ae24a2da30ee249c54a,5bddb3a435103997b2ae5b7f6f75a4de994ec571,7d1b7eda0e3e51b49449f96f8d77c26378afb291
c9ee52a8f59bb5b870ffdc1563a95dc71dbc8a67,271ba59cf1c1780d8c0b120dff107c42bcfe1e02,dabc59977d06fb86974e0cef52cf88109858b5e9
b3fb6a0ec0569c655d9c31759b955dc16d7a9f68,bf5f37b14a4b92e9c441cc5bc2cd9924d3cbfb7b,e132ae2feed6ac06daf9e22f48b735841691188e
e1a739d15d6e344727b196890e8afb0b0bd235ea,ab0079434302d85260bf18c420611bd1227aab1a,f66dd54bc277618feb9cf38d81b2651a4f10db61
5c55f1a16ee0c41f8f657f5a706bcb3bfc8a8f2c,4f711a8b2c534fa786922acd8453c49b40bc1768,b0c0309cc1c1dccfd11acd3284b2168d6720892a
793c157a9c69201caf0dca17b64b55ec06e34ed2,222a41be7b5d3eba617c8f0530064911fff84cd8,40196f4a437626044a4a40baf9bedacb3fc984e4
65101b36dca4a4b8019f2c47944ec81e3988daae,60623f39a1917afa3a03a44c7a8b66d6fcfa4f7f,0f1c4b4db8bae6fe397c14d06ac2d2e0795265c2
89aeedac1ec47570922fe219664c3374e93aeb8a,0508f643c0e86479f2e4d49464c0e0a97699bb84,da899df6b2bbb980a2d047b542eee3bff03f4fa9
487721dea8c100d7481012dcc01f6cbeb4ea5bb8,e65b822a0c2a0d0dbe11ae3766dc9876accdbf28,0b3fb55c6a8e75e869ed29cc1ad09189325f82df
f02b7508de42be8a2768036727447cb16106af0c,4825d2d16c2af3d3658e12637fb9fbed32f86491,49af134ba7e2b99153d51eadc8a190bea19f8530
69bfff046ac882c75b94b0c03c233f5d81fcbba8,53e5a4a03a6f802a5ee2217d326eb4f5af87bc5c,d9eae2c2c593f27253aeaea98b12199929d9db3e
01e5f4855a596496921e45f3b098f86285097d4c,d255ffba8ba16c21a006d7ed9710ff095c3d30a5,fa9d77e67ee7235fb02b3a6c7576eee573fbc332
5b4c104aafdacafe36495a89c4d0e3a8be62fa9d,d083cc7247bbc6895eded5624933114d1e90c50c,d71346aa37828cd36ebfbee342e9fdc04f7bc11e
72661fd5c106a5bc1e689eef63ba7636a01d7d24,2cf68f6dbfa1bdffa4bb40e9c34f67389d12b492,5921fa9a6285f501df028a8fb4e1d10bda5653b8
59fca3a01de11a06d304d72b74df611a4e046495,7b2cd0bcdc450b6c117ace262f4cd9d82e471a5e,e9acd759a4aa88a8ad1ff97a574f108eb7deef33
f60523a3b92a98ab693a37d3acf2a84dd0d321e2,567409379f3af31904f0a0ba408d8d178bcd34f3,c123739af0ed517c9c99e6c8e72df83842595f58
453f45fa1f7e9396b416f9deca2904383a49292e,7a15312b54869784baf92d15a459691fd6c8c419,06da0b3db6563ae317dfc108fe2425ca8b3736be
42c429bf450ea9f674192c0a0f4faabc5a0b9e12,2208b55f767117cfc5a32df3f81c44e8001e7624,fc1ed782322d8e21a8624d5ce57ea5a42ebe84cd
5dcdfeb1260176b94ee89e1e1d0d1e77bc7b811b,be448e29f63fd5d5d2b4320f24bde4ec197ca895,f7239e03e7c4e21aea30ef17393a5303dd5d5ac8
492210fdc73d4681d05fb59619f77efb53bf6086,d5b368988f34e631d2e065971713690fb691ebf3,c6874df5c8ffcb6ad97096e63b63afe12e86b08d
2b9ec05963d7f0834cc64df4a2cf3eb724790fca,b4bd15a5c07ae81b0a7f7906bf61c3c6e6180751,77b9d62520dbc4cce3751fbdabfff0ca73aa90e9
2a50d5abf82d4806129fe9b6475a090dc9204534,e443936e12822b1466e9f0ead1e464742412202e,03b3f00a0b62488697aab90a5fe362b3053ffc59
36eea0c819c51d0424648fcb50b4f6ee52702016,4c6cbfe03edaced0be3e1477f48f6d7b927ba858,159201d054f5564d7843a9943712c8669a59b7c7
fd29f25bf1678ba50adb3c8af2717b6782d03b8b,87a785daa07a0375d3271102dadf105aec8e7d43,b00fdb72059306064217faf72a99cd3e315515ab
a16449c54e344c4cbcb7a87cfa3653e417aa0b3a,e6fe075a425b2463204fb4593e2b90b00fe392c2,bd777877124f84665d133944b585e1708b7c7c29
ebd7bb7cb9179937428809e2337f79153ab5bcdb,6147d6d8a02903b1a11d36424dd53b229aacee6d,b4c8c1da12f2aa006862bb1212ae540521604ca1
8609c0803e592a3e9cf2ab9c2fbf567fdbc750ab,6dbe71cd3000e8d396fe2a05e8e2f74d0c012f81,ab969e0a9b19820e57fedc21d18e0e1335e74949
1da7ce46de3829225c6c50d831656e46109ec7d7,683a92bcc8d791f4f23fde8205229b382dd8fec8,f289f2694ab837b414aa131a0514c56fee4950bc
bc46d8f33a4caacf63a81a8b4bba8afa0ed4ab5c,f9567ff50e62cc7487455323ca5331745f270dd9,322d91758cf08e72cb41949a60a383e7dab69620
f1059679a17d87904455790fe16110cd51c1692f,caaed25f182e46f839ce4af7756f82bace100942,bf37616514079e814312ee72de65262d2b869194
e95572921a85a84f64ce4864544d549ad0ef5b50,00f4aeb39b84e5a291310697064904d10e6d0313,f74a6abccfb416d7235a46258d28001320ff306e
cafd708b6d862776b7454e1b229f3134ccde5009,22cd8d5d62ca165e36c6fe39c9054d18322e51f5,5264e48d90a97e2dcfc5410410d60c1ecc14a824
cc7c328a7cf5b236e53c26b6b517fee0006f45a1,4fe5e53fcc6236fa44441dcba69cc2d274febd3c,9894fe8082531f80de22c5dab342104b800d789a
c0979bbc0cbc6497c29b608fba5565f81a7228c2,abc4a0a4e6ef0c0622bf155edba8c8394fdec95c,781b2d0a80db394bfcb6ad42d75549a32b360cb4
30166f8eb79bd6a0609cdea2fd91559bd0a7eec6,67a1d52806449c5fa249d2c2b6e84bec4c9f1c6f,d3de4b59512915d19f7f06dcdb3a836ad6816feb
5a8434234869887dae77479507af8bdc94c11cf0,b54068d1a457de5db08ca831f0edd5470c23fa71,c298c0e0dadb96a99040b766091784831dd9d6f1
1e37eef3d240ff422ad2f92ea9cab6ebdc8391c4,273a598be86b5bc65f23c36eae35e88356389a28,53a67b34b53bec3ca526da2ddd70c69488d69556
539f2cd7f095b616b6452f1fcc4aa3635d99fb57,6146aa6eb6d9ce9906aa14fc80cfb9446d74479d,1f41cd195fd8f3a73c3a3a5c17f62d51c720b3f6
c01c13c29aacf5e1475d1e3438bc4c699c1ab9a9,db39d1a4e4af8d543db22dbf85abc1c0e4dc522e,11d2960db868d02757ae8810018dc661db034fe6
d362d47e88aa2dddbcd35c371a92e5014cca5a02,8a63e7ee5a34f8dfe2f412fd218dbea3d3df9e73,27e9377a3a7b3b90457d79f4d7a9e65785fee186
08f3a3c8ef460fd5bb326c0b74f3fe16ab4dd7bc,98dd448ce849325373057ad5713f96edf7492bee,3608be8f13b3d90bd8bfbc2707ac485c9cfd4d99
50572fda8cdbe8ac3199ffbc22588dd7c7d0e372,cbc8aa63c83df4e16635b26e479c508229428e07,116c861af6c13f6d3d0d0d91b6dc4e0c1eb88550
8360b180972a70af23e57128fe54bc0e451b481e,b46f361d91683b19af2ba8ef60826e47b2643126,2be3978bb446ced6857ab18fe0cd186f6fafe217
7d4844919bdb8776c21da2822effe27873885eaa,baec255bbc8fc6eb7378c142148fa375398e35bc,12616f657973a62154454c10ddf1b1396b808ca1
036aea025d8f7852098fd49e4eef17de00fc6cf0,2f82a084e838f90ed5329f707ea98d7e9908ff82,2f23239ebd4719b743e8b7549e30639c9479faaf
fa7d3d845b8bc4fa7335ed3f5ef73b697c35a3ec,c944484e66a3c67e92ae1a87b2329f98ea73e65a,a18e75eaffb2bea2784a87bb957205510715fe81
dde8f54ee70849c6a179f126f085c6dcc5eff9eb,c9b988e146512169f283172b60cd97b278fcfcfb,25eab57a582a022f3336e052971fd56d9d3cbfd9
b6ba87bed489e5eedaf9cc7e84b938a5c700293d,e091d263c84890f64ca8353fa837c4fd7eb94c37,f590e65c7b45c8b5c559574decca3eec95b39c13
bb182470a563483803883b01f1a9b4ea3cd7d0fc,769aeaae03f9eae322270f5800bf409e73fbbd2e,d2447026de4165b06c574c99f54f6f646b897d88
2a8c2c4382222c3a7be8eaee74153ee40ca8c8fe,2a93e65511cc09cd0723e63fd74e88f693a1c140,86c097086a23476a6a7cf73d28bddee86039cb5c
4aebfe97a95cd9b3dfb331f1329854e37691ae0e,50a37d00e78c9b51b6eda868fd28baac87361d1f,b02b3b79b4312768194b5f7fbb7dc8b58e67765e
1c9280de560b65d02f03a4f1ee22df37a45084f9,3a1efb7c07537638c87911829871697b9a9b1e7a,2b7c28e41a496cb86ca5b59bdb64596c0bcb3fa0
3cf00af48df50812ef32e8bbb82eb57f5edfa61d,52ed79c7f3e943129171327dda6d651d83649a35,60a09b65f4d23ebc2a5315cc530cf271c2b3cc58
33cf86ff9f11e17c1e3dc78cd4fb503e2059193a,ea345f34aac81046f9865da1186024615e10a85d,73529f5266940b416f6c943e1c372e1a1454f034
045472a5e7e2535a449abf8f38e3888789db48dc,749c8110b6a41765f5548efa76e4565a9b7e29e7,9e710e298c5952cee4fae64d2408038cda4a1298
ebdb90b1a5788b56d4a0396cef9a0f83c40b04ab,8362ee0e5f818a1b5ddb2d0b090676d412ceb360,b2f46586bc891aeb335b4b8ddac048fa0d204cbd
c06a3f2ca3254b39718b1ea69653d231a0e8accb,abee4d46b668e5985ca49f3bcf5dc2b53e244f7f,15a5a62eb4a0cd3de7d8eabf394fd1fe93e4633e
e26b29888565c291d9d1bb80a99d02ff28aea1b3,fd54c958c945827151fcc66cf98f4ecf3cd70888,644263277fe49d9be901527f02d8aa0170c840a2
4ef8ae2a63551ec34ca2fc8a60be645e3cdd9810,0b2a58027c3171a3ba2962d472653e2f8839e1f2,5944631246cabaebdaab78e5ac36426b7e2ea51e
aa82a2e446bfe225d41400d5784a1092ca905754,a5811a35a91f955918edf249650b67fd7d8e3dad,e8bf3817021d50f76f41f4f1ce4aef34b422144b
3cfd40a4d38ed6e23b452abfa6ce982601a177e7,c83c89128a4d97154b2d23a01f82d354df5d435c,58e9d7c6477268f6e55629cbe45264631243644b
07d298d23b8216d64dedb129267a667272e49d22,de97010011d3658208c86c26a044af971add34f6,0bbfad1add6d76b4aad7bac9d6b2cb34b8f7fe1e
9c9c6cc81bcd2d99e54a7b040b1f80641ce49b9b,e5ac99a4c97b52c95b26829b6f62ec0029798e7c,bd226c00f16b778444c41673678b2ba6eb6e1000
e5df46722ef25585c66dc698943515ce95438283,acee4eb27ac492447d4dbde978f8989dcd292d54,89f9ebc7b7fed1af0347c9290bc8d657fab8ccb3
a8cf67d73b3a9421ec3089eae5c54e38e934161f,6e7a82440ef55b0e8d125e49b791ac8dd7ca43f9,bc4eb00a7a1d2c2050a8056d13abaf8656897bc0
f4e28ab357c786dc55efc9f9b3f5a4356f7d0629,326776c7fa47a36692b800a78966c66ba295ee38,2460ecb9d9918929c7b3b0e41367811072ab04fb
09b763c698a783efadecf81dbfffe6730d9fd2d0,9ee672f9eb8584c4d2de627aa131f6299711776f,4d33e5f137bce78e1d14a02cee370fd42e6adebe
d5a104f493227253eed8daa13f8b631366bfdccf,4966e9376477defcdf6f292a8ef84d2079c7ce41,11ac750e873d31738c2bb344e5e216192c8045e3
f3a0bdd23222cf281539ec545e4185b971e357a2,98aa06d47f1bb52ce525dba52024f6cbd5e636e2,597afd9f23bf2abb384f3ac815f52f8e1c2d2254
6a9b4a1b13b4e0585301037c6f26838216f43ebd,1d4c28fb35ffe12a16ae79c8e6cd3c4a85b38c7b,d29a482cd12ef50734121e4dc7e4c5938c1df5ae
4c296af05eccba74d3bd854b6248d56a8efeffdf,5a9021c14c39c376b2cf1967989482f0f6bdb4b0,1aed740440643b0fe4a0dfb28d26e2a6cf4aa88d
3b8b549eaa71dad42d2955dca6dbb787cd55cf7a,05072d0d82a707444a2847926525a0834d64cefd,38c06e64c742e269d7b9c01bba5344f12845c4e2
c3e94051a18038745302b04dd6e1a75fa5153574,307c284f6a4f6da41c302fa2ed54128de1a10176,f39a6a775587692103ec6ba1012007224d57c01e
544b58680e3afb95bcf6344daa775a431c1195cd,62f17711218c65e94e8814fde5ec8efcbc92009a,bb49c190afdd16da94cae4c6fdbc1e5ae4f8aa7f
b5e57a63f5caff23f6a6a6d6dc6d24c3b05d9a3b,6ac50f4100ee4c4e967dbd5754d338d4c7debe3a,088c746d45fadc744878771d586ecd42a1d75b31
9d95e6159ef7e9a88b50c751341e789db2e1033b,52e30aa332592c8a3b7afca3c98c9f6c63f4b581,985e8d3d13ae35a53b3353ffe79df261cb8e5680
8386906668afeebf9a06bfd723981b23bd049a28,6347c9d03cc141ac939d09df8d90a35b70e171ce,091e86082dd1043d26fc1be9d1607ed544bb3da0
fc3b635013d0fd8552b9ae59b092d3697f6a82c5,11b069fa615668224bcdd5824eb723faa11f4d9b,8e4e229a5fe9e8086d39bf36d23496794e29fe6f
d209d3ba846b9f8a5858efe1a261f793b30349e7,2d1ab3410dee76eece1a7e7b980f0b278fa19310,11d16be702862041c9793a389bbf5c9ce179bda8
986a6feb95287ae33f0acbb8854327f43c6227b7,894c49ca93d96aa0ca197bc6a2dde4d1c971a016,0634d5349d549e3af38d845d92b727504c752857
92771760b79fe0f30e67400b6e1f131287c621b7,bb91dadb009f9d8032f1b1ee4c065a0d144911c8,9a90db79c30e3531034544d757d4f292617ea175
ec1766ac3f629c3c9fe09bc6895ffa36cc102915,55f010324835946394d88b02b5aa87755444b66e,e19b45a71baaac76980f3240e3384d9d73925b96
5f089afdfb3820d055e06e727859f38b0ed1f9b0,32d6cf7093c086fc3e963880860e62509f69d0bb,2f8750924f6da75b9842c1b2a4b97b522453d084
fbc65314b97740a39dac494cdd1fe238554a43a9,a7a0f47d9802eec87bd1154c5abdd4a5251dc5f4,eaeb6148874625b62b5bb6e8e75f802b88ea11d5
cdf676c9b5334642fc72a5f17928b8280cbe6038,76d3a9c4b5a20a226aad427a61c87e12595e0139,7de854ef1ec86310c67192a734cd1114ef03ad26
718709c87dfdd442dcd5326e374270abe6fd864b,f8aaab3cd732f7b4b3c8d80308c91c81abb81f41,a9d883ada1de38e0c6cabf8832952111ad56fca1
73287c35d20d3583840fa115519ca96baa659d5f,4640120dbd167ac8c800311e52f6694dd3c4307a,d76cfdd9138b731ec27601bf7589c8fd490ea968
c59b6a5d8dfa4a20eec23345839d116905de03f5,c062061d6d16782c0e0f53e3fc9f2ad4bda0b905,ec02d0abb083a556a5240c27b4baf8a7dc606cc6
22bbcf4b27a574dd3e8bf1978f10f35cacf71b57,b407b67ca1afef62a10c9bcd06539b480250d580,5738a6ccf12819d7a4a039ea70e80f69432e3b61
713074ded521ff2c1b781ebd6ff2aca83fda55d8,bd104270ae7683eaaa48c65a9d7833f4712dc9a0,02abad58d8836e80928e078ebccde151e1ea4b44
63d8282f8ffb56e35ec780e5b2d9a3e43ae1c82c,9b7f24841c7302b0bd35fba42f00e9409097e622,a362c93f73148b505d87feea9e8e3c7ade99178b
a6921fff7bd15a4635d0bffc5f17df08bdeaa6d7,a7a689ca1632ef7c8783ea884d5ad59863aa1fde,47825610b807e0b29022956ed8c6079f82080a37
69fff102af0e272918219f7e168dbc9f3df8c3a9,2e70bd7dcb7ede8d97c18582ce725597bb0507b4,2e8321e0fa8ade82c71aebe4ec31a1f52f742584
115f83794b8005274bdf149448f46bc4f42c531c,366aedc6d829bddee3b6063c56bf5244ecee74ab,d4e0a79d9e43686ec0584a87d57acff189f01d01
5ce96de0f2aa890496721b3462629ae99f3c2e64,1a8444087a70a0984f6e2f84efb16db0c235f1b7,042eb7e8c196b6a0c8f6016af9985b8b3062703b
7097a1030f0df9196a2b9d9142f5c1b6827522e4,2a7744df803e34ae64172be65946322b09748b6a,773babd45df4b829f8d4958afd8118a5ed1b9879
d93c7579deabaf1dc14abe1b90b91dd57621b16a,f8e04aad038cbdd8719cc7e72b850850c8983713,859ae5fc7c8d7fd43be1e1dc11284c455a176f90
9c20a033e0ba0c0cde2594a92d8f512252f50cc3,140fe74efb997300d4471495b05ad5c6e043ca35,40cf71c9a5a6d2e2c4ee5134fc347fda711201aa
88959bdda78e45058714616f15d3d625b3e5b570,c4f9ec91c92b9d018b24be606b1c7cf74460cd66,54efcc4bbb79d54d69395782ca00019b36e3cb4c
bb637fa389d846893ed8e5b4d2b1fd02b1382ab9,ca8a94e693ea963c2dfb4ad6efa9232068af508b,b3cbf07f27bd59c1988ff5055f82dd1f092d6f19
9739a88e119f4639eaf51b0eb07a04b3a28fb457,ed2dca9a9b6aa989265b355d597a23302144a818,a87b38f7530f472401ec5e77aec73d37ab1dd47e
6010ece53248848dff792ee6af912ebadccb1efd,1e90a4db3e9908fe0f06bafb801c967aa9c1c0c5,f12fcc9e065a6550617261dea1d9073cd4cea94b
29625c71126cf418d6f25f7e868b40e6e5a24c08,bef4da339abfd785ccded8821539ac0f8d946bfe,c9e8bfd118dd79985f4ee8f42cae590c5268ca12
a8b0e0ed65cf9b0be0e7a177dc23c1e816fb9004,ee2d313aa0785735289f0a8630e2818971782c96,9579759f01783e8596e647731970dc55bb436783
68cd1c39732449efc0e83adfc3d66dce80f1f9eb,2c0f10d9887b676545b05e06e2c29a07d74d8fae,60c967f255d4116c784810a1f8bdf45e8f7982ea
35db2b2da3732abc46140a1b930a877d7bbe4aa1,fd26453d5a802abadf17a5a3dc258e6bea4ac632,d5d97169163c83545fbb298b812a7f34d5b7ffe2
c92e290d679ac3d7b46b15b8f3a53fbf59284cd8,39f553496995104b1b674d48eead521243ce70f8,92082ab28f3f7d4a149cf3ca0b6a6190c50be29f
de58691e75b64891a12b106fcc243a79b63f15a6,62c24b375626ad02e6697107f4c69011c38d9b79,f21f7f0f506a66a8384c2300330e3235bbb68e20
52334737489c37e2e4a01ab62c982d838d64736c,b26463ed993e184d2e2dc2cd9059ca7a024552a4,e5472845882a4747c80ba6e0d7ceaff936c71484
181ee30174afabdb00c3d631ac4bda26c0c31135,bc6d8fbaf2551cbf752ecf2183c1368f359bbd39,c4ea01cf3d328f81311b2ae0118cf2c3944efe56
8bef91d1de212c03036d234ebd0ece80a11f1867,5cf15be434bdaf2cacca29270030a5fd0ca4012e,30a7199165e96728ee8ab899209fe83ed775454d
41d4e181ea3674581bf32633bdc90376513a145c,fecb72fea3fe979c2875c8a94cfcc7da6f1249f9,a2b66ea061fb9bbd311d26203525a11394840955
073b48de826c232bba310d8b05490daead429411,7a444281e8271f4850162974ed6a86c92f029717,030c3b66520a8eb125e222b527150381464a3358
a70d33ff00fe331f8e2528ad4f0411597eb4a0c9,e298e6eccd378a23540f95d22a0a66be14ecbc4c,32d06f2e87710cf749cab40d520a711ba044d65d
ad971df05a418d04027323d423e9527e6374955b,5bedf92bfba41350e1854b43fa9acee704f871e4,a8449ad9598cebb21c4a892935e41fcb28f05060
a7951612da74ed7b709dc4b3ebb759eec1da3b2f,ced452e2ef37628854b945de15791f796a52d0e9,edeb5909da627e4132c280b99d0ea50ffb07fbb4
c6ce763336442f8b59239c3ef96be8709f2a4110,85928a738d71326fa3eb41c2361d0cb012bd1cca,a0a23a8968c319733a9edd1b80031ce6b334cbc2
6faa3872fcaf94826e07499c11b635bb41453faa,4e51973dbaa26581b29ae72d0f345382443205aa,f10fe0985a4b0b60dd03e70d6b150fe193785e05
b66802a14e9851e542d4483b250555fdd0946f77,abac7a02bde9cd0bd582e7db028474708b194709,b2eaa4e701b6f3959a9ae94f116bdee092a56cb9
b4d8f2d1b6164755fd3e7777bc02d9a8cbbecc0a,a237aaa1f5c4938272e7424dcc806d16d78ea78f,5e082c9d9048aaa691b833c9ddbbd32413eb01a5
859755ac851477d31e6461242470e516b7b3129f,672c9b14669fd1432679d1012d3d841e01926984,f0f981882419c900360446da529fc3b8692a1b1e
89e028285624ca1193c6502f15d971e48f650e3b,d3c87f9c584a23591643e3a2dbe234a73ef3c3a3,b2e553d3c403c2fc8994714ed998cc542c6eaaa1
4a85ab9cb9785d31ab8d6f8808432010b1de8a34,ee5e89733f4fcc26b9389d4dc62b0c707ec8ddb1,98f767efbfe742a749d61d7a598388be12ac3558
e8e1a6e874641ce7e8b637810efa9b7ed2c0c370,5ff82c14cfe2e2b5110d9bdea4c202a20621b80b,b56e1b0cd8df80ec246d5939088b8cbcae7b5ec1
b30a1bf447b75c7260eaafb1acaa7d008bdf48ea,93494bf8bf41ca0dc37b698bc2852cb82687b609,a4e2d7462665ffdcb27d9d25ec1b2acd58063887
3713784e40f99bf14d41875267f6943541b994c5,9bf4f9e2ce4c04a0227f722416f510a0706de4ce,664a96c58489cbd7fc636a05f21ab7edd5d1ab84
953d15a9390bba467699c0fcecd8f86bbc1128ef,e8f9ffdb5e4a3155da37aa101185fee096093eea,ea812d1c2ea7994f610b30cd459c0e235f46fdd3
65880e66313c1329c4079e2be1a4121baa83ff21,4db332fecf8a81392120f58d42e84142161ab7fd,fbed0680487193cda590fde37f6fb35374a67d76
d54d787df2ad3bf28ab07220daa82e8f177d85a8,a9c67f22fd3c74fcdf352f11ebe861d0f526710a,ed2b73eee6ce40f37f52ad0d09d4f30421b6646e
904c59fbfffb65cddd60d892d0e49489773490da,43e92ef2b78195384c25202582141f91813f473a,40adddea3477b3c7960ea0c25779f3b8312ad9ad
bf86e57cfe0726d8b9fccc3eeba815b326a5fa3a,396b516a85a692b7b8d17c7c8e08c8a3167f40b8,17a90f9521420593069df50ca2c0eaebcfd44b0d
6dd5b63e2df7eca4f53868d2bf15cb3cd119c68f,22b3268ac75ebf44e095572f57af6fd97576bae1,f02fc4fe0fa850f574eab90ac308933cb8eb1485
ec96d4242a682926ef1df2724a9cea074aa69f8b,b297199ab6dd8e698fd8009d8c5b4bc26fb53376,ac4df2b0660b1f7896ab20d30a7f845f446d5b72
6299e94c8f99fa043920d005c4111d657f690e7c,ff0b560fe422caa2692f77799dd382e566a89fdc,145b37425d4af659e6d77faa75cc564c9bfa8395
47d7520b32b13967dbf65464edd65cf713477f67,533a11ec80671a14059c89f6ccd15be44f16f1c8,3eac88eeaf90fa5addcf7b03612dafe9236cd114
e9e8013316ed280b268485762206dc9c3357359e,c9ec57bd737aa00cc132ea3418d2f4ef07dd3fdf,bd82ad0d4166303b6ff2b0f43ba66d5fc7edebe1
90ebeb275a6cb28db8397cdaab9eb16eb961b835,b5ab81c98342cf824a8337be41ea15e1f5502b75,897f0e178414116764304b49b26db58beef476d8
a0171e433531aa21219e715be55a936ef9d5efc3,0e0739a64f4da96b414f5ed447428c44ad8155ca,9aac622dc91b8c9b6c9293c12901cf9f57d4d048
749faa42eed7c49def6323af3412831cf1e6adb8,6fe9a1509497cac3937163bc676693c832e62fe2,9b9ae2db1ad85bb5d9aa0aab7772b8aea9bb32be
f8b1801a8fb7a247ea31be7260c44e333d069a8e,b31d5386ee2cf470763357b25b6d7f6d5f0d1710,39b7b07ebb2f6416ce2de95bd8423f24df5375c7
c1ef0944572b0a38dcc30f9555cc8b78913896c7,a1f865ae45c1b007252224179ad591f2449b4e90,4f3093657e11970b3b28f0d0bdcb7f39644e40ee
568d4de77ec6088683375ea8ad376972e03d3c95,685f72ca2f5682d153800a11dc5d25acbe97e455,46ab8d79a28979dd94e0a36eece2420e57c67ceb
a79aa8727276de8db173d67839e78a3df195a357,06a00b53c3ea8d0ff655a0b925c26dcb275be1e7,621dcbeaf2118a9cb7622db19bb5d859e0e22f9d
b28495a423993aebba17b3e157ea75e10f5e7179,2ed2c213136a4e7eede7ec2f4761f4d23bb27562,a6d6f938878d5723e8dff5f81def5d2392b0a3b6
f56b6728a522fec1494b28f36aa18d89db1e97b2,f0748ad59bdff939e9d3c2f535fc8e046ec3a305,833a971877521a3a906207fb37e84ccbc9f27f23
c3736810ac018b5aadb7d54c6f6c4c41d1c59344,28964711d7941d466e54261a7581241a97e66a1e,d42f577a3ff2bd02b6ce709b6c89bf6fc08b32ae
93b8707ed31af9efa328109774c8015a8c32f087,dc7a8fa9e5cd4851a95e896be337f88c7dfcddfd,2b829480e14abf2a8dacf1013ff796acee90b752
6200af404d8d8baa1935ba8780dc9893075d9307,0e4e4b89ab7acf1bed1b2ee7637de9580042a8bf,13ed9a2277918d2da5c9a008cdf4b7f4c78ba309
e5ac07db13024df5941957bedf2dbc62578925a8,c8403ad49ed815e53ab700f783b9c7e371dc4831,1e779014523bf774664e738d2395223b5caa85ba
79cf1dd9cfe47b43d7c057709006b0206e8a0079,540fd5e58d00e1a70ae02ff74ca199b4f6473599,c42b8c43bd8725ca5f479ba02124f9bdb2e9670b
fe39f9ca216b22ca75bf1f065b3a6bdd5fcfd491,8f083f6342ab8d193d5dc0ae2205bad4b1d7bab9,077a3f1892da9a3f493c321f905825a02b82968b
3c5d6e72240dbb968f42f50c8fe7eb0783a0c16a,305e49c0b81b9db7872c2ff2717dbe54b92c8f3b,a20bfc07535f5e6d7d27fafdec826ed8de07ee61
0ad2150457a100fbef2476378f3ac56a33858fd2,952eee5ed0e4d65fd7a7ea52b9f3025976763503,9387f87db917ae23a26d56050887ce3793e11eaa
e3e8cb5b583e4e1aa9c24c0bb942dde9490dd341,d06ab24389054cd342b82275168d5e9d8ee200ee,704a5a50816d2fca65740f774e5c0bbaa7af9a38
a57a2b6cbefa2e60c69256f3a45796525d0501c3,473db46e083a34106ca4bcd26b3681407576dd5f,d31e219510b80dca9f0c676e5298ccdc2a935255
c0c6ce5422bb7ba906f78aeb2b3119fbd6498f67,af49e3dc9f1e35a1d036e119934985b5e5fe1e3a,308bc294654f955b357c5e71ad9a7fa9e45d39ad
bbece3e6680dd7a7a9454b1f55db125619f8e639,12ef9a4a223ec54c16cbe96a8107c7aa26380cbe,ef8ad5446026ca623a4daa9e5e7af5f5783aa724
8d1989fc9a261715c0188be4902a3255cfda361d,ba51494bd7d9f5552c91918ea01f3c9e02152149,5e148c1dca80849b7ddd9b51574cab821fab7a60
2ec382e68cce7f7fe90c3b4c88b15af79c947d99,0b1734cc04e76d2a7972c39ffc77b7d0bcb16455,c223ae3610c215340a1fe34c61c9e6b7f8f454b1
850ba0bc7432168157aa582698976ea2e80b6cc3,fdfd7c07ed33bb762b3abd0c64b30d82197ecf4f,a9e3882e37fa75856678470d137ff2e6d648d727
72f852f653b73edfc14807bf971aefbd2782ed55,7b62186b9c9efddcb0114df889d5830d8634b0bd,30e24e48c28dc947f2721e9e524fe72894a07776
a8d19553b9151b5e13e7f07dbe71bcee9037eef5,67d80d414b5d1e9b8cad34ce56f984c6c51de00d,ac8e64c93abbf349227e186ef02d31056b279e01
b5ce98fec736ad7d22017c9fa9045051c1b2325e,751417b6852836b6dd067a4661b5a7fe92612a9c,2d1e420e54226cd68ab647d416db84f5fceee2af
85ce54f83f9c0c4ae3cec62fd16238bf3acacea5,9abd81efa5e384ec0a11901a1fb67b79a0f78378,38706a17134fb8307724dee4fa8fbb1dfbc523a8
1fce64fa0a780d4b0753eae79c2ae172ca8fb58e,784d2146c54471cb666248d5554b59d7a17a6cf7,0b8a0fb495ded3cc71e4a44c6174216922ebcd36
6df6e4f7ff16ea4ed9db2a1215cd2b2f262a0331,af5f75fd5adc53383a654e8f9849117c2219fe52,153baf41ce46448440b170f8d0d175953bd17f24
412de8a17dbf5b23e6f85e26216b5cb645e41346,f19402e81b15a4eeb63314b892d53b97cfa0e719,ee2d2a4bd4672135b746c925e8af12febf7149ae
08742e1a91d05570ced72fd869301f3f583f5ae3,10c60c45d5f9704e376c34c5168a20cbb17f6b43,41e32d0fbad6ad541959802590c4cdb12d857cbb
c44f82d11a4b3400e0648508e9d6fda8d132d15f,09b5e7c6b228604155f9dcade788950c26f337f3,b97c8bdf5594ac273f9f3851030b694b97789035
ecef61e9c5413d254616d4bae10e0c993177d3ab,51ce1e883f4112067b5d3d3910eab0a1cf5ce657,925dc4bc7562394c8ea56c3b597c33b0051c551e
7be86f4635f6953a65462ffa7bfa602cceff8d71,151c7ba163b2fac5b44e05a07b79ef3d1e4382d4,dfcbdd9aa64824a51376482bce581ce36049401e
3b9035c94638156629666dcdf6e2340db5405809,0fb08a76194c8fd8e08236b9657e1e03e847d385,39836e2d37ae11f4052cfa527394994d61495a44
b27335e8a5fee1d8de272ae83a0405928b187e7a,9f22623459866915d8769bd2e6cd9c8a75357c6e,3c91a7c01ea16f5fc9239b21636d4127faacaf31
3bb0ae4bf965d66489db5350a1706267e5702087,a954fe6e8fbcb4ddca014a2a9f2086ccf85b5776,83a5ba663643f5e87980186da0767c059f0f4488
21593942a16d2788103501ee1e2921fef90cedba,b4938247fd7236cfb4acb2fd372449a91b0bf145,6bfef9e75239f76c31df1119b603307e35a60862
be696c474b3bcd6ecbc4b9f310eb4bd578edcd5d,8eaa4fc12751af5b2644d6b021eafa0c5da2ec9b,fa0bfc9a6030419c8ac27dd7a2e14ffbbeb02520
47e6422dfd3b7c14e1a0cecf037cb381356b1c97,18f996fd03f11f6637feeb7b3854ba3304cd8198,364a091474f2e652895a338e1110288e2d00d580
6502f7b35ab7438a7c38c64686d86d44eec3a388,6bded28a1004fae8410321c898049611e4fa3c33,34630c2ef952944108b702134db3b99cf2ef1d2a
bbe18e2633e1537e36767634c3b9cc3906f8f5b2,c74a6f4ca27503ed8837a803169d6c40780329f1,ff68e7b9de5045c67d723933985da998f115efb8
456bed94863ef0cb776454b020633b25a106f22e,d4d55f5c877064220bb13a0123e6e67df7e75237,44094dba2f96fcc6c252f9c42398b6740edb85a1
7e7072c8233435934c326b7c709feba1efaf4db1,680a5b94ff271521e7af907f08f6ad1d3160ea0c,00a287e77d4917662b5f57ff99898b598c3fe996
b048ae37b20d06da7f9beb52dc7f50c9d2bb4fde,2c80b2419ead1870965686bfca004b2a7315c0a3,92a0640bcc6ad53326eec32db9cd8353f434e777
855a0af427202506a4fa4bc5b7d8666e81f95493,d0db89072e95b7e93910edc560e79cd07aea8810,4da4c96349d205cf99a8aff0618315904f451935
ac3fab3e921dab8d23c6d9e8fb6c94da21f76351,7aabdb85fa9d718b2cfb3e306aa7de22a59cb746,f2305d1cee38e762aa2409adb9d01dc6751db740
ef4255c65bccc121da2f5943600e2bfd7c1c2ec4,ae17e6acb678406aa91a9029dd6a0857e5c90f2c,f7b7c39129d72330dcb4b37010f1f5b7f729f43e
f01c8411908099b369e7c0d83733ddb78bcaefaf,d2a2240a2cf9f00c8497c696155c9e0657a614fc,5f66de624d8f8c75e8a9b0323b5e4e709dc25685
590c8786902fb712aa84e1e87351f0cf484380a5,e34116f7dea7c3f35da3a3ae43d14110d4c70fc1,2a339485214d53d5c37a390fc59a314413e192ab
7711ba610a7488361472f2a0bcefa52a573c653d,696b7b6f68d3dd75f870dcb5931dd6216640505c,a7545e08926723802528d0ed139606d4fc718fde
7f33dc18d01914d30f52db7b81f449254fc9a244,f8358977616796818531c57569d61af710be69c2,bcab6185b9f7a02da1aea46893ce7a38aca43ca4
72e88a345251c138efa396094f0e0d5f145f40bb,b3e079c5da47fa070524d0cb2ecd1d25be099235,67fedc6b5ba09803a2264cb4ea2b3dce06713af9
7f1e420bb05add6439b6ae1028e841ad7780b481,3e26beb1edc839f05063aa957164b69fdf8afe56,094a353d879f36a3c46acb1fe91b56295abe388f
3444b23c9a7178cc475d9f72035a0b7530958bb7,2a5023508a2bc4ff3ba4f3a0ca16366d3df86db8,c14c3ec98f584b8952027e1e9b451ed7104c232c
92eb260521827b0db9392c99b0966f6a7f928ad2,3f14a19d3e5ad546841bda2f8abbcb8029f79370,04145589a9b263fc9159dbc55835e1e1e53d0237
acc590ac07e438509bc2f1b09b2d3991b294db1b,d7ab5300968d67eda1a09f65e1be43b17b6a72ca,82df643b7471ddaf5445fc99267081959cccd7c0
d198fc46cb6cec08fc91cd35d34c64e182e207b5,3a81f5c732ed75c555a9f6b96488cdb19bb9f4e4,738a0a35de9c93d37368b6ea796372e757eff5d1
1cd8c249b1cba95a03488989ca6eb82232f88608,dea81f4f60174483f0c61a77dfb2a63dc117efb3,4b88fa8e3b56330086d17a01fb1f836d97dd04d0
471a5eb4e01279d5444dcc9f51f0c730e309a889,c85bef5494f4ca409b37791f96acaef97eabc7b2,982071d4a998d0921a7e8d784d76004c10ef5053
81c8078735cf79755750e39e0a6ad2159ae61ead,665c1b396670d57d6c595bafeea3aa732f52170b,546455faca05d2827398cd0f2ab76ebe45de5b1e
01142f11d7f6e50b6b80b75ae9a611f8fc662d78,49f1f4d26e00de8f62e2f39bcf98520f6e98ae55,3e9ddf59df740d12ff51122bcdcdf1ce20b0cd56
93f2bd48ddb54550f2369b28af6823ab72f35d29,4f8d6c9df1adac8a8175bedc08f72f826245dd06,6b8ab2c4d2a6fdf412fd6e9e16288ca10c81d59c
b637a3a022e7f959f07f9c60efb619621890499b,d3722861599383de61f0d09158917a8aa691553c,d36761f4a4dac1f859bfbc12784e6c5a55a5b425
9e3f64733359a6ca802b5e913ffc4c6626746ad8,08228d7fb37669f7ed4de4eedabd5dc576dc4f23,6f749cf43d6bfcad745e6639aa1b5dc09e570c27
33db5200e62fc14f07a000ca92afdbeb8f4dee0f,8d864559b7014df07a9fffd16e0654cdbafdc421,2b66f60a8844f45cfad54fb59703b4c332e34171
ac53225817b8a5b520996eb2326f76a7d68378b2,3164b535e54f39fad4ec5030b2ed0ba05c12dcac,3024aea354579b389db901441f3c7af4aef633aa
10191477aef35b233b08ccded1b8442ad763c156,7d13e5c70d3a1cbcc76beca639b3b5a5b7ee778e,49f45764ec0dcb35b5fdb3cdf86473752dd63d61
39627cbdfb488c9dd0653f576737448098284226,cb959c2e6fb5911c74c07e23d00346902521faff,6f0f339fc431f92c23a20316b5b355ad688c9d51
ae892610080ecf4711f1b105a6464ed06ad639d7,554ae218cacff3de526f7f89f8f1543613e615ed,61f9bc35e97e554dc79f282dcc6f8a89b1a1a3e1
c23a64523ed3be55e4f29f8f9b082ced0e703e0f,853f8b2202fc70820e23a7cfc4287c30f7dfaa46,01ae235676fd3e5d3197e0cd2edd0c8c2e06907f
ad2ac98858f5c422ddf016b4941a503090b73792,0d03cad279240f219a5f01b21207e751e4c38609,6d26d56f2fbe45209d48696600225a75d60c57da
8639dea46cfc4fb83cd2b64e3fc3e95872702d50,2f28c5596ff22f288c64a297c30b7d33a7efe284,27fb9086aaa079212cf225f194efd225e54c50a3
e0599bb231c48e7a039e1703c09f6c6ff9a62632,e9dc638a76649987bba77eca8c789ef49d6433c4,82ccc863efd606b8c2592bf947b7381f17759609
14b40473fc2fcad52fdefa632863b7aa76bb2bf8,9e631db928b5bf3bd379830b9376b31fddc343f0,68bc5da3a23dd74a2fcc792f7f12223855644196
60919b497934d50e039c7a44962f101cb32f129e,7f8591926af2de78051f2dbe91ee5d9e64a912b9,0600287c638a5507710bd600e334e437675fe959
6df2eb5fd44a69d2f9e8f663c8a4972c3cbbbb21,5e0d5cd92eb51686d5299ab62f6ce3806af8b93d,14ae44c362cbb78cafd5354137a3cf86e5f5fa0f
be2c1c751df2f669920b3826ad495603fee09463,b1a72a86e5b6af44300a19aebec096df00000e2a,91ccf4e9c643917472cd55d42094c2a1c29e05ac
c881067b2395609448fdc7b49fce076b13ffae93,501b2d6c6f48a43a1cf695fac795abca45cd0536,6345a25304ed2de2cd28dadc24e4b5bc57d1a7c2
405523ace2a9e24dcfe9f0b1b0376b33c7cf29c9,50b6978e681268a2ca80d62e8a7d274f65120719,22eb1e099fa15b018ad81c0bdff24462190b7afd
e9ee0a0be3513d2949cbd1b120f1b0e90d896a93,7c68ead57aeae69834526b26b99bc40b2a2c941f,25a681295a2ee176bd00493b02addc8cbc384139
ac9feac2c86dfd118f017f7462072805be95ec97,aee5a58000dcc2f7c0dd6fa0bc6bffacf07470af,e79fbff1545e41545141a14e1c4953d301370c7a
61623c43ca57cce7deec020cf68e9cabc683ad57,3eae0213be485a9c4a7384796bb4639ae3317cc9,3564d5e34a9a3dfa02ddef37ec9498afa40848e0
28732fffa2f153ea55cd450a075ab484111a2e7a,0d9298f01aaaf8c137bef8ad4fc8f7a603e70db7,a68884f7502941e37b4a51b525b1698a04d4eb3d
f5de329076217765e1127c424c52837a572f0f50,729d920ed3f96c09ef015303d656455efdb078a6,5121e2c259c12411ea77fac454a83e498f0bd7d8
921a72566f396e58fad456700d34cac40830d935,89726bbb982e2a3d02a1d2f0a47fd58fda11c87c,f49675c4fe286879131001986f7707fc3aad2ac6
a9db41f1e5715fed88916e4cb2a11178af2bd10a,ca186440ebe63429d8642f770cd6f900a57ce60f,07ff5f423abb1107be587bbb1edb55e840017b5c
6421f2c36bc406e30f732086588aeefd9ff96fc6,f183b2952ea5438993f4395e47bbc8694f3ea6b5,f1cf83bd8a2ff5b38a4fa5ecb6e2f8e102d8b372
2099e35d826b5336d0aa5e1717dc6339dec27cf4,4181e24ea4517069f84d987204c715a19ff24640,dedab626fe7eb60d63858ae68055845ad848a93a
e9b8738f200167865f8c6d2d333a01243d25f9fd,89abeff99af7c1ab41b395d2e1466472f62542e2,04a2b42f63c20e0edf9982f5c7fbff7520ee001e
c785fa4435a9abd48c8e338b1935cd5569900542,de9880375118fc0718080b97bd61090353e32fef,3317078ae121ed1462a4033242e6edccf25f9dde
fba3da47c6c762c7e260f89bba56bdead6c42ba7,ed520548be3ee7ec66e4dd909c0e61978960d7a7,35fd79ca523485df5e927e9f1a426dd9d814b530
f50e6dfe8e1f84e98395f8de4683ad729b6895f2,59c33d69abd815c2ce7b1dd4345f6c99b4391570,fbf68af60533634bd627ca24a9a6b57d4208df89
652e75f8ec7e0705b4c394cbf906894afece306e,6a56ed24abc94c040a1c41a7890cb5fa44e06664,2f33c970066529c482f37a6a77a11b01bb7fdccd
5b3953dde37e5802b6417748f633bd9278bf95da,5377cee3a29c267161a8e46aedb04e8e3b91cee5,ee8c3ff3cfd8851111e5094dc6673cd997ddd74c
1619bef4a01bdd73d97d3b9f0d50d212b2be01b0,6ea0050990e5786bf369dc68b0971f433e8c9069,ff576fad0f4b3e3c92e9c695b518b34bd90e4830
a45394d849213a0a54e3e719cfc281f11d500ec0,497dd20a088a67a950c7c61f0a365f170c547f18,c3ec62878eb04316a545fdb98553f5d71002bb07
8b9c7b8254385e5b797cbaa0b73e160a26f5ff77,eccd1720c9812b99e0e70c3e37d3af36051fb7ad,16881556b915c6916a488334328d586951d76ff3
be046aa5558f8ab39441f9270a45f6e3ceb53745,4fae1bb6dfd1d65f8250ef390541647006cd1236,0e4188749bacc70a7d472f05053a90a1d0ee620a
05c47722dd5bd09e8a7c3dd43fee47c0392ff873,385b271bcd6b4a8b845c89e12bdde6a48e8ba314,8512d7ac8f47e053ccc02f042cc0607f29d6c3fc
7f3a5eb9abbf23c97b22ac93c287ec7e228f0ae3,943da88ddacfbad9b5d730ed61c59cb31529e27e,702f79ec8cfbcf1f077977f595b6aadbc186abd3
c6aba5cd8dbd71f7393b1b52ba401c20e09341c8,4718029fe07e813a2e61ece0ea9bd6d3db3d0bac,4994d9cab67d6be5206517e693065e41129b21fc
a01dc282067e70f9e693e3272ba5aeb526336a3c,90844c2027e078fcc1ff6b8d3df911a77bac2ed3,410c1bbaa0211b56076ede5ec0b2c9605c5cba62
0978f6ce16085662bca71344e135cad6a507ca49,56108f479979e7dc9c10dceed5f74870e7d62c79,2b99abdd4df8f3aabe11d2ebe4d1fcbacf37fd5c
aedb6dbacd0ee1d790c4092bef5bf46de0558c07,14c4a6796b35cd6efeeb84a6b6a5ea16f8221bdc,31f74f65b082f33402f3e59ca04ed36461c0f1c7
3da54dcf9f87336887f592c98c0088372da876e6,727e25e93eea38a44e493722a9aa74aeb7333f6a,96aa2bbf740e1af0e814fe6d07250fe06af9d510
b1f85792d7a7aa90bc2b200d3d2db0c97875fc32,9813eb9048a413d8cde171b9e2fd558da1e3a46f,ff64dacf259d083b728d1dece18ffe02bf8d4101
81d7e28a87ef6949e9bcffe214ba9e83c097f7e9,5ce9353d58cd5ee2679dc510561ff35914329daa,4e28962115ee9479d465ba00a1db6028d2badb60
92b51febc69c645e263c5bfa2abd1635ef7675c5,85860f126f2afb5ae384e9cca2c19b2a278de2f9,d1af2c7007e2434f5a848b743c1b8d644fdbc5bd
6bbefcae9e4c96887653d17331b3dd616a654440,6ca6666d28d27151fdf2bf04c570d92afba6e154,57107c331093212fa5bc0d8fc865b43755ff3f12
7ff393085e3b1538a1c14f3ffcffa92a6b4a6c73,8120fb8b774ae89bba6a3d186e4b7723a84ed3d2,54dccaaad1a768d2028bdd7ecb238fe0e5415bd6
d29473154267150c65be268cf070941573a58ffc,411fa298ae03b9420a722ed347428c27ee423c29,a8cb061a5063fdab6cd5c1a92d7abe5feadc0c8a
527c68b6c3c9a77318768ad43b1558278dacf465,4293d4455c6481529846ff30ee7f50a19ff31bf1,379c1414a7088019cd71b98ea36353e65bd9e8f5
a939c0ccd48aa8502c347fc9cf39220d1db992c6,85c648e60318526bb63aa57dbf3c862805717606,d748bb6630dd628f6ee6859c60b4b373693eeb20
971b8b9217d257dba56b7cdac22d71492fb6a7d5,3e11b0e8707bf720cc1ef1c8fce9a4c2953141ed,62f21ae60dfaa4dc6f37972a03ca9acf33d0b8d1
43b4b343950aa11420fac1471c4d3a647541f2de,b108608b2918674762ed04b436604bffad4bd58b,6af886c2b961d5a4ed7772f81d6348b8634ab385
78535bbcd884a550ce399bc6c0ce8ca47017b45e,229eb93e72156f8d7175c3ae379087b8a46b60e9,b7b495a679e1ed166c6f99f1247398d3dec5dd4d
366d1332d18eece8de310aef2b9bb7af07d12e7d,5f3749dc49b9a7a8d68af715d51070c8903d1ddf,627fb9a25b1866f9fa30658ec7962f4cd31ab145
5075198a8b76034e5b5c36b8d783e276c6f11b56,bdd26766ed25c0cc6b9dd83861d2f3dadbbb2022,2f1eb9be18338485bd807dd03ea602d41948cf6d
ee3b5f5a62f09a33031f5276351bb1877ba83b5a,9f3dcdb211ec3cecc9013f45e811bd0f633a7072,f62ffa74dc5eed4acd756d59cb891a3bf49f4eb0
4d57dee8d9e98e005a94fcd744aa3047a20e3a98,4808ed63e3717bd68a3e1fe0c5bcf63463016e0d,fab610a92770b9e5c3cbc8427c88fa770821e414
236febb14891bb2a46f273f69aef5cc7212982c6,f1bcd02aaf66b7eeaddc6173ded485938f8335b7,6cacd9c824d34c42f71977b23342dcf2403b47de
02289d1f5b986c96b0843110de46a143500f4c79,40418f5b3d5d69b4c38fefbbc46d353b84bc02ae,510a281c3fcbfc67a8691a892a17d37cb662dbae
8784dbc095442790a2f24cb675fdc67d1fe2d08f,b1d9d34665ce1f26bc1b95a87ab085a6bb3530ad,559fcdf73611ccba421b988237b062ed84a5e287
98a942a37e4d19a3c85f03c3fcc01f907abe3ef2,4053d59a2c9745af6f84fbca70293cae81a05006,66bac7c415966d5531b9b1f020147b522740040b
a5f3040da528a76bf21187f647e15c24c82d980b,c0fa45dc922b2ee1fbf6d63782e50f8b46c162e5,76753438edfdbf29d3c12c6793ee5ab9663eedde
22a4cc66ec7dc79315a0f63d27d2ab003f7777f1,97c16401f76ced3f0411d8f314acc4415bea24c1,ee7cbb61a0e1a6d282206819832981d89bcae634
62d5ddffb8b56411a06b8288b6237e31ff3c711d,6556d18bed27361321c0a2df91a1a6e126db2b36,e0e8620deda3a3b67df3a99a1f7b9951db533d33
74f95238064736efc2e83d349a712b8140f566e8,1fd2d3a83d2f3b656e2fcfe6a3399255320f5459,3fac3996839bd40587fa0dce1ed747cb029af551
fc6d55872708c1d8f6a6b63caf58e9a8e452e86b,e87c52d7dc87eb53a11e91e2b27f55abbc03cc85,9695dba4d98dcadab0fd972ed9b5b20d3323781f
aa8fe28a05b423cc4a59e9b985d8cc401ce153bd,1fde206ee6703e9ace1a809ae49fb511d35a07d7,61304bf324b59cfab9579af02e4c77bf4d5daff6
33eef1f9b12f4063fb7c93c01f4b184f0e1e4ee7,5cdef8050bb607ca65845f79a35c95f3cae518e0,f832444eaa72854e53515b253914221095c92419
c2e9642b278acc80cfce2232e8d97d439e88b6f5,bf2d0853b60de40b69dbb0efad3617bfb8d2c67d,3c5ad4eadf5afe1fd9afbce8793142d51f2a615c
78fba07415e9caf09604ea3019ba2b4e0db0223e,d309b77b59612157a5a729170791cd9153599be5,13055bb58a2ca715666b5f19a8ce4b507e921886
20674089bd3306c2b2b9bef14647e9c41c6499c8,ac95c20c5a0fa5387aa87a963ef224fb86bcffe7,7b39089d4f60d08768c481674e94f4e7c09c3a86
7664b32e5fbbe97a11ef8a71c8ecf55e8c92a99d,aec7aefdd5a0beea97fe69de99815f350afaf717,91563115c42448df25ac313b4be6049e0f65d11f
a75adf542dc2e3c8c0ff80a976d96cc53d5598ba,1dd23696e308e31d1f11672b62ec297bc7a91bfd,a7e19e9f068422a4d6ff58ecc1559c0f5627612c
8d2d91d5055e27ee3c2bed9444241d4ee5bd6dbb,f2fc63aed25369295e2525f84c35e6c74e5fc779,ab1a31d9acd6603bd7173f3d73853171013bbb71
9540dc8989c53554a90b86e0874ce20eaf8a7cea,74ab27ae4717aed64f7aa12a1ea5dcc772582961,44902c339b85bd855f65d40836b6aa9f5dc471a1
f0c3d69068b3e9e3156a3b89af62233ed96dc086,bb1b0cdbf0a477f81c30db8ebcd4d989c7d132a3,19f97666e88abe2e9062973e59d435bb5eb7ce6e
c3db9d63f2bc2341769266a9172772d6a1c710a9,cf6a97c8edea0f589a46eb3b862ef36455c18ec9,067d96242c10b0ec3c24f1461d71d450d9d72fc5
d1aaeff832bd6b0ef20f1f38c156622b0939ac7e,9b280db2b12bd6fb201ebc967af98a1320ca14cd,e339f8b66053c2a35e20e8d71d1b97d2513bd668
a596fab3d5271475c6e2ea57de309905250529e3,22c86e857e34668c3c430f84132fa7763e870e76,77851090aa24e800434db219c442073ced066787
2a75debff6ac80dbb0492d4e90e8c68b01f1c718,e339d236e151e89a94b30460e0cc15e758d5bd45,2324055b1fb39b7846f3094fe2edb8872d1f3977
b2f6ca70cdc4f46602c8bf0bbc46bcd2b301c22a,d207a293c7640517ced9a02366cb4e54b16cc0f9,94d47bf7cb5e01c97905763979df0956b8cac421
853b9c5c96f8faaf73c1fc5ead2153e2ddf93885,d78e39d360f3a4873caad0c214628d0bcd263973,f67c4b1c454ba1d62a8a83db3fa93752a2ee7457
95ba16228a8018187bf4e1a1d6324ede023efede,eba76dd0526f13fd297eaea1cc0d6228f88571b8,b90b6f2b872f203eca409cd31f863fc8567f6445
4e5916d17d69e79b1b2fd27032fd8bdd7b996b23,caa4574c7304ce7110ac2d9d828bba73a9cec20d,7ea34ceb222eb03fd7cd448fcbd90f5caefdb143
fbd26ab472cc5b6e2b75f006afa4d9174026c277,b8f7a53dcb1e26299c5b264fe2392b4368cfc9da,4afb8fad427028f21486eb937ac3a2e12855bc22
395851a554b9e8dffeaac2cc553424a7f8681011,6c33e240ffdda78a327b00d472907bec8bd19169,ddfe51415b9ce782b80d4ddbbcb94a68baeb4f21
46b52d92d38fbbda8255542e888d23f0359b3081,038230bbeaa0828d92b1740874b753308afb162b,816ab7ffcce3ae3b73fe5fbb0cf1f363a9efcfff
edbddec98a5e2ea120ea0217656cbc0fadd838cd,a6766d62eed085ed4ac65e7ecb81876b0205f11c,bcdc75cecfae395076c02ecb822f670d41632971
6d6774bcc4756c701b7418d803dd7b4907894c2d,0ae45bd2cf17b5d9dcc39f4f4590a214329e57c6,f5742f21a082bf59603184944f4c988a9aa533b8
54aae023ea2f4ee864c4ef3ce98ad387c166cb52,4df9da6c15e8b2492a75f7fd2dcb75a047307bc3,5acd7a7b83643e3c4f8dc96955906b67ea14eb8e
37d107a953a30829760954daf9eaad1057648367,120303576b775f666c7e993cba9baf0296d947b3,8a64bddb20127015318dd91c50ce242e695b121a
c6e9c7c1f838170d97d8f5e38c86c509045cf6f4,29881ee675c9f3fe4961d3956120eed76c666937,8851c8968c3490fd48988274e1557e7ebce23808
3ecc1272e09b761fab6a02ba842d7507518ed943,9432a550e190d0530971363b55918ce85c045d58,bce88f2e2bf76c3f979902aaa60598a0487f1509
efe414f128b6797c2b7bbed9cecdadd02242ab62,e07185bc11189d4fc24b1d8c5d12dd6f33dc2d25,3439b220a71c0888cd906ea010265e202717ff46
1d1a68761e27d473aee8d41a6c15a5a1f7a4324e,9a47cc5c47528ffefc554f9a7c1fc90fa084e9c4,030fe14bdecfb96d136cef785ff55f3087da6c71
5a0d76e45ab161063d5981a807ffcdd8f683314f,c4e85e5d2c25f57b11faa3d6828ffbff29b73294,f6c741ee73d12001867ae9a750165320871cc340
78f23a462e3f4d4c3be14d4ea2a83877093543c5,08cc81ff60ca9f66ce9f4de4bf36e30dec1403d2,8bc7d5897d19829217f2953128c2bf1cf718e791
fcaea2107583d5afd1d2cf43e7d85d32ea1248c7,3d3c904ac588dc79441b0d9c29bd79b6744358c7,4add05c625395fec0a2eda897f3f3dec67f760bd
8bef28ccbeaa95f39020c4c954ba9bee9ee5c0a9,084a4a05631c119edc3072a6c599a8e58c39d8e0,a73869b879537feb38206e95e3ebbadf755fb406
578ce51fc3178e9a6a1602337ee6626426739b5f,8184287ec0c49498f61a587290a0117806282d64,b218393b5747b7c2ee86099a91315012a9b616e8
deec6fc4ba954e698c7e928d9d2cbb2724a40b43,fd125b506e5f69cd2d70d011745c73bb35f8bfb8,798a4d76117736af4bafb662ecaacf66f0c45be4
69d40dd17a37b87ea0d9ab6aac62703819652470,4f9c19d94334a8ae546c0e9e0aaae699f16efad5,2931b43000b5950b345e8f2aba87ec384e36b284
b467de658d6a4b1c9d677935d8d0566429e1de7e,41a48fe385604914f7c40aed701a8b7304fe809a,14f97748380ef4aa4dcf3859e493d2273ae4928f
c6601203291f2460a9cff03cc67c238bb6701169,4058a0ac4b4b1f47dc58a3055ebda62edaf6560e,de7d7d34cab1e3d04a8539345b2b0a5912dff36a
ac89cfc6c705d65fa0e8a359d0a83e0a08a261ed,1d010d918bdc0d0eb07220f75ead869100093f1d,5198e47e36c8bceb2842570a7e3f4ec7fd8748e0
ddab39dbdc65259d388133c8a99f9ab028c0e879,a285500d3680b13c2c5795d99c51404764b7df39,1d70437017f8158469f0d91186ccfb177bdb15dd
812736bd416afb2f02c894259aaa8b74f88f9c3f,cddffbed58d6cf218eb0266455b0ae5c8bc806a3,481741c65b34f6090e319161eadfa4612f786736
a0d4cccd873a152308f0f917f636d17ed6d86100,9b87fb4a347a3ac3aef351440911b50899b5e444,e8da1d081a710fb13101bc265bc363d05049316f
16cb409fbf3004690ac9cc22a41e4d564f1e441d,1923c8a6117876ed9646ed0ea8a7f8f2f49123bf,9b11509dd077389a25f3abafdf172a03002dca1e
27db63969a047b37e4cacbd5d1be12b75cdf8dd7,0d74752b1fd94103ee9dd360bc56c1d22c6f6bb9,637645b6d6d534f65d56a5b6a8582507f8f89941
81fd3e274831ad5caab055f3066cf3751e96d4c2,d6ff4ed9673ab5a0cd0ec8fd4c1df23429755d17,06cbb6edc7f1c0964999224e64fdb21238ed2bcd
7f886cc4b0f57b41c7391a2e359b3db16281232a,9f47e21da3c24a06be2dde8435acd3b3a2d1aa72,be969205ad77a1ecaa8dfd98bcfe6257d3a07b0c
5203c3e84962c29670f4e0a87fd23cd6737ad882,050153fb503b5090e29ad31e8bf4c3b8501e691a,1b22a68fc6be4fb51c57a5f01b5193abacab4cf1
76df7144bae7df032872ce6a009b6bee110ef2e8,f102e40b691268bf3ec424491c918501fac489fb,621f3b8387ca140437280a6cd91936bbc304f2b1
09625785114812ff5b3565d357426e7af2e537d3,c79df5f0fccf50ec0c18d580af898b68021d49e4,c5a443d0dd4579f9873ece67624bba33edce8cef
d8f06aa4f163efae1c2938662c5e816e25a42b64,e03b9205206455c56174029ccc35d27a0e43b61a,8817e896db8619b278e679b1c62bbec316a12f0a
a1ee4e04ed8b5410a10b49b854fa17420eea19fc,08a9b16c82d61ea383854174b81528532ef124ab,e376851fd8aabb05ac93bc234ae06fd9ed0cdd32
3cfdf000a2506431a9176e47aeadb1db67d7357d,86643710c438d759e902012bd98c90a9996f070b,f1cb5d8f71cc09bd03a3fc6a67a1803bc2265016
6a6a17717ac141abdd0b6f661f766010837ff212,a764c035b23b0a278afa3710542ce850923804e1,f8967668371d7b2fe86362f898745d1710ab9abe
a33e6230a00bde7fda922ccf94a49da79f0bff5c,e865ab4c3a52fac811b39f24b4572610b0e59a7e,d0bf7acc188e3a0b701c58f48a196bc2d8ded78b
1b393c80aad885242259470682078971d29a83a1,9a7a97175ef8d78e03d878b29ee5d48d24186016,ccc843f98319c4dc3e5a6654f4c20a238969e284
91481a5fae82c1995f41256dfdb08c0f278348c5,47c271dcd0635ea584023800d66d1ef8ca5ec07e,bcea5581def3f663a2fa52bca29f7e2191e7e45e
aa43441ac98ddd6cf5fcb6b6109775a4ec91ee33,4c8e802dd36a951f6925bb8bcf4c9ea043235f81,20e3a7311c6a44fd44995f3e56c94098f60da32d
172803b2f7e5123e8d2f973dd281665e446340c1,e8e53d13cde14e49512f220373c6ef2f9352e1db,fe0048bcecff7c5c9af3fa64be991da072fb1ec1
32fa0ecaf991bb0f8ecca00675a31808976fbef4,3ca3c7a60609c3dd861f4335bc8118a83f0a0551,90eabdd6b4cb82333039c102808beebc9df0a3d7
a8b789d183513c381c0dc60c0cd50700e8909dfe,0f4340e65963273c12c30358b34df6eb055fea4c,283c213a0c6ffb942860649f703b4cf8862e4f5f
8bea5dd41e86662f33771e442650d774af1a3d4b,6e4e3b85800d8f12fabe4527e4c13ec5002d9a02,748f71e5bbbe88d57dfa3cdc2569c698a982fc27
e74797d41150a8b333a104c245d69a700da0401a,8c562995d7307608746f3a86d9354d06443b0c36,d9781bcebee08dfdbbdee90a595e92ce1fc284fd
585d0cf5746ab85b5dc5a202606f8426d4a282ab,99d66b4c93821f5b4dfbc0fc236ad0c7626d5310,362cabe6845a0769cc8e7fcd4dd5c75a74a07a85
9ba01e7aee19489072b616647ec044ce03a14a43,7fa8f514af5bf6d2e1865353b34ab56d92b54e1b,9274f17c527a2e785206282bd05fe7f4ccc7a01d
f4964691b0ae2590ddd9a530f78ad9a378898098,f12752372f5e2544e5c4a9d60794c037b55df546,0103964250203de699636e16921fec85562f0b17
219294c02b4129d8a063626c72dc3f867ab75680,16f5863847120e1990e3bcb14948d78a04936df0,7cac9d2f02bfc1d207b28974340503afbe68d00c
19cce3e42e46f010065146dec761dc6b00a6efc1,a916aa36d82bf3d37588c1118ad838940453e527,3cb4952745479eb8cd8b445951e8fd13f88b6fc5
7974f39522b36a525cdfd730a5c989d78308e88f,86b774e792a8454aaa2523b45f6492b488dd42cf,e0de75224b17627c9087f5cad5180c43cf8fffe5
7c21b371051de1de1ca7891802b48a51a8d2197f,dc1e0a6bb3391a0fc1dc1b031abb454b0f1f4dd7,0c6287894b88ebf70c22f4c65a83e8ff2ab99315
3994626cb110c51bb87776f71fc886ad15c0c4ff,abfd975571b3fd59209717b7ec76e2740aa97507,66b471e5160235499f94848a8eed6084c86497df
7f9428eed57e3275a3de99229a3fc2761f38b2bf,e8b0fc88e340b1b288e9e31ae8f3d5b7847ab686,6ee4ee960e41ae5053cbce3cf1336d20e57be942
2c9776ac6be8ca1245ac6e3b20f4756c625cd6af,b810afa1930e12916402d601db6d6c6ae5d9bd61,45bf47ee05bde9acb4c64b1c39ea0009cb405c7d
e148afd506194474790e974cad61118610935f93,02211971a39e4436e53a40833acfb026f874574d,f73fc7d566fc275c067398b083de92fccbf8a1b3
0c9b622a742063d1496cb47ff9b18db2480fbe31,653303274fc0b22a23f8909852a60a26ce2de92f,bb39ec161058e23c3fd41b3fcc9f9c47adb20779
4765d885dfacf93db8202c3b6217a806c09d0dcc,c92a035614a1c9866ca2daba28ae283974b68219,41a6c5e967abc1588e2fa9bbb301704555b31b7b
a76085e463af334c83a13341f3349e6ee29d396c,a76038e1d1eb5a07a2cab78044e793f947247457,b6aaa06f83f64b1f574f0ba41ac8566c2b5d325b
c9ed14f87bf4bfac5231cb2a65ca3cae06cf958c,dbba2d2746022e583890e6ddda9d081eea30d40e,ca29df1aa9c58b951d8e2dbaa7b98a4e56563f3e
e2eadc51a3516e7945d559531ebe4bb7d9a26bf7,534383f6860ddc205294134f53d981ed1002dbb5,288871059448cddfb241a8a8be22854b5e71b640
907e8402ab8ac165fe0a35cc81d180db03df8330,3a095f5ed5b1b715f5697aaac3d1274ca4674251,ee89b7c9ec683320f2fa32cca9b46340a77b074f
1fce5121f3b239994a241d91508f928ca2052988,bf412455494aa6401c89ff331f89ce9dc1eff77f,1ce1a0fe1fe3642b2daca5e16b1058cad0d3b5fb
1dd80d596d0f11601c6c834df19cc1916bf9ea6b,7cd082ba5fdff0517a53e8d711ef654c252b5b51,83604b709c0e8383329d3fc67c37f380a6279404
8c67a4370be13ff0fe91ca86f4107680037d1657,573f2c20d757f2bac27c023d421a81e028c5ecd8,0ba7ef98b39d7d34ecc34f36cb230f5f9c9f0f2e
d3782401347e6887bbf2d9fc421c2c658beaac6f,34ebeb15ed8e3ab334edcfd953bfc328c7b52b5b,1c7626715d14138249a4a7fe0e9fea786ec00959
b29b81ae7b610091241f2f22e53ae2948e114a61,09587d0c1b6dd5e8de98b1e5af284c7a51523d01,6a00f9f40367640fb0ba40f8b705ba93da7de93a
4556cb35d1c96f4d775a2ae993b0476453d232a6,70908b1449289321e48f58b71266fc3e4884071a,743d7c50d0b74afe5709a7f976af2cf3259ada49
638de87a5a14b2ff5d5ab5ee9553f82b0421f010,390084d59e268e846d90a4b5210a4aa955f9fe5b,9e7895575ed1f29e0493d1f6a8e1704786ff1ac3
a19deace45acd25050ecfe0c8f31db1255982876,60b0bc55354360e257aa58cab02629465f1f28f9,dadc10658ccc475d2f016d5c360d1172d1d66842
29cfa3b2252eb8305ebd322ce1ca55ab5092de69,59f293711a806f74b8ebfc175f64fd1f505af73b,5d6ef0f70cd44d289fc6619e57826bf53e4aee7b
ae457a18adb106ee3c91d3f6fda679a16ba5264c,252707a873aace64a0154f099f1dab71e9c58426,5a680f014892d09c531e93ff6c058731f803b84c
ad72542e9e3eec2f4ca704690080534786c93dea,f27b55e9b2730ea8b4c8b5a81143ae618cbd31fe,2cdbdcd5c56251e49e7c56391a8adb04adc5912c
dbbf7e7f3bf1c565ff756c97e91ee5df1357b130,7bb1b12b4f6c6c15f9c441aaa5a20a5438e3d90c,eaeb8b70fffcd163dcc3945ad999649b6d5e9227
4361e36ce0254e4cda21977745ec4bc619952253,ea8e3cfc37b068aefe4c0cb20e3fc081ef043bcc,26888342654bf4e8679de36aa069118cc4a52859
3b7842c30e21d72345fbc4708523a283848279b4,492754ecca850986a256273918bc4006fcd63bf7,2372a069268bb381d8248207ee7a0484811f5b27
883cc6d697a33d1e02e5cb2bfcc1eec8343e938b,0874521a78d357e6b94edf0ce5ed7b243b66298e,a27bc236a06f2dde0c4f8521f1ce0d3e2f75856c
0e142c00cc432cf238e33c7274d2c08b396bb605,430f1910ed39628284a38dc8a7d44e0380c9cdd6,e5ac0b26891f1d5934e8023204f6574195a709cb
9e70f49745836204da6e132ae0822e832a521261,ec3a04da9b8f5f172ce3563ee17b17cae393eef3,f1b166d6b8013fe8e9c192dfe9e3908c5b379625
41dbedfe2275bb536a9eff35bb1054ce1f64b2b3,ea659cbc2065d5c0ccc0dc8804eb02efbc9bccb5,8499fb34b26cecd2550f8108aca26b57972bb8e6
762057f46d321c99d1cd274a7e19eca5180ba746,dcf6063dc3669441e4c0a2fad206f21b253f2916,a05aa25aadd53a6e9857e511a82158c782c61678
591c1b0177b188bdb18572a0b3b20dd1d1ac076b,3ef0db24047a6e5108585a9be8f68bcba18e4903,49ad3b0d2c03a4bbfab9fbe779044357c1e0546c
309d8a90fd2b03fedbef3577b8b793d583c20fc5,a45e5e7ab643ada0dc7c122c405a3e84078a9e89,573b2554f4ed717c9d6f8ebed7e0fcb29021ff86
36d7b534378976f9afae0001765e133166bac41e,13ebe495dfe85ce19b5013c995468ff5001a2c3d,e7ec91eca8b4182e97a6cb88f50504285495df6c
25e832940cb6fa76e0c365762f66c466a1e6eef3,1d8b21bcfc2ed4b60fe625ff82c75153bf77f05c,43444ab7f0680d1b1b003aae5ab5a251e7d4e298
1a28b1b5c48acce54ffc534d2d057735e45c24c9,51ab0d759f6138a639453a429216f0907ac8dae8,60c95032fa92ee43565368feb999d9c66e1d9c64
76e3cfc38f770ac7fc6ef9cc2a1720eea5b4e99c,5d02c65425b2cb33d5c3b6ca07a13c35b4dac90a,b456833b03f54db6bea77cb2f4df20c856eba971
b4666447243b0d2c3fd8eb09884ae2363aa3cb85,927e3fd455e895dea7a8af31eeb5bc82c6f7d24f,706443c354b0c9db48f7461a15f48086deb5a187
2307dc8f26b202a6eef263f2e2d7e6d2ec04a641,4c8249de3429731be1c98dbe8a75ab5d9ec6380f,f9b216f99a3dd7822d9f3f112aa1ebb7c8590f20
addd0e7dcfd08c9bcdc1a9d636d75941cf1c8530,61f01ded6193cd804b04960e151725e53c8cddc2,f382f2d6edcda2ea561d522194d61a8845b596b9
64a8c73df231fecf3cdf24f05bace9ac8a155213,9e8903383beb58b50b32f85f9217c1c89c9ed78f,a01c20ad20a8741c20f5823dca8465e73908dcab
fc94770cdb70e26d869c8a75e2b9bd70f171e692,9e8d779f316db1895795a5fa191e4e50c27ffeb5,a730bf2b003c3715c19d4fa0a7c56407e3760f36
da5865139840a94a35177e27297296244787876d,e6b8aa07d7ebdab77f72838fb3a36035c4d75d19,2d8b10a5d82f3a1940ce63c7295dd10b0883add9
ec97a511d5ff005877006ba199a287a7f4287872,c13517634fb6065309eda729db210ea2af3b1e32,33f5da686ea0c853f5259277ed458b02e8d95a82
e49094f0456f6bff7a98b94d9c925f7a22b835c1,3f2e2ad0fa97b8bdcc10fd85fae8ca0bfe3d07ee,a6be7fc1c2a3c4d3bb98e09d266fdbe76dc9f77f
2970d98550d5d666c78513ed072240e0a6a99cfd,31c893407191eabd96a2e866943b8d2cd8c3d2bf,11e4f6285d382916fc6aa1807f4600cdf0b58ee2
eae098ae3e44dd98e50902ff9be8e2ba5729fcd2,acc8c69cf582a3643341085226e8a57842191123,1fc7609fa898962cb9187cee44e660d597fd76f2
b7e64867be297b95a4e4fef330e422a0725d3368,0a8e174efc32eaf5d7c320680493f7df29411dac,deddc441bc0023d1bf64f61408fdcb1d57edac34
8bd1f196393e22d49f8bd281da3d4cf3c0926891,2dd072a492f7e8d718801470d786f694ce8b08f0,cba89a4713bfcf19444fae0ea0a5c5c381ef1b7c
d3a2145e5a7fed0a8710ab939365ed2fca07864a,1e3c5865deec7240c649ba147f9616b3f7364494,41495627876fe3c013abdd8e9f650be3a3ccea98
34605e9cd1138632d3b5b099aed9836816059d3e,22926e4fc7a522d8985028922e6e3fd2bdcb46f8,9056887aaedd811e0518ebb1b98219b561e04cba
2ce4f0baf561ba5ace64b9389c9f156f0c618909,d45076d9d6bb0c73c91b9a615679d3fc277e7cdb,f77bd0226f76b7bccda774c7b09adf42384d6b00
9201047f31ec67e94b578ace4ac6537db69fd3c9,71c58c7b3d050d931f624c485f762f5fa1e30e51,25999ad8fff58ed787b8ec2999e5963052b1699f
3a34fc7be3402cb52a436935f31c3c4ccb5a2d86,def37052f159ff189b79860a51f66fb97f3904ab,dfe78668c2673286fc50f504881ed45d2ab99d15
03a961709b0a41630ae65f3723df5470bd34d58e,d153c75e84df79e2765ee566a40e2e7b4af1e39d,0d8156fee9625e8d85aa67f2667b7bf77e1dbfec
5562e3e440991e5d1270ea81925c403e1425da4e,598da1936e0f95aeadea62ed77cd1eaae45f43dc,bcdb68a8c4b512b845c6e0291a86a0e5b03d7344
5446a3afec4a203157f58aacf0f18bbd5b04ef1f,82bfe6cf0ddf5bea81f8560f3cfd84137161e8b4,9f7b814747deb93c7d34dcd35f46adeb895e50d5
32c3e6e844c1b305f3c3e1a5c799b7af8bc7ff38,a0f572892ecea623a8004a8d2dd023bfdef2218c,cc3589d459a7e8b4dcac2957809e0d6d541c8e94
d8196a6ffe33a6315645c8f91e3247055b4a9c52,b68512a96987120e021db04cd15865bc91e4e102,c3f27a2f1c2fe0f1db4594aaa5d111eaf50dc78a
ae346a87a128eb15db921cad916258839a1fe5ce,98ec81896e01c501f7215dd2a39f535621b4c4f4,eed6effe27a384a2455c76d41811677aa2279ac9
e28b76a64e197166d26620b550ff959e22bd0435,5ca8593f143c6420891f96bb871e70354fc6de6c,3348b9f01b6cd52656ef435aba5bab22c538dbfb
b1981d646ee5769e6925665a1e7e1b10d756080c,d92bc0e7606b7e1d207e55fca54deebcbba569ff,94665a40d760b6cdc22b89278c201ace10a0b57f
bf25b32cb23331bf2e4357965384ff22bcb13603,1471d49fb6d6696ddfaa79bd53ec39c7f1dc1a60,75f8d43e363fe326b87dd7654c7427a13dcbbd68
b16ce8806b6819770d0f207eceaaabf834f67740,46de243fe607d4117a40994bb7b135013708f617,5418ccf31ebfe3857cfa784367f22eab253e1f22
6719b7df29df885c603806a44f3e34b1a5b2e7ae,1b2d7755aceb4592607340d8703410aab776be54,6fb16ceec631a8067fc7c1dc9384fe29cff6f142
6d9578a38f0e5448e42efe18159255fbf09caf7e,2b6c46b50d6de99750619bdc399cf3839399d9df,c42e64db82d1c0c40a4b470d46bc70e3fd4a2477
2a7100be8763501ac345d9a907fa46b7aeeaabf7,d5a50eee8aeab634b763e2b8e9c80f4936c50fcc,d2a1f9cb200b2b2b7ee5219c16e4250b037cb043
1ac2334b593e9ba9d9b3442fd1c1952e8fb1ec75,ac6637276b67c6fe377b3566bbd28c49ae3db365,50af4d03888997a768c626627e395cdc76fcba76
a0b637530cd7b81d5587907e0867075f9d7fd102,7d0d909a741ab29294313af6fe1eea32bd37075a,7335f0c1d643629c539c221686fd353bdad8096f
a0f69557cc15fa9fcac56658a4cbbfa3c480385b,9a9a87a94babe84cfd0e7c98ad4444ef342b722b,ad9383f2c09bb277e4a3ee9a0e3fb8a3d80499c5
b4cf545a94870056395983691ac2b9fb9e6bd883,a653a4e0e99637d5858f085b1adeb527e2b9b170,2f9c283bb17f3f4f4f6cc9983f6e08e23db24d94
b4926283f8af906dd917ea966c3878f811f75843,c26f9329b683ec0beebc131ecae9c120ba32627b,8c5bc91855dcdb1812d0d8ad851e1eef92047187
48f115686d105165d9637ffcfcce2f10b6192d9c,bc6ab39ea2f13d24b8a53a177901cbf3fc689143,558da7363e8c3b7c459dc6475f698f3bc8a7da0c
f26725e70cef018762baad434b03afb93e00bb80,1108d0360917223aa243e3ac0419499ec67803c2,14dc066d6ba599bc2ef8a34545920266f956adc8
4d6e3b4e1a4a9a0d7eb8933d83c154de1f612a8f,0b9e02d920f95367d89a2da0657376115411830d,8920a4c08d238f7433c187db1666a4fae621b145
7f34f27a1c393c264687a5148bf91744436c75ad,b11434a6f8f8f41730b7ec49c21bfa613bb99378,90e43e055b34073fb92f5fd7f89a6a4ef790bf5b
ca550e1a704e6345044d283b9921fb0fa7f66a11,9a85db897244d3745312f9247941f7e894faf3fe,09b492536594be8666b3569e0d757088b52f8533
b2350d90ea29de8c1009c8d1babfbfd9a25df899,9b16fafc526d9ea57209fa6d48a364ccb72eb1d2,b923613eadbb455b35adae8facfb479b7f9f3629
283b1daca8cc58afd398b6e372b653732c0a3b03,8471879cd9c88c0e30700db210f1abb7d54374a0,e7dc8ba5352e6155101fe1179b3141c6f49e11b8
45415f0645a09545decea45ea40ca226f47410b8,b2a5334a7594238d83b84144e41cb0e37d8fc1c9,832bbe9cab4289a844a9c4f5a4c948bd1c1af78e
a9ec4b3767c6475c90c195de1d623b94f30429f1,943272b6f20d823554ec49bb57e08b66026036ae,8d79dcc0d0454d1c0e53753c89217185961bdd4b
bb68aa7e16a1703f603a4b75d63baa38ba74c6a5,98ecfb1e4146927de0530a862643ddbafdc7a249,8eb2cea3494b684c5e5591e12b98511636ad1353
e0baf898b1f670cb09e7c59bdff2128f88c706c2,a64f44e5791be2d210308f91c262b6211f90a6a0,1173a6b2e993482704e097cc19c31810220c1044
0ac7e38797294fa66e7d8615cbe574903f061222,947eda3964749bf28f36db59a8774b558dac8eac,06ef8fba46d86a709511e4d72b8ec3cda227efac
65d8c3d7ebef6ea5a893314b4a3267d3f1d6bcd6,ef15d3d9ec80213697bb2acbfba3e6ca0f8fd487,66099b04020409672faaafb1804b4c03f0b8d43d
37b5147b19c893de4555b0760cc8df1aa24b0f93,1f328cf362768d56dfe6101661209e6aeffdded5,95dfccbb5e35bd5e97013e0336ee6a95ec6b04b4
63b9a6bda8d5f5cef76e8af7f4e262fa54a6a6e2,1c1475957f2fe65d918868690536c33f10e509d1,97f43999367e1e8e2f4ac5acb01963aabde462a0
8d42a9df83f0ad18cc8f5593e415a6b74d3950f6,29d1212bf3528c38169814b62cf44b66d306d766,2333af5cfdf16e9dd2e62055a7c2c1c1a94a197e
d7f1e56191970344b538f551391f36907e9fb048,b9dc428e20e65e6bffad1e541a039aae950783a2,fb5456da796a6245a48e054e816aad09c11e8838
dd0acb63606006c27294a6177abddb72e85823c7,a50e0382c591d279280ad2c3a569b708a001acc0,bbda3631fa9b338c5d5db160f749660140d82ba3
54ba991c111410bb74b1a97eee90f7f8ca6ba017,27a1acdc7d90a8aaa931f2d011fdd6f28695bafb,f92102a5f22ae7b978ecf91d59781e16f0b82163
f1075020189b3a526597a5e9f1c5d4813508ecfc,ceda27ae256cb00987c9face4adfa80a20477534,623b723b113d9bc862ecaac881d881c832171d82
c50ef1efcfa251ec06c577f8b462aecff3d79814,6aaa92680cba719e316605bde85763c43a083e43,29be433e1b360eb782eefa3405d673cb0e4bce7a
aff2a424312993642fcaeeb34814a43ac6973dcd,8abe70e25a777f8e04b5fd251d8464d5dd319200,83ce54b8153d6eb47b392517e3092ae0f501dcee
748678267458b7da6d655f1988dea51142a7c9e9,fcb5531fbc90cab7e998ce8eab655182d165ac50,f5cf8956c5622b240dd8f2013a983afdf5b59014
6a485065ba42601a46eebed8ab85705bceef3f23,2ce3656ed3e43445a41168015466e8490bc39653,c5a0d16c585fd7af0135537346b6f0611d51d739
a2a2a6d79edcf53dc406daa1730968c766ea893d,a19add9c886b7f64a2371633e16cf8ac2e9447fd,a9db747eb912f4124d9690d9395413479a2848f5
6dc47c71fbd26f85458ed5f923e60fa109f76bbd,e28238da9b5111fbceaf4bdc81528ef4cdfe26e2,1d32a575e756319dd8ba62a0a2960973dbe3eee1
a8352f3e99382c195ea69466e2f63be2ff723a9a,403292a13151dbc265748d2119f9d1bd52fb9d54,7bad1771390cbc297580a4d5bdea5b5281a9012e
b2ea782eb4cfd6fed9a85619390793815c204dda,1ab6fc9a4bf25638a2e2364f8d4679025fcd3613,1aae90b29495ba2602bc57a94a7f2bdb1df4602b
f6b5c513bb73bc476a71769e094ea8401eab13eb,bcb5365ccae8de57a976d9b88b6eaa7837647138,d9e156e90e5a33aeba270962ebc16ea1c103223d
82a8640111169ad62aafce0e0cbeb2fd6864af44,af9c9a826e888fa0927a1969c93bb90dbaeba124,7cefe8a822589c09be7d80381a6ef9c4cc32e3aa
94c87243ca2a55d5374a22900b59bfbdda348d8a,4193563190b9a25de40bd6803f58e3529539bb18,776c39dc0a8b7563b0f511d19346e280a749e9ee
3385ce92a2ce8a7c6b47b02c689e8b28b8fc8362,be39828fca10b355e2cf9ee514736e87157748a0,d1f035f456df43bbd068ecda33d2ec08d9190b2b
fcae0e311db59f8c545d7b2f37f94a343c8ac206,8c251db2c1bb15d4f9ee8ef84a6998babca199f1,e25594c48e207157dddad49d8dd246fe59537e57
3e94af163bdff38073de96da87ed074c167afdb2,cf5feb0dca15e1898739352de4bc0028b831d0f9,8363c48863a1d8ee33fe1cecbd184030f86da0e9
9859125c7b927677e77085dd99b4b4b83df65ee1,eb8325300e523a56d4a11c8f2dcb16f5892a5cf7,d27c3b4b7922dae901d42653b1a6b1859b72b04c
2606cef21fc2d8d3679d33c994d9d5fb04a68def,fa5575ea549cb3b9f6c70c3d6429db41fa46864b,b821b9d502b1cfea62fcf2fa36f439eac09739a3
557e82373484ddb4b48373d7e4931d7b234043bd,4db653998bc84211acce9ca2945d06dbd2feb90a,7475d22154dd441e70e8c256642e33a1e6a42dbc
b900be6142403533e6c6d7cc2ab78eca1676b797,e3139fea211474f8b31ac880c259ae68b8278c6f,db980a5d18d1de83a9ceccad8ce9e283d58484f9
c910ec814cb6bfb0627142dfa44e17ecafc9e49b,4e3c170ad4fc325c532c2075dece7459b9682f5e,7cef39657f0211ce337b25aae8c0cd7901b03718
8aee781950f2333140c7bace9bd9c36be86af4d2,1bbd16d1b7d8c7c48348d63a5bcba07e32ef9982,078aa5d04677fbbfb0818bcd0b004719c742c5e4
9dfda963a3df7c62be5ec5c94de0b149de590f2d,ec9c81e77e0f39f2a5748fadac320f6251959748,ad35fc82af76c5460dce612b2792398bcc9833d6
b6c4592513f8a8295093b82c5293c2570003c33d,46dcd4da760057b54e5f5694e8f75408c33fbb3d,dba189f4af385e887d479365612d398358d9f732
8d90cd3e64c8e2cd348f5f5d88714ee259f05527,4144f8d93a7f63d62ad13092c72a290b3a3f967f,799c22d5534e3f296eaafbb6b4ee3680e1ac8438
22a1849733049dfa003389287e2420f6e9ff0c5c,5395e52539816eed706dbbd90d3ef5051857bd30,eed1fbe38aad67688da6bf7b142e146ca34a2fbd
a9698b6f6ef11184139ef9e53c3bed8b24c0942b,b82af25e63e562264c0cf2d3ce5077a272129480,90305b6032926a4e7d19d8cdedb183310d56edb7
6a94d2683bdf2ff9cec4aae2815d079b592c0650,bf17a84dd28433d810b4f83dec7bf08a1eb52c87,972a9df03189ef97cb7de63bbf9af1e56f74cd6e
fcadc801638ae44193e61aafa7ec1a65630159d0,63c8e458bba2831baaae76913d61ab0ccabc4b94,1148caaece7a1924ca70f4a6db73790bb02c8856
5604bd951ee6bada9d50bc86d8ec1dbdd84e6948,399e699b723150f05c03c67cd4451e148bd9801c,7a1f617194277944c5c742e04bca327d4ed4ba38
a16f35dcb18eedba213c9311a76babef6d529dff,2076f200deba77d8ce8cc8a7032c146cbb9a59d0,f8c49c4a1fb273f70d7498b8830fd01f63d3de24
20746a907df39a74d531cd812500b57fea9b9c28,62e9de223d6df636a44d5737f0eccdec68d0fea6,99f34158ca892b4dfb86247b34db22692340991e
769b8a07b093512ecf79ab5df2b687679356f748,258b4576a27d5d086c4a5ba33f75c65992b59ecb,0e8d87bc269d3e59a174b8b4bcc84c7dbc7ff6b1
e66378ee59998ae15f8a3b6afae4f657d17d37c3,984dcbb8107ed0e732f5879fa8449a0ff2df05bf,e660f2ea84132f96b5448d102cdf2d331c6a3f23
f1a6d977653cd4852bae6c2eedac4f1692f49575,368289d5d869d5c0f9a58d13f8f95162ec806b18,d35640bf10a2e58f2204408563568aeae41b1f18
88efd9eed64a5e7b90d4895a331cd3d6b9e7923f,a84c13ad18ff12ebaf83ff9072aebdcc7e37798b,fd38810f338741511c609ba5cbff2192063de737
85e84d048b3593ba03fc4790124f4c54f0c0d229,c2b1eeb8c6dcb1090173193e2966d5328f8ed912,6915cd9b269649ca945a4fc952ee7dedb1b38b85
2da28054d4ebb426bdf6fd3888df387c4cf6d0fc,19ad26afd850fa79b4bd599042a87c88abebdf14,75c16b61266043673223fdfed30c543e353d4b6c
7ef33cf4b2857437662c9aaf505d824e3fdca023,425707e936772a859aa4e0208fd671397f0b2808,2ed4071c1e02e8374aa8ca5235df314eed3dc7a8
55482bd87644bcc0d813b90b4c67187695d8ff55,8d441929a8c725273d101a0cc3138ce59f9c59e8,90b8b9d121a3d60c65022f3456d896f68a472795
7bd1ac4507647dcc1b07f0ee09acd8676f0960c5,6e1d7b4e57e0317e53947c0f33203c28325c0489,c6af4df9b91312d1feac6863b934ef14794b31a4
6ba6658aec7e3beb8a908807a91fec0eb3f7d602,d3220b46d220b876a59ccd297dbd14b0f9d1f6c5,35cae0bd3d8abeb67f8da64a1de3ceba33a814c2
db6e1ef1ccc4b729a7b67c2b6406172497b9f499,f0eccda1ab3e83086bc9835edd4f8f6bf658d661,9b1d5ef92a2abfe43fe2df53ca8f054c465f9f19
6bc34710c8c24948fdae13761225cb0d3fd7b1d6,2cbbcdf096c9554ab1b2930bcbcc5625000a59bc,f32ef29253f6f347c568adf4686de4e10893bc6d
3c4e4187aa5d46f14596bd3e3ac08a279eb0de40,0e9ea11859fca6ff4a40536c22f8c25483344252,1072e68498e545bb69879614e02d3bda335e4cba
2c6b82417692b8884f2f24d5e6d96b796fba4790,b3e7d867cf9474edcad7c961e180146f7e533950,b47588b088a00db62b3384453f3c0fd76b26144b
9dabf6e3e4944204eb9ce1c4346a8d8265e0e7a6,5012e45d0482034268a530ef31a3e33c2360e1d2,3d6c53ee74d148bba2a3da49d76792037b78eae7
4809c1fa64204fe868eef38d0196ff24c8371813,0ea798d8625b0ec1f1084b3bd48231360b19d481,92944e7b5e942352aab44e1123071a791119b982
6007752ff3bc2b59bf0292448345880ab91828ea,5bfbc145c6d3a6b7744e2ff0c478274e6b6e0e99,de650dea55203e30699f786b59cc811498c9671d
c9947b4ee6865af658ac101c8f6cb0b3370c6dcd,becbd5411cce8e6aa23bbf206ef52b25e6224eda,6c065e69fd17b5fb5fd7384f4ca97317cafb11dd
7232e3ac442427c39fafa9dd4479e152bf73de50,43bdd8c07e7dc0ac9814135c4c99ad463ead4890,d2c2ddb337c3bea49c1fb5b6ad7408fa128b2d53
815b17a43b059c1aba2023ce866200f6cf887f2d,3a07aadba2db6140876ab58ab55ec7b0a6cc6d93,e1312deafeb565c9cb5fea486e46273accc88d26
c122e16bebcaa76a8e1740d7404c1eaf56082a9f,6c47f8f4d79d3cd571e5d6526dec0791d2b2c8f8,b1e65ca49fca83bd215b4c8e8427560bf9083cdf
f5d76c55932f8e5ca2c267fb9b0a1a6abc3936ce,8ba76f7d0a71e5d27ec63a7d81983a649913b8c9,77e350b6b8dc61de3cba519b0f4f79b25eea9f49
f19b390c685209851873339a9c9f9756b0bf81c1,0c62ac9f1624faffca6d6505b6564e8b9969d3c0,e9b394a5507b35cff1ea969ef7991ee0fe2c6d45
6eede0f71f0fa802f18aeb6217d3f82b9d5834a1,f7dcb68c5a0173048e3a1fb2cdd1a2c5c0f3b761,89605f47c23776c423698a5b4bc2493060e3c13c
65b442567218f772939978849f85c497f96c4dc7,6d3da836113fb65085d437d4b7f932a1d049cfd3,6d23d22d5000c677a8c59a79a9bfbfd8b9c20dfd
8c9a07a3e816372a5ae2d46e0dd9d822d56e6e6b,99074a557895249d03538e5df9861fcd6ae9a6f0,899981f318cdafa2e2e4764f0bc5a26889091ebb
dd5c2ea6e92ec1af35393ffc8ab83cf81fb80eba,d13a8671274398f7bc01e2a9dfbc9fd4b2bee4b6,59811090e1269d403f67bbf74d6288d4103eebc9
2a196899bcac210138cc267bb47475075aa07cb0,b5a71086e840fd6080d2d376ed43d31918ed1d0a,edf5fce7e33aa26cebca17878b42971c8da91475
e9594227538ce6dc537f25cf7082b5853034282b,cc260eb7b2549e88bb6c2aa0480197ee5eaf5016,ceab50cafbfe9b4b8cce092994fd1bf888e9c476
efd92fba01224190b6b225f487ef3735aa9c58a0,dd13b4608886c540135bf83d2992107bc03fdeb0,a401898139b7e50d9b6e872de949b56e4fe0e24d
a45ba3add5f08399745e8f6f4e4eff58a63c5853,a5486e04cd7dac0acdf4efe24129736650154064,d7801027c4abb7e1a53155dba2026a8b90789791
a08ac618a4ca9c5ace5af9c3b3253f11e6aa297c,5afd809e88788ea53097471a7ee783826475d15a,35958a9b6b927d8ce9b1d0002ba942e14c6b8422
abb7aebaba5721512c3d16857c78781c60259e66,33ef88858ddb65eedff41e3a1108cd6baf563917,6407b5f4db68d24454b0fbaaad864727b5c61352
260368ea557daad41a5395c9d08bf1f2eadfa2fe,5e7330448dfdf3974ebf638dc8837c87bf0c2e5f,be4a317cb463f031e91527ca4e74ce03c7e3d661
bb4d3fda25e858b0f9153a0861fd8336c6007ef2,a135940cf5184c7af0b2ca1a7c72f58a45dc4f3c,6757bf3832ddfe5cc0fd488e98b20d5245fbe8bd
6c98a632850715f63fa0c83473dd23d977ca8469,85230758e453f88ee2b89665f774994db443d968,b8723226787a98cd1bb7a1020dc0e73029991df3
44dca29926bd8364d5b013cbc6820fde67cf3e75,55629aeb19b0e7cf968d33c9fc0f465baba8f82d,761f65cef8dbb17867efcb380db2b28d1454e701
32f4931fd24c18db383d9ce156dec1a65c83d98a,131c1e1b938c14cd5a3892d92d20f2950b13cc3a,e7218d09fbf59d858cc952569537d739e93401f5
a2d7503f714ee8ff856efd8d17548fbab928f0ec,3f24bd38864d884b37aa4c8da025c51a437452cd,84de6a00491c1f20c7fc988d01197f8ae012af62
d6e8375e64516fd5e2310c8baf4efdd4420c6e36,079905654dbb98e0838a18e3d25a86b03889c012,d3d4de78186a2aaec323b49c8c8dc5dd677a8f42
7bcefd287d8109ed80190797e33bb5422395436a,5af087cfc3ad9a328c3a709e7857fcd27471f359,4503070f7f140a7696fd3b9ac445865b90179d84
0b24d5f92e1995fc6afe2dd72a23c8ace29bebce,87857252a46b212ac383cdd91ce6a028ed9defb1,8ebced609c453363e0168b1d3b6baff393817896
4c9f2b8b25958fb80887205ff74b3df3e4c1c056,1d95e6087a37fb9ef776e4322d351035a63ce909,4f7dffadbbc11c11a7fe4d790a562d3e78e4445e
2670eb1ce74564d64524a0f5abb8b685894b34aa,87ea9a9e0f5cfbaaa4112fb07f728326214d459c,f8bf34303c62190b66f0cacd081a3c0328c13e99
85c7368759f5fb53aa23e03c8cc27c2deb424b62,90df440df3f89ef3da3953affa88e13130db30d6,0894b5fd029d8e5a2fba8941d4b8e20466ef0613
ad64eb7af84c366a4b197d981dbec90ba06e22de,0acab89b0b9b7be8451c839a814f70e0a89f91bf,7f4841c76d9e3b3574af03afafa583a6282393de
922210eaa8c6f96a29a909926aa2decad31286d0,73185e89e1e50c0c39f9d08607465c35bb364d5d,7d23c2e9d0f569d3560f774da097ebb443c8c737
6c67798272308aee107d13be45ca61f0a7e5c12a,832b566097608a1864baf649e03638603d610ce8,ecbd5840cef7db23b6ac4da18061dbead8a9dfa7
8f2734e1f18b96d4b1e8399fc9fa7d4b322d04d8,8595c927a87f661700dce8391bfab95cddd730ba,5135b586cb692ca40e08114cc25cab5f709fda76
e5957b1ef0a3bcb7d6d04a24525f0a8634e26ed6,3d9d80b007dfee801cf5ae9769283733c75d1963,f2a5bf17fc9192bcb7ba4c53800e6cbd726c382d
3695bb5da509d5ce98ff59c2b0a76da714b61578,f9a4631adfa3ac07fb46811aaa847691e6de6be1,645fe8a0c309f3c33297509b977ba76954edc05e
0440749562b0a7aae0055c4441985be4869403c8,a93942cd272eb048590c7e0ad3a373067853c4da,8e9a019fb75cb2098dcfd4ca9e730ab818755feb
889c164f787fb720314ec1090f725927a06eb69c,5a60eac0c816b8d4c107d5d0f751ce487f70df61,92e5ede3478073799ed5df091349fb4b90635e92
76aa9b1f8b23c74a174dc436b3865b7fa5c1d7af,89dbfd0d990d3b3b193c51b9d699999b19816534,8a0498622b029a9c1150347f45a2fa310099a2d0
018c1e5dfdcf49b3e7d5e3035ddb089b3cfc2897,fd94b6db913cf9c38ee03a179ecc180ef52db711,fd83fd5779e5f19373202c57209f648bae072640
a8b4d702e206df803a1aca1205283d98cf350f9b,29495c9ba57dce83d6753ed19e301855ea37f035,9adcc891cf8bff2098fd9360ae1b4d5d508213c1
ad1c19864d20b4fb311f8e74ace511a58c40cdc8,9061fba9ff2599442b5fd214efaa2789c34a261b,cebb47fe9aa7298b8ff50bc2963266f78ce4830e
c1db756617aaa5ed0477ce48292b44e1bb997179,4846bd78fb0e7f1199ed3d5f52b5099bb183ccc8,ed7b0c5e68bd870faadb6fdb8b24969cb434b78b
5cbb36f218ebb40c708c29b342ecbf43e7ffc6ba,4b1978026a3c63f1de96e8e310b4535e2b2d4197,e01ab79823d0e31dfebe5dc9d5807ec04a4c63e1
051c5fc7b6f76bdc9f740718f1ff2a48281178cb,4e0b9e85341bcac28c1f146cab638d29390edef8,f097d1ea353382bdab42490a2cc91d239de82e24
3a11ee9a14ae2e43449db6acdfd9e1312cde68a5,83969d3ba38ec2321439c98a7da615ee66b0e228,6cbb3d982d3f547ad09a73aaf5939c6092ae3aab
63a2395e2c552f5b983406f20b88dd364458bf09,b6a7504665b4382c0f879dc8d82c0bd4ea4efa41,27133cb66d75ae134110acf12f002d367ff04523
cb96acefc93200a2e035edb877edd8cd5721c5d9,a6c7ed5e61f961a022897dde1d47140998466a23,f51798e449aa229723742425342b84f41025791e
657b9a62033085763aef3004e928f56abb9bbc7b,b93d49df9b4ba90f25219d3a4ba8536649646c09,8c8f8088ebaf68c83500668e97b9c16c41f7d92e
897caac4ac733e650c1e0109e692ddd066ad9238,bc100eda4d4bb811d63a265a4f13bcce76b64fce,e244c7bbb2092db39637c83b34a428631f90a5a7
a40a3ee34dc8d30bf968d5becfc0295b53226025,de586e55c0a5376939753c86787645c84264b44c,d8d5087782a4813cccfccd505b3496b6e78174b8
754a3749ce299d64757e1a9273f3a5e470f90772,b26703feaa97b31004bf833428a0a7cf8315e1fb,df3a0af7e0574f160e3934175b9ae4252269a1d0
136022a7b2f24e0005aa966f84042815d6d50187,72466cac467bbb1da954bd6a5891ed1ae1eacb34,23098d049ddd5f65cef550a478a6734f579f0756
2d1510e067311b17d450b3904b7528cbcd52fdb3,a7e983b08abf4d384fd84a1f7f42579fa93c384e,e746cf96daffc2365178a934dcd1eb28ac955f4c
a2c518285c6460734fd700d5d922540db556014a,a6afacd63303bee50cb04ca5d5a13c5c79c8158e,a23a4805f4b8dbf76c6472db14825350341e0405
b33ae75c591490b85a09300dac1f912ab8cade93,b0e1867b4c2658568d72cb1d023a5a010d483825,db499b61c0a030b0c9cddac026e854d540ed600e
c3d0d3edd3652c5448c9fdb9470e707841ac46fd,e024fdc5d7a5ff55e3ff96ed11ebd921fd582d78,3e9fd9073fbb232f34b914e8fced3691bfbaa496
a6dd77e32a3e7c802c578890214bc39504e991c2,7ce609e72168df2869aa355afaa22edd4e14ef91,a429b4743640ba738a9f178458ec8110f2f13615
eff489a37a09c7607da289c96365cbf12e8c755f,02f41731ebc658a56b7708f7584bd5010103f054,d4a74319389a0319f28cb6947f53bcb46d609539
9848349610219cd0d2dadc67b112fb09a8317e91,891723111cdeb36c8cab0fea41f6dd3ed1648e2d,cc7d67d08cca783f2d0f439b24285a526e9185f5
b997e41366bb9f6d70be3fd027a4d93fa20220c5,0c4d61b3ded37eb1dbc6c567411c599beea91dea,a9fb193b1c308a0a052d394386766a3232153a3d
843ef82002b2477bc09713f80259a965c408f7f5,11373226348f53234c333d25deae715d687172b9,9156d1025732c0744a2b8cfb8d5295333a1cf94d
6a0e8feeba03a1c89ea7dd6f7c13b2aeeca4a81a,f562a8d9fdaccdfd630db4792ec4e0ba3a8d6e58,8a6ee0055ad5109e050d293c9a92529484899be2
2bf377744ae19bff141878708df2c9beb78b03f8,abed465c089b9b046b44fedafc7aed6720ea12b5,62a57bf82ef45c28142baa6f07d3b9b8873b7d57
c43f671baa06671d2aa86653f3925b9dc8f74c4d,d1d0afe337c11f386fc189630265b6142f5f734a,13fb30c52ef398c3c8a82c262ea64bb83567fe55
e21186cac0739d0a8290759c551a3feceb1b4360,68253e2a738a32d47259137de23d67c5adc1d228,168016b865d3d1ea7de06f0be713ca4ce18b717c
6d104459e2f5857b518f68444b835f1f21dcd586,533d8a775254137e288df31ea99b48676f3faa98,76e0ec6744f8affb72f2c82b61a897facfddab7d
7b09eee02a70122b34747137458412f1a29ae541,c8fee693450dd3cd085a662952b4239483e2e1d2,5a6d9ff5329a79ddc330a4e8b6a59c4805a19113
5a7664f7d12a47e9efd859aeeae763460d7d0e62,6454c931b8fa4d8479dbd8c572b3d48356e62134,879b6f1e6e20aaa9be81167eb015d9f1135929fa
9e783cc3ad4bffe0381afd0034896e30045a1515,af1194de4d5a33681608e7e745249db774e3a22a,48f6ecc1f15892237f903d2d2bf59474a17cbc76
4f9acc10f092a6a59a8c213ca29c08227ee1ab61,dcc0b706bc48979458080099b7a92ca83646c6d1,2cbc6bb6749fe327d5febedbd7971b5ea16bf3eb
9c7d1515bfa32bb78906e09e0c66793bc802300a,b8920670f442575cc5e981066c1512377d2ac50f,5913434ba91a5726dd2842277eb378cba6eb2e3f
2187bfaddd5734e223948e60857b502909e80c8b,efbf5eaa01649749fc7f8adee03b63db407ec2a3,960c154f48e79f22f570ffcb75d1fcbc21c334e2
965bba5ab477bcfe124c7981e47f53457e718928,b11366c95b2c9eb3611e71919692eae50cd0e7a5,dbbb91705f606be92e0cc9daeaefeaeb290ad643
444fe092da1e614163712d0710f6f38b2948ee3b,1a66cde35bd76cc076e25f8c2f71426f333117c2,93752573657acece7e917904e59078ab99cbef93
88cf633b973ba2002e8f392ad0748b614bf1f1c9,123f196d5d4bbbac76bf1b918a6a0e4dda0174ff,8b3c9e0970507bf7cddfe8946032bf9a20ba93aa
1fc54dd8bbdb83ad9a8f82e4a16d73a17178b655,9e9b38d0cfc08bbc3c9aa873ba41441b9ea0afb7,9cbc802d0dd183ea0c72aa32348b7bee14eef836
b0675058f5764236ed3b32279700155fc968a1ed,c32d556a3c1377b40284b68ecce8a3eef74fd8b3,51a3030b6a5b37adc64f59c6bd9b2e41d724f8ef
0a9e1ede723605b2cf0a1319a56535068f36fbd8,7dc2a617882931374ba3cf12955d657bc4631bb8,9a760db57350c5efcf0521ece91c4157d0fc1d36
a91e547832499249ef916470154a1a2b31421ee4,f8848dd1857855256d50e4855725fae3aa5b4d60,a2182cb7a5026cd3a746c559a93a7f2747c6e635
01c982ad707f23090c37e04f646ac7878e3bba0c,569f83e33dd158cd13c338824a8d3179228732a4,ad7cc0e69d28afc3091c8b9a1e90175533efa9a2
9f293df425a6c31b554bfbbad9f1020611b077cd,b934517871cf6fafd0313b4ab408886cc0c2df60,6cbbf9c52aad12dcaf3ff5e44cbe19f39a5b7018
920e1c8d1916b723d2aa60268f1c6a8b5527712c,188cac3bc6dc666167aacf47fedff1a81d378137,5b73fc4d0e772bac6f6c8f24ca948e96ac6fb186
d12bf094aba2667fcacbc7d4c9ae6ac2c32b2e28,32261a0f6d6a7277bd48712f13a4480c14c75a73,f2580efc1585bf5f3810b7b90321bfae3d7d313f
02aac653d2599332b70af2cb3433e8f5d76e6400,3e5f6d322853f4615392217e462a59f1a9c59178,1b6982107f1ac4b4111e37be0a3649d155a2bc1e
3e181d7640ded13fddab537b461c3a1aaf78fc59,bb51ac77dd8ba9ad3512f3552515f5ddcd051d11,f0c0d8a033f8ece2dc406f6b59abff9b9a480b6f
e2ade64a1e34f6374b9f3a4f1ff802b4b9a4c803,a835d8b533fd7ebba6d375602a4b5c981ac465fb,b150480c60aff770924e4ffd3382132b189aba2d
eb17e6fd2d85f700250dcbf721dd41d3bc096b55,41b8f6a42e7c43acf8295c26acdd861210ed98b5,567244007ecf2a289cc6761dfd53c4db97bf0ee9
fa76baa3d4a6415d004686bfe99068837f51ea5d,45b1d592f5a4bf280c7f1a59394aac2cd8f4a541,6b77017cb9f95a445f1173ba3badc05758112d84
dbd8259c48e3654620507cfcac4f532ba857aaab,e2a26ecece15f944eaa327c30143bb55a4528235,27315ac528fb6921a0a66e5d54c36cc3ff9b7200
27aa4d4e3495db95e396cf32746ecd93020f484c,1c86a4bbebf6bce1f14f2e3e17ab132fb3ccb8db,73e5d6f70fc9354e10d5fa8498fba52dfb024c61
991460c4ee3c26f0811e3ee749bad8e98cd467b3,c83e6c34a90cc86ce1c3f3aae1da39d618793335,5670a7543cb170889fee2f3e8e65ccfd96c0b18e
176462c39a2a15a2e68a34babaf4915a66668ebc,0758aa1143a6498532b3d100ed15edd63ca878b6,b38d13577f94364b4c7ba6f4d6b032eae404e934
cdba427bcf82e1c7af5a47b132f17550be4a473b,c89848a00f59cc2539c5ff3862a547218129f594,130c36c406e500af2dfae72748bdf470db602b5f
2d94575fa8124933e47924909766b9eaedfc2bba,36f771a3125ada1b155bb98b62765f88bb9bb540,fb7787b11eef04a5f0f136ecfe83cea67a2e8619
e142953c6d2b796e833e441773acd51325a7ed77,9e60c686b42b79ea69b97aa5376e4e71e8fb333c,850685844b9a0028b7ef11b4239975ab2a61db45
dd0711a27e85d15d45dc47e7b014c6bcc3fbf230,229d88c50fc0b4d07f7c1c51923f7acf59c896a7,626e23d89fbb58d5eb3aa4ac9532fe8790d1d689
87a9214983a52f7564ec282cfaedfdc107b6541a,0a2447a9559f579cdd225603a7a4ece9575f5c28,4e4fcaa8a286fe959e1d6595f2d3781b9b893796
399d82e1da8ddef74297867282862598aa96fd97,d35be8a9eac21ee762b452df1ea879c9c5699f03,2c51abf40dcbdfdfad4532f571e1f095dff9c8aa
2b48afe151a41943520040852a7d075968ff1bf6,3d805b8a9a2e9803f58ae40ce286b274877f2b78,8f269d4540fdd94c2d1891653892875946a18d66
afc9acda374142b802a0fa02e11d0e98140d85f8,a1ea1dd98e7c76d656a232e822d3d7c47063a11a,fb66369a3bcffdf7d2a96cffe8c633b2ecd12182
ae4c8359aabf282d0e1047ab9b5d89cfda3e8928,86547d35d78ffd26e1d0b63187ebc8472beb204b,e63cc73cfa4672c92b7ebfd3600aa18683bab528
3ba9cf5b4ffe0a10dc0874f69e0d72e5c77f7358,6685e22ead441cd00e292e6940e2ece96b674fa5,3fa77a4f627e5ce993c88be7849e27b64e7ae80a
be401422fd786e0c14b27340eef512f70d1f668d,49ddf159b26fc34b5f9a0385d1e82edeb75e894f,0f43c7b229f2b400edbd22ac0e2b242755260a41
9fc2b9062da63731b113043f5550b6734ae0eea1,c75bb80b140536d16e31f140a111a14c18ae7ad2,a7d1f7d7712b7f8845a59937fc9e22e67a7fa5ca
35a57bac94046da556fe8af48b1e791d23df9c0f,e050a019a278827a3ae9c0a32cdcb2dde00ce50d,acaa4660fb7162c7e76d09c93e759cf384492bdb
f0e31628ad7d584507612b2d7c4ea017532cea78,49fb1b4c292e3fe305a470b3a2c4dd52f6d46733,cd8ddffe426f37743c0d17ecfa990b5b9ddf442a
f18524f2fe32fdbb798b38a19d9e9bbc24fef3e4,e62cf5b9e7f98f8beaef2ab288574aced94b15ec,57935a895cd02101ae2e26701579133fb23f75e2
ae12a79bf75e2019cba48e94d54b1f5c2fe07f92,a1064ad8fdf5b5941c86eb5d94009a264e9f8cbf,6d3e3d06e2bc18dc15000093869e821a050d9b60
92cc78e723496ec16475848d6339bd8ddbcad9cd,87044c004f22c34457a634074dbd8b253fadaa35,0eee70ac816afaebbc567e00a5c18a6ee46873e1
36073c1b6511134bc0a2312abc943844d22261ae,78666090c2673dd7eeb75864797301aea9adcab1,d351b78821fe7c1a5e4c6680d5928683a1a8f55c
3f7bf0fd70b339a43889898efa59af4fec33ea84,7ee1dea027dc045e8227822987e89db4d592584a,dab6c48b472f83e14173ee55bd3393bbd44222da
e748e4c7ab79a4dcacee4f106f53c5699d55dda1,7da9b4a98858e6d82f297b12757b32e62c8491d7,56cb11e3efbecf83b509a7709238fa55dc2c6748
6bb59c66cb311a871a7a334362edfa925dac7dc8,c40f518de4c9ee3c4e6bafd2ec909dc4ca286b24,a0366d7d28f806b3bf825d6613040e38d3bdd64f
342524c31234981a48e52659d07ff2e52cbd81b4,0dbf40a24c9e8db931875d659c38f975c06bd208,029ea37ed940e20e6b491649da808397bb0c96c2
b881deeb9fcdbb69995eba2b0aa4f5fad40209ab,28a8279d91f1c56e470aae5624c1f3d891fe81a8,eab28cdd2eb66c32f7e8d6ec186c479d3a70e519
c5f4fe28826b3018bbbff3fa1de3822b35583f3b,a1a30876d596e9bca2a5409b53b0fc637eda5dfd,e67670fa70b7f92724ad4c55f5fedbb3b4231615
c5cdfbd9c03c0d443e5a4f4a7eafd5ea1c2b0e21,9b6926c5f514ab5a66abb78bdd0c31cc7770d99e,cda8971baaeb240bb7c5075faa96dd4be02d923a
2d680afab7ce6d66ee736c93761c82141229ab67,96f43001588a2a88d10cf2e2a8d5e8561e98a774,8fac3d62ce2a37cfc11f16ed5d47761c6cfd57d2
12c4290ffe114161fca1a0c5ecdcac5cfd7f87a2,3d2c96ebbfb8ba47349db24d327fb1b577ab12e8,f737860763db3e6e581eea342f2ff148a700ec86
664c613d960ed04fb02ab85475032e6f09c4e902,92e60d210759a6250e1820f891c8aade6214ad20,7cde8df8c78c3e7f7af2758c53e57e2867680baa
783bbb66f9324152ba2f2914c8a2a9a1884c37e4,031c16dd3cd6a8b7b85a747225899d34898ef0a8,e2d86ad66a13ed9fece73ed3afa086a728441da9
3db1415a449212d8c3ab5a9085106c9f11acaa0d,95f94a279c1807554ec2c865ca045aa29bd9e5b7,1b08b89b7b552beecc90672f8ed0b1a858169658
3c2703787cff417098cd01d1c51b4b5cf70f2677,a714e2ff35e78233486f4549d646980ead04c4a5,19cee9b8415bce777f012d5ec7634497f0cd53e3
d221f42a578316c99fc74674b037e54725bfbdbc,b051e7667c5051b3ae9dd511ad235aea19f2c0d5,9e3483fbeb8743afdb32df31c859753adfc96039
36afcbf7fea3dd51e292b20594ef994f683d26b0,314f632377306065e939fb1b17593168bca3982b,827fe2bd83a9ee5d77b49cf4eb8cdc3ce0369859
822022186611aa62d08c8a328f69f37bad2dd38f,57466587c5470ed174144263608febae128895af,a2789d611f74b71fefbf8a3bc0c66f3f3ec3eaa3
df80d4e6120edd441361bcf9e2e64045ec042c2c,0f30af07e5dd34acd7bbee812a92a13078ad1428,12aa48602bcd35b2013f97782520ca209bd4bd30
931bda56331fc2fbd376ce925c4c9923c92498bc,77f53ebde3c14b1e26734fc0a57629e5149743f7,aa5517d44228f2909b25744ed2fb90770d45dfe6
e942c00f8259a6d9505d1ed849b36399e9def989,3e6d4bf1cc120e5885356af1cc3b0e93101fddaf,71df6b83c64d331a3a7347f762e80755088639e2
d3abd339b7cf9b3c7e70679ee65a4732b56ca37d,f2bd099afba70273fb8ef60dd42226feda3808bc,9e5cdc2abeb9de41e630e3aa6fbe197b7d37c0f7
2fc71285f4f709e0ce764dae6616ae67da4056c4,3cf8ae8433acbc20e09eb6bee6c6e1e1000e6b9c,a0c87be0fc75cb242378c1029e5fc58e7dd41a18
c9461b73139c742a7a86af045212e08dea83c72b,9b58545fb7a244c527ca30f71db7d4f4e4fdc780,3b43bd027c51f7914bc8fe7f938a7a21d58c1d85
9145565895b7b8ea393d1818e9c590cfa6c34cfc,71f8893366881e86e16f15dcb7a4befcd0bd6261,d38c3f8073f8e954b1e0224c5e46141eeae63da5
9cda1666a6129b613770a93799ae57b77630d6c1,75c252fd8f754788a4ab2f9ca8da110f6dd6aa86,8bb3367a491826f1f5984810bdee49b8ee35552e
af4578f8ca12acd094b39f8a263ea6cbefd3e4d5,94368d06ee17f513eaa45519b5e5b79e1ff86980,8520dabebb53c28245bb39d8b52503aa750e02a1
e57ef24e37be92ca117302735b9e3584254483d9,5e0eb521c4dfd2430e77ba4f8d01b8a887afedda,a27cb35fa83d995a33f90474c2481d367cf6b14b
c21bf747fb3d5750ce62ef49ad5334528e2880ba,e7e4044bf053846dbc1fa692b9d559225e385f06,c1ec558d0aeda85edd81e095678952b34250d208
ef53f9bc25aad1cef20f3cd7e7e248dd5d172e25,47789734923810f9363f0ef384c2aca27171dde8,f6a8b045c2f52740186feca3d50c3211c74c775c
7da8c774be6670d6cfe3dd9b707d4e47c0a4870b,735f297f5b187f5d92a88ed1d836311602ac8003,42b052eb83682e0bc5dcbb2c8d47e045c462dcfa
f3f9c68ddbea571e5cc95625a7a14fee620c09b8,0ba4cee279b0bd8b13dfa27ff9a32b6b80397d79,d38c24fee753c550c27239f9e111c4cbef11ca4e
69c78385718462de06ac5af39e5b1c2829582bc0,170c112301ab3bcdba04a12657ae61dd275496cc,1a19fe1f033a7d4571f62a4506cf3a60d37e3080
d338206814796306ab4dc428f1a398326ee0a4df,e7fda48327cf37bb1de86ecde32d4279cb32e35c,9cbcd399b1b95b0357a7dd8964d3200f633c8cd0
84be45f55d92a379c237d76f7b2db9e55e0603d7,1b439134083d3f032eab1ed5ec5c016bf4be84db,16bd996e74560b716938e825ad216ff57b9a51aa
2a44ffe51bf56f86ad3043e9f578e268b860e4dc,247423400f0d0686f2eaaf5de7d95a99b258419e,9d8fd6d55e486d7234c597a89823e0dcafd91331
7488f1e3f886d215ca392e47bb7c2e5754c18985,a5702d89e8703ed2e5c4bdcd246ff9421fd551d7,74bef61b9966c53270b025d8e9fda669142bfa93
170051672181f66a9296bb6f8dab13bfe0a03de4,cc27576339115108f045222df45a8acb3d91723e,5704626762d217e886f23b582d9b5628603d6c5a
348fbfde9d524108e94ea970caf00c2be38bbe98,2c3b78682ad065b9aa677322b4d050b07df5f9c3,a1a2549cf10e38b25c8f277a41dc3ba409a7a1b1
b202fb2b0a2e89006dc3ff98befaa7459041b0f0,96d4bd19ac815bf860541e51249fef93ebe41c76,b835005941d918fcb1ec4470448cf9f4dbb6a6d2
f1abd2c2f00c69ae25a02df3d06d394c8dfdb546,c5f4a6acd0d48a567e2d11bb0041c92a2a8db897,487ca08cf31ab89695d703d45cc7861868251c94
c4899b5dc080d09fdb5ba48fcecdf1f9cdbdb5e3,aff133cac2c4ca04dd68c4e6ac02f2e44946b799,7a34677b2ab134fab30a19c6bb6249425e802daf
977ca19dc013324096e5ef2ac6d9e2ccff824d42,e0eff8bd89aa0aa3d631a197f33863241c6b13c2,230142e183d986fc9a4b1f8f32b42816bef6be26
f00a932cc6fec80533ad821192d4be8266446839,ebb4de1441be4e6b3d6e7df5633db7898a367b2b,f54917d600979a7cb719f3be7af476e548912385
88ae6721c65e5eb62e16627c6ec9555674c6f04c,42d91c02bdf7c57fb2df8887d92e0fa298c4d8ef,a1abe51f2a760d47c2a12641f7b7fcf9c634d4ec
1e83d415c3a2aa7b66c191bf40781d40e37e5179,bba1076e12d2c689b405b12f16120c1a46f9b69a,8ad7decaa39dac87fab7f37f75b7da0aea49b2a1
7854152304110571f6c1a950f3828b4aceded90b,851af5033fb80d4e19c4a7b5c44d50a36f456374,14466ee9d99918072db8982765e621c2de309a9d
425d17c1b3407975f531465d0aea2495dd5315ad,b787203db79b52ecb5a47c224386ae091d2e4897,a592636d9c07ad615223957b57b83a8c502c80e5
b9a8e6832f8db6bee1abeb9e5e958de8821d949e,af04a523bb4881f106908e231b94561d889f2d81,d65de901db648e6a8254722bbddc6be1075cd119
e2905b8fad1750fed539e32f40cd69619beeae39,96c63c4443cae99de5e1a48a89d18791db441764,2c77416da0bf340fdafd5fb0acb896ca43c02ec6
7917cbed22e42bb7483d2546b2c46808050c7beb,5605cebd462b2011437b05d12b320c3b6544736a,49d8a3e3f52625ff7f0250f40fed79d973eeae00
193550945c1dca37465dc8b7340a6c8025b73876,ea7b9c73f3ba29a464b2cdacc83d73129f4f8d6a,e1f993c363a05c12f7d54d9da46e7133431be624
59807472aac504bd2acc0d64af0ad1988f3a2ff9,6605248b2d58c15760480ee404b4731b9ef16a2c,929b6ff18b3bdebebfdce018fd84f7135df2b6f3
7762897d320c5e0ee57e9d9dee57308813173033,4b5c7ab0f571f3c2b4b6d1d63fb3f767bf038fb7,3eab1c1c028360576a6d928fe7d35afbba66e512
3b1220e3230a040425fc872a1a6933a5742b95ee,28e7dd77dedae2b592eb3ecf7d3188b23718f637,81b22cc5d1673cee927fc645edcf8a90fd8a7f8b
9cceb41c04c2b60bdf17da13e73e7ede25069343,54dd32805eedfde9908458ad5bf91269db14752c,34f11a7a14b514d80c57fdaf26c78edfc48a2d1b
fa735ba7b28fa97fe0d326e473958ba3fbe40ca4,f1b071bbba978ee95389fcc557b6d06680d7a9c0,c0893e5c160e21a40086e573dd870ccfce6e53c7
babcb631f8f24998899b6fc2112025a077e281aa,a5eba4b14f51a52d4d12fa95dda1a3a920d4088e,6bc25c1e89734c1e93d828cd5027a6be0a07a074
0b0a5cb458e8179972ff83911535e0c784851856,d1f999100b449adf175104b355b9e52ae2441fb4,bc17da25e17d2c3f980427e3587661da33dda827
68cdd7073f13f85d8cc192aea7af17afde91cbee,817ec09ec01e4e8134dd5b0175e2ce390cf8d973,125dc64b1eb9883711d84acfa144eb2fcd14fe87
ade9ac865ea361864128fdd8043bacd0b69c8663,e1747381219360a06b66960ba7221ea74df78492,adf9f98f7c182131fe5f83dac16411645897f123
7559c7520155c501652056011ae188079ff6e76e,4b1681aa1e9a16b3afcc3af4a4fffc0520d4d850,a2caccd31fc027a71216ac85372336fea1a209d8
2ce2bab2a6f2e268642278219df9ec6857998e7f,7cba4bffa14f25487f58850c74d80bcb29e6b912,306e156b2bd329bd6e56267a23379291f1857614
08820e97e8607e8d7bda8b1414c85048b35c1f18,7c538b17976e30802293f19690d9c54b2ec6a3e6,bd2b954ae59fdee3e94f7bafeb43a527a5e8c2e2
1ded960fc8da793f1339ad7cb2a752b0a7af6f97,fc32211dd22c4f5b2ebbdf25a901e20c68627b37,a7cc9d55cf1b0677ee6e212d0bdda7d5f0e0c8e2
810f54ac071f95fa1022874a8b737b7f14bab199,e0fef23d77e43c36d6d6ad474a21e5d1235742c5,45b5f58c4ae667abe3541fc213540ab9922743f2
304372262a90db77c9fa5b24b358c4de63693054,6ffa3d4a89adc384b4bcc4459c63b30d1c0d830b,4c2b54ee0d9c3ced0b6ed6d8e9f1535fec82add9
af5a10946de0e9a3f4a12a5ed30007509043ac99,bcb2aa1323c25c97d12086f4bc5e8142b06a67ab,710d6eb5c5add99f01b73e08778e1cf64aba76ad
2ca6f178fb4439be72b093c25c318396eab5238b,1852006c6127cc8bf5562bf9cd44cb104aa0df30,a3dda258787fbeb2225ee14708aa4e238434cca3
88459e680cdc6ee850c95189ee2dec658370b2db,8f6b6ccde59d9fadf63b6e40ed88fee0993ba0be,1d331117b5edf89f43cfa71036b9029186d5eb18
6e9537aeeb48f2301b41802ba4f56158e422a2d2,83cad83c35b4340170ed66fb58c97966f344dd26,7fa92807882390fd92cf6d082855239579512fe6
57353df68fbf82350fb2dbb70492bf35b7ea6e84,3ec4c5ffcb728ca057deb8065ae3c3ee9176cdd7,2d6534ddb0c199f730ce06a0d4c6a667778475af
485944b49288e248294564139ffc378d4caff964,4e9c267af949d7c625a1b84c08f6530ae8126d48,23411b36e03c25c2210f43454a8bde8c53d4cf17
d3bc8745006e9b5278c325572b020956a844e219,ec8d82332ac7d9be03ff8ca0829b567140a7bade,f96476b4fc116fb4a4d0e457841a1b99543d926e
d88a7c2e24b6682ddb393f5a175d37301c84dfba,a5ad266065adf90fd69fefc6230ad8779f066f03,24d2bcebdd0f2ddc1f28a9f60d40f7a596210901
a17efde2a32938708ba22689d8d29558601030a0,706e0904577fc4742b24a1aaa52fbe4db41ecde2,5ce739135b524b05d003f5daecbc7b31f5866363
46ca9f437ae89a6e82d3472ea59ffbf72002a48b,b849d92589642d3712afa9becd310756e21dae32,abd1e72e9db3d30201a1b0d15561da90b274529c
8c39b9376ba26cae71101c0d12a1f4c82d1ec50a,9d9df104b96b20c59924d245e80f5cc8dd9b4c61,6032bd09ba30de71d72ab5e8404177035a6257cd
d2d3fe6bc3f7499ef111e689fb848dab2a18fdae,2767a9c979eb181ffdfcb27569b92875c43ea643,54338a12b32d8d2ed1cb1ccacb2be1b00971d175
efb204d5e7f3676be2345272876dc1f83a95b137,6f4ade6abef6ee2d35c4209a4501a88cd5b30e7b,d23fa5a87f000e16f8687e83e68a4fe58e6b4c24
2339db3b0096e9292f055c60a16c1b51225c6c9d,30e0df384d5961c5525c70f2878963f04ec9bafd,28b4189a9a704b284e75ff7436d1cb808e569382
3203eac6d370f7b53749b338cc2fd12d5bb288d1,571e0c39cc2c19827c44bd9de4a662963c3d1367,59501f11a5d908bb5f84325c45f94f7b4d162d72
ef4a1c74cb71abe10041522cf1aceb0c6b6d9c45,23d61350bdf694f77ccd3015274d3e24ec20f970,4f054f4097fa0e30083f6e4657867c20e031dde3
546919972600998b4d719f123473cde1d5b4b451,a5f49c1cefffcee2e9552407f428a9d01f79cac2,234a9551258b94eebed481ee535a523597cde7db
535f11886de9ddcc3bb52a38f6d7cae06e557e96,9f2f4a6574516cd64cfb213174710013ad0d86f7,20f649b7e9670c947eb54bca12e0e2b5ef8bb679
ea68c97f5048973b8ba9eed354be828fe14a42f9,9e48addff52b3a5d398dec64030e026a45665d4d,4430422489633ac2fcd7c8833267ecf9cfbb9361
e19f60503b81a4752596a845e9dba035d4510550,721e988da2298e426c5ebc78205b2917c7169816,d7870c81e929f5869ee9e1c7d3666033cbe01bd4
56006aa002ea57a67ff1d7b7c69c4261b6bcfe84,4e959de2c73a6a87b96dfac61334628437afeedf,3eee2d8ff34834d7f17f7970019db5e5ab0f5e1d
4c6338207f4b13eee54c34e67502630efc4d2459,5d7e3ca24005a3b76d307c879d76d05e99ae59b8,1d73dab2b0e61165ec2100a21dfd4071fffb2145
a6ddea87b7eb020c03692d383d9592dea2be0cef,d410deb7ae8f405e9451bd10db24a65ec5f30a33,4510945465e4e8cd483c64d316d1d43005ffb585
d7d65fe0d7b62c61f4751b896eb6ab9271d03a0c,7affd789045f9bf2a141cb96c50c08cc484e0100,430bcac389c29a5ceca7759cfca69454aa31abf9
b6b2785b66023ad48242b2a7bc55e445ccd48238,e1288897f3639a08330dea060b23283d9e455558,4b659175d9043c58f5fc78f3ef159a09167d45ca
32f8dc7ef5916443ececb9742d4ddf5ee8abeed6,0b6942de8ac5b69d48a07cca22539945cbe5d201,e9ce3be110edd8df93b4f693ab6096eb54db6988
c631d86122bd52e50bcb1a7345e80879c2fed1a8,092bc17cb29be794702cff046fdf48b63d987d43,45b15c57504017951b26b61123100c18314e308a
abbec0eb9b78621b03948bf3f72381f1aaa87a0f,baf950bf76b7becc2a13fdd4d2814a744ee9b52e,1bb4003984c399f8a9d881ec1d1a231d907c41b2
6c5f9537b36d95ea91686af22b34c2087634ec80,ee0ad3ff86723cc14eac57aa8f5f625976b557fb,ab581c5c301090d6c68c24437af404c0a5962990
29bae2297fa3cebc09fd9d18a823a683aa67daed,f2d6b4d530b0e7f7429bbb1a7c6459f23ce36b24,99981040483b28e0ba00379b1fa9b4b0919a731c
cd8aa3f0e0716b44cf14ee24b4463f1c12b77de7,aced88e43cc720fc7aabf3b083682893316f82e4,17fab24221cf84180221592b978174f9b4719a2a
a641860fa84fb2686b1360723b13625f6ac1866e,51fdbb5524512dc3279d0cca38d44b38160b8111,cee45ea6fc855ac2bf43f3c373cefb0116c238d6
05f5e9ad12d1d647bc4ea7e50619c48fc8a492d6,f364bb6b112e7765544195e4d16da1f5943f415d,a74a35a16e236463207780120735d0501f922800
cd6d048588584e4a641de16abc7b857eba961e32,9cfe6e97a0688bd6321e4a42603e0a6ed0cb3815,ea91170a81abd667ab4aabc46eec37bb9109f561
459dc68ab9a7ff969a121ab5e22e18efe41b9854,4c529287c66689ee5e750abf4e34acab9d439511,aa3a5f83248e6accfc32dca36745a2e647c42582
9bb9ec0fa2a06c8feed1f5b030a555e66ff8003c,33ec5643c6b899d2a378a80f93b2041949c055f8,3a5b18e0e499321680ed3aed4b76814f4e802a9d
0f7f9a73a842be9cd7af283a6c9e9478fbb9ef49,ef98dd877a2c801f67b20fc28fd9d11422c0fba7,3d88722d8ff537e43b3bef57f643b2b6ac095aae
e8b3f2dba39b83f3f869d47745fad28488b08aea,c21838cd315465c90572544fc2d544980d5d6c71,a6e499264b726eaa190c3adda9e0926f853a2d81
cd8af229a8b207484a1e7105b798a353cfebfe75,dd46dd133a3e96753039bd8b1c055f605a6ccae2,c19b1d2fd5a61cfe059a28710b0ed2eed6c7ed0e
9d6a495c0272124f134dbe93ae0c7f9ee0f09b38,216c55871a1a939702e94dc083f4d6df940cb2a4,53b50327e9305adb60f1502d33f600552009a3de
53679400847938b202185636c1f019e43e12c545,79d906795db2d2a7b6453264762d12162b46e987,21d0a2d299414e1829a26ba7cef58c76fffac3e4
0135ff90f675ac7dccf5843004358b0b617e096e,cf17bd27339bfc947060c4fc9e0530808da14da6,552c2146d8e959b4fbfefd3995f1d921bb13f20a
44658572cdb096e1ac183d31f26602ab13cc47d7,05620b271debce0aced38264f258bfb8fb4bf5fb,08200fffa11124994727e235fd6f1304df396e64
d70d11a650623baa9eb34176c5d00ad72632f349,59016499dcfc94c8ba0f5c0b6ce58b207808c60f,e9ce7ebd4b89a1fae646fa58fb872799b48b43ed
f6beba0b0be3dc457baf08163f22a226dade7747,bf1af7a962f51924c99dce37dec930b6f28ff69c,1e587e1150f7d64dcd9bd6a523b2743ac1912312
0d0317b3af32e7d366acb8000607a1797fa6c5af,74fdf0692caf78d795585b06078f93310d7ae0cf,32d55bb0ea8042ee202b34d4e29d27b08afa2a58
e50d90b7e90bc6489eff6601d221446ca8df375b,29c36aa4072cd3f300f5cc53b76f05a48cf4ace8,c8551879f7b259d56c9de254c1b3a28b658b009b
40bb7d9bdf7eadada9b57f8f85234e47de59787b,2677ad9f868406d8e5cababe04cb549b853f35f0,dafe77b954dd9e786817c37865a9945744f575b0
c29d36e369550035eed8b7e877b327a43b87f312,775408b21b85496d09ebf03541034cfaf4f55972,581dfc6d28fe712245a021a161f5cb74270a1bcd
057cfc100c0f5fa5fc703738bbaccd16bb70201d,4d42d013b8f0f2527d5bf0251f755547d906966f,01b70479a0ec5911460d35520b6984bf83d52135
62d650d926e914b0f210dd5a853a8598430030d6,bec6b8c2493860736d344c6a426187ef8470c224,16710100868d0a48b87ade93a7ab43976d467886
f75f208992232eac7d61d3a0f31dd9a90287e7b5,31ef6622019e34788a532b19813a6042d2f017c5,bcaf82f5e7b4ba858f0987055de374ffc550b009
e98ef65b6f39edc4d9eaef0ee2d97b7e96ff37c7,3085eac5017bdf6da203663305d47682ca7c98e8,b69c78cccea9c45d3ed02b2407fb119f653e2e3a
f04577d29273b9ad30c4a1d4e6e9fd2d3bf9df68,3aefada11a74147de6e220d907e840024c4a9060,b9a1a90d6e737b1132b5e3fbc69e580fc4bf9f1c
96c83e7f39d2f02d5ab26a18fc5031e22c6e139e,78374bf772a15c8903240d4be5b484c7c44ed095,68db04d89e0ebeb32317a39769b7312e2bd30c2d
bf3ced76b244385edbadeea1c9d2c7c19f48c5a5,30e3d93d5716b60ca4fa07319725a74d6c974830,899bdc00168a7f3a66cab452ae84c20a46860f40
a3d8d941ccca0cce923c127a76e51fbce3d7a9d2,4bddf12657ac416c76e192a848a6f9539026fec4,b5dd1f9beb9361901e264f78a1f0049f1453d594
fba7595bb1ed577ce67c6a10ba466824e5ee0ee5,ab3aae149bf7c9782b851201b66c57ddae42ea26,731fd94b8c16cd7320a3c0e2671c9d0e4d5a21f0
6084bb6d09aab6c4f337f0df1ae121f0c7149c7e,00a5d30300e91ebe54ab99d4b64922d5e6e39850,4deb23ba584b8e3d87e57fbae9f898034f908c2e
3224f2c8b5051b038a43d5a1782177913a633fe4,ed894b40c9c25ee8942149cf3da06ddb715f44d9,69761839c0c2094d9ae69ae2d0283eb06d761df6
c1f39603889e52ffc0eb9a392ff9b4f8b093de74,ea4768456f894c4b9dfb65a5dc5a0c04d0ea4791,0b45cd95f745a2cfc485062e1bdc171984d68568
b56ebfa93d381940ffb31102805afee44b5ae7ba,fb73ad3411add5e599beaf06b5b0da8bf9d7df05,6cc315d4da71821165c3e80218512d0b4734a9c8
3cea1706e9208fb739b0482519fe48420ca520ea,cf50f8ede09526008682cb308d51a2997cc44d26,6453af40d8827c60f611879f706911dcd519c7b1
4793447be120d6d3d9fa2e53d50b45b4b00ba2f5,51bb01734b3d683a64dd2d3dc391ec27d23dbe8f,aaa6f0d9c5ea729efccfb200f4ee0125cfa6c847
e77ec69de4f3db4d89f2e9287672d46cd35c949e,ec65ed9e648c08ad1b5f461abb6b96cb2630005b,6535a72a08a68a4c023cd19c6dd14deb7ce46f6d
64e41e44199bed417da98f26a255855d4d84f665,8e189408690e12ee11b42aea88591d36bde1d2b1,1ea3c8486099f1d633329b7ed12c0e213a0881f1
a9b29137dfeec494f09a2a2849661626f8376c3d,5e1dc65865cd1ea132a5ca5ff358701f7277fb24,0ec4203e2c2c99be4c5ec6763bd69a221244f9b9
733f59a35cc8481c8e46d15333d4996cdac4de1b,58037dfaaafb8820f76a140a0c1da60873bf5868,26d7067c513230f99d02ac7f2025e8faf3775146
863bf00357b739ae02f8ba392dbb6d8d3a8eb858,d81c42424163729e6fc5b1ff26be5751aa43df3b,d6cf5f1386731fed65bda7cbbdf80f138809561b
889e3a15b65b08f070c03b4bc3f4bb11d3c56faf,827606f114dec4ace342081df1db9f12d2f3f172,f1680f05b614cf57de0b89ee20675d222951fb5b
945446b06ac9f3eb87b94c5b6474ad7de9044435,d75405e47a8b4c109ab1f66e119ddf903295cbb4,2210a8c84583a3b4137b5672d6546f9fd8c6547b
ab1b45383f10c608162c6065e1cb82c19f26c02f,a8a778395b2dfbb73f1b64bf2e574e661354aee8,79fd772870ea992ff9a0123a130b2ba44065d23d
07450440b182474c26e2bd1db93c615b394a0030,660248ec41ff0fd453d851b12f53795d8647e757,0ffc8de07722cf18f732b8315d9c7e11b604b511
9e7110e244008d9c0bf86b454572488858dc9f3a,4cfd9fa16e27a6c1dc3a6f4e2581313362105664,382f6fc6776e0a507c1d48cf0fa0fe00cbe30bbe
09d4f7f4c1092655e362b50315ca025c1a703176,e0b3bd26baea13d2b3a72ad0f3876a266bcdd10f,584b43db81aea71ac257e35a1709d50545a16670
6aa4c98cfab9cc1b640f499dbad9e72c1797a88d,23e397cb35664bcf8ea051aa327392198a055a2e,574ddada392690cbeb4070f052d32065352f1cad
63e7f4feb6726581e9d04c98477c7c6c37b30f5d,8fa951f369418d7486ec033ddc19c5bb3965e047,0b35f53ddb96fb45233967529584f4f664aa8544
85f81b64a2e12f467892ee03b1d426f6bcc923b4,ef651f72662e5f911b75fb956207d1fa264f4795,c7ec598bf9112d3be4f1f28c59112314474c7d73
8cb2c3f606458887e0ef313e6f0a33825dbd3aaa,a9dca3268982c53b363346f2ccbc716b7d695183,c8b2b5e060ab7f3866f4378cef8b3b5b1610c960
33a41603f33c16b0ed69ef9b249a45c6083af0ac,be6b57e35870308544c3578de92d959d23618d94,b1ca0cdeecaa291311ddaa5dd74c6de7ef88464a
d6e9c5e18a76fecfd6d0884fc3a0264c0034385d,afaea85c9f2504772eaad8be29ce01fafde6b121,a6f41f9f1c3efed49b2f90dca97c144ec8656f6f
7e6f9a1806aaaf115c2c84c7d159143faa4aa075,622215005ec9abc9afbeaaaa3f85ef58b8f327d1,239224f99e9b37a6ee516d6de0eed97dc64cc3e0
219a57d90501a86a137ddbc4b5cfe577c1b90a23,ee3059f4400e6c065dc6d556de107ce0d3940087,adc1723f97d69e461e163675104166a3348f00b1
1c0760619f59effe144c528e2e68f7c84f218171,56c75c40fa3801c4a20c8b1cb6abcc5094e273e3,cd58f233417cc3761708039cfb439a08f689390e
cc4521b7b5e5bb7b499e248c6750a9cb1ccf6dca,3d889ab8cc3746c35b0a84863fa7e059ac9a1c14,49e41873b0048919d2f0bdadf2deb3f5dd0a04f5
505b66b892151e8590368b013caa922117be6b1e,a4265d4c64bde36119f6c398e8edddcfe130ba9d,4a15ca0cbe42d741b845527faa9ed0303662afbd
9c680b6669438e063fc6b5a1fe99260e504816fa,99106402cbb3094534f6ba8a436b7174368c860b,42c0fd5c34623c72719d2178131a557397dc9bad
0c7d351c8f6037ab6c90967f339bffa57e9a87be,e05c612139f3d839f8530e5fc92f0ca429a36e35,7a23cfb2c8b6ba155b35de941a675ddaee4a8843
3798dd8d531f791f52cd7e44f039af05945645b0,8e6782d9078f4075b45e6ed8061ec1f2b97f0eba,85ee8b25ebb4bd0f96c9ea03b1755f180b984f0d
54292a28aa32dd61229ef8c6073da370390ee9af,2bca50e10a1ded6aca38605605fa80434bbf5501,5b868bfda25e950947272c7974403c0902b43f5c
52ebf638b84d099715b89bddb3b739bd4ee8f0e2,83b8edacd24d1cee90722360965d9532b038f2bf,239fe6806b50f810a7085ef0b6e0c5c5f80a14dd
92df6c234b696903416ad484226941588776cfcd,657b16d13f1b72b4927a18975f87b1c4bc558be9,89b91dfd74e8bdcd16ee16c564bb5a41b879672b
0923dfaf5a563bdf8d02ffe44bc8619aa9968e65,1a8b08197eb351d435d0cd032d7cb66a0de20fd9,a1466c7057f18e4c77abb04017c8907fd25dd486
616727791ef96eb0f9fdccff97d0abb3a18b2de5,a2570f806cdf85bd57baec8b18d212e377bb23b8,4b5c4494cd531245988023c7e196d85938e84bd9
88ff885ab5a62b652f679e96c5bc86c50ea60fe4,25fe5694bf7ba5a811a5870098e85c922b64da2b,e3c9e0d26730a72dbeebcb7d2fbe1772f2bbdacd
88c52bc23edcb0ccd9f27143d174c3db8cf7f297,280aceea65036e74485e42164d641b41305382c9,85dcdf751cbffca9febf95e891c40a2101b9b9cc
4a2214baf775cf288e8a4abb8e39d934eb19df29,a0dbd61f08c5c1b07444077121f99cc432a1ab73,878e9349e83c30a03c8a97f0ca64b1f1e9bcd927
4072e73f12ea856d77a6c333adda2a541cc78e53,4fd74f8471e595045d89e5645aa50355d3a3f273,c33af225a5fda133e93d76a346a7b5614fa2083b
2ad71a49ed49ad06cb6bcb95cc9e0caf166e1d39,bec52928dc3d98a2b05dbb189cb3c4183503dc8c,00f7bfc43d4854a572c3f66182028330f913b765
ee4c0673bded4e3b97e29bd0f625d4610fb3a803,cb69602418a9f121b657d08f9e395c617ceee5da,324eb595893225f4f5a5e540218d0719bd05329e
0454ec3f2f5bf361f5109bfa62fdf3b052449d11,0e965ad02d5538551b40edbc3ccc03f119b1ff5a,7e1f1a31b0e9637d1cae9c0a21c76c2018ca2ec5
147c93d38e4a1e9be02d3b19033f250af7843746,721e0b51d5c1864628fa95744611d996ef0e9f33,62accca3a9da0a60f7f46a5125acdc36ad5aaa7a
414a55c3cee502d868e1ac4f85e323caae7d3a96,6a92202ce5d922b6899932fd749341c798a00be2,0a798a4b723cf091084712dc1f0798acea1f0610
9683219322b69da71fe640ff1d665a017b55ecc7,7231cd8f3865829a3b47912ed45ec25d6055fedb,8d173d7190018a24abbbd496dccd098a99ef63ae
fa09eb9b08826364b713b3fe4179e9ed2e420312,b1a86854d6b3239341d505cf9abe603cf7b98b3f,39c29ffae2ab4e29b3aabc17e5f8d64f4388144f
5e9c294edab151e3b9bfa350c03b21b8a342bb54,6de25772511598e63f2a872325133767292476f7,550af49112f2a8b6265b5f7967731fc8a2a0bc1d
dcddd44cd9240e22c0dd36f5bde8d612e3ab9ea9,46ab62fbb94646e4413856a9bb738a7771f10e9c,d28bbd789c4daae389437256a8a262d4b216403d
02db58c18222b9b4cd335930dbc3d72b51eaea82,f12605d21062c5800a358261e0bdb8e930b38f99,395ff00f9c38ad162e215e1e8eb201ae67f9094b
62086bfc997a1f101add3a220fc07e9ca677090a,9a7ec30db3e079d972a9c5ab63ecae5f37958062,a846897f6850eefdebd9add40db27afda1185918
bbdb188c8d263fe0064ece9a0c16691dfc28d005,42b10196f16592cfabc4284ada2e8c3e78b44015,fdea66d2171915c3b3ec135bf391a442c9e3169b
8b08486fa1ffa3f84aa6715bebe98895dd83a0ee,dcd7758e4c2527d5fae90b782e12c5d29e83da4a,98404eab49cc4f844df7595a3392378fae8556b5
eb1905a60735fed693aacc0a3cc65c1a8cd421ac,4e8ef448eda713f0b54d8ff02b2c195c6f66dccb,b5763eb4124f86ab55e84fd7d2dce87724b734ae
eb009243aac29cc1ded85946322eff6309598f7f,290b5b07cf96e687c925abaa58a0e8abaf40c82a,0bb2b47bf8e859b9e836e1affbf3bbe9beb11fc3
3180a5e83ae8a77e84cd7d13940a481f3d229451,e794b85242de5ad2a4a5fff673ddfc56a169b3dc,b32e940bebb42593963586df012a3c5600bcd213
5598ffc210c387da7e4e166aea1c018bf6b3f185,55deefbab5a5f3f203587cfdb1f065251d3321f4,218da184e633d5268d80fcf12d1f2158c7dd2618
8b3544192e890f6678dc9b45c31efd1c2f5f6b9f,5691f2a2c0e00943762aa4dbf85b165f438da3df,e54197e9d2b5c595cf77d884fec32f0639dafb8e
ec28b7586c4b74823555f196772743fe9bfa3dde,789031a6e638a733e34cfda80ec8c355e2fdea63,735fd20a6a48da586b49b43d1034f950b5ba49bf
0bad315dafc027649333ae3ed76fbee3c1426734,821c22a38f8c172e3a6eca20e28027d86f854876,84e7a17b67acab49f6db6c821ffcced4ec3dcd95
196ab9e12ff5680547f0ba3d8412cda620469390,5cfaac64d558e549fd16112ec0bf622a409262b0,8ef0f590250b9d1f374dfee8409827fcb3020d4d
c948c16f791af2b02bd2af93146bfd504c541fb4,4c3fae270fab5989675a0234265474f7886d50c2,b65efe2756eca2da1bcfaa7b18c8aa70b55694a5
1f74ca0d1def5111f300f824161e3eb2b42cb662,dfb8794d4d2cad05b61dc07402610bde5febf506,ea417fbaaf750b7e1fdf1dd1150416785501e270
e8fcc5343beea4180e7e1f83bef6e27e19dde242,8ef4625e4d91ab3fda180e3102d08dc25ba8cd85,efc0272b99eba5c072baf074e16f85d70816d4a8
fb9c7183716e375d2c35ef7ffe4e6d1400d62993,34fec3c2318fe94fa8ad5218587bc6541adc8a8d,885a265edbe6cfe3a784b95899ccc988b69d8cac
10b66491ba6f9d90d9414d46aa5261125e324c69,b95bfd07d9fff57970901c224d038e3266ddf49f,ed50a1941b9ecaa3269d4744fcc00f62261ca218
3e75ba52f32d1e826b9dce0c406f22628a1ebf0d,048385fd7f3ff8573ef72b00fbd02c20c21e0710,0e77ef6ebf0f9898b92aee0c8bc7a7573824b96e
cdc6ff0a30253c0745a098a89f22771f3b52b7c4,fc6c3cf487947f4fa07a7255b6e4003b1df0ae99,524589231fb1fc8b21c9c76f6dffb61190f44f45
bedd4edc727d8f31b9eef0a40403b811656f5c04,ffd14f449d554e9c4a8ac67cca773f47a14c9eae,09b435cdab4e310bb7d0f4d6e4aa0fad3e916ad2
e9ec4a8bb3c08c399fc5f674e07e9876b5f9411c,c577ac5ce9329a112fbc31e3360092f445752615,6bbb10e64d1f3c5e613e9242b3598c30d41888cc
a4e8a15c70cb678fe414d3e950671b52901cd2ea,28569057be9eb404709c83783055d17e7a4c2649,7688f50c905a762be3f13e69655717ac8104a930
1db41363370f842807c215c5a151e904ea304fa5,6f5c356ae5a6ad844e37cb65678b3113ac593415,08b14f06ef1ef3831849441ba238c02a70ca050b
e40f6e13f03a9b6874bc2f17ee210616df5a909a,70b0cb99d435314ec92cbf65749bd899e5d4bd48,a6b01f2b2094b92ee4fab3bfe6a9bdf059d2e666
24109eb2a6412e3682e37609b5957ec27cf0d0f1,30698ea06c93820a218861007154f3b25d8fffa6,22243058345dc952492a1846fb13c2f7357616c8
18eec3055e0b05bad8583a87dcd70da07c9fef40,3cae3e7e4861aefea93bf7598444b5a292b141b1,33dfb6cb4e38fbb9f960c900f3c57a8aa7faffc0
ae47cc2c88688f9daaeec061d870db8f88bedd52,64feb6a5cd3bda525fc0dedccd8d7900abe88fe9,7f41bb4718f238a86ab07aeef677d27c16a43c5a
e84e0a16e13a4b73192edafd2aa356254dc2ac88,9c10167b6fd114d4996debe4ce117b3df3d38a53,ffa14ee4485dbb452fe4a89b9c7a6340ea359c7f
6e5c5f599e5c8d12a7c8da81f949adf7f61e6916,cb0ed2b6f0f06783a77b505b08a49e817eddd56c,2619e6b87008ce336c7b64823c22cb322880ebb4
d07e34297f55768911c82fa9690511f7bcb07e80,f0811e448daf681e70d7761353c3b19cb79e41fb,da12cfc867e3c522d7af9ff0cf3b6b7924d7be99
6e84ee580668f9df9fe5cd9219fb2f1858fe5d98,73f11c71cbee01dae6a9a27aca85513e8fe81eb5,f79448a9ffff84ffeb2242e7ec442477ad6a022c
ee5b9e53a9dbb247e34372cfd2eb862a5967bdac,d36e96ea74202f3a5d22e691ca6046e356b0ef67,08f396f64e990b96939676623dbe361c5218fd1e
047e360538318cf4fb6df9d2f1a29cf590311026,910fc7215dbabcee683ebb75ef0dbda911b7edbf,7e3bdd501c189f7446bf34600add137a2be25cbe
87ec3d6fad48ec2179019ba0789c8616ecb47e5c,71e0c12c88dea98b02812f8b9c6b15b766486332,71863e1b2cd5e954df0d2988b7e1ea33fdd73718
eff26797abf1d1eec6b68c6ec1895ae4cbc9547e,0e05e908d54113f40a6d4ce0870e2fb9f87a5d6f,2ad22a3f32243337754a8080dc74c786232984ab
f1f84a292c9478a02bb2ea40b4c368fa15047e21,c7a0c0bbb4984f935eec3b933c1a00db7b511052,67864b662a9ab677d2653500daed0b40a49b28ac
d3ccd10674a7c3d3e4aab9025f98d7f71299b5cc,d06852e6e9b50422f9a7173119f7d64d1755011e,def475f889d886c05f8de0b3c85b4e6ae4f58e35
63199a096610f3d7b1d1dc07d1715357dccf11b1,c8b2a36bb1671e6347fe7ecb7312856321b608ea,b8933dd267c554ca4f5441f23f14a822ea6ecde7
b49c3fe4f8e3396aec1469fa072cd105a5db2965,61bee98af90f0c17fe8b4600955b192f1a067271,513c8983e0b7fa03529185436c6da150346f5f11
3f25438d35d772669aa2ada696c23d51f14c004a,93a47ddada3fce302dd726ed01dcc373a7925605,21897ff46c6db3bfbf5243fe875d4bc520066ba6
b292e19862ac103fbab1fbe57b91b05dcde3337e,2780b5f830c4bfe647d985d791c9b23a8bf8495a,11cf24891dee700e81bbb9eeca61f867502f6d7b
4d676cd6fa2995248eb969a7861168c20a78c175,811c68377596fdebf8bfcee8e8ce773df42593f7,b72317811792b2332741e8a7b15d07e0a1939d6b
dd7320ec137055b4d1992b5a0b65d4068a86d1c5,090e4fea96b068652de95b4a4b4eb9ad95311e95,ece59f25341cc47a1f3c38919844ca5b0904af2e
22f1289b2a1a04c81e9421ed2a1d36216f0fb73e,a221f2af79ac6f13b4b74cab79037bda1430327a,5fe9ed18d972a6890e7d8092827864bc831dbe81
1cacbeff1e2d74df8030c4ebf4bc46b46516d020,8f7e61eef68f532103387b9d88d23dfdaaeb3cad,586a7d30abb173acab88226edeb9a2c4549caeda
ccfa38c68ef1428faeef660970a964e3b7328e00,905c485ff413cd48f98891e2075c814759d0c6f1,3635f7cd6fa703a23ff6b93b5264b527b1846c81
548ab476f7d854ae3e7eb9ee8902c6d44ea0fe0e,bd4e9676fa6b0fef8f216ec95d5a3038dbcdb20c,ec710fb219a1f12195feda6ddaaf1f602ba8f297
7cc94fc000e6c6631ebb706044ef0349b3006c50,95e5eeb2262ed56d2c617ac5e45a626b7a4bb3a3,15f29b8fa06a5b5d25a0d4783d7940fdf73b00d2
3882066f235ad7d31ae6f90780c4b6fd6c7bb9ff,159fa785147c8b71b60922cae2c8ea5bb6a52972,ee16fc7b96129dfb1eb6ca7e11fb54e2eafc852b
6a902660a52f622042d6aa005a1f60f2845e1b70,40f23030dc4600301936f826949704112feb440f,708aaa7b97f598f0c378578e491a6e16f5a4bda7
ecf2ad3e53c1ca9ce9486ba1adbd82c117a8473d,acb1e598620b6286da9e0dec38db7e27cbfb4015,3cec86390a07ac742c50cf0d4649608fbf09d7c4
ccbdfa91505dfde79e981b12030205933e1b20b4,bf8746ed101c4603ea005db72ef9743ee8cf3a11,d7d4b446c147aa5bbbf485b4665ec9309b14fee2
e42a11fbfea9d54fd84a11d03e71af92ddea311a,57fa801ed228056c3090065a74c3a265f40d95d4,60c68a7301a86b44a9cb910dedc8246749e704b3
7378994ec553d600cfc96d1dcb1b5dfb13b2fcbc,5d4aa763f24a8f766ffc4734a2abdf366a022e70,5da79e7ffaf1a011ce33f15c6b1bf9c5af5770e8
935467ae2320ef36021d6428752ea6b26cfdae74,79529a0cc066c48508a72a39a369bb1cd327b32b,7f592bb331b1d8e7d80dae91260dab4ee38c313e
f67793022e16edfabd65a70f2f01f4aa5fb4492d,cc950e79741ac8a9ec97cc1132f11a9cd43fdd4c,4537f34c825959537b41c5c1af51b6a5b109b805
c357977a1ee3df9cf918c2bf1ba0370dd7b063fd,0cb53989ccdbefda256ef0056a258ae12e596b6f,a1d21b2d17a2c1cb1ff575f04ed785e6bd774739
04ec431edae6f2a622476ae04cdf902bf8ebbf9a,4b9ca326d0b7f7e01653d87b55834702a1645b0b,52c051d954be577ba67f6f60fa5d99b2dc94faf2
422cf466be643fed3c3ec869637f7726f7829d12,a8f5fada572b30304198e356bd106954055a5f46,3e5323476d3694fd59b5a82c7033b3253d6b5b95
b2543a0f18cf9ca4672cd468949ef5e705d72c34,6cdf023a21cbc7e357d9bb65bf389bd3acfd3be0,151a3124e032a91d96c944d08fde6777346ef5a1
a1e7a0ba09b7220db149c0cbf7a78421396e0cc6,c7f406b1f9ad5301e802a47cabbfee3525342af2,352f864210d4a79ad26a0ac0190d57a2b105826b
c5c40147e6567ad86b3b1953866fd8d7f7e9c9e0,2c6d0fb7f29d67255c97ea2164da154a2bc1b0e2,1095433a37b24bed1563b786f1d7bf76075e262f
0707b5f7ca971119a9015fc2d063f57bce28ec5e,b3dad1f6b1eed6fc6d9dd4b9948fbbe7fd6df725,6df876e5460e0df1bd1f095507c335bb6fb1a30c
24bbfe2c45eb62502e917ec84289d2bb45238cbe,6593231fe49d306bc6dead82e850fb44db0d9c72,cf147f7a497dfedfc10e7db51ce19fc5ef5b31ab
dcca8ab6fdf86773372135b014bdc9c15a876d33,f2e6f77adef190db1893773d591dc4d8ef9d2b1f,0fe1317c820cddd59f5b303458fb27957edfafe7
100bdd5b0c6bc1533a31097aade59f4da2150fa8,a057c967170808c0e0c1a9b51208cfcd95b238a3,d312b46d1b34f605a3540b21c5a4c3c5f22e4c09
f126fbe2cfc71ae1a7c78321ead4381548da971d,ef5824a4d24f277d23c58c749cdd74eb033ebd88,e6e5c1724dc6c9c86a0261d898c1f872ed3d6489
6183327b18284addf62e93cbb6859a759f3f0688,2c84e82e6768646e148493884753cd821f1bb083,8d7a1585d7c0e7c0873f6196288a6e5f8b78972d
8058aaad9c43462db46784c659656803332d12db,a99f330e3baf50ce852e8397413268a23c1c588e,a3828c8e3e5cc5801cf0fced38fc8622b331a0f2
3718b52ce07739c543b2554301cada3be74f3ebd,f3c74295e26f48dbb7cb062779b0625a89a5ee0f,cad28fa07520dbb36e7ea8d24def0c612f339d35
e63ca07d641db8789890df2bf744d9fa36b0f5c9,d3df269339192d521f266809d7fb00e9a9893201,ff7eb2970676a32c8d45aed21934aeaad3d5c181
ab8dc45ff8da2a5cdc890e7460f4d093e4feb7c3,d23863c821820dca29230b270ae0e4eaebfd9aec,a9fbc6b9ed90ddb335f0b0ed5faeb29efbe56363
64ae844825d56221d1d616203829c0a777bc50a4,9a5f95b3a479f487f9b088673051777d936ff858,8307b72f747b1368899e125cddb86a213b24942d
043f6188af4bad9a22b70c506b4bf687e5ead2be,7256f8be25aab8c91cf7ade2e257993be522ee7f,46785d3884438cfd7252183cc6fb531926d18062
99549eec92b0b84784ed7897ea836780264323bf,18f0d90ba692cb84c5315a3d9decc37657d08ad2,14091abda5f962de254084aeeed11b530138678c
93def13823a527a1b5d611cf11ac563e86747da7,3856f3dba0335de7e81629f38f2e78bfeb06272b,b2dd200863a5311f26915d9a7106eb02c1f79d7d
96d1f229b50eb1632a985f0f0f9f7c2bf9b29a11,6913f674b0d5e5c160c370380a0d346317a10b7f,ce140620b9a78dd8e0edddd01e6d1dc6d6f3f9e8
864f097053e5050508472d4aac637f2929ec805d,699cdca74dbe3509156134b1fc7dd639fdc32e7e,1ddbb6a6623d9334cd0f4ca3468dcc38bdf17d85
00439969cea540f5089b22b9df9955435d2f5a1f,1a0a36f928f6d929f2ed1a146054ea23df1c72e0,234c5cdc5a11ff0b4debd1c7221d0663d629c6ba
81c6474e9f4bce4d5072be34346d1381cde9bf66,eba6b08625f7648ad264429b12907b98ad88ac0d,ac35ba705e15917dca3f562e7ce3c006f03d7375
f74fa39e2646acc6c076b0e24b194d7a2d099c81,ae9cc5ed1833a2e6b65c68a5e76b911416ef15f3,3f78ba87a3e5435164cc6d300186e3a6569a4510
359e551c7fb0d3edff33a19aa3a73578860a2e71,95654bcaa571980efa862f58d49195a0ba2fbcbf,42928f997372ad04e4d2b5fb31e93ca1f79fdcda
3b6fce659944325d175aad854a6b8747e335ad18,9c15301b348d87adfd1f5d052bee8d9c2b4c268b,ba290bb35831c75ab2bcf13d81ac89f00f93b443
25f3dad01de01b325d1313ece23f9470fc554c16,88ba748ef09b5fcd283082938a93c077fd38f08c,54d89d43ce67d1c1a4fa1cbd69633a578cded94a
679281a7d357d16f36e624394e842a7699f7fb3b,38350a9701a9b03e214fc4e0761d9249d0dd501e,069e4c77bcbe8f8cf6006d5369c9c473b8d62b7e
08c8e0ec668cdaebfb9a8a0a6daa854b4f2b9e33,077c661b2d136b3640bdf87aa2a37bf9923bb8a3,484c45340983f494c6a86e110eb79b749e196f1b
6b308b9416a815b20674204decb50a8416a0f59c,d5ae0a0b99fa136b7153db89182fb9a91a98790b,19541da2ad1c1a6da877f4b7cbb57f2b74f67c81
43812138ca661f19f5f747e61ecddb88354765ee,139fc803b40ef61f2747925b9a4e2eca7aa1e89e,4b5ffd1b2363b8853525a11d20d4ada6c8c5bc12
f063c5b611abcd64078dff948b4ea1b8a98e4e2d,22d290491e837d0dfc7a2003aaa0791890014351,a3d32e6c5bd41595a4ff8fa7e0dd8dce601ba6e1
3cc17229479045475c1168cf4621d4f1faa36a51,d05bcd846ea9f296e9acb855de4810e2c24448a0,9e083789bacd4e660c2474ac8216445e981980f1
fdac8f4e43961e247e7899514b96c66cc5e4183a,ca8b0f094880ad9b11fa7579f1360da2230a973b,e55c2b0fb74c360f35f1e93df59ad291a0c89201
0166d64bb85bafc0f11029f5cd638d77a91786de,ff4c0ecd900126c1d8c69d00110d309a3766b507,6a98cfa05d780d47db2d11f53eb6e208c79dd239
dc88694c7fe63043c2cedafd124750cd2c1fdaff,7ef30a4081075ecc5cc68427f0e3677cda1db12f,b3a5a031630516bbf4c6463a5a67d7f6ed070feb
09dd03240d1bfaea8932743cae705bedfbe74791,71226c3bb2fd9ba8139a544785d0b958e2217bcd,d201478f852ed4d7314ecf5abbdbdc449ffa3d84
779604d6a3b3fb68793d372cb1c110329663b805,a2321b38c7b2083ab94a8053ba1e0a0fe97a5014,ef0f5d4fa406ba982998356c778b2d41fc0d1108
e1ca68479f39f79a674ecb216eca0752dcdef6b5,dc096609ffdf6112565449464b54b097d87129bc,91318fdea20fe3e65faf7ac7e72f1364fdb48305
ac62ae5ce59a542e810022441c6beb7c45959c0b,1415385d29e5a12b7cbfa12f63648c6ae7467648,d1c34f3ac0cac05172c80dc2a874c1b320d048d1
610b269a123ba588cb3fe99a2d0775e9cc7ab7be,b3aaf78961599acd6842acef7ed79ebf608c2749,db83f9ea44dcdf4c4de9b6f270477861141c4cd3
d331e14bde6f8ce0890ef2535f9d5145a8624ce5,600a9a4d98e225f9a9d119ad4a9811a9bf1cee2d,83e5ae792e643c8b3bf3f4da36f94dd7d46c5506
c9a7893b61bb4a79a8461b9c27f006c8f39ef1dd,c2e666b6c769fc878b78fd35f1297bed7c654023,e289d78b28724554c73f8714145b91b6199d576e
be57852e8bf75249dadd90e8deba55260c8a3d0b,f03b0238e08aa72677d0a0fff65c22a96ee5ece9,325b3e4d4247f1ea25bfdeb8fcf11a2ab73d3456
093d78071e4bf32bf628231870fdb54899934a50,a3d722dfe93d3fcc5291f7930098945cd9de15ec,3391c2661ce3c2e180f4919766d396d2c5a4f219
07db64412887d74519c1a76141a525ec110e7a5a,c04dbe036a33dec5ba2e05e8d6efbc2b5d357392,e3bba8cf367951f14d93b574c5b780e7b48745b8
5a670c60237187b8f243f80285fd35bd14212c8f,9a9484b26d89b8344cc6c492889378bee063fb15,401268818aa980bc7646b06a5a7d096b759b0ee9
a9cc89ff46ec68f37a1a0ffcf636d7a9a4cfba99,9e228ff35571d28049571bd55f265993f62a0c57,5adde504a973b765c68268a8f9a9910e13851b30
d40a2dbb1271ca1964fdfd8b34efb55c580724b9,99b01f66343d9d28c1231953d186a4e5f34b3210,d6d693696e030786f4031c102ed4965d18cca72a
bfa3e156d234b569db886879211ea12279362d4e,d383f6102df663aa550a26f2838388ea574792b4,8dcabc5796aeac40f559cfa2d56c586242100e0d
66ff7a928c665e8524160da6004bbd98e0889e0b,73b528d17028e361229070ebd241f9980d4f8892,b2b2606e36f0c4e4d9b24b85cacfff4d82be019f
f0ac02cb2e2ec6b54666372f01e94702f717bf15,be99dea38bdffe725f38afaa56f1a5faf7cbc238,b30256ad6be6ccbf3a303450c2cc15e0ead643b6
9acf1921414cef154677d7dbfa444d811e11878f,30cb20bccd1e2ad966d107c43da4e799463d0bf1,2b0317f400596561c986147c61c9ed7248c4a7e9
7909f00c834b31579aa4a9cb50c5cd719c379732,c1ecfc323ae3c259aa3c085dc7bdb2abb5b0f3e7,6aab856213554cb5f5c64c87f494e6bae868141d
98fa292b202f6da868eed12fa9a538ad8d3d7143,7d31e25ba646791c200e1365b2578bdc8c21c551,5fe8fbd43aa5edd3fe4f1c67c3bf587528a5f4b8
e774a6275c99cf57f11a046de42b59d35364f270,64319dc019b03af26fff3b35bb3cb2853e540909,0e46041717a2d5fd81d4a5881c50a2fcce8aad3e
839849085b397690e4337e22fa6f51ef1bd88b5b,e41bfa04951efd43e7b89c16594e994702d33f5a,0ea0b69a30d32333ffa6d336bb3c0ef7aebf8f5a
42e202f791cb3fa3193559084cf3cb8fcb3c1186,a35f66a73071c6f985bdb21fcfca4b6e9e629fcd,86ffe6938012c52d4a31dc791b06ba933cfdf2c0
0d3ec87492b9d2918608839746c34836ba19d3c0,4ed8182c753a5bb0e10190fddc1c45627e059f1d,488c389b9b8e6bff675fd486d601efe17f3b52d4
3e3b96e08878da9b828a3530b0f70bfd2bcf376f,2596af84faf82b0cd93c56989bd774789be03d66,224f62a843c2d478e3de70e44d07f3b91a7afae5
4848327300b0580f23eed91842ea767e0cc60227,8cd10d88cc81868bce6f03f481b0bc83946d6ace,12bde4e9030c2c366b1cfcb62bf163ef77a24632
3ad8b4199c6293ef911ceb53ade968eb336c3478,466561f09fdccac4c599aaa1a337153773f3c99c,b797bbf5dc08ecf002c05c73ec1aec4adfd7195d
327aac7f24028bdd3a5719d33d63dcda3b79be5e,5343ada365f7de9732bce6df8f5d609e7a64885e,8e884d9acd2463ed0f6397e52dd87dd5f6373d2c
6663d5ca63d7ef3498c936bc35a749ccf66a2384,644ffa8e7ae3740c4997ac235a6675002eec4911,652f54fe315daf6508b429517c2a2d17f9eb5524
f2696ef1c8986ba154bfad475524e3450b293eaa,3d08253192da985829e5f7fdbb13c58ded3195d7,e40f997a40868536d6f49024e07f928052c4da23
e82c98bfce885e79fd7f9f10cd8d6c060bb1f90d,acdde37429d46c857bd11c3d2bbd613e86108e8d,5ec1ab2164ab8c1bcb664960bb626defa5f2488f
4143912b7287ad135e56b079a426b25277a22836,34471a640381a3012e12c0456f308192dcc0ebf5,538f8201e2a6ca609841628747bfafbad9abc871
1eca53a681301256bbf41d4bd551e55fdb91a480,8f3cce556d7c3e3acd3205eb747ed58a5f9236e3,8bb8e5716eb8b2ba3574369349a0aea2b7c5ee93
c0f9878e2fbc070bbd5db68ae59daff59e6469d7,3855625b8da2d403825b5fb27a55ad65fd7cfa88,a807144ead497385572b4af461f240422a517ef8
2a4ca98e852939dc2337b66e0c88b9ddab682e8d,b6fec2c97e2500795ef626230d0f9c57f292bdc3,6fe22044e7e2eb1950b4aeef5f7efba51663c55b
9f491a40c7b4a1c627b2f11553e1aa5d315a2c18,c07f36b30bde00274997123525e364d608e79d61,652f21b656cf37ad7cd5c627cf9fece13a86ab8f
4750840e89293d286db914f853154f2dcbb10b96,665670ae015eeb151e39336214cf7c15746b0608,b56cbad50e1913235114311ccd2c943678e63ace
e8546a9e41f471041c0c7dd89302d567eb9a2670,a4c324ee237674950e4675894df386519b75a130,a304962ea04633be422527bbe64c44cf635450b1
c88751a610f1b16e942af6fe6a1265f74707c64a,3a4b494bf1d45fc5b01db6b89291f8c498f142e3,8d5d7b480ddc11daa0f7554e8f60ba8b90a21cc4
669d41172cfd95e0b6b52416744960638798e642,b468793c6347bc84f3d536c36fa1028b80db3076,0efa4cbc678f8c9fd6baa09eb9386858522bacb4
fca0ace070ea67a899d909d2df34f38443267302,9d8b801e4c27a898d267126ae0500b102d62b7e8,148e4abd0ae4539d130cd844ec1a47dc9e9fd201
75256399b829a2645c1738cc8a82c27cc9a1db14,ce44efdae3c42aa8472a149cd9b93bb1d6dca00e,e74d89ce62efab3983701b34278fe7aa61aeead1
262904b8c1b8c64801c2a6c24153fe2497f46798,e40996cd2c1a0719f324c68ab31cf7048761ac26,0a89e68d55094a272948111d211fb2ed19e2c20b
144ee6d51d302376a19099ba98af595c143b80d6,bb407aa135c73da8da59dd9a8122016625b08ef0,78368d4432091c520d31d2b8b012ff2807f24379
f720ea3a21cf0d65cd4289b9037f72790252c608,b53034705fda8db007d80a2a866a8e60b4ab3aac,c00fe41625423627b379748108f31387b22fc16c
24acfb806428a1f6d2136210070022dc20fce15d,60cff917ba595ec388dddd080296b4dd10ad2c42,7c64bce04eed17eb0b594a970e38c56d79bae60b
094345871385d9deb3a9138f4aaa287c1f5600cb,9d7fe320288890b8664116a5d8151796dbbf1fed,12405f9ee4439edec0bf7bc7a4d8427de7b398c4
d96f9b805983071385d170abfaa5ae0a26e0b2c2,6ec8c9e2a23cb8126ffe9fda3b2656b0a64d3f4b,5f757a231322bbc9cc34f1d6f0d0e218b9d511aa
1066a0dbfd451e56e632d8c10f16cfce5e6da05e,17509088244de6992d7f7e628de10c0d1181b23b,54a959808402a95d4bfffb1ee1ac757b15544f9d
4bdf6233c3eab01ab63f83bece826ccbd5b8931d,b445e679e755648cc834a04ad8ccf29374f8ecd9,f3c94ccbce16c6981e302da918479feb159136b3
98f1fdda942a5b5172506be316c2c9d25ed4888c,3d7481b2f018ad0a650a74b8b80d409a10e80274,5b9d738da0f0f3f19552fabed9fd1f4a16cfc02a
944e4087aa2f2f3419fe9b9eb00693a6208b479c,3db1307ddc9d5d3db5dfc6dcad7e2c0ecdf91ff4,96e89c43b84655d81a26bed09123894da167506a
5b4ba67a855a82d6796df08b58e93118d0756e1e,46fa168d43ecd2f07bb101ba322d64d22e30d237,219fedfea6ee033ec68d4cd19447595c531e9d61
27476a915b81f5fce5486831db41a0cc3e669ad5,5d104c9115301beba82a7918ae61903cbd6f94ff,647f211aa5622ea9ff21c354cad5d0eff46fc499
a52b3522dc88a5d35c5084523ea5260a1dc737bb,c6effbd676cb27a2b733c3c0d6b467ae6c17f6f5,a3f441b590804111ee5f5912eb78622fb1de0fff
c38cc828e8885d50ee2d71b235c403ee98bd1591,31c225f6b5e88cc2da1662712b87dbe75114532d,c6d936dc25f443c76983068bf0718b9bf8cc2f81
e83bb1964235a108b810e01a42930cb72c4af167,8ae016fb85a071be24cf1b9de24dbf9cda432df4,a99575b74c9430865c6e84513be0dcd025112482
8b00faa4eb9a740db2a89944e4a0e000a3ba292b,b2f2c5671cb74fe64f68423d0835129eb0c3ed69,6f3582954c716047f6126a1389a4951f8ec902cd
c1e2f557f124dd6d00ac869446da0e9ad2ff74c9,5a123d33bab953b780933a6c310fc6217ff3e92a,d24548f8d8a26e19cd306b2f58ea5f2a62b6ae8c
484c178c1591359fbeef7cd3d9ae2092dbd89a9d,071ae41d2485ae3200aadc10757c741f71148acd,3bb2586269c876856a834fb0d72a09928ff9d16b
0515be62b4f9e3b7b9b82c90128489afecb6767a,8696ca652d6f9686f26fa4627b070fe1da589077,bc72021039c8b01e5a76ebbaf5a2285787c6e7e1
a31f37b5e560433aea4eed2162d2dd19c35d7549,ecfff40f960ff65a27ea4cc6f72e21dc9e36b651,fefa163a354885c289f9672673cd65dee2960df6
2005e3c0941051eed2f5d224f493059b47c40e8e,d74d41c5d217d32d2e81e0c65334cb7ac61d2b39,519a102379bf41de2a988f9c0aac508a5d384a51
b4ff9b71d318be9463d054b4c8cc998aadc8affd,50d72bb559b3d88f5971bb1ba8a305ad4cf679b3,c39e51485c2d2b122b9e682385169287b2cb1413
a224f8ded7c0bc2b0e17c2536d56bb0fda1c5149,a98462835ed6848b62ef95188627e11c4ba52df0,c94531645a31d8bfb9cce98e6c8ac7c32e9e7eb7
52147baa0495218ea06c588d1f849106f480c4f3,6e324989ebd805b8c5963bbf3f97df7c895b1e27,bcdd3cd84b586cac264d8153bef94aa3a9f89fe5
a50be083488f4b3bd80f0331a332a5ef63cbc224,462536ca9b3609e60ad147282d408e6612d18c99,9249506a2ed9ff9482094f70081610dd78f2dac2
f20c7b9ae9bbfeb808668d66218c22f723216eae,9b8af14f47176d0c97a7b3b07e70631e8bbc044c,da2649fadefac495f3da024bf955aa889a0e5108
93438ef1a5f157d2acda458c15f5e074f9ce9866,33fb8874799a1c90f79175f108dd21702d696472,60cde554fda8facdd2f7d79db327d628a7dddb69
bebe53ef9f82bab6c8a6396f4c96d53d73db796f,ad69c6e1b5462769798f96d71d4327a5d6eab3b8,c925c1aaa6fbd3091c7917603fcf49cf7faba2f3
3e21d24098ec9822d0b6bac12cfd9492e8521840,a778fb2eaa4c793cd7f6f3c6d4a864dbe308184e,dd09bf64b39e402109394dd0f4d32cc97c2352bb
022d2804a9500d50cf68e02d398af269ea731291,c33f47a707add75d246ab1efb5e63a8f21c9ff24,5cc4096f41544ea8ff8948aa7e6058ae37bcf12c
1f7636612542d76c4a9163de1f126f9d654fa6cf,b8738944ed4319b07c293c742bab2c12ca8d62dd,21f57606a6e99c3135dcabf9d7cd45c590d6248f
1d7e34683183130d680055753308978d029af427,627fd6bce120c83fd3446f01e44f3cb147df8de3,3770b55ce135c7d2868b6e5bfdc95b17bd97ed1a
92eab370c3269f87e339a75a4ddffc9316ee58e5,1afe0114d47e60c3092e18d66c00172864f2d392,7056ec1a87daa62f01a1834404387e98db43b8a5
add67ca0e3665cdfb6bd5cf5ae1ede76b13df486,3b3a0a660cfd8427674a6d689172b4bc4672ae3e,48556ab039b1b2a6507377ba1f7148655a0e804b
e555eddeda10f75c367d6e1b0bb3dcee6b5a3083,11712658b0ee16f5df5ec56840161afcc1863613,2039509cfb7940fe9a912c776ec1644cc6d76882
a0b78ad1f7859efbd51f3267fc93fafbc9d7de32,b6a87450eb2ca9f68a8d8be3e1a76e13ff8fcebd,85524ff821e196fdf84d0410346a596d6eae57b4
5a78e82c8f9f1e676bc1c3a52fb8936c3fead372,5193f676bff222064094a5a4310f01ee736720d6,702ec640acafe9234c6c469b605a76aea748c473
65b175cebdc0b69f7b6ab1449622f944588e8214,8743f72f1134750b0522330904f57d7ebd535eab,84b60d3f001c642e252659e84923d21924da90e3
8b138aa0597d7c12f0a5c5f43564c5818a4f295e,fcd5ecfcce4968f96c2fa38880d5dcdbbf7a55e3,021c1a7bb49de3c6df7116eca7e363ee88bf201f
a47a1c093a31e2352d44f94a37698c1e69cc5e23,7abe3eeb84022c929246d43994920f7fbd4fe3f8,ca0384172482ab6488ec7efa643c68c96a796671
9daabb2123594cee642baf50ea3c0cc5e7f7ab6e,8cd6606970c8fedda95a3411d684dbd57379b46d,f670ebbb280f5bf5cb198f12498e57ba1dc5bf0e
acf8fe59d09d6b37f089e4c4c14b886e257a3702,6ff566350cbc2ecf8615cae6cc6792939a288ec8,64569df0172569c3f5e3299b859a2a7cd4662ef0
3d55ac9d0967620c1a2c196e2aca66cc62a95d9c,c117c0abf576dc47f01257751b8c10109b5c9c6c,e6cbdba0bd6bba9c4dac1333ce0405a14389e3a9
d38dbcac8f21d79c666649301216ec274ad838b7,8eea58f64901b97890fc5eb4b37427a55036b539,9b4366e4f6d565b0a1b2b2d105e350b0744b8d7c
95d7bdc3da9cd08954dc6fb12f8d6b2ac890a7d4,b891cef5d2ffd8af876eff736ec15045eb02ed92,b247302871aa4d46bee7e0d516a96cb8102732df
b97f3a08edca89cf8444a5261eb6e5e0fd141303,1a4b97a62a6e6569c3b8146e80d489ef22347df4,80c8575636a7b2e41f9081f78878d6399cea84ed
ad1812f90aa26c0ead768ab1ed32287fb9dccd67,15c95e0ac7f66c4e21033d9e01c1328e00ea2545,c22b6c10b7a29b5375e95102e43ec60fdef32b60
d2396a848b214c405a41febb0036d501e5adda01,61e53fd42ac3f84169467eead72671b030d8365c,f6cd75add97afbc45461db9befd4d47325a8384c
aedacd916089f2392d89dcc9d5a6c0e2e95fc53a,0f89852908219e54e76a72bb21e1847305166d52,4d62764fa34b7c0fb8a4699e689e3ac8a846ba94
c6b059ede6d90f87e4507c0cc4e258ac8b4461e5,601c8f9c8b23db6102663ecee9b1a697b410bc4b,c67bcf003295d9ba9f56cf06450050e528c3f305
2eb3f5f0b84f60daf562376b0bcf0dd12776aca1,ed748a65b49f64d53e96adc2dd485e34f550af3d,9ea1f6de197d554fefa42bfb2b29b76918460408
0d256f517f57f80933f3e6305e38df55d8277d11,f410d8a77c0e23be19ee87c33fc160b738320a4d,87e49314892e33419c0104dae47ab463bc6e6b91
be0c92c65d684fe637575bc9187273c5883252ce,9d893b5d0d040194bbbb2ec220e03ec5f88f759f,2f1ccd6f2a1451c13f16851c10ea8435254130c0
f800e405958125dd1b05c79dd06617b0860e3d44,d5a538b5908065ecf83b6f5e74625a5eb85393b3,08dca09c7ee43e2b73fd98c319fdf54934a082e3
e44a33a78b30bb0315fa04810110399bb7eab5a5,0b7a771ca945dc531060e0597c8f1e69774a6451,8382c6f5860949eebe1e6e6aefd156c8dae83fad
553cee72eb0349e50f1430f28900fa47c036759a,8acf2e3ff31df8b8396ad0f416df9e1ac221a9b5,389646adeed406d305c0dc7d13c7133ca176963a
fa278564786c5ec7fee45d7bd3b3f4f2d253be6e,322befbf5603040e68207d847ce87f5dab7917fe,0c3c9982b960f6e10cdfc30f1186f1e1ceeaf254
c482bafdafe17ba5e23e292e1127e6f103444ce8,535107a700c98bb89e23332f2465f5b896fe6e1c,1930aaa340a808e6ec530093d7463b157646646c
188fc9c11281018efcdb567895f6137a5862552f,76474c85bd7b449a233d409727a53e71869f3c7b,bbedb958f61b03c8af63ca52af882115d051ec71
68ad000a34398b1f16f076e481b6506921ecf00c,fce34eb4bf9a70ac0b8a9a5417f0f7b327b8bb37,edbb865260e4033930f266b2f453524a68c48ec9
5c792c438db1a5dca3ee6539ecf5b1c84e52e56f,06f35ae04f229e4cdd54de4bac67e785c043a1ae,bcf7701887088598606eca13de251f7d0eab60c7
706aefb2aac30597c26d4f4e3d9633949bfe8248,bad62d51fa1eb41ea7ab811df5b12617abb433a7,fc76d9fac299ff9630515bb62b980d09dd432437
20884fdc1b60d678999bc55452accb0e914fd137,2928837225267b3fc95acffe029712c61a6a8c48,f202dda5c5d9c2f8dd82c4d36c376659017eccb4
6ef31c643abc5ce46651ef4f6ddb3ba4ff1e8621,6b4ee224bf6024e12821e2e3889937f3d404a11b,a3a827eba5593f57bae6d0131b18bdd5cd7b071c
fcb5cf42bfd26e076628902778c65f7d6cc3b7ec,dea9aa56a718341d33a4b6257e5351156907e44f,977d123b32a0c36b86b0e91453f8573dfbdb07e3
f047c40bcaaf3a4dfe3f0329c03a590700809dd9,74e24a38642b79458b6b32d311a30f0d463ce094,62cc594ca469388c8bb45cadd24e73b21437230f
7133ad7ecc46700618193adff85cef84682355b0,251af216ce7c63204152c8cacfffaeab899c8c82,34f1a3ee280a5d2e1e9aff4f2f39c1b9e97c771e
f721210638e919e910d340b4187b2154df8e835c,e776368ac8063128ebf61ddca10a4b902442400b,d97d34ee9c538f4d9d9f0cb4ac1b2fbec6c91deb
8592d42afae604428d5ff08a8c7adff8dedf45b3,3dc64dd67ef64da854e08093e229719ab1e3d49f,c7776d899bba809811549d2dd99b37b80fa361c9
78025d90b3ee3aec45bb100d2bb01e3d931391fc,a20e8b9a3d1c2bda0b5d62d50435a8647bcd7105,c994b5efe8809ce84b3ba52046c32fc37909a65e
78c0c267a5c62e1bb773813d24d12717256d2ca5,1e62913183eaf9906c5ebaf98241a7e14e45dca8,f47ca0c5d102655f5b336f04594f2cc15b9bbe96
755f350d5e88d5a9f72074eab159f2aa11fb8c99,1e3c2154ce5de686d50b7437e8573b5f7466b591,92f148e667620fbdc439e5baa13c36f8a66302cc
2cc319bb8e2d21c61e051f77d8d31f0704275289,d472c920ba6f715f0d36e4a99bba135169748641,70282826ade9305b7aa0046efb0dea3b84089ace
79d1fcd40d6ee362a0340751051edade7b124027,0261a025de8b59a41b3c43cd07c30d81a8e59567,486f3a0c7f7884895a0e9742a1a3ede419f208a7
8f4b56d10e8ffc1c34c355d97d6afc8329d3ade0,e14692f59483e83b1ac55e9741916c93d5699582,b5cc48bf915306623242717b56253ecdb36d48a9
82ed35ead0b9cda4910c02de4d52d8e24ab53252,21b135a6ecc49cfa6ed65ab0e26bd14aa04cde38,5271d1958581b3b4f4cc8a261d75663ac941208b
3a808074339418e066d2745dd0c3c98b420db259,1df255cddfa3ecb9b48e6142b302bb28c5193510,168b158514f299c709b146d13b583d5a56c5b5d3
b121045d4a0cebf142af45f270241a8eb520158e,2a87366086419afd28cfb109f464c532148a9567,299f942d291fbeb2c3b6e6e653ae57ede9b7e525
96921aaba35135b40114ad02a6208101c2e15b66,7f4b2f63b3e384dc3589499f21e0545205b9d3df,ba2b29bd2cc75452b1a1578ac2c9a5e68db39723
032158d9437cd26e3ef857632fcc3abc842dc16e,c9c2a1d30d0f7d25278f98621185c397714bf8d0,e6c7efe0570577bf99cb59bfb9fd9c22fec1a963
e4ded6e277d0816820552c0959de4a5900d0c26c,e32418a1895102b51517d9c15f3bee8fb3ca59c6,70850835597032f7fb37777bf6fe44eea3b0d16a
d3cc97655125c9e8bfd6577c29ad61e3f4ed87f3,125bd9d5e91d67849303f33f47daed55130208f5,90f902c7d4a6d95e40eedeb813cab74fe3e4e73d
4beda764aaed04c3fb7d08c46922fee98468e46a,337fff51c5314dccc2aef497c5f963b21b4d43ca,98b49b292d21b8ba1366ee97f94176118f90628b
87cc2593a7420d6b5c00b9d02e2eb3a6a2149900,1f981116f649cfeadd2eb8814431d5db299b0198,517d1b017c45bfe75aa0bbe20778d532b253ea65
4d8af148643005b1b5fcd548d41b1a0b91a42bfc,ccd445bbd10f1989ec0bb9bafdebfe5eeff08fff,93866592862dc797b5208a00f152827200d27b5b
f0dd99c65ce8ab8fa3ad6fedeb6c369dc35c142f,682e11b1401cfa2789592b82b1ebc934253f3b9d,440af0f81f55a802d7dcdecc8758a0b637fe02fa
087bc4d3bffdbc3c775efafbc98abbb25adee61a,0a58afe71af45df64f943d623c3e783f360eb3b5,e4356a0d38858f91e586e47968efaecabcbb2b14
322503678d0522ba5aa513c863d7f81e336df652,37a5130fc3bb1be79c4e1bee59da728a69c65ecb,fe873006dc31b4793322f8cf80a97531b7d548a2
8d1d763a1a7ead756b90a65192ff9a5eeb8610f2,a77fca820e5a3bae247c2befb840b5515ef20607,873492006d3e22bf1b07d7fa44cf735008a288ba
9d3c4487f35e4aff74a3a13bde23056c227ea795,0d3d4918b3d44614d6a6bc552958faee46cead98,a6e0e1fe59ddc7349d9aae062fa264cc215dec7c
28b8d069ba74fdfc1bf26aba4c7fc9a9b883f20b,28a3223b6b017dec23f867c8ceead32d2b22bd72,a3300b5ef5a03727ec6f14d99045fd1c1a5dbe47
cc339fd3b886c438337d351dd3d934c08a0b0368,6e5c4667cdc2adefc0b78e852a9fd211b938ee09,d3111517d5cfd1d044e619766e37c3312ebe12fb
bd036125274266dc82d19aa3be16a4c770f096ad,fd1f7b2ef8989c9da4fc58adcf90d29b0df6d8c5,ab5b3a6e1c47a3d213663ea29a73daad4dc187f1
9a9a11ee5d61332484cee22918cdbb821c2d738b,f36ec0ed7fe87b027323b43c4e22af3b4c7dd751,b8b091cef889b6ab30fd6b1ecfb559c9cac4db05
55ecd471c834b9d010f7b9f7d66097d327597753,340ee21b34577cfac0514abef4ed144db00552e8,11e3b123542732fad685478a5d08f15cae60619c
9552d2b757dce8f48bb3645d0f00618259000702,adabc721c49e1e6cb43aa855160197ac54941721,42a52aa7d7372306a2e67b8fc6eeeb92730f0986
5abadd255f108b6041650044a2a98be5b32fe9d8,a283c4dab70daf480a5a9d1cf949363c94a28d56,202d526211a6c43ab3a75fe37fdea88f15c56b1b
097608c94e7e6def92d6205c845bc7032780dd92,49697077fa6e1838f15cf4a469a392154bf3a631,cd275db151c5f5aa234c6f8fc8a8075c86785211
ef724bddd4789cb1702363ffdf56fd9f63ec11da,7aa54010ea000ad76200cc503309de8a63cf8cc6,8a6cc51bb9c16b132f883fc303bf017e860b6413
6cfff900e8d7df566c11220c344afff9b39393e1,6e52b7195d525139683af4f5e40e634d97df208f,5a809d4dada723107408dfc95d98f82c4b05a4d4
73f28f7edfa8cc03a56eb81053783ae4e4959f05,2a83972db8c644948b29e3eb745f2796dd868af8,3bd3a671893df5df8cda67bcd11663606786576a
73322fa6af3881008773b23d60d2830f2bfc33ac,e1a216a4aa366c6b8091b5ca4699caf868e67936,f39ed31cbb506711a462dc52105d81c11ce3b91a
6ffa258abbf7f27a213cf96fac2b94a27e591dfa,656254a984065ef5461cdbeb0e28f8da2e472d8b,0099f845ed3b590b1b8cb50e44c94f05559acedd
13ee3c24bcd0258e01e8ad90c368bce478a56ca1,3c07686687c9877d2e38b0e111f97e350ff9a289,6bd8388fb430d497c949c8ab20a5924689385146
2b15f243bd7e874e332c7f80366362dd1859244c,4d4834183b68c1da7cb67898dbfa7826c141c1a7,d046153c7970c7f42b3a1b348d18a4d7c6f31bc3
d7b3a7655570c385fbb29fbc2570c657d8c1bf18,f79e969127060ee89937c70f2ea4eb7b4e22d772,e84370e532b5759103656f6ceff7e9dadc98a8e7
7dbbc79c9c43a050b0fe363da15f34ca63a2a944,27fc3c95f8beb028fe358addb53695eea7ebe0a3,49690fb663927ed5f8c78394e4fc6d52036e77ae
262948f06d9d45f5b1807d031d490a8814e4073e,de12eab65b5defea71db7b50740b1a5d443b4cd7,f89025ec471b9d29568cdb76721283c4ff4e973e
11a847dc27d306923b7644d5c5702630dca3550b,01723a3cb2b49186ad54a7695202161adf902076,823fffa7bc53d0a307a598bb46cd5a87229ee617
4d79ff20e2968c0499d25200c253bdfa287ab2c2,dc074df9a8f560c24e8403bc84e9c86684061bcf,33dba315366ec3002e062c3aa6dcb15b88356580
f8d1602db568c5b9d22845360b3d0e5cc72e2783,6d5876a29cf256866eef0a5d34e72419fe04d0aa,0be4498284856bbed27ae00823782f38bcb202d1
8af6fdefa8550251f025ce5b17adc5a4c4cef4cb,8471024ddc95aa54287581ecafb907f3c21cd0af,24bc93430e1e3c1e10bc3cd2983f71c9f105df25
9aeb7237478f33cb452da9d34ec45ce6a0c28d5e,ce37431a3f57ce11da4e8025a12a0eda3e651ff0,17ed07ac90b4a59cd8c45fdbe6cff9fb59a52a0e
757f65d0e283c9fd33f2f99e794203590711c686,7f4420495b9a92d5ae8de25ce21e9eaf5368aace,dc6728c8798097fba399e8fd37f24d530585cd65
6b5a4dbf6eef597d7e84140ad74945c1dd0afa47,354c4ddcc1b6c9ee4bf521d66b0123811344fa10,512faa71415be47530dff235711c9ea8f49e9a2f
b83673ecf9ff225de2197bb6824e73ba37d6b3e3,45cfdcc5828a21f35a731ff59f36b722b61824d7,e4d5de8d05d4ac260ac9d9c451d176486d88dbd0
ae5544db4c44b08b5e16d08dc4efc23e6c9cac0d,ce41aa9557a7493ec7dad5820d0e547e22e2b25b,757d2b4f91683bc9e7c8b84dd0aa67208790d465
ceddc2aec32441f2b62ad23625d78efd0472952a,f96700f7db3c62260fbb9f08f35770d92ba8a0b8,b5433100f442172414aebc2d7dff3babedc42a8e
fb5b891c45a0774f0429eb672402bf760a61fb9a,a3beff94dcda2ca803abc655de46ff9ef35207ca,defc7e99d1abbd9cf75cb13ebd0f28ccaab7d376
f0ef6b08ed07df9d962aa79016b432991cb59a35,65f9c5375937ecab75962f7ac60d6bf26fd7b506,bb1b1bc70558bed46b5b10b03777312fb204dbbc
813105ea0acd7e33418ef88e25aa19b5701dfd70,6e84d4275d17d85380e79f421bbc6841dd0194bd,0dcb555acafcaba20fed219f54b781790e31d2c2
fad52c62ed69a9a8fc935d08a969196ffeaa29f2,2443fd0ad738f0f3232c779e9d2c9d7ff1072ce3,ee97c0ca03cf35ddc2ebb7c7590d57cd7d407e14
1180638f66ecd05493ad098aabcb123d92a5c504,2289c1f6a2fcaca03ff4bc9c31b03baa26b3fd1e,f9d7e989e53c4d99c94b4c1e80a863bc687afbdf
9a0f9fa5545d84ca340bad329fae466424f8b4be,0db8f72dcd933703eb7354db677bcf32c3b94bde,2232626ff717443501164d38a67d41f600048a1b
37a44463936022e3a09dfd4d599cda8cc8a811ac,b1534feb3e31eaee0ce8007c1201c08acf63959d,c80bdbdd742ac867834c505b66ae63e702616703
c75aa72b8f844d9a702d12c3c85e36e77c9a3c28,208f655b6fd361c547b7dcff38b12457a1c71866,fef4ae489abfea94bbda5818bdf7f668066951d3
b8f8a1dd1f869bd4a09e571a766ccbd2d641193d,71ec7a94d17846597b89acf6de64caa3afe90f19,8ca4afd2d0e943ad2dd851ed33589a6fd590e990
fb5d9285e3e4f00c8d95b76bac5e59dbf244703d,37e637b61fbccefccb7d914e277bcebbd48c3eb5,a9705e64362fddd8e0bbb7a96c7906de0ff92efa
699db16fe4d81890f6f9a0ebf525624f34f35245,02b45aa6e4b5267c162d560fa3242a9ea59b2ccb,5ecf99a477049dec9773d1eae5025c0dd568fe88
66951c1bb960c35266785d000543369ad0535a4a,dde19c01441be3aec285967d6a9aa279332597f1,11957d9a602caaf4bd14b0f145e5893047734682
41f5b0756e15daec1025d05ac9de793a0f3b8231,38f7eab9824571970f36589b53a83225ae0767cd,64226a0ab1b6b65fdcd88d85f62a295f97046387
b49d58a9fa9bab90e1b0501584b0f0d58f01b0dc,c43db94883ec56f0dfd3f34d1004d4c5e4d1a152,2bd2ffff2ae72988e3624f2c6ac08cccbee3ee94
2d562c1560dbf632128f42dead3f77ac1adfdf12,fb93b599668b7ee8dc996c9bc43c2dc54b17d7ed,379deed2f08169535e0bb9f48421f14f460ff7ba
27ce569b0b1e0aaccb01f4c1c3e0cbf4889de4ab,bd3580239a0a7a34e0a3f87be628644b04fbfed8,d94574938ad0b5512a3c7212e90a24f7d8c1d17a
82bc431bf42ad36c2850a016a04df1c2f99162ae,69e775630ab21b0a88a13bc5a502a4a96584ec85,7e7eb033fc099afd6dc1e57355ecc864f7d0fe36
a77c50728f79d18e626fe7f1dde0caed0fe6e809,681a00a76fef57322c70428202c0dd3e9b68d556,682de5967ac39a5d1cb1763d460a12dc514857ed
c4e8dcd2e3bcbfefd088a06db340ebbb86c4ec53,9e9fdec31a64bab180cedaff2e7218dcc7d8fda0,2e91e8b243a48dc240207d691fdb7ad133da9daa
ba79c04af21e1f35cca9f4b9f4eb84854d4c3e70,681dfc91acb9ce61c37738dc3e6adef96c3652e2,2949d0b5488f58f8fe9cae976a9c3ec00efd30d5
45339ddc9880e6d0b6c7eaae9838b121bf4db5cc,f48975ffcf5542816b139a825947b84400d893d3,425612504ff23b94bfb7d6477d1cc8d740e6a973
3cb8d59bab03b24c7460955ad77c5f873ce7079b,b76c111e89b42f9c5fe1990b11c1f1d3a97936da,67cfa79659b2bdef71cc0ecd2d08f64a115f7cbc
1bfcd4530784b19eb3a95b70d96c322d190ef498,5bc82beab34d738db75a7e3007e7a3dc66bce2c0,d1609b0acb67b397b1b2768ff6e6272207166386
b1d8c20a166f870f26dd424f88750cb3a839bd22,d3d39001bce7adfaf6556dcb8cdc4ae861e83072,5004889c3cc16daca2ec8c656b0918476b28c47a
b5a42836be2d8fab697996be2dbb47e836eac21d,f2cb7ffce9c76804148f5e9a395cc480d9156ce9,f65e6cfebee1f6d743821d54fecc5defe1d95be5
6f713ab51ba35c9ab10ddae074f5890a298a81cd,6cbb73034f96826162694b0c3357ef924b8d56dd,89bcc828431ab89496fd87e9b89cf1f2aa1ccf7d
c39071753e99ac8d5430b214a6493f6c83354189,af134d61269435e3e3c015b56c8afe33eaddf826,761eff5fe9db3cdf2d1f5dc14d7828fe6768b726
74ee781ae377cf157332d9beac1a35fa6b866e76,6f8e71cb872faebb9ac9f384263b65b6b2969489,1a410bae128760633dd53f721c7a4865f1d80ab0
176558564ebfd03aa2ee534fa4f18034e92bbc3e,b84d32fe04fc1b8d18ea0552027a5b8cfb7b30eb,47a4b9af4c4d41a68265fe4796079c841a922825
3ab38b69b86570680b287f7824d6fce7a49d3118,8f576a3aefe770e237187d5410a476d542f7ed35,816079a7cc2aee849b35f7aa3173285e8af5a831
b877b2a978ce1db4e10d3d817aa34a5fa32caeca,ac91cbb2e57595a0d08faf363889b3c982a8abeb,e917b5c083f364c07ecbe3bf30e1cd630d6e5da3
591ad88ec0e0b97eef7685513770276cdcae7bd9,640e0e028b5dba25c1e97987d6f7b6f521e4e3b9,2f97637b0f18c561548954065cbb691c579e2ecd
0d8d363de4995ef88df8763b968952cbf2082617,34169d4fbd2a31c355a6c3b8344f19da5561e0a2,603614e28e22f93723a1e383893cb567eb2840d2
93c116ff199d0ec0bc536eaff4a2e5429a3af126,9c68cc937852d52ad0810ec3d626cb56fe668f2c,d12bc9e9b98026f3875053c78a686c15d54b9e44
0c7c75435de0a586a2ad69d18079d3ec67aeb0f1,6577cd16e26bc0e9fdbc2077f9310a274555f568,1a6e6a1b0bfb1d246c5d7e3e00ba46433f1ddcf4
67ba21f8a865e521ca949f76f6b2f4127f36843d,21b02cb56b11b0f9d0e00380d4505f6dedb31767,ec0b830bba13e50fc60cbc201842b48fe02582d5
d863ab6a243022cc8b2605039c41dae84b089169,82dd70e72f3ab33b1b8737f743e1cdd009d9c8a1,f258d2f498e3980cc013090569cb53c93c52ee0c
7228b558dd79f5c95be0077f030851288aa72248,401fcf6dfc41bd3e7e50be871c361a40011e08af,7c7783a24a2a5806c596b78f6cd5ae8f8c6aa57c
d4172b48bcb1df55a03228f416cc18c0bf0cf5bb,3b8edbd6a6f80c4a6a17658dee54dd789b41cff7,b713b84352ac55a8e709c6897f5645efb271143f
d1dca0a815ed200aa44197bada9185e9df10c651,ce5653897b8910bf3cd168f7b6177dfecbd5879b,17fc9aa60b5c9bfde53fcebf298949dc9c348edf
f01d3c6b39ef117c6592e073ce9f57148e2f6f5b,0c75716f11668d17be9e965dfb2be1763bb7174e,84c8a68492f28702e5a6e5086540118dc2c71b47
ed734996fcf75d27e38cdd3649fa96d9ed15564b,493b58d72b06697f641922f08a2c2deb90a3b46c,9acc01cc93d0940e01b65ebf4731de960bb9c8b6
4bd9ad7dee6b41b59e6937120fb765d99d57118f,ba3965e987b0238cd9ab2bed4be3ef671095a4ae,e354e8322ff26feab008033fbd3e65ac9d8f381a
8b0e2cf0cd803417f934917c597752f9a58c66a3,cefa2745b8f432a4e774c9c10a44abf091018f7b,df9efe4cb50ebeab4c36c9b54fd31c1cdf2f3a2b
c01649c7d8b3cf60eed3698e7370bf712bc2a3a1,58d39f8319685da76453205e137ed6760503dc1c,0763ad74c274574f3a50722da8d77d4ae4931175
53de381d876c419a4e51720737456ce77e10491c,9b1acb03970748c265370ebf9acfe7f9961ed3e2,2e5c62e086e618bf755a57aa928d95ae134d0e43
2b82581f92507b07d846623333ca2a359adf93d5,2130d92afc0b595f7a4e585c421b56405d4b2409,bc40d13c4a2e5f6f6900eb78f13b9ea46dbffe4f
b142049e1cdb82a40f263116c5c84978fb80b61f,13b3f1189658668e8e475bafbf3abd6077808e3e,8917f848826be9d81199f3f5bc3ce76f73334fc6
dcb91d0b5283c17d004e8947bcbef54ea76e0ca9,2e4f7bcc22af99c2ba0e11e81a9742b0ab76d10f,3297b8f1fa7fd6b4871a59d14a6b233b8f25d75d
dbb0b013d69e239da8b5fff861b3b0ade0e719c0,a853428cc5c62e5429d30c276f8ecade42e873a5,5bf7492d2d983e3ae5c5522514ad5daf20ea7d0c
eac6add9f70ef11b3dbe3dfe7624885069e3229e,6b185c041d362c21ca9c7e43bde1aaffdd063fb1,9d525501788c03a64c71e60232031af6538e550e
607c603e0fab15a7a04604b47e32fb29fe2b5f7a,9440b17eea324558acec52a25a1d9fd020ea0408,d763c32afec80a034963aedd77ccc573c297b7c2
d655024ccec0533302b56fd744f3e117c4e96af4,adfa555645251e40c2436b28f265fa6e09735f62,d0103704a6cba6651ba291a61d5ae36570850e1b
037bbf006dd9df61b446c8eef17d465f4d4607dc,3d987fa177bb7be6ec0fa898e22f298027c4e935,4809d6da21c2fc559961d490b404b794848eb1e2
39a16c4fa8a39c5e1e36a575c2e52f1596ce0bbc,dd4de2f7e064a75157dc2012f05e8d243983eb33,14fa611979d4005e98315d6aeaf6cf8c8cd24e68
8ecdc6ed057684f8633e7082646403b862edc541,80aa3cf89cd413532974640d68173b5e1003fd0a,961abed52af58ee073b1836e207d732bc4ea25c9
12a084d6c016d1e348a5b3be810eccc7887b3a0f,233e3b996383672d6f882b6da73ae7e7c491ab2a,25360412305f3859c56745cd1a4e69f0c10fa7df
e16364b567be80ad7a555d24f8d9ab9775f08dab,7245f74e9f771e5aa2ebd2d2dfff6f0ba0708bd4,55aff2366b53e7054f955c0ce23a01d97f002545
e1651ccdabbd156f8a8f155f654ac0aae684baa6,645e2963456296199a51c66312ba33785cb473f9,f3003f1bb5474f1958c3571c3d619559c20d3236
2dca69f2accda9ee4f6af3a81469afb628ea20d8,f9667df16f143da6863a995dd118edb839e42f04,33ce4c5fcefe3b1725747b076bf14791a3837d7e
2836bf406d6b7028f7012f055d0cba3ada8052f4,60649204add844e7e3f76382030ada4ffc6ccdfa,c1e5f347bc9082630395d9807cfd30c343ee20c5
feeb22b602dcc91f40644a731609c96a79298845,8af6ad91487dc3801d9d3ac5d346e372dc7c93a6,ddd4011b085765085b394ab702c596397fb47461
febb45c39cff64cdd8b126804b921f2172733254,49e7a98ca1f342dfa148e0a27172cc91670c81b5,2d42040b1d9f4688542250abee954ac8b6746163
73acc393639e81f667b6b981a7c802e306754f77,1057e7cd2d6fad5ae65bd931ce4a6c432dfff4e1,ffdb789a49f3f5874863bd35bc477a974fc2e267
ff673eadac997e39822148a313b9d343ca9c40f4,22a1acd610072a1c3b57e0a8d60affe0aa8b4aac,52da2011dd3660d649a27a859eae74270249595b
13346a42bccca70bd5bacfb1a16021efdaff2879,9b783281753a1b7b76feb9b9fad04975bc7ac109,36a2835f8c95290fbd3002700726d4bfb2ac006c
4096d9b74f2349f9b9b8e3103c02c0be11c70926,cc27a5de78af99553252ea99dac767caafa6a6bb,50040a2cab9975aff6974bf462a0e2635d9b84ca
1ca9f9af51d7edd44af9c777a51adcfd2e3a6abd,0778071be7a1d3c3360d5b3302134801b539c666,9f93b88c1c3297900ff522604b0803534ba85d05
203c566875af40cd9ee4b05e958aa3ef52b218ed,1be741681648796d41bfc5f06da5ef26d4581541,a518fb1fd55b66684c1b327faca4ae5104ac79db
38537fe27fbce3f53a21a467536f47d9a36c8d03,24760621984e934604baaf60f7937f0222dddd14,c09e8778bdfc30e9dd669a6ba6d18de952befcaf
49d66b8f2018386d7512a5abff875efe82ec1a88,1bcf4a5a8cbb77ffeeba75c4b33619c6d434fb7b,35e52b90f5763f65bfb6953d4b4bd0973753ff2a
a9f3906dd552a0a2e467f3c0dc0b40f9f55b306e,a748d7279c85b9bccc82d5ef55dd8812f22bb9d7,5930ffa135642726faf3d38a7e35ef5ebd2d1f1f
dd586da7093bac753ea54a5a7a1ce72a64ca919f,e1f7b50985d6b5d198d8d8bfbbec189c0131761a,fb391d571a7cf46f45d8c8b6d5c172f4e1604c0c
e19103e9a9a7e2269542ffa44601a674a05e8c05,1714dbb5631026371f0121ef454f17618b665ace,81a1447b542ff826727ebace6a954c02dbb475e5
374d22b5eade55df7ff637518a1cb6ef83cc81de,9c6d1d7dca95714ae3cc297b3821023f46cdb407,15e7dd3d9f5d94136f00c29235f9ffbcb8a5650c
9392e62935ceaf9acb8319ca309a7aab55ebfa81,7e69f399b34b34f1ab3dff11648dc3a61d01625e,91be1793779f35e0ba8a9b46b6b2e23fc7f7ff1f
324b77f3173877b6bddaa2682483fd1205ed1a91,cafcc1987730bd43292619f7008a424156102aba,fbec954de945e88fc026075baf5afdc43de39869
30bf8047aa3ed465b345485fb693ee46fe814643,f7465bb3ec214d2b2839308f78a13dad366e5ddf,4603b80ac0c3836ccbecb6f5e0ecb88c84a99b78
e1ea58dd2f19717e0c60ebfe120764e874abcac6,0210254b2d58ab371f70d8301c2681fdfbaf149f,397745f49a4a86c5f3bd9c11e39d41bd98e949fe
fd0f72303beb9dab2c170cf89ab57e45d7a7514c,98fc58b229559faf30bee6497223b47cb4070892,30a1cde7a5527cb0a4417a2e053dea2de0f9d736
8fa439e64dc6913cc2f4d5d3f2a3f261bc70257e,2df57e117b52f4cc72b00837141df6ad18405cbe,7f290c27ed72aba72936eb27550f6213dc2fb119
3b455c1cf2ed22fa5a645aebce67fd1066970e8f,cf4d02ef92340976b686df6b58ceef8965fcb77b,63f91a768c34e0a7cba88de066b9bef0629bbcb1
63642b13c8876671ba96ee0747dbd8119aa4b78d,67f89afe99faebe50c6177a2112aa5c56f676de9,0c3f7bb6645cc2b5122f78fcf12776a1da55ed76
d63b6294b5e8b033f98e02b0654572964c5f972f,b6b3cc88f864fa2caa8b609e5acabc574a5c778c,64a7bc13d614b1f396e0712203813b5c1bba51a5
d2edd6fd2f0bd37367b396d23c8c45f9a28c6f64,ba78551c4fa3a74b161acd58b423378ac983c435,a6b508b09464d31e8fbc1a81f2a97b82cb5273a1
bcf77c70fdee6bb18be5dda3978659cc8cfe6618,7b2507456c7fd83d048ae24796b07c9f2ad60567,b0bc73b1c2070716c7295981848c9c8a229ef5eb
2eb16fdd5f799a4ced326a000b6c577dc8b989e6,abffcbb1ea2a8b3732ef1b687e0c70c222132234,24a5c24cb618ef4e93f9f503e88aaf57ee23195d
2d45b2a105504c69db9fa25ff87c9a35652ffab0,5bbd1c2172d2c2807406a579e532b69cde860730,b35bcdf7b4ec8e5a3072589003ee4ce0e6a9f3ea
7fd97011dfe657eafec491bd68cd8c495f73e94f,774140bb840b31a4a94d48dbefaae01e399169d5,2252beeaf20428c738e516acc9405da6c21ec5b4
d1c0a1b8d3e5f92931aa2738a433a058ca188541,62fe06ce9e5379c6e35afbb76959dbf3dc2e07c0,e34a5ac44b6ace7b9139df78acafd9ff2cc58be8
39ccf7f23150a77eab8e68b3be91572758292ff7,8f1ca3773c036d874d08793a72cda3480cbe78af,a88ab9e23f422a619b342dfbd4c10bc4f576a19f
5bb3d0ed1884ca58d1f8c4d6b1b3d20d6325fb4c,16d7424a7524568393cddce25abadbb0fdd54aa8,ef41312308fac6fefc8db770843624fd3a1af133
b081947e491b44fc2fe613030c4ba39ea99abd39,54175a1abf7b6eea16162ac3e79c5a1d3b2275a9,df7aa2c1d1b5149a00e79c442756f4b8d5622f67
55196a4faefd9e2f8e65eb02c77098273ae81a27,307083a8ba2671619a43e4f086f337b754d5a76d,52fdfcd8dbb03330dc84aa6b1ca75d0a09e706b1
abc45c7de423d2b31028997a963ee1a86b26862a,3e0db101b9d3a3a219885e1c529b7be285cd02dc,c9a2c24874a74fc9bd0345d6333f8d12946fd7c1
3f4c6c52553a8003c4c14708fb2b9ce28d6585e1,6ba28372dbb372891dcaeb468f03b6bdf1d203b9,e2d466f990e8e6a644732827994342b85f2763ce
ebc34f3dbba039e1df2020a8ee4c825a7c7f2ca3,79e9b05e03613b4d369bdeda4bb0aaa498c9b65e,4e279d1a189eefe60e02f83307a229073f30db2b
e77402ecb4e04bf9b00778ea737df0a758773820,20e87be824543c43b6b57e8fcfc2a46f538c33fd,c6dd35bc54c303c4ac114af97c85dcfaab809eb2
60774990916403f6ee494c7611c6a9dcdd31b7bc,ac23be1b4352755866926cef44b452194a196e87,0f9bc0ecedef7254301543c564ae9b4a9516a7a0
db612173558d796c50854d61b1c218849bb239b2,224a7a8a5448442da597dbbad120d46e7b24fac0,265d51a912ae34663d1216157521a990935084f9
6bff15a0f3a96b52a8e4d82dabec0974b9a2379f,ec310eb2f3083b2e260f1b9288592e1cd5dd7b30,aed1e0a5e26e2ffcd988d56b5462b461431cea01
63d64cce41a7215f993fe76e2c3bc72b73f1d4a8,971ba981f73863ac6d6ab0183f79caa5142c5986,017c1abfac10b46fbe87ca64c166379578e794ca
7ca8abf1e0ecd801a02bc40bdd395be82ec0ad5b,9616ff0364dfc5657519568903132b2c74598596,89fe91efdefe696b4716ac18d9616f833fda869d
7eb36c389b0a42d8aeef8e878d6913ef4c21176a,4d126cbe5732453a94b67824d5cd137a3a4e9f1b,8395118f43b8a6dd1d93f2a51a583de51e63523d
321fb59797b42846e2fee8a3885745956ccc6e92,d8ff551103c0925239dfc645b6fb6bbfcb5ddaa5,308a71c79c52daad21eb9567bf05e3b094605270
038b01bf23e16029acc109467682249a38b7b24b,1d56f9f32410990ee39e2a15abc034b9e9dd3a66,1647b998edd16ae68985095a1c9c72de30849059
8b019b61c2ba3e005d27725ac621ceb2811eaa4b,a56c32993795d81f9a491085fec70d2515530a02,9c9ac092a1a2b4a12cd0662a0194dd934c00d1db
dc6d842dcf2f28ef4d11acf7a237bb7bf84ccd72,82d40c23e7bfc510f9d047c87678b1fb1d63bbcc,3370ae1806522ed273c7433c211b28482f73a6c8
fbe64536d1b6bd12b233ba65976f2faa89239782,5676cf4c1a22468fa9056bed34866d4034f69a8b,31d831d7753354c9f9a0cb49996488c44674a79e
3dd21b88da570c2c8154687d4244e99653fe0f66,d37669c54a4428c87f7c350ef3d0f22207031905,c96641f901daa34aab14f6ccf88e860039dbbaa7
decbac8e8b165037ae087bff614efd538eabc100,83f7213b257ea9f320a589968e46a2c79fe9163f,bc641cc76be7375eba14e343c300476d5af95f4c
f8ba9e4760f9fdc31bace09bda04859c35f59d27,692cf4f2bcaa9aa1527883c70aaddea672cf3e8e,4f7c2890299bf18f9ae0c274f1eed967005f2799
e44054595419ac91c0d37510ccd7a426a7347d9d,803a6fea24d5dda205849a092392c555f9d39338,35ac20c1f0c037d14344fc146306586c37923e34
d7481249969d552ab056d732b92e14d83a237100,193cd4d6ec0cfaeabaa2132abbefe06227e6778a,cf1683d14c6f6b9f981ed352b99cd53da37852a7
2ba3a9521c767b3ab326636bb93a1929fb13d07d,854d944cfa79e7308304838fbd208643df9248e3,dd1a1d44856187ff2e0bd18ff07a2072d968440c
0f0454a0921b31cbf80dc52b83a06f8860d1cd06,799ef374800ce898dd5a1895cf0c80aa55c3bccb,9fe073493a2b71d3f7a80f57861d52567a05b98d
82dec844c32a6e60a978828b65aeeffce87798ba,b5e3217bb53d610ed9a4eff585b46f72b79af060,3c0e3b1a3f6c106bce80b1e9b490d75635c9fb53
21fba0badd33ef32a877bf4982438a245ea90a99,3db44e8d8ede4f2e7a48cdc9861d67fd350218f1,6c3888f568187850382f5df3cd0f18a23f80fe0a
9a9bbe5740f376dd059525860ac3b83611f58104,2d621f010f075aa936cf7be3b483ecd43a49a62d,5f14f4447b181313ad51c70f66ea035558ebb769
6f09604636796401a1184b55e9279150ce0669db,bdfd7a66eb1c11e513c222bd30990a9f95813d92,95886b7e0322d6d155b8eb3cf7f8ea23a0245b83
5cc4b7531d7872b6d6a1fd2540f8e627e3992f27,8fb803bba637103350909423865821dc143204f4,7b649ee9a5eb420eaf395e4e3e93df2ddf8388e5
6bf7e4c0d3b2c300790ab5bf8f9fd7ee2d14fa1e,fce4a953a77845c863ffde49c16eb053279e56e6,afc981d2cbbea26e78fe08edc8edc3216d3b8eb7
811fb284335d6abad7ada6559e717eae0cf57942,cb2fa0d2c1f3711d62a17b3f4e2a4796390527c4,6a9a416f84d4fc5d70f8f719b2171fe098d5e8a4
5e6e24ec086b5d71352012f55b713d264f60feb4,e8a03ac8bc1319da1cfac4e3b753066bc83d23dc,a160b2470b1ed43f2e0260d2b755b7229627e86e
be78db81806f362ffff86c73e394c73265da80f1,1ea8e8bda283f48902453580be5e97d71b455ce4,e4fb8aa30ad3028a6641f972c854dce1fefddfad
07d4779ee5029e707ad33648016a8f3819fc0b74,f10f1b59dda3713fba7f6a8250ad7e8fbe1d618c,5001c72510e19226c1ac822519fcf69934030c5f
9d9335dc19d4bf109a8a19818fa74249547eb7f7,b9af293d35b3405ae6f552385f087103d3198b29,ff0e82095340819f20684eb98b13b2b99ec979d6
6f796034db0f43140e3edddd4025c57591709d13,8e98e35ac288bec181a02a8f690cae89a2199a10,d38324e4e0239e8c3102d3405b2fe3cac3db9fe9
1d4d71b5a0f7e70a41ec79e99ba070b05e5a806c,d9c1efe7f06a6f1408898f0b59b10f58231d691f,421347919ff3d263ffc3385de354e3ded3dc3d38
0f26fe9d9a05717c76a26b034f09dc4f795368a2,c0d8241b5df94314d8d255f0056f19c4052843af,b82e6e6f237ccc0443dd536a7d897b6b01a0f338
c6143900525b74ca1a40055b7477e0dd28283571,4b30e836062da10df2e43985a108e3ab7a1b4d2a,febb70688a46818adb9008f17dd632594e687330
edc92f26ff8de0979bac08a32d8ab33018c9d9a9,ececf26d872c9fdc0a315c6289df864f66a1f69a,d956be796b77964e9b5a6df00aee775b1f3087ac
9db23894a5d67416a1a923b7d655e7cacdb25ae1,3daac41f3db8722cab6eda7440e05c53ef6f88a8,2f8c0c091c801c5a3fe9247e927beca27f85630d
2530ac2641c577124ae19a319601438573e5c9ff,48ea716826e215ae671f07dd8eb31631e2c363f9,b12932c7f880a8da618f9446229e6de9b6c64c76
da7ec9acd1c5c570cec0eabff977c7172db973d3,d1a12846ba6e34e90e33e5743d3406a01547bfd8,89142ba73a6dc1dbbb2bbba97cba3913e99861cb
bb20f8f31809c40d116653b518e768ee1e0d3dcd,6b636fc22d23de42c532a6ac18b4ee0d93ec87d4,97c60e25a957aac4f522f0a880a292b39e463d51
bb3f9a24541e20fbc316dd626d92689e4250a9f2,0e68dc575b9bcd3871e32c99efdb51265d44a0a3,b36884c17106f83f663ccbffd5912b043fa7c73d
9f38ebf2c92e91054126275aa4c83498db41487c,cbe5fabd3d991807f5c99b5429eb1af49de6b6c1,541ba50269f824293e3bcb348e41ba8d30fd1eaa
0ad08332941bc3f0f60344d37bd8646af838faae,18c8066528a8fde579abbd546374db0cca8d10b4,abf3ce721ce1865f6aa683a4afabfc98cd38ad08
f8e277ef0ff61ae2676f8c60c9912b5b243d85b9,820830cacc08fa7620f8a0cf1f7d6828260261be,71ebbd7cc3eee078e0ac5a72ce8568c6842fd86b
4f055a92544198c03e2bb6e10939a02cf8cf440e,42a1e427085e01b631fb2ce0b26c4e7fa151e6f3,7438ea1d83ac344838b945bc9c47b1ffdd866cd1
38e3a37b82b421d7fb5ecc4bc05b3ed2a7d9119e,a6353fecf05bcc8200826b8ac8442cd9622428a2,c3fddb91ce7af1db2bb522fb4e28e06c3ad9970d
c844b60fe1530bf7f545aa5b92707506953f89ee,ad33900090a34e2e81a00ebb7e1a235b923528d7,fb43582e94bbc5160179c867857cd860b6b0eafc
dd99cad0abe46d95e6addf292ec58d3ff32bc000,707f79d52dd0b4630a72123761d59d4000d580c3,97b96825569a693179b5c839d6d3ad6357de2aa9
f462aa9cf1addaf2d6cb8cdf1afa5bc938ee55f1,fa1ec0e2912bc99074a60bdd7d0d3740b4dce3ec,7a1195976feeb002b1548357ae9363619d402823
fb80deb52978953da3a865a71a4668d3070bf510,eea13aadd4bfa0a5b6765292ea49a9a20403aff9,c69bfcace20f8de3ab746b758e33ed0319975f6d
f1317e893d1c0b3e7f1584f1205317d547f5f685,8533759737b42137215fc7a769edb2b7d60fa4f2,da1bffd3a60709f20b60d75347c6fa9093877e9a
b9544ad342cbd1146b8518cf142caaa8f2f95b2a,70d25e3b60b2b1b4af15e81b24b3baf2a00fc3ea,ca0fbc1de62f08811833b19830bf0c02c8b824ac
ba559329292b7e06efb9cc1b22d86055ddd41a87,9a9e2e4ae5130e65b59b2043cc615c5e1b25c214,e11838c5bd287f9f07a5470f4895195445daffa2
f7e4c0f28229269a4e59aeba7fab6243b9eb0e2b,9845d1516244ac3c304b09fa0f1f6c1e54bb5c12,261e66fb845830988ca6d9b64b84a5f3709dd5ec
b317f4702936b3b71a862b57cea4e960692fb5c5,cb2d6757327635a86e942719fc12deccdb087e1e,08f9aaa6e62210ef95f34f33bb86feb30497c4ab
ede47ffea9fab9f2bca9c7bcdfb9a5c6c1f63b7a,d9ad6bdd1f2d586eb3e199b26ed80552c29950fd,e3f4676fb089a279a5c4fb8eecf5033a9064bd95
dec6255a190cdfb47f7b82167ef7839e317f3bde,a37430c245d8ad18303c18db03d3d98a3061be66,431e42c8735f4f2dce3d22b605dbf0469f12efa7
fff60f9f67aafedd5369c1f8297ad56235a6ae02,6ff403139875c45e257ae3f4b291dd6f8254d1f8,0680ea46c85c1482460989a78989cda79f1dc89c
1a26c0ccfea520bed7717b1f72aa5fec6ffe464b,df2488ea6e9f0036a73b18a9375b0e3da1e8777f,16b14c574ee9d97310968fdbb6bbd484ce1dae71
da4980c4c0fcfbc1e588064fc638c63d7a201066,a5f1600275c7a82972a180d1072733d55955e1e8,595402cac7e3e60ba923834b2b5ebdb21f7e0a74
089e7ca6c8a1cfb24f80383afdd26ccea01ad2b6,84f0b94549750466a5f84fc63b9130f865e6b4ef,3a85a5a9cf7e66c8ffecb22e1abd10f3b5376693
11b743fd6ab270a5c34f65ad1a133892d53ed3fa,8e66041b7902f31a3d741ebeaf8b321c2990d171,a3f221e189506777dd25308f67ed457ad121352e
a353d7c65b747a5738c0e4580c31e3e6666307f9,7aa2ae7b3611f9bca56840bb191c07cdbbb9035a,2815273cf098f3085c4f1ca24ca96cc75861f3a5
71c6b6be0c15753b2d45700b5d9029ae92a01966,5e2f088a5b8f40beb1984b46704e2a60b0b3d524,6f5c6ac4107526e2d0856c715208ce4fac011fc5
2ad20b37874268e9fa5157d1da4073c5b6619913,5307ef07c43b0c3005f7d2a2da89b58cd2690993,ad637e8f0931eaa2f956c2deedd7d74df310927b
d8fa6e6a9cf4e197c6211a8c549312a4c4cf09f4,435861b238f125b81184a4bed40b6447aad88686,94cb1c3a49c870888ebcec5c84bba9e42140d4d8
922893ddbb7276d85159ea0ef63f7ebe8f11c2df,26e66fda756b3d75dd22b84c3a63e3f49d25505d,f671db3fa691b70f720b266dc25c6bef77e1288c
c97fa0a05da6fe5fa6e630b4054509974a624bd0,a23441394b658df01247b5b8d874156356e92a97,5b9998e38b04fec874d0441b625fd25496ead304
f12abd03ccd4f1810c9fb9bf2e2c48c3400edf62,aa841d584d036accb81af0e0a79c364241d0cc45,32465fbdc1b0d1d9c2a902ff7a65265c6484eeb1
8c620daf337d8a2794fa49e1f950e8364e8b7d50,0bd34bb9927ac9198c9ed2b3d3459b43ad530c8a,f73456a9d92f7453e80e4fb751343c0c2e145f9c
1437928ce65e927a0e0fff4f20dfb250c98e7dd1,c1be8e590d38ee004ebf1a5206759669c77ed5e1,3f4c41b45ffacda2defa96b3fe6df84f3c62e448
e318348372f0017a23830a65f217fe50ec5c5316,e523b9b28250353280ae2aa0e4a9c6687d5b17cb,267b99a8aadd1517b6afcdc81d4cde4f568e5903
6aa1f3686e3e557bb1d58b1195ef2080416272f9,3892bb265e492f693c20aff1c369c5f186cf0c8a,c48a8ad31fa9b549be358497a7641481c1d98581
3c19adda78114804ebcc8d923b155b43f229b99f,e0c41ebc5a882278c58d56311e9180bc6720c301,ea18d11d410b6b6cb8f98f54cfb9fc1479c474b2
bc7b113e09d921871c1ecb3c5ad108ae7e8ab010,fa9da559fb8ebd57b55a4a58673d4b30abeae481,c2173185e7996689cab3b5b41caaf89760b78d73
d911e462b2a85b7160400ce36755003400584282,ddd39227eb42f666a341edf1f4396b6e572cab2d,51c3cc97fa2de22bf58af54a84786d98bf36d594
48348ca7a18dccd191182326a9eadafa2db7a61f,86dde7821c25f573d9d52979a419b7b453a4dc09,f477b94f0f6ef9fe178f9c14b6c5c6e8b70e1ebb
c7db379a4fd80a492cd2c40554d0260ee4cb74d2,6bb5c3c48cf0c38fe27fb5f416572924defe1b95,bb817db47afaf781dcc8ec937fd9ad93694ed032
c4061e49e61398ea21466f63d6b1430efa3b7627,985dec61b1898c9d8f730ece7049748dd0a9742b,6b569d0ada1eaadd2384c0ff4f07f0554de3b316
edabca144788a9651c22e624301346aa95b1d9dc,db23f54f8ce5bf8f519d0a7673476210fd747054,0e39e7c12de0812c6daa343796c4d2fd148b1b32
e81cff0408c5008784229ffd1bc1cac39be8854a,5b64e5b9579cadd9baac768a773823d71914f3b2,8b00598cab3618b66c8b68663750d1fffa4ee85b
59128241adc5ca60b513cb47f0316df6d1adbf76,0f07c966b62445ab8bdef939ce15f460c9beae80,9584348c407935d8e306cc9750195c10a4aa4518
ce742b5b4d7f9f750a40581d0219fe2f6d704f78,d50ef3381fa11144a75b300c21c2605ada94b6d3,fc9719f5f989b7785e7d8ea06f82042e49f6229a
9782b206cfefe9a03e5677a7204673d760e8e9eb,59fe173cc7e2f1da36571d050776b370dc72b211,557a324473694e56ffd934e2f9342ce64cd9b50d
44e2c05ef75525f337bca10995423900840bf4e7,b003828d260b8c229d93e3844aebe7601fa8207c,bb2e626fc39410627cada94e17d469e8102fe136
286c823e279d472db5eab60693ee0816b3a92d2e,23e514621d6e5b0963912debe801603b75f62089,f88ee7b2d8053a1599facaeb0c065c216e58ef43
287ef8e79aac426249c59181a07f217ebe95986b,879f48d2151cc48a54cc11242d0aa07150bf5e8d,0e426db5de52a548c18c13f041eb748b27fa62cf
38d2f3d58cdfe477b60f3abf4dfe61ab76ec6cc1,237e2686f1eeda775d7e6ebfab826f34da3a452e,f9ecc12e5bac5414286325ae2f940de555304fc8
6f942996a5870c36a5178a27c21cf248c2d3e894,5e9cf637d36db400f9fc7926af8b51b5ab9b8215,b1cec6de2aa6845ad4b891617fab6b134f8ac046
84186db35f1879b102759102797abbc4f9b90e75,b3e64d70e7b712b675d69a3cd57ad089af5c5ccf,da37fabc42ce12bf7bbb5f9ea75a5eec7a8b7b79
545978b290f97ceb0de431e1d7bbc5f11c7cd19a,9f19f582c414a2543d1db7621d1e1fd3db60ec47,30b745758cd8573dc0a05df1b51ab2796bc61a05
fbcdce2c879f1381aa1f13ad37c6839c11a3468a,0bf609f0f0989a81607073ec70e7f83589f2dcfd,d66a8cb90220883ab66f720b87e8bc9b7ddf6043
84e2613ca87a621d53dca817806f6c66332ecbc2,cf21365a21993c145e9fb7b99f83dfe54b9faa1d,064172d65a4bc04e8205a0c5b560516e70180b83
bf29f2051c6408567e61d428e10b348bd9870861,5486182f568f0151894a6223e8a4255a522b2376,31dff18a61e5ba7bbf0be67c466f0b481c262836
3defa344709ecac3fca36af91829cf48c30f6d22,74c995c06b7759bf741954b2e51ece96b9847f75,b4ccac8defe602648cf287c6030a920b301bde46
b521ac967f6ce6e802521d9ec385d34536abc9ac,1fafcbc12557e8cbebf0d50168f1a6c174c511ad,a0878c9565e5a2912f645fc2ca29a58c418ce503
6fda6f79d8d31ac5d0014aa281e3f374c4490add,00330a562c62423f9dd4579d8a64e0e0b5d4f1f2,f4863177b6583145162fb365e6b6cc24d9bdc1a7
9d00605c358778bc44e87ddb9fe0ba795a84ca1b,652d41a70a9ed048c56bd12e03099484973ecdb8,55d33aa6a777625baa79f3368459f60ed1abd754
4a88ed950a5ebcf9231b587e28541a2328e5935a,48385fce80c853402b1d95c930e54861e1d34aa5,39ef628a771a118159054465a13108bac3936705
1866aa1515412eab5dca74c54c3e94c85b4abd31,1f8865454bdf4df751f16646398e49a2629ff593,01589aa69367f1bc7160c3d86b1e8f2facf2353b
28dba2e7217c7cb560ec81fe6241d97349c3663d,9bb1cda8b5ccbb80e3d1a65cf6d490bb7bef7939,44cda176749d2e50e9b7de9184d475b81f224fa8
acf5675a909452433618b11daa267433a1beac01,76becd36b7c0e19af8860b0d13d74ce8d3cf43e7,a36fca37f10da90ddc22569d6913ac7dcf9c14f4
1e64126fbac65075e31a7cf2e675057e71601ebb,5ba5265fe6da4187b4af25f2dbd519529d33bda5,0368e12aaa43c2479ea5d03adad37ee551e74c7d
b18c10d0d8930b3e49e2e9f4eca8f9b4b09677e9,9fe395018a371ff4f0a47dff05120e779da01f48,55e72fc0f1505c75f60af706736d32ceca9815a4
af1eb33a7502c017a4fa2c7c739b6a3cff6e962e,f4da88726c208fb12331e2bb4ebd8998977fd79b,6045b3a6bdca79be9378337e28c3209535de7c4c
f2d5deb26d396c86b9ff636540464d065647a91c,ee62aa0c13c3f791427361ecd7fe2ae26b7193cb,1529ff773fcf2570859fe4527acd8791bfc2e19a
44cf5d776f92fc30a581e6bbf8571b07eccf02aa,9f3a50315b1c2fc5c3ab09eaa8b2f5b1c40f7fcc,29f7b41fc6244cae29e2e5c06eba02bb447f4366
b0fd2615194fa74e8b4de328974c9834e6ca06a4,dba81381756d73ff6bc9493bf5e6b15197d0118b,36ef7ca8db12d0ccb55bb6a9548e10392f3e377c
e00ab511856c3dd35f876468cb541eefcb305b52,b2a13077c0342db976b79068fc834eab8661b340,de69f1d858256f49a13e45731bdbfd1e35cf9cf9
29c875897533fba31dd98c557ea1f8a3769e3422,0eeba27df610bff57371ec104470bf5b40e764ed,da47c509dfdaa4bdb4d92a4935c4071191341338
c7426a37ef17dc736fa542767a2c7406e201919b,d0fe59feda4b322ea698b48e5614f9e7d8814645,0bc1d8d446274effc390d271a3abd643b0a5bd5e
b054febbc8e2a927629eb888105e2a6e0a4a84d9,80d471a9f1c300bf6899a14ed6ca476fe7862ddb,038f054bdc1a88295d1e217d3391840e0ba01c02
90e0b426ef479cdd8879cc95b7dadb8d4790d45a,e4ebf46df3e1139215ca5cd6f7bc64f6e2f9f50c,50344403834db619bdbf15f42ef88bce903d0692
04b28ed5879408ddf5a07015057768b76b2af9f6,605a495db1c6962ab218457ab4799a5ddf680ef7,a02848632571f0d3cfc676bb8bb38161d4ce1e0e
2ad272f03f9f0dc81ba4d1fa4718be7eae7b1474,b5fa73b82c05ae51ff1c0b51f50de32c7a4491f4,7080bcc16000b5f14ea81b0fad40a8ab0b5f9677
526de20d9a1850e6913ae15e599ce8af03fd6666,2cec31d86f232e5c47fbe20dfd115d8caf2e5ba5,49ce3f5d2a0e65fd340897a684d73ae370e6e624
beca14334c4a38174c0dd6d628d81e4367ac4969,736f5edf98ab5e30efb82991e0b2618906c903e1,e3d3fe654cff6287f97ecac55de2507f521b42d4
9fe4e1247f19a4865ef38479fc588a3b8a1dd63c,be0e06bd505738535a51f22c96f7f235ba977af4,25c75b1784d0a0d37337c15810fc7fe462a96bbe
4363c0b2292dd11aee5a1cbfb12c9853329bad1c,b3883557506f6f61da10b3e4fc1015a6977b263e,589fb20386b63be2f90b0fed86868be88d2b878c
0b6faeba68f1cc4083cc753173e8167d4c64e3e0,0ca260e08ced39b0ec1f111b159ada45060dce44,8e024b26068dc29318759d15afe6963d9b6a3a01
b41a0be5502ade043c63e6cc31fa7a4716e1e519,5181d57559dbac0c2fede6a3f9fbc95db28ed634,afe2e80673d93a936d245e9adbd6b7ef2f71476e
cc3f4508fd843500846ab5caaac62e41dad3e991,5fab6cc5e00e52e60bf6155968e9c950d5a4079b,63a8fe07ee7226016f9e2edcd829c03236829584
ade7af52347f580b26312bad7b6a1f1f01f9df22,d53af12a6dab99b71d8598aa82608e24c488b15e,81157e9846ffbca01d1c3e9f49a218d15f51ab96
bc1c93c05fa4d1d595b33a5cae9ed112cae503de,5205ce30f4fd31e56701aa9bc09ae2b56a79dede,2ff4fb0e151d84186b0abfe7692cb44fa195dfc0
68668c649e5aed88bac022a11a4e78bb3adb3a41,032cbc54a77be957e307acfdf0fcc2636664d173,3f1d62af8e91db86d04cf42c094e17e64eabd258
594090b2157717710c8520272a555637aadef96f,094f8a7be7468a6465981de4f6fc4398110a7581,8179aadb2c28ec3ca76a88f879b70bafaa023334
972b5181eb6501c54ce8194c71ce67469a0a5fe1,d2f3426bda0753986075c88b558c5cb7e9d8f8da,386f31ef4c2ac15fa101addb4f93cb7c4599ebd5
05348107034f51b869079ec1b82913fe9b561ff8,b9ef7416f05391d8133bed83311230256732e6f9,2444c5ec790862b948d919d2c35e94fbcfc68ac1
2f9c1e8be4e8bf2de29f6d81922b6324871ab92a,ab3b7f8f69bad57e6ff9e664ac60f326d390bb6d,ebed69e8588775280a3a104bf0cec12938890967
7bd8ac25d4836f26e736e68b35981439ed8f2a03,d04547eb8309f2be7913d0b435208435ca871b11,9b9623b289073b875c8cfad7b43fc1a901f0a462
972b961f2b3a2a61a87cbbffda80b70a9b82d86d,a9ff6272f6825c7df2ccc21cd0448211b04d565c,ce1a82a1e4b72c032500ed709da6a216469b624e
d989fb9a1518bf88add6536f5daf5fcb5ee41fc6,f0b714d5adaa8a660aeaad55d73d6bdbc9805804,7f6931f685338310485c26b9c568213ef6ea2683
63879e74cda7c7d2ea7be1680e6308aa7862c87c,1f178d381fe9f66905cdb409c1986dacac061831,0e3b8cca8c174f3e5e6369079ab2d1f9e3ee2a4f
121f6fce223c975f5ec2d48cad8e40ae9c47cc1f,f2372c0c0aef6fe62df7d2a212cdc4bf8e7636ad,81925b7c1b27bbf95e5228cbe10671521db141ad
d8700e5190293045bafb454d29d4e581206a8451,c9b88a1cd0f02bddbc5a74c662a2c6ee299bb4a5,407fb4b1da9d6ea4072909d0dfb90b5d4b0f9d72
a55da71b23456874e4f5d0c8a91a1b09d9a31aa6,6e9521d99a8f1c6002f4b5f0dd55211f2229662d,6e5860cb8753189d62529ab327e07f6b83d0e629
e87e14c7cc463e3bd752d4ba00c442b463b5cc52,ef1cb852a8fe0d0fab065f2b24eecab37b7bf48c,3c1d50ab72a4d5b4290ad40d58c372e7e05011f4
903f1b9fad11f5002a26d62fd1e8e7cfc1f05697,4943e01e25f364ddb13ebc09c625d8c9cfaa6028,d32deedb4e7f2a6a23a887dba3197ae1ee058374
bc727f9fb220c61518b916307d182a02e5586265,b9668a88c69abcd7061bfb5a4baf74d83db13be9,d98d0c5e62b6fc704ff39364bdc20f66e0dd64d9
6652fa79199d9f0d0c1d433b1c7481571bae9f5c,9917350ef0803af661e14bcd7f902807a62f7afe,3e96ac0c4c7b51cc0694c837c5907a12be26fbd3
340d389e20f6d9a7fd153a8079adcb9c35d173d8,b61d85ad2d3dbf121e5eb3e59309f3dab87ce3de,ddac127347b4dca6ef0c0156bd60f27904431488
5a61f51b3c9cfa8bd2122da0e8747bff97e279f2,8e6bc090c2ba0fcb22aeffe9f57b5fe7257dd179,b7c00a2116dda984ff81d6e465473f744d59bed3
5b1574bd63c81a0d4d10d977bfe612355a54359c,a7b449da8bd0665b0000ba92eaacd12b5a7bda81,a7016a9ea014011d7d3c32ee77e7a7604eac4949
32137ac1605e47e9595d811aea1b5e5137d5a721,cc0170616343e33dd9e40a23ab51e601b63c59da,363bc3e019cac4f6c691c1582ef04731e5a21c9d
c29dd86bb2cc182eae1540af0f0dfd4d32f0f95e,704ad21b239bb328e15f2d7fbfd6ccf4a23a89ad,5be05044ddfa3efd3baa1dc808e2a2478682b612
f3d93a47de53b3735b67c978859934505d2ab476,dd78479afa84c0819c65ce4b7c3c61dcbb357a3a,4a1db1dc797edb2d8f5aa89ec3b8fe9e8b2137c3
3c34c8b86b456574518ce6565d5ea23d65c63402,33e9bd3c7484a376e155d08abfed75fc9befb2c0,cde3dd3a877ec719ae8e9cb3e07e46d0a344697c
e5de38c42d7e767a8625b4042c57ad64bdc941e1,7bcd8dc88352e49a34d92b2d4e2db7b469a3342d,131331bc50fa06099c49c8aaf7466ee728ec4be3
2ed2ca5cf0611267f1f0d58f164625cdfbb6f858,98ef2773e01cb66bfa25c72f6cd84034f6eec22a,cbcc7c8d353de5e128ff76745e7232675f66fc23
b164817e18ec4a6672cd42e24be79e3dcc2a805a,d287788b573958f0d316252f15fcd71244e8b095,c4c3c2a7aa39e10488c5683a24f692340a2f90a5
5508272cd545ea733e5f204abeb3a7744e7c3019,ba773e3385d908ad2ecab8c6e50371b19a3c1adb,d72eaaf734e8cc074acbb9ae43bcf25154476ea5
ac0287b5e03f51ad3f45d1e5fb090758f9edc5fd,8d211f17b4715c3987f429bc5124fe823167390d,679f2f75b3bf361288e87d1130a777207e7c757d
e55f6dbb089f05fd0d6b41894cb142e674809ca7,998db01365d461ee1bb5d8209e13d64daaa793d4,a398da4c72b5a65018ff8f4c1b70ed574a46a95d
728be94328f71f8054402259afc1212a881df473,b7d32e4933771e370932fd969f26fd9ae666a3d8,439faf0da88cb10015eede0b7b8c6119ad740358
429d2cdf12f628ba3c6ace311d5a590facc4dbcc,29916bc6f64e0a7d0c745df657ad3eb7baaaea01,248082347fc619a7c4381218e01b96ef32545594
6b2e4fa4133a496c1c3f89e3c71fffbdd7c192fb,1ec03269951024d920fa0335717e9190ce1e90f9,271f69db12263731e2efb601e27862b7d97a0b8e
6f02e648cce588ad8dc849497baf40c16b556497,c2d76841dfe38444f78fcfd020c283ebe9937767,55deb8cb43ea8826c8b150be438eb7bca3fe6c97
e78a4d3899022e6afb4b6a1bd408b29c4cf3367a,5cc4d5248751514f960ccd3997d1ec0dc193c569,bad7ea43a8fefbfa417be671fefbdfe8eb124323
33b68e030a034a12eab2f51aee1cf6bb73f9ddd4,2db4cae7aa05c1dbd754744c608ff9c11818fe92,1f4b8a774f82ac843b0b3b09c377e6b22ac0f39a
a3134fcbfd0538c1de7b1b4b2892619389a92bd8,b6a098855907436db3475783b11518e36916426d,6f8fb64d36221000fabd6caaa0b1e6c7bd8c774e
25da420f61d2913dba54562f11cc0908a35765e7,968bd8c12bd440412ac53fd7765e1b8e6e1bebaa,72081c803ee5ea2007ee77a1bdae0f2a02e94c8f
6fd5b86cff2c5e04292da1e4239b93f34c839cf6,dbcab9cc2919b923595e087a9c4aac133390443c,9120ef74e57a7703bca8272ff833d48fd4202972
9ba9e886aeb905884dff95ffff2cc4f2a1b516d1,2c89ddf62b1156ac23c85bf5d34c8cbc98d9875b,af40ae2c9192d5c3ad8370d8ca7799e6015d6a23
3a2342fec4e810872748e3ac2613e552dd2f2fc7,f39cfc75fcb7da60b832e745ba7d442e039aae19,ccf631eabd3f52111825846b4911ee6dc918726a
692754b4228c0c97b08b2857362e7321eac7d936,54b8de47f0b2792cf8888774524c98655ccdf6ee,406313154c4587a906ff40f594e184dd78f850dc
3db14de527e34317dddcdc3ec53949818dcd9488,d621cef9883623c065ff5dd4d97dbb4cd49a26d4,c6fbebf6adbd5906a098cdee68dfd5830e340946
8122defbd85bee5b9ca4a2561f5ca189d40acbcb,f249987133a617dd1d86cced6e16be1dd36f7205,9586d3e67429139c22c2fc892acbdb752564c4a4
fe243540a871899c09e1f4a06bfa59628ecdc387,9eda172a485371faa535561c5428b5d5d256b96d,442e9d2573af26be3f770a38157ad14031a5e62b
eee6168fc14645350b787aa0774891006beab397,07a798f733fb560222e24cbe11647eb2a98f50fd,f2c5bb2bfdd30aaf65514c79899dc4d5dc1eee3c
5649ce150b66e35934033879931cbed15f911aa1,42abb3395a72bb437e1e115f24890c9a270287c9,8a8699ab6a5b50fdfc4d40beabfb2158baa2dc6f
7ecb19f906f3e9010174bd3d70dddea65a415867,f1e32bb187b6ffaffed39eb94e75d0b26be2c989,34ae77bd3b0c157043dd666e65667cb2c7116039
33917ee19bce8e2f7bc5134480221d7037c1969e,8d2e2c6c21df6487ee11f8adc28302c5f4f29838,59cb93fcb4d60f1a3a55e35d2f2c85f9bd5d637d
4e29cac57f5f34e5a2d29f1111356330f0f40154,c49123086d7911274569e7b81685d8d4e31ca024,4a0402f35843ebc5ab73173fd0f28d90d82ec75a
1f874777af8debda0affd60ee1cb045e4d1dd0ea,68217c7cd0661ccd2d38ffc0eb7df8797478a036,fef24dabd65ed9ed71eeddd256e6ff9f8e687095
e1e9a6728f7601f9994be89374720edcf408826c,82f025e9e7505259228cd1b1a1b18e81c9806a82,d85d6b4bac75a65672dc646dbc80eb14b6086377
932849c1bf6043f7c7f4f114bf26542f4f8ba59e,d009941744f5566c8e36e931c43093b5783c3161,0b65c173b8a6a893ea0738e78bb13411cbcc9252
60473c7eadc02e6f1a1f9750bbb3bcfdb38e75f8,1f91fe4b11d06cba30801be7852cf0b0be7a3b21,b81b818a7569b762f653584deba78bb0fca2a81d
a4c94c8b449d5090d2e781f0382a6ba3cdd29c42,1fdd4f8c9028cb0a55fe0e4289faba89bdf6d821,37e4fed3d463b6230c13eeb7ceddb121065d7e3b
d7812f6c05dbae4b3de71b75b6df7a01ca952563,a009cc5c350ca2cc1ab2a6cc96935e5eaf8c3aec,fb9bcac2d3c1dd1178b6a7ce090e0345014ad04f
3cd2cbcda8d082f06ca29ffd1f22c0f992f19793,5c93f3e271bc5c51f9be06f6c17b8804fa2f71ed,1e066ba0bd9d9f54e46037266eee818120080f84
24fcd05e8cbc84c6cc8281c4914bd560a36fcbdc,aa3f29eec8ef6cf9280699e260ee4f700e13588a,958f30f1928c2de6a5fb8882b94ecfda9b4e4145
0750777fc8212c43ae7510aa096383f77b382128,e867fce88370c0d2a029b4d3099c0f0566eb0b0a,93a257ab295c315fd190a953f2fec2f84aa0ac5c
70839bd7f4cce7b299474c14c32fe06eefe8afbc,14cee4c15272f8b8ff2a968a23d5466a4603f536,09397bd542ad0f9d9943a1aab1910c89aa968676
ecc56d7e680907486fa248a6405ffc7d34342980,34519c67a10288a961093e22eca9796e3b77903d,8ceeb8d1651cb79690f96b46f2be35c4ea288789
005cb5914c39af54a599465582c494e88ae45bf8,be5e84715cafda42c8782a7687b0ebaf507a2693,fc6fc6729541dbf9b38a32fc60946dd0da1a2af7
5ba83e8d3544681732d870100c54f02c71cda811,dd768554b48dc2ca35580a6617da9717d2edfd32,49cb7b256476409924c581145a760b863b9e755d
2648f8151db723ff3f52a5ee6a321b378fb65d1e,a462acdb197a0748bbddd7b96b26f00bc696c8eb,ee8903ea7babbab5c1e4ffc3b9ab5cbdba360b7a
a9ad18e6238ce217278b76b9ad173e03466f7a0b,5c090fce2ce9a099ad52ea4aadf7abbefdeb67f3,776216d032717bb4bc35a0fa02631d1030a16721
efe31e1e554e864b3358b825f1bdae1faea2940e,0d5f7fa66bf1a9c5b39bac5b98b7eab5dbe0f194,0e0d42f47274c89997538c9dc6393749067c2727
a5a522563660579d68bf62dcad3a0046e1661b0d,5f0c03be10a91eade862360b770b8de3302794bb,2d407362033c95dba37288736b9722a3a4cd8000
1f0488a9553fb0134a3595576243b9ec509427cf,ae5a15825a07388d6de7b296a28a0defa04f3aad,e549de1e3a6a8b1bb1c3dada7c8a74caec25b5c3
a55e2c682b7ee5689c9104115013fe1512039bf1,79d139d494cfa49678643176ffbcb57612633f3b,3a5cd0760a6949b46a003b4058d317f933365084
c22d1530f716540d63b64504c3d3943a87fe4285,84fb1c5a6888789d2851d056f487c4988e6561d6,1fdc6ef6a7abf174c93818b8d435018c089c3aaa
659f7303b9a0b64e1d34c843c1a6b01fb4ae8caa,7eb9ee390aec13dda219e239462d5846442a664c,09be1dfee1541a24f465bc64856080e9fd04e7f9
409abb8a43407d16e9cd25d3e9dba5a6aacfda4c,9546595c1588ac316b6f5f271fa7a3bd9bdb7e7a,60518dc1136189ba06d9ee28100068e97fc0f286
f923348cca415e0312453b93dc9728b6945ee29a,3539b4a6f342a641418d0761942352c158128aae,c06bf85045f57a93aa9ff31e7789d2f11e5c455b
89fb28262d8757583690a328bafcb5500643a598,ab2e02cc5848d2bc058e1acb144f75560d5f5575,481f0efe94c5507d4927f697df395c4f50aa26da
bd5a82bb25fabc4d46690b9ca6f8bda111324c09,2e9ceda11b0c392f19432499593eff754b769a32,7a8fae6194279672e20330c57b8b2957ef4dba6d
29e2277d98fae1246789babafcd0585590d3f3f4,f14aced9c576e0c376ebc7c19d5e661f18147149,f232009010d2f2006049b3246d2db7406dbafa97
c202c6c2fe1823adfa2a54af52995e1a25b51119,8310b169b780171ba1aac906602bada424b9eb76,8bf8272892aa1cc7bd64d61a2a16eb0d87326325
53e7006d56d7e111ba6629d0296806cd02e91f5f,c38280ef3e41458d1d3de009a90da945bae90445,7c3e792bc1e9e773d4e37e2b7b7fc51a4da6d407
65234c674a3ca0913b0ec549e57819f68492b7d9,790a58be52aa745633f5c23464a774d774200fa6,78793878611786c74714f3ec66551cb9050b4077
0f8ecb73e73c3a5ed9ba6ce7fce91e7d40c611a5,6bead20fc34cbb19d66c74047a3c23dd9d6d378f,340499dd3a7b22bebf01644f857254d1dff2f814
54eb8de6581fa93531ac048f356261ef565d7a53,34445a912abc41bb8c95281e51388fd9ecb0f241,90e7b2be56ec428191cf6a68581840468b74a054
2626b85984b08a8e1a3d9da1ea07d72da43049d2,a08c937bebbe84aa66173b7484caf0246817ef34,126cc0903770b0bd1bb74536c8b9cf7b35873d97
01dbc63735030485dccf5960470de6aa12e6d28a,124834fe295b50e1cbcb68a19e31cc84e31855af,3bc6340424b6c43a67a1879a4648f1542ecf1d29
e6a3aa345000b3738ee681bbb516d6d1c0ac7e33,57aead9a1487bf0d0f60110780e5b73408bd23d8,e81b062e2d295ad64a692dde3cf6649282049d3e
be56b641d708f31fb418f5d2f6133e3d97613f88,c7880e7bd12117dda3958a7792e31e6145ae69ef,f87a66f1e69891839a5e039a0b36084d21423761
bcb7c069fbf2f13ab209b17384b854b3d9f6e2c2,952f6ebf239740e13a243653f96c30ebf1fabaab,f206de703072bef927158670efb22490999ac01d
9efa161ea7cd72aae456ed94bc1fc423d636c2e9,4d1e201975eb8cd10b94403ad2ef7376ba0cc17b,5d20c0f74919648653001432c22229cdc6a150d0
722711d675561a9268d197c8e245f58295c6750b,621699acca8f4f7683795ff8757c247fac6bc57a,c9b407508aee0ac699f5cb6b4a73638776572eb2
36fe4cf43d2945a7123f77bb602af6c4d94dbe97,01d97bea00960c131451ec6f58ee7593a36ab0e6,16c18e845f04fca60341937bcb9117a40784053e
8591f1218c9990918424536446c8751a0edbadae,b2861bacddec80d8fb1a7f84eb30848a4668574f,7d41f5eb92f5d837bd51a6434367122d7e329f67
2ae98a7363e1bef7c369eac8846d622a703b9d26,5a5abe2419afd2f124f821f76c9229f9a7de1a9f,8802c7d489d067ec1ba67b497fa29571701263d9
9063c3c0ed0bd09880b9e6689934b5bf070c85c7,e7f6da4cb09fcfa957cad8bf160a8a22d05ddac5,8a7743b566bffc2bc27033cb208fee09a9a7223b
3121ee136700feef1f966195c5913f4ed8ba4e0e,e3c5d016e0c1f139711edbec8123d9e6b830a5e3,6f7c1b5b4e67c8ab7e59321c457ac6d2fdc55069
10b201c50699cba4a8a2a553f77bf5531dd6516c,e4600f5e3843028ea8c08772860d931a7f57dcd0,818b6e698305326f1d4e5d3b2538a1504d05a7bb
bbb564437d88a8843f1769ce773c79c6ae0ed3c3,e754937ad3a5b4dc97336d476db90141c64c71cb,2ab16a5a8f0374692494351da9bb6b3d54d995fe
50f76a2ffb54c6825f5c1e81816e4e0ae4e77363,56fe6cadc8a6ff57658a3c6cb3dae4b6c83c54c5,23fa8c80b6a1c0892be85eac8e0e73b758621855
8606f13b243891ad0a468fc4d70b6d655f491120,fc7ed302e7c804143223502510288ffe4697d03e,b641687da22a1d868cf4ed0ac05f4c1514e2c9af
272db1b872f59e6a8b5a1f0a2106a77e01dbb318,c6e054dbb94b811cb91bea2f6c75d5ba672bf74c,121e793c37ad31d488da53a7c1ae67e81414362a
e569863a1a8efcd537e440e92ef16da80cebbe22,ee4d77b119cefa866eba5786f34fda261f37bac7,ced7e40c43b3b40ce4bfe37e28b4a8c78d82c041
a0df7c27afd1247988ec3aa3755d0e47b62e03d8,efc4ab792820526df0f7c448323ed09622f5394c,a6d4374f1078ec113f57fa4bbf74f47418bb0c4d
c293d0b7299101e93228925ad239f2472c316c02,4ba064d8942f2fbba8b447951c1ba0bf163572ec,6597f02ebce8d1db39cf44bd6a1a6763532561f9
d25d094d579adceea87cbe96bf0fd64a111eded6,83f383e0041161d8193e392b2c200cfb0d120eb2,3d5a100f7969531e54198bb3721de2f00738d3a8
87a3bfe99d2504740152fd6cd662c35239429c58,4b179ce4fa92d06dc0a4bc44efa58e3665834e3d,4b9e1ab30a5921fa7daa7dc991e044f59cf48313
24972d986167814ccd7d02a4b7da3798463296e5,eeae32669e88af0ae699b0a9bf41551cd9f7759f,605740fd0ad213bc577e3439a6e65c0d478e14d3
791328ccb551ce8c79956271d535eaf6beb9c569,026781b9a36d1afbdf06c0213bf87d8d8e03dbd6,7f30a8765152d85371074c1648cf22a844d612f9
881ca2c52f58c11d44de6ef4f8feb8bee18cb258,a1bdf11d993f03f0d2c4d0f3955b5d9435ee1e38,649438efa63c3534d61cfdcb8481ba41729c85ad
82c52ed12780f83701c05e26d8144a357e3c6131,268a148d3a6e3722781532ba093e539f72453261,bc798695fe74403d2d3e1f5b38ebad4e46c24211
aa296af787968ba25e586b6af2f22f63a842768b,c605da6ab31e678a9f8e23da7b89b4420ade58d8,118e093c974d3b3407976d602a93192f668e815c
3e14d47b92df79b31acba350d748a465b2cd9989,bd606c6b77d18fed794725aa5f8365dede23e882,35f2fb1e8d77df3b8e894b6ab5481aae51106c92
ae93f8de918b71ad9ceda00f1e05b7554aed4cb7,73895d3cbca2ccc3a93516495837a002e6bb7f41,d6c3c74b468f443deb81d9782c781eeb00a1c63a
d8079ea239dcb86811ceff4b1674b817f9c18106,b5b7cd54eb4acf37cd3d4108df73f8a54986e96e,ab5c5a7e9a20520ae472b30df8b321571317d705
787454d5b2e8c6f8e7c909fcd1a423ed33404977,ca0323d4ca7519d49c9b8c5fcc39feb6b6bdacac,1606d4e28d1809086629c44f4a6cc190417ed9f3
b00454bb0ec8aaf70496b3f441de0547f7f71cf0,74833bda09fc43a7c1bc00bc4f1f12d36525ab81,1853d1ddd8916104f4087533ba3a861f55fac9fc
ad61db2ff592ee455738b159dc415970e76adca1,569b35dfc4add6006eeb47c7b03815eac6797ad9,6ce266212830dc63dcb641cf767711761a025ab1
087b6cadda7f43c047d97715e950caff1735340c,108ecaff225eff84e09afeeb3fb25e7b312221fd,92e960c49a97e8ed7188d3a9a2362f138c7681dc
7266981c6c55c521ac70f06dc2c287fbba16725c,eb046b07d07fec12b144ebe3fa00b586c6c169b6,7887f4670039897c66ca0f3d904714121e25b98c
0be3fe9ab4b9ccc01ed2bb88b679123bdff2f340,e695edff98f7092adc79ff2a21795941b1593b52,f30a41359d8be3766d6617dcd9363f04da73fd23
7eea850726ab34bbc2a164dedc7d185f18f05f10,e6d32f9f3630d44015faba29b6974bf37f08a920,04180788053c6390969e0d9f3a13820e6b7dde32
f83223c8b2b44437e4b0f1ed5b5eb89268219420,b88b8efbcec52425337044a8ea652d1d738cb6de,541bd66a6ce4d57737709ce9076adb389d172a8e
880eb3658ae80f73662773ca45ad51806a6b9832,4f4beb6225f8c4e907ad0068dc7e35dc1306406b,52f0ec579ed810035db0886b266fecb1934038d2
da8ccd64efd0c6763e414939bb2420c2fe66c660,16c4e0300cf3dd04411b72bb0547e8f80ad72575,b2f31c4112e69e75e29c29f4472a2730547c6004
c342a5f47373ab522ed67ba1f4e95f9a208dc83f,7d6158d5f49b19dc80558318e974d70a6c7b9d32,5583781f4720cd90c579993352fd528649498163
a387accf810bc6c32d07cfe2e9fd7a131cf8e5d0,3c4a1087f33a319b48b99ab6256c48e33f7eda25,2c72b62a0e153f1888e19c988631d0275b0f34f7
d9a67bb16d321cb6ccdae1d1f3132afa8c0d3bbc,ac0c187b56accbcc5f8a72ed9bcabf1fe340f100,946fc370e93ae5e7245ddad0171d006248bc9366
f5dbd38b7eea68cdcc714330eba4e7fb28c95f5b,88a42c3ee0c2c0c53acdb99e2972ab24ecc9faac,507e9eb20aa8129472e348398258bded6c5eb4ba
f4f6a16796a4b3fbbecfcbe9f77d62f6ecc9e54a,1c1dbaf77645efb1c0e6599d0cc3b6d354646f5f,409de5ac96692fea0314aefe5a9c880ab8983599
7747e1f6c8b51cb9c7d04e3a581663d25e1e99bf,e1d56a99445063bfeb640a3c6e0c41688076b65e,c453bac7adfca20397628a8e981c9e92281bfa04
cf79ca16b49445df2332539777dd879f6aad5b36,50986967f52041db50ec176d31342fcb3df7b305,5845bb90951932e8a6863acc0bdda42d3342e434
0b3238bcd37b605701e958099ddf6cd7e4772cbd,69ce966691078a4b344d6691798916b52476ec46,dc4689ba1bf6dbdd5d6cbdb2e5bccaa849b3346e
b361b41a86c1385540e4f85d43263ec4d0716ce9,1e89579766d31975cd605c3f551e58ae6f512c23,12d7d271d6648061fd0c5ced3769578047b0f024
e076c6fc596f808a29bb9d2faf1a0d022d603923,1b2d29ea1a6c28a8828c2dd4acf81054f177db42,7a228bccfc85f23b97ef2d38620463364e24993c
5771245d74a7115ec8a8744c6c91506d40904285,b440f57739efb5d68f18adaf6d71bf0aa126a8b7,4208fc79c702c8c571a8824a7d606774cadf98b8
e6a68b28b6de64dbbf0cf9eb8f859891308f9fb3,880d0333b0b5804ed0e58b71c29447402ae3bad4,408e388af3e48f51925fa2502a3b21a23478418e
9ee13f2937e57b63c014a3764d96606e8218eb1e,167c7bc5656cb7012290bb4d2e683e9f554dab27,2eae62a6e89673af2a083e3f7500c91393ee3f1b
a4121d2201bd3bee71d7425f75f8ae29dc3cf92e,ef796906e9faba606b8a6280c1dc97a88846c71d,cd93050d7e071642ccfce2410d5b8a12161937d4
c74441323ac9712f0a1f08349debcffe580734d1,bbeb98aeefa8d22dad0bcd1ee62c09b91ff205a4,27be091c443b47d9d8a57f21c508fbd678d887f4
f48282d7b34e2d9d276c9e6c2e5ad81dd7a88509,d03963afe9ecd26a7b1cd149ad0ce9a07490aab9,c4a77a832ffda91ba094b260656a19a826df9806
ec206cf4905cdee0764333d3c5ba7fa3adacf095,eaf9a9f1b986c1d2ccbb84972f1ffb3303bfff84,baa81d5275a9cf1137339738fdfe8becf2af779a
5eb5fdabadb5d025613443b09f4b5cafab1cdf9d,c49ac16a195a306d0a60c289658150c4ac24561b,dd1565c667e5bbb60975ea887c7380297286a151
93d38629aa446397d36112cfe853cf00d013e854,35345fe14584eb877b5953c3bc1dc358f6fd4038,952f4bae17dc5a12142ddb7ba7009aee1d7bc604
d83004dee1cc329b640e68e075240354eaef97ad,5fe4ab49bc3c0d58d48ca793677a2ce72c8f85f4,3c08ad4af5be43950c86eeefca448cea9f1c0dae
9a983632f93361100fdb50361f86337760cfacfe,ff4744e0ed1c64879a672e58849875b6189f895a,3724e00169d4780e538a585eb91712512819c35e
995309c20901f2c0e92ebb1ac967c73b00902445,cd9ed54d35fc4573b4adafde00979b15473749e5,81471859075f0835a88bf09bc3d49df5b6fe6c7e
0104edce45a3671d32109db527a2064514336485,f86a9bd5c026c7a10a165a8225bcf83e17c47b25,40cbda6e7e30dc29ddd7bbeeb9f50325c42a8cdb
9a1083c98eef9645ea5c5313496deb321c73ca1f,7f05fee3b8756e2ab97a15780d065e5460b5e72b,bb2e2f83e9087ecbd5f5f652c877e694e00660ae
543b341203f415a4886c1452015ca4c70d4556da,c11772decaa00925feb543aac383c01da0ad918b,6040943918a55a9204fcecc702d37c928a862ebf
3423fa9a8283e2b09b4d0d62efada80ddd755c0c,f6de2c57569fa73db7b241b33ad89795935b310f,2cb7e44a1bd86b4a43e7fa777acd8a5d21798d9a
7c9cf75418b9fc60c968820df62a77f162e4d213,37ffd4051a1a31acdd8735ddd4758a8172a9b422,ada576e559748a528e2f663345cb20f2c517fbd5
6ab2cd3ce994399872036947cc4c0543818874c8,dfdc4a4d78d0584a1a9d2a69681a52581be4eea5,39c3d5d035a49280859339b4814a27cfc50ec97f
2ec9f59b38326d97af0189859ef76097a8a35a42,0bb6ab24a2d3926356f8e8195bb3e056e58bdb0d,4933d739388bd958c3e3ad2bc6d11f44b7bb0738
a2a85dc7af9390d1fddd43880a544492f9849cdb,d87a6c89d46d8eabad17c67f4d0f8c987f78e3a0,00d8d53c4e4804eb3722f114eda489e94b4e0495
baf9681684c1aabddc3b06c7d994e3f9a9b2acb1,3071ae231ae0bfcd22494ff07164e2f8b821e6ad,f3401c3f5393ec512d2ec14b8f70e453bd7c9b3b
b35c1182441e95912f2930684a419421c8da9e65,dc16426790e06df8a08c9af64d6bfe6df5d51c63,30c8930c30c68ccad17d87f364718b0f94ea843d
1061965ea597e8ae4c7fb6ce04f88887a62d247e,baee5b9fd4b1217b7facb2f7814eb5df55671ecc,e3b6d70f93e2f7831897296d218f32247f13adc7
b679f8bc06f52a3e00d282582703beaf0acb0b98,3fddae4a40d3ed8e2cba9e5256715b14d9a97040,4b2a924ea038f4304e05a4ecd3ed2dff703e44dd
aac37e31795e3dffabe1cb3745e99d6b75d79f8f,94a56ba3d586581f9663135818147326551867aa,49395f2b00b01e65331ba4ce11749df8291cb26f
749688b3b0938d0c59b31d58adf5e64ec276c179,b8db469c48dbce4cd9128ab2843435839145d623,6a9376cb9e3802c9e7efb8f09bcde88829e3942e
7f3ed9e85c45f126b1aea6e69481ce973e8bdf7e,c527437594d7cba7bf028ae69ba0e2058ffeff8f,55002d19056049236f7c61d984657b54b778325c
2de0bcb8d0fc180b1e1b85769ef55b58b5f50b06,79d739baa60261b18826b202799b82d71fa1f294,02b7cc0e56f8a597df74b821f5413d00a3dd7f3e
09accffd2878899c633c8a65155789a84c68b703,962b36a6e843c3d2d7d0e42cd7d9b03cf8db8b44,3121f3f8a08ff1fbca9d2d3c7416faf3d7cc1523
07677f421412915db1e5453d8b483d2fc8306e42,1d48cd7eba33c5059cf840c42073c3a0b624ead9,59c88f4c7927cfbe4b9e4515bc6a2ddf08dfabaf
6b47a03cc97643fdbdf30dad9fb20e7e21ea6d91,033a2ae2e77427bfeb6d20b76c2e762490b446c3,4084da63abcbfcab5ffe1fa83bb2b50f445ad6ef
cd72a8910e3d0430bcca3d02b783b366cd0a78e0,93365f7e38e8c2fb63dda8e50a570b654560191a,9681378d37b4c5653f586785dce888ea03f74ab2
e3f4bad1646c9b16fdd672707c0145fdaa356d38,03d7518b9b3f5d3a9aaf607de9d1f52e149df087,20ac72e7aacc29a8f71f84fc651d16d8ad1d5759
c90503812ab85049c2dd6adfca0b7d81b3932671,774e0f912213dcba17d6f0e0a876d0b243f47df4,859fa9fe8f4d7424b801f310751f52d3f9de2525
b1e1a107d351ef6c293b5f67b9689ba8f07f2bcd,9dc75c300538a724d4dcf61b5a9b763dbcedcb7e,60e77de115c2ad9fd823ba9684f1b991f8ac3b39
7163a893e9ea8e98731da28347a61854965deb74,98a25439c3d14c1ab4670bd52433cd525a2e1449,3edd92dab1e1aa6968985903761bceaa879b14e5
dbf6527508b6de8799239fa025fe74221b91d829,f7bfa0e426c6dd8d5ea9adb7fd042d5e33634b16,170c05592b56e987c2d72c660f066c349ccc85e8
82ac4299540a0cec37c545787ebf0dc4c1fe303b,919b5560492ef74d7b8a9c016ec12a64d88150db,3b7a34716922d3b7b61d2e9ac6b4258ee3be19fd
fbcd90f2860903ed0bd7fcac0fe51f7202156a14,be4e5f240c9cef72e0867de9cf5aada8a564d459,a1863d8dc85ff64a23dfaa103e862e85151a92eb
21156bc5d3ca6d7e5c1411fc8df882463bcb253c,6ef3aef5f236568f9c07409470f84559ae9d79da,e429be38e8494ae7f18c1a2fbb0f9cc90f990044
3c57eb42f91348c5f066f70d7f7700b843dfbeda,db137d0528f1228abdf90068aac290359cb4009c,020ca55e257c3b3f354211dbeb9f992730578d99
848c3a252e4be4e0e2b09afdec12356b355ab475,2eaa6c5ced4e50171d029b017704c03ba6d3795d,e13625d56244d06fdf64691a927ea0d170a3412b
bb5b9acbb27ffa22fe441f933adeda29c7a40883,88ffc9e22822e13511a7de1eff2d6723505f51fa,19fe377455f4ef904b4f71034fc714f51bab1b1c
e4a0b1adb4d632b9059ecf71f06770e73aa4ae7b,a8b4c0772c18bc98b934815aedb0256fad88f1d3,08b7881083768838ad2aded0b00786566a33546a
107299648fbe4a9cc40999d73b07a2222f630312,637c34571e50d78cc1c9368f0ee44128f06a2bc3,74625648cfd30f1244ca56410a0d5a5a87982c83
038c163717927f9729f0fdac74fcc3838b73bd30,70311bffc66230c609c2ec3a93bc3c6a74df350f,5f9bcc2405e1e59f5aaecde252da955b8721e757
4c330f2799c68105aeacaeb442365ad6f8da8da6,1fecb46c52c98e1d55ec875987770738237ee1ae,377bc0d31106a248771a860413e3a90a87cf0ec6
a9316b1953b31f452d32f6d6fb4a52ea81a05104,01246e4d30d7933b6e08b1ce2bcad9121352304c,5f42443db3ff3a04b64361597c650fee9849cba6
f506df022e10bbba50e997c925c93b9e750bb39a,81ae7063f31c6857f2c5374dc959f48ee0198ae6,dd4f7e9148541883a9478f2644c4e014dd4fc015
9bb6a32c62406fa3d4a8a5975ac072dd0f55fce8,654d75b777565fa55c9694c0c67e16e44e8e00ea,9ee2eee293a157ca05a90344feb82518ed7d7ebe
1ffef6ed41fb47c1e7dac5a0fc2120c3ce96e303,b81f92536dedc52c110fc5117ab11f87685440bf,21ffa221e697c791912949b130191838def3e81d
f65e4f23853f38d6e39221e9d70abb9867c07052,8e8d4e7ea8d98bc6db3fce5b5bb6c5d7926245a4,4867d48e99731b11af3d405c621d1f2e945ba95e
03fc5d23235c1b6b7184b9278aae7ebc4546c2c1,04a077707c334705b9ca639642a2db03b6b154a8,42f447257dee02eae4fa1aa194f0bfd387004858
71b10a21e1f6598f94e7f3fb7878acce51381034,8be124100d5e2eeb6e7fddbfbb2d07f1b24da05c,9648463eb544afcb9f6d65c17682ee05a4cc6c1f
4dc4d2b2ba3d7bc1262e5cb32d2880893c570eef,54dba5738c9fc27c06516b8c74e228ce29fecea5,e9c6f1c15261103d0d036f72d94d9eb9d1448f42
7595dd3624f048163ca3b575333d0e0b86d14c92,185a346744c55b0f3e73cfd962e52bcc1c8f68ee,785e259e627992409f323d8851cc8664ce50b1e5
3cd7c675b154f519c25c704622f65599d1369534,2efb72bedeaa96b6e9b5937619f380e4bea74843,08e494ffd190d815266b31fbdb893e48a5aab5ac
dc5041d778811fc6c940aeb283952caa16ff89b7,79f6ee538dc8d81f876c7f32baaf594f5fc9d1cb,7bbd33bcd6fd57b01619449c2f5c9fdf217c2e02
e0a5d07e37c347bdc04a25f48444e9c4ba4272f1,3db060e47afd90db26f7b5cd8ae1584438169a23,fadf43a33b4bf3c5cd4d73f086d8de0c9c02aa6c
6aa49038a5b9a2316e609b3bccee9bc6acca4e2b,47c21fd1bc4700da1e233cc1c8ede88773105057,4aeb1ee2236e7f8f73c09ee1e2aeb0a7f658269d
40072fb762a25409f793fab0ab453a01c984177c,feb79e0068b27c9c22358fcf6ce84282e9390b3b,981ec64666491aacab8ec00d0f631ac371f31812
c4fc5fc916c4eca14831a70d75dda09df96778e8,5605566e427158a4300941f4279b41000985fcdd,14ab1cfb716c0b7635638283fb8633d4080db964
8ae28b48463fab579e6194b76c238c5d7779e0ba,71ba76532b7bfd39f9f861cbb8f87ff949796ee8,5eda6e027d305b1708b7f938745ee454a1e58342
11b0b9dc57556caca09bf46bba722979ded5fcc5,ca6fe96360edd68e1a9822a614c507fbf9681aee,5c564ea940001ecad02db8b2dd9320ffa42a93b4
1d1e070ad2fbf3c5b2cfbd41b307d59fc67e40c1,f3e03f048376a63ec50862c54579104b7685480e,a2f2af87d2c5ce1e2d68b97abfaf58bdacfd9a3d
b514e979bdf7fd53556ba1d58dd5915bb1308f53,e3b93b07c6a6968cbc0b7c8b1d22353faff60614,2e441609bebd024a9cb9d0eb2c3d6885f4f0b092
664f8fc2ba8bf2e23b00efae5819d7079409287a,a774075f2f36bffd342e4ef4d96d297a8524ef5e,05d6e20accbf8ea92b1d17949a5d41d583887c6d
acb6c7f36b15dd81480ef3f53a7a1a7675679790,d901f72002f040261d377c0912ff84b5ed492af4,3e06242fd8302a9098a30cfe457357ee3a1927c0
272417e60290f8ab6fc8d475e20b9a4635114c7e,b32573d1ebb4c7a33708efe3a6e275bf2fdbd4a1,2044868c10fa1a330c98b21af704abf5a6631816
d06dd2b0ea1487fd0cc91c5d489c843a2152a375,bac4ca19e7298e0395e7d3d7e7fc370fce1fe769,c3339e9a51ccf3f4e4a3e00f473d985f5ed2d902
2e1c7cbc10083a3e098b553f8adc1326fc349df0,031539dd691dc1efcabd08c952076aaafd417ebb,698d432ccea80b6740fc9b7980c19d973b03ab0a
de03a1b894799e2f9133cbbad05c3f6f46af1423,2055ef4e886888a361bc6fbdd90980a174d29d84,62495c964abcfcc8f12038bd90db3f66a60c15c0
1546c4a7947afcb45783b1251b01fd31016ef84d,2e6a31df8bc07129c1834d3698aef1dc8221dd11,57e74e0c8bc9e1785984b0473708def4707e21ed
529b64790bb5637ccedb0d10926f9827c905c007,f0703c4dacac7060ffd9cf3f556e78375534b290,d89851d094088a6b69224a516b7398ae39ec11ef
dc30431d89aead90e9d743c90af2446098da3e26,277a3be9b06258b5b439b4ad363d98786985e8d1,97f159e4b2c861df559966142a50682130e8a1f2
560d597c85da4521779cb2dde6d5ea344aaab412,122251f71d6bc2395be342a4f5b1df4353852991,b45aee980f15f4df903989529bd8c178ca1647ed
83b5047931866e5ea58811596b64a633dbed9480,5b27fa93753a42dccf78082c99c580952f87d728,8fa3c57c1bb005d27664e66544a4005758f43dfe
f4a413fabd3d86e26d86748d9f1a925c22992bda,3bee7636ddd6c3db41819f59f414ec608ff4bdf7,dd6efefdbfafcadd91ab132bffa199023387aa15
ff3b4adc2773934710b014df680d96897948118d,506634f261efed31de36b3766393d1386fe2bdd4,3f0853692c9397088fee4217a5d8466e3e24f6b4
178687531909624efa0328c8a2cd7ec87f5499e6,d575aa5240840b008186da794007e06097cd3850,2d5c1d43cff48050beccc906049cfb7ebac83c6c
4d5479741d6a7165b1592abe890330207dc4795a,064adbf3f8aa7e1f7f1f85b31d2eeb8988a481ac,18c6e13f45298162520fe8d20f3397b1037c35dc
4cc5cf4d0edcd8b18562af0d41b89b027b1bee74,4cb97dcdb34f5912ff29019b5c9b5ffc20b90db6,f3e667da42bc0994dc51aa92de55a70ca819ef09
24315a7f28237e3dacaa2e5352220fc15f260764,5e0dcfb49b7a970ce61b26ec468b662904218236,7b492b9975e71272eb4b0d363a4801dc5b21f368
4443e83b75b36946e8a35fd0dfebbb93c396c1fb,93ae6261ccaef7c84096785c28d5f2569c1ec60e,3ce07ef6fa90d13b7e6c965bfc489226575b548d
a81715d6ea0651bad3436d09effcd4471e8f2abb,d9317e5df522c6ff359c8650e7a2d542d306dd96,7cd044eae742f33e905dc01ced9a8cb1e31f0adb
ae465fa8dc85ea69180527c3fc1e03b25ecab082,e53620ebdb89140ee851e89d2f3fbdf9ca49a162,6f7481fd24bce9fb1d2481b5f7be3cbe11e0ce5e
1351746a46807cecd8064e873c41c615f9af6ec9,8aa9ac99a6a2796e77a5157aa45b327699eecd83,a5caf91f74d7eb8e4863d155887ae09f60e13c34
881eb0fab5bea2ca1cc283d2aa76d75a1904458e,5298e25c8420f43587d174c6d549f688f514a04a,f8dbb09a46c4b48d6ed0db3656aa6474a1ef2ada
b431d6203c682d1bc4e473192c0405ad95e8e259,ac4927aef713f02e9a802dd207ca0dd76e1f04a9,c3b2e35a8f99b67d97cb59ea5e28ef8f99321207
27a2a042799566a069ae6d4772ff77405491e794,2c527cfc01eb10f254fab67623eda3d8180b8fd4,d44cae14f597ddd55b803ca1f8591e816a655de8
4f82fade82a92bb32768602a1098388bebb3b2dc,ac6dc582bed106bcdc44b5ebc16adfd17a6c67ba,54157a17c670544aa05a377a22a5c49f14aa0188
d56da2d93085d4d3c18a661709bf7216c59eaa08,abb5792aed050247263fe6765e7a5fee25371ffd,8c8b336914750c2808a2624f5be633ad93ec66e4
299c90b91dc4624b9ebb9f0c2b10fc3933863411,9ac0a54ad2d05ef79cb6cd3556d5b9a71a829a31,7ffbbdd50becaf2ea8eeb59f95b77564b479ca28
f80f1112d4faa565ac5a1266875bb9f22056f980,d7581aa1eefbbe22851baf8e9f8db92e4f99d085,28c4c58b345a72e85026f83d1e49b86a9ab18183
e4bd58d66abe436e1d660baeafcdea25c42c2c54,b4eabbe5ceef3ec4542f3654d7a8ee601200dc5a,cde58d66fc1df01c4f61bee5dab1ca082778a698
d7a486f225448fbaec7e31208a5ce66de71d8a62,3a5db26abf2ab5fbae9577928a42d78d122e0ae7,462c201ce6a4229e562a351da130491d53eddfc9
c98e160c197b9cc53c41ab131ee8bf5a80164e5b,546de9f7e74d80800d8c0641ab5865965c9bf87a,0bf0f26dd57a32756012e677279f53c7ce81a850
2ba04dbd137012def9d723e90cec51dae6788bee,e395166cb75a8fadd72ac24fa87c73edac0970a5,0b5998ee8bf31b127aa942905f6b8aee4e6edd03
12f18177ae17ec738eeb11d2bbd9fbeab7cf925b,7bf502ad40afd7b63b163f9d898442daac4cad08,e073d5f7f79db76d758b96927c9287868a14227d
26855a29c8d0a726653f455704fd2917e89876e2,4fd5237c0e22ce13bed0b7b6363670c79a8eb24f,1cda7d8e36eda043c1ace77c7f10ac09e193b1d9
ddc2259e5eb53d48375865a4ff2a442472a2c042,ed8a05d6979982855e04383141350e0e2068d711,43721f21c4f5da7f8b16745cc9ffbc49df070838
bc0d2293a1a89f2a352fafdb0924a30ede104322,8a48d1bbbcc9a5084d93333460fcddcb7871f69e,2575cbc439e7e7a047ef0eec5c5843988b3cdd0d
e7600ee24581a90fdf0c4f0a170428068a3a0320,629c87efc8c8ca951d624c5ae392348a2a93e6a1,53bf5dc6efa13c3b73e6645f4da47544898f1b0c
060a7185ab508b377b3d989768531e47e5187a71,eae74aaee07f8dc1ce1e2317bcfad967701ab218,63e8633262df27bbf20f1c164f2a5a8f5a9e9360
23ac6c3090c5225812370a66b90f0a13760b301a,3ed5a4a022db3e68b6c84c0f749dfd9971c70f79,cc195c649ac6cf3f453c138f6fdc6794cfd6e699
a71cc7158570729c256fc7573b7d556ceada1843,c96ef4902bf78e208033b9226f2475bc97caef82,e5b47310c804353f6756d2643058c88c176da5dc
fe62b3ace8c237d8bd1800beb5969e5cb540723f,4af99236b0684fa965099c1409815a04b7c473e0,76648d40225e8f267ef7db6f88720696cf532dc1
02115833885e048304d5f3de15b2d04f434e1924,d1b7a49700eea1eafaa8ec37c1d8470b7f68ec39,2d9ef694dd57e49ccc2644e2c9d2ef9a328b59d2
7506277dc1618bc9c1f1f6f5cb8a4cb56185f356,186f93a8c9dbe75bfe1d852f4aa262e799002657,6d49f7db7b65c5c561c6f99bd78d4adeada01b49
57f6ed804ea377783098a2ba25646fcc81c370db,ac3425a14d1cf2fd82482cf0d1118b6d4ce39bef,2d6294eb26af80ef9e82db6ef7b7b1c7817129e6
a3b730b0f1d3c10c65ca892c7baafc6acfda571b,58f9dc27ea17a2018e1835369bace38b2aa0bd6a,31654093377e7c7b7b69665ec0b19b212589eddb
7072813c86d57ea487db2c6945a47fb6b5c93a25,84e230f6e5d2d61acdedd57ee9f510894ba0481a,d45556666e82a1820828672e0d5754612e4042a6
1ee9a39fe2dbd16979b0ae54c6f5ae79f56af8b5,421d67556aae3632415b8d1d585a63be325ae0bb,e42209457e17148913fc706aa32b153ba7a9735e
87a37e70ee894ed7575db525d4db496f83556d1a,689fae7dd902b1ab37b9c5a723ded2e5c75db90c,6edfaed0ac70bffcb02e7a9e7ca20fce0f6f4100
055740e2b33101b7dc647c7dbbc4fc7967d8033a,d9903e6e16852a5f4a21e4cd73fe1db2f71c65c1,59d0af7f654e14101c3db04fd7f1f9d5baf29fca
e406cbd9c8143219c368fe15a1b80b1338f16c5f,ae121a2d5ef9070d4e793f3edc2abd6f34485f7c,a736a4bba7c7151ad58edb776c51eca69e787cdd
ae927b06896c08a1df957e44e18e4a1da2bfc01b,afd63ef0ce5b1fd14d6c9e1e526223fd194dcabc,5305cd2734ac2e54157d3b6c828e9c1584fb7470
d3b8aa728e8f4eced69f95a500d8af091b9b43f2,7a29d8f54d45907913381878f0ee1d06bb1000bb,1e0f6f9f6465cf23899c470dd6d27aac003cdf55
068b8f9e9dece23fb647009a3318d4a635403d6c,8ee31342fe1b55eaf73d330aa8cf3dd153c7b4e1,3d2db25f167b31fe7a8dece2533dd65d237e920b
2584a271b54a5c783139c9439384abb2ea1616b8,2350b34d0f300558be2b9b5ce1b73114c5a7ac27,d1f06d45b9d7a1e2221ffbb72871d98b1e599920
4a1a81663a011018b6e784fae15e59c72cda17bd,81464433366a9557971399113c5a772f6639f650,f6ce76b638a08a19d58f35a0aeaeab0a6462e24a
9000f8742dea9a147febb0095f938d8f3c28a96c,e9b12b41db860d1146273993b9f19a1c76aaf6d3,852aee489c39868fad7af9061eef8c2bdfe72c07
11200cfaf63413b745a7186718c42e90d9fc98df,1dbde8a79d846dad16169366a06a12dad949917c,ea102d792f2d757d78cb32c884fada058050b317
60c94c50ffb119b1c7286625b72adfac41efd45d,ae06528db4c33881ffab70da4ac8dfa8b4e05607,462d0eb07c1be2cad06675bad91e4acfece448e2
b7e8dd62682379c4c24b9d4731fca095aee40cd3,ca8d867d570f0a292fb8cb92e397926e34c9fac7,ccb1985953b0dc1af1ce31a48a12245e2f99fcf4
af482fde235da37ceec7c58bba42fdfa8c3d4be6,c9888f97747a56b67508a843dc4e9f4214dec56b,71a46465c8105ac3fa5f492d17ae73ac486b7060
30f514eb6bf1ef0acf5fd6f7fa0246671f5089fe,79ed0db6247eed326ea5193a073de03bc826f0c6,906571fa253d0571d779475a69ec3709d9e42f76
a512273976991cad7ad139a3c3ae49097704eb75,728fb7c58c0851de7ce64e7208d16081cb96ef45,a75e453c3081f6ba4318bca58806a1be48c924d7
bf57750436afbfbfb6d0ce08245b5bea0242af21,88c7954d9f85db24e61d9d6dad069bed663b00c4,eb6f29d084b741b0197b3c21672310530ff2f043
572a340a26455397917145eac6b147c0a7bdecc9,42c9eb4096ebaa8bd165e8cbdf55277939f418b8,6ac14de9864d08c047b77aadde576778d3803349
0790b98277f8d8b8fa55ddbecc0044cb3fe04c74,64e7dcbc8129b40cc0e1b18122248e7eac4ffe8f,8f8ce13b4173a670fb36a338dd479ba4f46b971d
ad93958e5bcf3dc799f9b324e859e93fa958d69f,bc714c0fd7d34e1d59b7a052c7e090702acbd9fc,30a20cc209e9d3f8ed93afd3880f42989fe6ec26
dfa22fb53ad7bfcdf8d2f4d51c11544be69fde19,31b978f3b72332560eade5abd34fc77177584470,bccc0b195e3727c26db7b18e340896cea6ba82d9
5c890b59e3d68fa8aaa90f826e3cc2fd105d5c94,97495e93b85abce67c50d097bc09e254bd3ab2d5,4e8b1cb97ace5bdfce5bc6db5d7b340456d0494d
91946b78d52af2f88709756ddd130f3b9a2ae851,9cc30829faae560f603a19065591176650a0babe,8baa4f41dbe67945a372587a7695d8e7221f2fd1
b8bf295cd18560aade6743aec14d308b1f09b096,cbc938900f236d05850fd70754c14dbe0d7b2f9e,9c5bfbeb780c296556b6317bdc517079c42e390a
3cf7890352fe2febc337c886d51ceb8129f3a92b,ddf0774575787508543d1474127c6f5ed1c91e31,a2939e4187f2bb18e00270d44d2977dfc86650b9
e1b2feac33844bdfa75cc45118b9f83df8bf2767,4c26e4f9894b85fe08694181a8b401a769863495,3447512e2941ed5504b3308e407a30011262bc90
37c3e86c7fb4ae0c78f63a70310b06b7ce0e39c3,e7f9626592d82d098c554806cdc5466535cb4d8d,7c5847bc70613f8a06bb4249e020bd259fef8c13
37ed03667fab8f0a6c2c4fd97b8bb879b6d787cf,2dcb15f88f6a7dbda19922411b12800bb7d27464,49b62b272cb6be08ae7601e6c684dbc33d14c017
f04e92db39a518802ea76ec4cc7427ece7e272be,d69f0f7110a3673bc8e111ef615c9eba9231440a,c9dc36dbc1235d462bf4b52096dd3fd07454e4d9
a72193b6fe115a0105812aaa6648a5845902819e,4ad0c88a738720702e9b5b2d61b490e9c0803acc,f75f688f8bc22d045d58a79513670b5232ef9c73
04844d548ba055efb94a61d66dcd7ae32a54f634,09b0ca01ccf02d311c1a2223ac8c1c80ea16e78d,b2dfcd6ee8d73c8ff58d439011ce8299be591c6c
b3800d38cbe140917d15416daf7c6489d97df25b,74e47ccff64df0487141c09e82b8d4020935e0f0,587af1c78eaac3dd94bea5850f1a6397728f9057
21cc89f1e337f55ddb48cae69c819de70f526e85,81d98f5ae246a64c8ca7ee47aeba1552f13c97d3,26a2ae92adc88bef97bfb9c05adf8ae53f470bbf
b367d7c905b476245094bb06bac226b4024e0bbf,f4b9d51aff032689bd9525366201b188b235f0b9,ab65c9889b567e6083596f60fedf5c4246d9e308
bd2b0c8dca2897736d1c265bc53d2f5ed5e5ba3a,91284ba543ef8cb265d1a80cb005f7afa63e0498,472f9be9a6ad0046b97b8d1b1ec9a59c5cf4f926
13f58fe3432a0605a046d37b1b1a32d4dcd79737,0ae014a98f254bbbdc2387d45ea061c553cd74e3,8527cb17f829b85a1ea2ec4a0c09bfdf35140f23
fb821b8c9b45626ac54b26b7a87a5bf176bc6b73,cad21584e5f2383d2f66318d9ef0bd3dfc783ac9,75ac01270269e877024ae590e13357cfa332804a
f2d739b93af80dcba155ca836196e626369fb0be,06601d5e6015fcde5118be97457897d7941aabc0,318e31487a1e0dbbe49120373fb643815e3d668f
ce702df5264de939853ee92ac13f605be4fb5c71,010127a622d3b3608c16cfeaed46a38d70f5826c,3f7cd9b8076ef8bb0f9fb3a1892d2beb944ccbdb
ba6696d9eda7872b99b9a3b3060545aa7e31051c,7589bb39b86dcb8ff1bd7a3bb4d836659062bf60,074cb3bcf4dd05140984e8f0ff1b42a2caed1ca3
54bb95da81571e745d02770318ceba5fecf4e0d2,d1432b73029b43b6f1a4746782e76c04ea75ac4a,c2176d27eaaeb68e6dc8c2a6a06cb76df6d91876
1966ce7c1c94595bf4c7e9c8db6c3c34098a8f17,8b40033964ca7c4008646fdf4471209fc9e814a5,492717a25c7f4dd0a1f4f7dc98fb2697a38e6b2f
9da276b352d8d942d6967b8c4867d149b9ac944d,6a28ac53da5123900e10c8c157f8daad01479f53,f9b98092c4c709e605d4d5100cc1a14fff785253
f77b9fa4efffc8983eb392f7ced90b47451cd30b,85494cdb1d831c5b0a3053bc4f9268d10ade1295,f1bc31b057fa8e0947554b76fb9b890193e1ffe9
3822465e2f8e8114f0aa46bf8acbfb3214803557,4769ed948ac11a609bda4c3d489f3b15c1adbace,d8a2f7f7148486f86250a0773503381e6b54f343
2463faf5c0b3a23d04d188e3f925960d1534d46b,0566580f1525d3b1de3531a8ab58743740d60325,11f076f0e7b29bc71e6ff5866a954315098d9142
9fe350bd91c0293c794a5c46e3211d29fb0e2727,2c9870f85ab1d9f90f06563d94bf15e32f7b7b55,ef6612170cbdd9794c3dee1bc5b10c22af57b7ff
92479574779ec3820fce0a6067a7a2bb17493d45,e107aa5b5e0ea1dffa18359075d7f0d50836edf8,1bba83cebbc3a6584a2727cc0d4320bd8ea774af
5ea60b97b1551ff26cf0876caff335c988c3fbce,b804fc5164ecb8c5640da684456c248905dca9b5,c21a0f065463d346c9f8e1e982d280da644d6425
0e5da37533baf174b7451e64a1f6ef7b3e982761,bc2d1cf51c4222b7cb18c93e990436df877a56b1,29b14fec57fafcb37cd622cc103451aaacaf52b5
6bdf9eb0960b13173d7b0c01da08288a17181aa2,4e1f854d49059d8eabd0e39d526a58dcdaec81b4,ecc16278f087d7266fa3eed85ae6ad24d727f7e6
179fc5848b01d230a25349d614bfc5487f740284,4736cc2360d401731a9fa615b3020a60e2f35c77,dba69917a9664913f85bf54386c1a59aa32c09cb
1ab46c909af6280b56ef3888a4b3e39754b756c7,05f0ceeb26fd3a32c375af1f536525859ef53d5d,3ee20b2c9761f0f47ded87c838db018f7bbac786
b1b5c1367119cf30545271e226f014c4ba254c52,4103b3d180a332f4e7905aa72b48fb23103e3ae4,64141c8bddfbb818fe0083220649ff794a9a4639
2b7df4237b210644c13fdd56932dfdee62474cab,bcf320a76ea108831342ce607126ce8c57bebf9d,1dbcba47967b4e3b23476c9289018707f12a1325
48cb0eb5b1b8dce44306bcce541a6921c09558fe,325d29307f1ad7b476de9f1578bd73f471abd427,a15dfba97115ccde1cda3ad516a2bb64cbee3fa4
bf2a3566fa7e4c9ff400c9ded3cd83a61e4b6e3a,a907eb49c9c2961818bf610105c87c45cdec67cc,a35577593b7de8cf5e66919f9e40a9a0914ff377
083e85854444fda9a392a67536d25701081f481e,f7d6201946c569274544c37adbd84d3f5913bbb2,5a7d5367d23965468a4d9d22091f9748a2112556
1f2203c304dce7d446d067a138a59f50dd0e3d97,59c77a48b5d4533ab71b5baddfa203186f39b0c2,0fb4fca957e02129140e8303f85a75f8f2b87572
9db42f5e67f25cab39013bd51b0967df70fa108f,cc552c081501670addab1f8c70fdad49a42b0571,821f3e326fb00a4c75ff000852a5152b7dab918d
9918bb5619c218ea37a234ab93881a8c60e24b7f,76687a04e526f0e93ecd3acb819225080254f54d,2e6c3b060d2bc9d5eb14741b0f1f486a323cbff3
f41025f5dd7d1b7fb4367f0aceac021a7a1f8478,4c6abb38b1d686ebd728c31f2e02f22a071eb9a0,f4828950a2393d2466c5832f7742c4a8501daa9a
b2bc020fd7044c950fc707a16206aec2ec40033c,22de07446dc3b14f4dab989709912a20e7cc7110,a7fe49f38fd3378f24f326b91c90b460d98a4150
6c11f048d17747a59bb947d9cdbe73b7523fc034,f4e955d04fb051456624d46e27a7f4648ab8840e,755d22123009817a35066fc465a6db94d6f7b8f1
4c434ceb08fcfb00a2429559de39de58db0729c4,78c8ca57adc378a75621a9ea921917ab57eae898,5086cf7e7236e2abd8d613e4871916f6c60cd28a
594d4cc4f9cfd6c535c20be43f8ccd570a4d23b2,c47fc710baec550d5ac0997b0b986f55b99a4124,edaee6f392b10c593a274fd61e998e24df7967bc
e35403c3b8364f7efdc40ce0af00eefec0226e24,57a1b5a39b796d52f667690774f4fc166c0a1462,948766a37ad62ce222986c1ea3f474c39f4d41b7
f88622a799cceca94f910ea70d606d10e91c53f5,8665e038863650a6fd90ac1160d7ca1fa5011bbe,e75d97815d19b2540a5311eb0ac8f734765abfee
f0eb7e8807839c0b61ebc8294218ad63af1389b2,e67cccee374935361230e26d45ce42a01a5bfb8d,1230fc811add14ca7879a4cf737d03b2e26f654a
603dd63b396827f7a93327f60f34697803575cbe,4378319f874b31534ca92f3828aadecb463f7bb2,e1297e085928a274220a6d5d6da7d8e4f7a2dee2
a0a57868c04981150584e046e7d075a0f120af72,aed429201730ac92169075dbe23b8b899361052a,81b7b80749ce3f65fe899655de51362367b76f67
52d3a0d5e3befa86118c9dd762381cb2d20fcdea,18cf928ed6ca19f8a995602ea49dfd8ae37779b2,6e03b24701771b77c804e1ca774d61d05ac8136c
77c86cafd08020fed213b65882ea4fd3ed411650,e4a0ce2fb5ad8b60b74d98cc92763302517516c1,11b341cc97b521fce9a74405eed2718cbc226e00
ee1916e919ac94a84e35549a8448f61beaeec513,2a46596eddd34d29d8d283a781c9e3f23e08c425,0ca608243c97c43738081c5b2863deb5fa5304cb
c79361c010621b76e379dfdd9a697f640aa70f85,48d6f5e8a733c94399ce2629a20cf42f2bade46e,daf2dd869b5ace32867c08e89e901283ec3d6b42
c3b8b51cb5907c92fbd303d42e6c81e0f86afe91,316e127948efac638f6aa77b282ceb1b5c454372,cba5e252d110a9f0a7c76ce851f8bf465c8d8ef9
5ea775dc58dfc9010ea008f6c1b89d79dcc41acd,2cec5996dfb5d06816c7ea91ac3dafdaa4f92cda,91756b9e3e658799db1f34de15bfc0bd6267af3a
c52794f94396901717f439233f6d3facc6c44e61,628e0cdbd16ce55994a413776e2e3752582c9b22,e7184f3126fe185c4b96edc5d8506fc08e2a97c1
36b511f0572408c1976d1a7ad89dbaa3e76039e7,1caa5dfde89e89fbf779a6867dc31784f5b50e45,d0f08ef25920b2cabe2d882f0a8291941e6cdd24
635b06d53c3566536930ab297cb2f2c2ee8ce69e,4680d41d673eadcaf6658afca2dd1040eeb47374,3fcd8915772aba0e373da0510368430086a6cf6f
77673c5e3779c75eb6daa9ab4c9c13f8053fa2dc,173233d78e39a87fc3e9908f1ca20fc1e02bdaed,5bcedcfe305d7d241df316cb99859e0c8984575e
8aca9104355b184c9d296c7a962471a196ef5630,06fc6f1e6bba325a60098343a3c950f225d0f495,4100f750569162909dbcfae5d3be786ef2d10cb5
6fadd49fb60a184f657724b34679c84bafad66e0,99851f22f543106be3cdda8bde9aa54d62ade4c0,367beaaef4ecf291a809c8da435a576143980276
b7322ae4c399b69dc11cf82aa76b96944cffde82,cf6b38c35fe0295adb97500fd3a17d693bac6dba,dd858f37aaae04757051ef92f915503935d1c779
1fccfd3ee1e48878337a4bf30351b4ae43b927c4,20f9b82543a0414c51c6cf1d57591ecb7d0bc67e,3327204ebd0185e03fefb7854bd0fe875e84d17b
12176d36839702ab84473655e663bf641f3c8d24,ac150e58c81540661ec65cc9dad7926362806b15,9056ab80257b71fb8bcdf90be2f71e2fbbf912b9
04e715445f143487075fd35afec46a0d1e4f7966,dcadafa1b87f80cf3b0feb110b5ba704ba17448a,7c609ee7c400fc257842d9b0742a8066070d2271
c68ddc5360cf4e1c7a543cfba9e469f21a434ec3,afea558fbe80b4b5688c38b85a622329df4b91eb,8971103a00e24b1f15333afa0e37c5db5415152b
14d4b0808bad1b1025b0820532ff35c0cc0dfc2d,564597a573d450d22cdf649e58e1e0cdcbaa0117,b1312ed3c6801ee5295b611cba303db80f03e91c
fb3c4ff75be75c367f4f4d505563475ef7accdb5,15398549a4db924a196c5b1405ab532a0e1f67f4,fea8050457728571c56dec8a1b651c0f45ea80ab
889c55ecaea38c2b630b143883979264d698b370,6c8acf28cd4726182ab940354e9c763441896b96,f28cbbf73baabc9c5a0f9e09f1b107e1815cc20c
22e9033076ff4d60135b90efcb35990a39260591,2641f65bb7cdd494eb8459daf45bc4f5b1e1e965,f0cc07fe68989577370032c06d9ab21c49158779
0efd3afb8c5e338a7d8c569fe834ed0a1acbd2f7,56d84c92833e87124fb24fe9f04a7a31a511997b,8132ccd42bdc21fd45a37e0e31742238b8085889
c87213085f5d1206bc0497aac77dea261d3be571,13e7f947ea8e1a03774318542f30a626b2795856,a8d496ade781502600a6bf75d509a202a8bd38a5
240739e71dc7f5b47073725d5981bcf757b8bed6,a90691435bbca123be9a9ce39c76bbccb7e70fcc,bad42011abeef21e7b27f7fcda79f8e726029f79
910a70ed0d62c54ccb98ee014950ca7d347763ab,bf1c674672a48c159fb936e3d20593b7a8c1b734,e88248d453bbaf80cc0e48440d397edb74dadca5
7dac620e2dacb09db273e9164ad35c15468f7da4,7c3ab69c5076e762120051d4717b9ada1f945b4f,3b8fcfc6ebcc03cb56958b7286f3bf5e7fa4c8d0
80e8dce98f51c58db7f82004e2eea5892e74e0b4,b00e9543a72263cd8542b4d138c850f08f78499f,e7716dc05f4099a6488d4e8b25c6e89685b67896
8cdb3deebd6ca62a0fc5a543f62656202c8ca30e,8511b0fc7b82a9fc2919c9e8ba2c84f61190e225,f56587bddd2c7b983e9ead0a55dd74b4f8fef43a
9ee1821622f500efa9268ad130aeee8b08eecd3d,73bf0c82bb1cd913b8ebfd63e2bdf173bdc1c16f,ce6db34224fe9e3966bf8cc802541f3497337410
d7b8e1c3517bd3ffd3e032f237f2ce06ed29b0aa,af8f1167f062293965c8dd28f781c61c40b83afb,02c4ac974aa660b500d1a51fda7cc17095d06051
d12d82dab4759d18044acd66e11e1bde7b2dc269,bba4edb6d0b921d0a36fb08f3809f8085d589578,1ba93085f73c8635dfa403a5b98f558dd4247a4f
88ab9576b159dc778ac34423683e9ed432e90dbb,323adefec5c28f1a20c7a5478cd9315c53c78c92,1933127d41f4d6d68a6b6fa50c8e281a5e9baef6
afa3cc5439c5ed109e77c77e4c5c9270e277a05e,760484c7a4df1a0566f7bcc8db84dc13de28d37e,886f91dee3547953ffbb58c85f49f321306b805b
01f9053f3db6d430a4c34cbdd4ff0897681b2d8b,3cfec5e6a4e5c711dbea7bf001a1336faff1956b,139f2dfe84cf07d03e461e50097a426cd88a0797
2e65a5d458f7fc677442414dfee4058a39dd9b72,80750f7591998694e5849184ed63c17b6ea0bbdc,2703d9674164ad7612dbab782a58bf4ec87304f2
fd68d3bfbbf3ff8dd6f34287d18435578715883e,43487dac24ceb7191e915e631470cc92c685fa19,38dac868e0036555661c312f18a9854ef15aef1b
3075a820a1369fb7692bf6f76bcf1cb90150d2f8,23bcb38138106a71c779bb862bb29adfde58d048,513a461911bf98d9737de16f59576b8cfdb9b66a
9f72de4276195671ec102c3b33ec148dd3b5e985,41f2dd9c2621a816e68cec73e53408192bc80555,b40c20b53b8127dc611e69db4ecdf20f1a1ad728
0fe363304436afae572016840b2a9b592a44e923,a08b15831bc58a84fb2047224638b94b9055d6e2,05118c077f32d330e090d312639b535f3e909522
dc7130d0784d8b26f14cd9b82c181eb822a1e4a3,fc3d71bba38e2c91813b224501eef9966544e18c,74bed63e286bc510e45d07a44b9c2d822a168bf3
2a9eccec652354106b9e2e12abbf3f11cd899d5b,70b2f29b92fd2cb7595ca8890337d507beec77a1,c720e30fac719444d13d090092d198012dba8042
ea64142bac7926d753a7c7f877ab55e65cb97303,bd08aa6197289e84b982bbc697256cc47af00127,90cac5536fafc2aed60ef1b4187961100aabef07
5bc1cfa9bc09e0be6718082eb9d0b12510cde7f4,dfafb1f7776bc912e8fa4a582fd86af17dbc7979,388a55904ac1ea197d32c13245b089538e35be60
b87e22151a25cb17f44db5cf2bb6ea696ca6feee,51ffa2220e71725b3c691d34e34c74be15bc288b,e044aae4dc24c66880670a0a0b4a6e5331909098
550397b98218b7b6b8e1def5bea34175c483c971,eaf24269bc7a77efbdbd0eb0458dcebb77e25dd3,0e9efd07efacd7d4184d5271f6450946e746dfee
7a1ef994b4579a63d4b5cfd9228da6a5ce543d1e,e76c5d96d8446fbbd6c338bc38dea54a95b0f12f,326d92589a77ca44b33204ed543c44c2ab2524fa
b0d61558e38f7e9ceb3918dbbaab13bc49496320,4cdabbb4c6dd7fe2eb6c009a478ff6c80e41f5d9,799b90ca3fef074da4c675f1f88e5975007a2c76
3f8bbd3b00445b5cb4a5bd8a484ad0b1ac42e8e3,13fc4075f5a3ab3129f41f8812f0a7448bb2d4f6,1222456c13c21eaa8074279ce737b7e4992160fa
e9579fe2df24f5d5a2d6625824e7f52f658bef10,5c46b5116d5e75e4ef12a7ac325a331ace605b0b,0aa851b7f77dc9a0c4cbe808f6af11b4f8fbd56a
b3c1f294ba4b69f2d3bee53730c86af204e456b9,b0076a4709d9fdb67c46d94e1210af71d8528dea,2e9556f2eb28769f913c9b8edb19f58938fa9abd
48eeaf00a4f9beb8313ebbf396f402aec9ef9ca5,6dfe323e6fc26fa7cc35710bf3e369be33b4d025,65f2dd233745fdbafa615308de06b4ab1f2b2eb0
b1a76314ae95e9d2652754b6a7adc7d06bd0faad,f29ff58ab97e2dc4ab553f9d683a63fcb5d81c01,a4240a0c62243e757f56e3f13f19d7257ddf9333
e601156b8c379fce44d8c92e956b73d40806fcd6,e130557d9fce5ae426c040a72786012bfce407a1,f36fbd17b1b4fc327984460acec850a1df7a9de1
e187d49590068d74c6f3b4f09eb0de32e8ec7955,8b7dbb81b1a2a93f7f9368275d2055a28e986481,1bc0ae3d18d475d9a6b2033f7a4299bcfcb51a37
d0c7838eec3c0e3297b1c35fbbb065415bb0ad73,85ee93c2c5edae6f49450cc81fb57380966ee60c,80f1d558229e3533c3a732a19074395847d229d2
2f9ed0576ec93815ae07a0571c3e3ee799b5dd8e,484dab553bfb2287bf7cb4f4fb57356381a59bba,e412f6be55f9ba2b45c020a240ed467cce5ac28f
d5c6286852892f3cb1c9766a0837c4eed1d0f70a,902c93f3c3c213fd0600db49371e64e1f214766b,9409ec634186e7453346e17e55d4f3c4c657295a
c3a3cfe80fa1cff78441a38392700f034a70a3ac,2cf533c0ed00de71b2414155f4c27780b08b86c3,e0da2d0e46498f490bc923078a4d53adeb0bab4b
2e86cdb6209f56939ae97f8d0e9516e4b81abcf6,0a4f5558bee4442ef6a9cfe18572cc72e33f84b6,496a86501a454b46b1f9e16640de13ed4e072eba
55dee03ad0d0423ce31660f3e934d3b6574be8f7,17b7782929e4288a4dd67f644500347ec12ef6d5,9f812855bb90f11a56d22ba4d4e1682367a4616f
1b0a1254adb132a34946ee6bce5ba1fffbc5456d,328ff5f0c32b523d2dbc0206c139042c34c68495,2d1fba1fa15eda788f6d133aaca8804d4d28ab3d
61397d40ae0c43083844e850d87c60ba74b34d28,7f03fb696693a06f919965fffd2ad169cb60ee17,1da241c09cdd2e73286733fd00d39d8ba87cf9b5
d7eef9c3caf932b23da34110f093bc336e7d412d,4b5e5f0ddb3fa54303a63b7192c49c3c5c90a079,a5cb0b6179459c026ab26811b8a2bc97e7e73f19
0d375c638c3525021ac386e1985cbe35d14d85b4,51f5726343727453333843f8c3093e34bbbad678,ab66440e76ad5133aeedc48923df2b84285c6b51
fc6d6c123d5b76c26f8b0d6b984111ac7017d71b,5c9186a395b0fe1e118ec0122f468086d6107bcd,5dc62fae3b0cbe83c0208fcd4746a852b501b1b9
d74f81fda863cf65d6acccfd7e5120e646190c82,20c95f045560cf414e503856175f7705b2804935,0655b342d4d170bac9171fc74d3fe8754805f3d5
6a7524418a88fbcbba65b0172f047266eafead64,1de3aba4e3ad86ed2dc533a0042aa696c0805293,5a9d4d44faf1c8042d112e87bf3c60812d025cb7
c4165a67a743517bd5cc39708cd8745cd1b1298c,3ed000f801444cf2d6cff47e522eb705a0e67196,7629cdb4a5cfbbf09b521796a87b7ae829c1c3e4
6a109634b0062bf5033b8e1a3d4bcead449071e7,ffe97bb7d966363d3f58f7c8782d6ff9a26b87c9,c39a3c6473a967b0f8bda6dc4037a813847007af
ebe7bc8097db6017f0959564bec070c942e041be,cba0ca490e456ecfcff524476f6db0cce09a7d7b,c002ad35b6539bd1e836a483ab55a0f1deeaeb93
4b8808bfb2cdeb4fb62463c2c092644f847798d3,f89a2b8432635559e875e79d76d299e39e62f470,e133ab579077b6f4297a0de4eb7b42c41f999c6a
fed9c609e821b8d714d996f9bf76ab660f0a259b,7b0578dc173f3eb5029ed3dfef964dab2c6a83bf,3605b80f58356535fa9eb66045dfeb80b8e56245
b9d29d34202fd440844aa7f71a18a70efcdee18f,1ee8f039ffc3aa619773124df188fc134a70b2e0,ad6e9049edc74085273451745d5d927ab8955601
9f580c71049c8b2a50c55ccef7f4500be42f86be,5c3763ffdf12f96cdea5ea2eb0c821a82b2c9e0b,cb926961ced4dff3c80e1c115553a7f899612b94
6489b6fc3662533e8785e06a3c1b8e22c6f46249,4f0f67d28e258309b8e9e301715f06e450259a13,9a1c3997aa7747a278bc3e109e4553cd1f43f995
00156573426312d417d654ef9426f169b62e1c8e,346962beaaa5e896c155680f220a57a2eee2e6fc,dd63ea1425ff3047126519bc8170843a9e08b156
27ab23681cb1bcf4829c99d54506b934333e3f5e,a0cae50af6831b5be48866bce27fffa3d1c4196f,d1510840d05eb7922ce569bd0927918680be3c9b
cb6fe28898d951afa14e282856dc4dc13366e328,f6a0da71fcd83a32037b6129fbd1f923804f58dc,801e14c33be6e586c49eb926de753a504ae2f512
b6da7a799a116154240ff0f11d94397fabaabc09,6cc391dfa13640cb6297e84de772cc06343beb01,b828529b24e149ed4129cbbf89b34d95f068b8de
41ae52dde1f6a3b213c49316921a2d8824d46077,edc1c79cbb2925e9f0d1b929d8da01348eeedc35,e60a7d01a45353fe263b3b5fc55e8904fdb00d69
a478a33c3262087cc9fe277372760244f1e558d7,1e9e533e6c27e8665aba11cdf6542798295025a7,e7145f5f7c677cc55f3e9208d08640db49a75e0b
312cf246adc4dcfa1a9aef3968e203660f94df40,3302dae600c38211c87ed5f2f3ec05755cda05aa,a888a141a2bdb99afdb4a0e9e83fc69613c796d6
008dc98c338fc54478d2e8565fb78146bfc84e53,4383aab15a238d013bfc9a98d7a09693c686b8e2,02704f85a925475c71663e5db5ddf1700c00ceef
a04d2b59f643d3fd329129fc373835a8261694a3,70d2f81e5eceec3ac7ecfd0c188bb1a8adca6284,04631040b8a4eff865e06031d0b83e7b464c1480
bfe5733624f4e7c0a929ed684628b88908d6f72b,485b31de21583caf6165581588015e130425d445,11246aa5b4c2b72f50041d019165f6e3e48976ee
9b1861a1049aa0a646bbb2edbaa6280711bc31ab,5e00358f13ebdb36f70332431b8cbff7f6b04c0b,1e3865a187d8ef54d877185da306713640f935a1
a91c1ab6278349ddab8787751e4b561bdfd6cc2c,59ff8a0f654b5bca8a0cf32bb938256cfcb2d508,90779547622977b5aade4b06a2e0c131f9fed7c8
205e4f34212527488ea73f2fb4ff1a54f03db744,52849480878634dc1bc05288e780483d9cc9ebc8,fc1050a834eb612fd4333a1430fee1558a6c0556
fadb324f7cfce4c816456895230a667b5e429b6f,94b77761701efecd23da055691ce7f6053b569bd,1fa83a91abb262f6acfcef71e3976ac427dd830c
59e307ec2ea820e2683ec7d74682c279b2fbeaab,11942fcf012b1730c71263d4f16e86e48b4807b2,52c65e076f5cba913709bc8038f82ef9f1fd22d8
9f5a4205049c74cd503a2e921309acb80c6e5dc7,a9b8fb0f0517fe56f47e0ba5ae5c5a1cba264d86,078e2eabf9d118854b09dbe32c4a0dc858bc81b3
b1a91501609c36a50532ecc324226085197acdaa,a9c88ace25531f56db09d2bb320b2dab6f6da153,096d5f50b21f8d4fab941c73982959109fb92631
291532e740b7187638d45538ecebe93a257b4d9c,4664b1408181ade714bb2bf11249dceb832fa994,5913c17805dcd685fb9270a581121a922546b9f0
259af2d25215b2ef1f58db9986b5d1f59b5f77ed,d809b4ba982e4ac905631054665ff5a973b4d491,4a4eadc60eede952c3d39eabec7fb5eb96a855eb
fc29d5ca7d7c66d5d1c5cfb6eb60e4f5fd5e428c,3d0cf17e5cfe45abe65b838ab223e289497b7098,ac8fefbc2bf6056c7a32f74a33e346899fa3428f
f49da0563310f72c509225c53a8cdcf01a92790e,e315a30ef4098784c515edc6a2628204a7a1f989,b826ad8b7ee25ad5e70f9fbbf6c9b789dba8e200
c42bf9cdf5ef417b76093b3e8fb344e54397e62b,2d8a50556cdf0d49cfab4226ce47960bc4c87f47,a27abdd62170b60d641b1c439876243c17e06b2e
c86e7b43b434407e08a4c722d32dabaa2cb19a78,e29d1ecda9162428b813c1478f2c22e6ff6a6485,9eb77599e18c89bbe426bf272233540206893271
7284e161a205e7bb47fe42dc35a696fea7579510,8e717f41426df720dc5211801441a6a7efc8c71a,424d3606d4123c068048144f4b3ac57a0216a70a
eff10ee9b7bb254c1a82c3e838eee6a20edcf3e8,8f106b616bf0ef62ea94601ddebc33b6c20ae6a2,e56052bb32d191e5de15645a38ac3071f12ace8d
10d740298d54b90f5dcfdfcf8db6af3250b5f5b5,cab3b8c06f91fbb847fca4234d776cdf4cbe0565,bba8558a1a22e5652cf76e5560445b9874d0d8a9
96b3462a5f9d2575432cdf02cb5c14cb20169a8c,3d2d27cf67cbc5dd12a0779e94adadb8e6ebc2c2,fafb2934260208b23ba6f7d0e3d21a68dab2c138
83abe1fb15e2ad290c9e0b0e484d49dbc123005b,3302adc31a551db2969ae8e71235e514886ec7c6,2519f4285484011cfaf1a7a8e49ac74914548c39
d729d5a5b13d11e75df3871ac62d9be7e64d2856,875e22f7d7c94cf40add10fd077bf605628285d4,b245f2deb18e846d47ce27374a5f715125f44732
40c386d6bc6652eac19501b920055aee37dc077a,fe41a51db3a4bdca4697c48c48c66c2b4e91d90f,ac0e641ce776cb13fc7e739ac9e2e2c2c4b32a21
ff9fe851fb11e76e35dfc22a72452c0e014d2221,ee9c54d51a0420d8ae47a05821d1ddc3fe6d86ff,b36c8199bd5d7d50a93fc48cf771873573cfa308
7fe602ebb0f7f0ea94c20c6f6969b8d1b14412ef,34a18adea603f378b4a59e057a1c82891b11c55a,9f69dd28b4fe82ac966aac8118dd4173ac93cfa5
2a4f4ef420dba8797a3de8ac86ea30ea80cd1404,2824f592a3eb5fc687aa7e67f12be07aa99a245c,53459fed2b18c72e64f4ad75949dff30338204f3
d9c786fee68349b4ffe3400cbde2de879d4747f1,627734e104652e6d10ae10e83815ded7f9daa71a,e507f612f5bee3e00effa488a48b0b1280add211
ceb4d6fe8f4ffc4ccac5e1e49e5f0c546a488066,14b3c11c0d94f4972db7a40d09bfca284a24eea9,fbf20eee31f00b6e9cbe53803adbf1b9096a374e
0a886833104abbbb3742c40aa8f965ab14547e12,39f7172ee89eac78c2c68e9c951fe82caacaebb5,5a59ffdca752bc664fbbbaaf6c79207e6b2a9af6
605b21af8c51d612fa54852d5545c5bdfd03164f,36112193dcf865b59f9115794a293ad9a76e5326,5bdef935f9b674313cf9ecae69696bbb9f9b88b9
b58f9bcfd08f1c9dcb58b4fbaaeea4005e2799b7,a6fe41f3f62424d39e1eaf75c53bfb6bcbdf9c32,2de19f9e6695fd26f9aafc2201c1c43ce9d7ec71
bf970b29f46aa39f8294308c8598ddd86bbdaf5b,e0229632fbd5324090e43252aae1e171e7e2b0db,f6651f8855ab01cb6f53d3f70791a8bf8fe01d7d
d5ab671ec33f975082ddf04589bdf9e05a92053c,4eb8f8e5659868077b481bcac9e658f4a6f33b34,d9e7f845c3bc33955a0a1dbd636190f8750dfebf
ba555ea68de61473e931e799e1c6887d0690a064,055681c8b4f5805b4eaa45e154fb88131c570827,8db51a367ec1b80b6cef6ad0c971df81eec52195
860c32f833d407ea1accb5e43fa81fa7b325c289,73a251410eee81a71e54b157a7ae12187485d353,60d81ed79b9cf5b94d98f9332ae4d5e82fc9aeac
38cfab3cbe342f71906354367188cb89138a8e0a,d02db5da41162fe1441a3f363e3abe0cd9121222,c64fae2f8963fed5028c4b57edb83acad854542b
953a4e1b6452936c7de86a0c7f14d17423628e20,8c2aca6ece8c58b3bcf46cf67bb0736079bc4ecd,f584c559fd036f07885f527485dd803d3cd239d7
50370ff56d2eec973fb17f253b0f39a47ba7a356,2daf7f984f24ce54492ff8e1364592d705b0abe9,cc1403e4db2a3024666b428456d0ea4138d3d916
105fae6d48fc3de538194ca1cd26d1a2ef500f26,aaeefacf85974e22a3b8f84333a5d98230ac1f27,dbc3d6b98f66afad36744c718f39155fdaff8b12
15b3f1664629c860920f2be31edc10824a19c7dd,52c5a0932d2fd596c5872f4e668212233f08e93e,f5beaa80d810f8164f179c8165d8e7fd1d7b6003
c2664fdfa557b7f8e5f31590864b8a5237d8e989,5bf93d220f34a840bc676d012a75ce05703299f5,f2bcf407f3eb0c1a886ab4a5fae99c9e3b6eafa6
e2ed90d40f658b13c492c7191b71ce76e6da5bd4,bb078b07d1eccef19f16a8654fdaf79f3d9d2bb1,c7213e66294f194e4ada6da0bd64f7904c3fb2de
35510bd0cd9c8ff91d8b7137ba285bcfb0dd92e6,f7eaa6f3d6a32092a86cf746343d4d97f7f6ab85,bdb611c925aacdb6450dfc4e655f3f8e11d78f0a
d44a1c4100800fa59a5428c7c8db360d6766567d,a38effb29b4f0fc8ec503d9ff1e1cdbf146202cb,5fc78b223c11d08da3f9dea1be8bb59c2f2b4e79
2fe3955be93d40368dd6f1db2c4e49757e87ca00,2c66f30520dbaf0db225425c74908f6b4c18b993,0187580793af3512cb52831aede8af5dcb0a297d
3df063ad92962b0768b2dccb31457017390fdb3d,8d3a9c3ddacf577903186ad6f7572c982f84b4ed,83d3a3941715dfed0e09d9f8beb57e33c4c48229
c9260edb4fc5de04cc0ff8bdad2c1f6e3f7759f4,558704f91c3a44f678bcd933184b1689bfb38fc7,8b2ebd07bf1a6b9cd2440b5748f95afe55ca3efe
b8c695dad8da8ec37e9556c0b87f09c7900d3f3a,60190ff375b55092b925abe5868cc2382a550eb8,3ed60f6c2b8eb8c3e0229ad480a2a51ef67907e5
c069e9b1d20377560b1c971c4538e661b67a8db3,c60f233dc045ee64eabbf2c985924b43c24b3fbb,360ea0ec3d441d6cecbe27d3308611b9c8267f63
47cdbda029c12b37b6d9990681d8ceb6f8fa4d3b,f8da65f8e9a5fa02dadcd16ee19ce14c44133c85,13de117b8e52f4d7c1c5e3a0ece89f380d36975b
4936ca80d1d52edb4b1cdf3baa92c27ed6def035,b98df20b4e881ac66d1f7b577460ee44d291fbb0,bd9ea37453c5413aba818a1d09751feaeca8ad1e
6a983e533ab832290f31faa6e97c45e4f478a080,10b7ad9d0cf758d2eb4cb9eee8312b2fef70c2a5,6c50c02f7c97118bdea91edd78085b47534f1261
ec2e645719b35b7098c759c496e0308f48b88ef5,e80ce5f61f3857db8956c81de525d41b86aa2ed0,94912ab27474fef4d96349f091c504ad1e701531
7dcd89ede12e1d8f060ca5859a9c54de81ba7698,0e11fe0fc5f039939f2f85bc6896812fb1df0b83,ec21c75e05f33de9a5fbe7f7d1bab246f7a32dc0
c261d5fdeef1a8304f8de9cfefda31f9afca7af6,9e8f09b93f3844cc6f8f5ad9926b6eebcfc06342,9ea7aa74b541c85c3973d829b1ebb8c608e2a67d
abcced55af080fd4577f0a107ac1366b3d5d7f16,c8bb9083dcb72180e2c6ed61dc8af21d5efbaf9c,d0a5b61b80a1c8ae6d8d0661833e9e1eb288244f
a49c0f6e0cc25a096b596e11ac5158b6a56bd96c,440a635bce6aa43e7b26611e4625e91f778dcf9a,0c745fb257e71111588ac54b0bb4bd383751e82c
60017c10345599516c295fb8b4ee2970db758ca4,8a3422478290827e9efb90b472ea33cc480adc9d,142c851b58d66ceffbeaebac4337201c3b3f5835
025282ccb90443098c381832c5482c4111140c53,c491856533b75b0cd2f58d17b766c24dce7bf575,55e55cf2475c30e1074b778e205aaff3678d7a55
73462ff8fe9fe321936b17850ef4fb6bd11cce99,868d5f29c9b72579a9060b80668e527007eedfdd,b28d49ced7660c2e8b2c1805702cacd211dcbe1a
866f3ffa2acbc006d1c7aea7191e3f8857680ac7,c771d772c4b897b43e2e65d22a51a9d65a874cf4,49c14164091e9376f8da8f98af46702c357b849e
63f6df2fbc25054afe7863ff17d2d1de6e4b5a60,8b356c7f604f2ef5e7c706daa2fd1427b6eae169,1073729336c5e9dca6bcbbfc5b0fc17ed6e916ef
f2717b8dc0dfe068383bf4086196277af3b7f9f5,f17e847e5b5d574166e4b1edd213ce335746ab8a,2e553ab0e8244e1e9e776315aefbbf213a101fb3
729840ca6f1f478ea2b63d9f5f3b32df5584a594,0e0c98f564ff46a6a3f7179463afb3185c89047a,f8559610e0b474c6945971804f4f38798ae15a69
9cc08d91240df8fdc1809e3e7ece0f02d3df0946,67a614e48ddce29273c68bcbba113b831b5e8240,97a5ec0ff4b7a625e8e63b732092f9f257a2c923
824658874d7aa322b257688869899f15e5444805,e17b6291f5c3fd88bc6ca2f73af68b1b80cd82f7,c4f046f1b8e9d71d894431c35d1a642d37f08a02
07da0058e3289ce240c7d80244ad6079ffa20d1a,28287525879799fc0bb5fd8b42976e5dc1079249,924d4b9b53b3066a6ac96ec304f7b104015e3f9c
6f8655ecc9c81617e3873674c4c509cd49fa73b5,a71995a521343e12b951ae07b0ff9d45f1f4c8ec,c88037b8a7e3682ddcf492d74a4322af7c5612cf
4c3af63fad394c8e415aa459ba3d8cd305c525e1,8884c1967d07d267f78d90dff1dc9778c797957a,9ce7fbeef025dff2124bca6773d4c84b7b4f41b5
567187d4bac30ba7e2acd4e83ad014de60fddd67,c96b0f6ca58d899bee8682eccf5172107952d11a,ea271c1088641a3cc2ecf534fd92ade565d60d92
bdef7af09e23fd6033670380f1ea372791af087d,9209f55112348cadff86a64e2f3012bf3801b306,9d957cd6b393ce64e7ffced79af5d1c5d6edc30e
db5e821ead12339c031c5f9a3c208c509df8f9cf,3180c985ed30e6536cb7afebed99eba42d6a758d,6c656a39a4d001bd6aff530ac878d264a9c5d5b2
0c3cc7672e7caa741b9440ccd6e31411d8d722e3,7f94fb2a65a1b9b68fa1be9ce53b2e28098ac270,3fac1e7d5beacea815a2dddbd4674b027affe7e8
e51fb8020c6f11bafcb575cb58a61d5ed40fa7a4,38ec27065b62932e0387ce4a7a998362a1f315b1,adc66b233d33e90bbbb1248887e30287b38b9003
8cafafc3e670481482caec9e5318ea81a52cfe3f,0fadf3515e2cd9b53a99e21789e4b040a335b5d3,5b03123bd411c1455aa00f5ebb9ff3b185af087d
26c69d564f0d9b399c0bc3bdb08b84e05d87fb9f,35701f8fa2f826998b56f6a8a67de9e5a17a4174,fd74c26707e47ea8f1989941d05b02d92fd04598
b974e4a25f99f91d635d3023792a614f87d0125b,e87982e925720e0b29d7c097749802c99ed92125,ffaeec243a674a1fe4b447bdadd9d360dda314f5
9caabdc4e78ea95eba77a4ac9e17be420fbf4188,47d23951104be6402acb8ca5ef3c9b2a1ed175d3,d0dd4697fa435112d9e10152a94d015bd40f0189
b64701da1b8844dc50c51e453374a64967a9e1bc,aec4cb393db69ea269324db48f7157db0c9c7a6f,eb2e6b295136fcd9a294260b60c6fe173878f98e
fe80f43e4ee5fadcff6c5645436e6f18fa183f44,40c3dc5809eb9842bf7a283ec5655b60d0f0c557,a347e28dada3ec43978879e642479795415e6250
e225b41e3e6c33f333dbdd1009730f5a419bde14,713c9eea6a8e91d8dbb8a408575f740bbc79f2c3,b30b01a212d45b22531a1f5481eaac37486200a1
617d56f23af75d9060a7ad70d95b812b334f99c2,691dc59a2a70b68d9e42a4c160d112630d824361,f6002d80781aed00cf9549647cae12f17b1ebf98
6d79054cff8fee91630149d9f439b22aa95b28c4,0b4d9a673293fd940fb90dd672014839542c72d5,cf4fc4e3855f24ecd16d75e7d2f172881956f5dc
634e01d525c3ef31b11ce65aae600bb784b436f4,a816fc2114eed47eb4617e14a4aaf9109988a60f,fa1abfba92bbdcc4fd1dd584035466cd764cd695
43d84beb01096411ae1a94d6c323082e3ed1a414,4c787b4b9f79a958991f248ec2db7a8e6497492e,0c61c7057a91560772a884b44cdd841100105ec1
1743df7b80edf021173e1ed7e4fc24586cd58f95,569c3fb49feb3b4984814ecdde394dddeb58c74b,c6e715a54e9d058624b680c7d5c36511ac7982d5
4c3d8d016eff0753f2b6dad39a8aa08a087c0af7,748dbbcb20d662572667064bf4494f87fd8abc8d,1030f67fb4842fad0edc3d7ef2798ab0aedb7f08
a575a5c0fdd7fd6f9e45eecd2d76c045cf588a4a,e86882580d4ebcf6392ad27d18f2de1382656804,c1c1d46c1547cafe1e7b71864e100e82340b6dfd
8e79108e518ae31a8a354f26a998c84ff68f8455,02e90adfe1003b6ee2516023dc5e0c38c3ae019d,8bf2dc3f2b4b28a68dcfea9386f353ee8c14536a
09f2fa0daffcea9d44570641d341b4fd40346cf4,ea988e0b920bd55fd07baaeaede08ce82eeb45cb,95593f15ddee345e0ac36a25b4de904c1f8378f9
8ec86ad053ed6c0777e2f9d1842de7aba29a86b7,152bb316c37eef709e576061abb8aab413908526,061c8b5f25b97ff9ddb7c03d6de1a1ea899b128c
8032b65442c198b1cc1a14176190d41eea7c8ca0,fd1fb255a6d2a706041e19f41521fdb6afd20558,d9e3afcb1d3d8f981d1daa05934e893b19282b32
83a8d584e0bb7f5a7a2da71f14351634c6839afd,4adac78f85014ad8e52d0dbdad28478d54273283,65d4319dc2f9f4643f8fed2cb0cf038ee945d27f
7cbf18c6f395b2133ff1fd8c44cffbe4c7c8f28f,437e7fa75af92b1ebf2dc97084b019374481fddf,de1b3a982b28624802102ba9a3dcce7a71099af6
8cfc87ffdf1ec6325f11dcd1a4b2eff7ff776201,b0a82993e6f8d0920c2ee789e84d67951e84a334,fac7c21b9b95ef254c27c365ddb218817da8c777
b71b5b771f4304a82d79ba84647320755253a19f,9f6a3eebb78048432f2240922b18cec3ae80a686,be11d22c17e27d92da9cff57df4476baf16b2b79
9059ac067c160ff836e8dc7d75b3e03f22404f12,e4b88655af718a4854478ebe905218b7f391c642,e67094ec28727aa9f0df6f331e29179fddcfb623
6277c21261e0ed4116cf460ca08db26db2d99175,bbb159658a2265472a7a23571e6d2d439e409318,0a9169eb67beca37d9108bc9769011237c8a497b
258ad62c4d8562463516d40d5f4c5768b9f9ddeb,d8340641cc3c64d043524e8f52411e414440b4a2,b08b5bf136c80d80abdd52fa5295589aca38eff5
7f4f25488861aa4c70918b6a7bdae2db10909c15,37d699ed606c23139ae2aa501c2675ce8104ab05,2e8955b3c8e507b466265cb13402b09575ed5711
813427da845b4b7f768b7c3f3cbbaff503c44bf6,50c1eb408950a342e3d613ce107b8f4c89867ee1,5cfd214b680339f496a630d8be236382ff5090fe
7d1999eedb23e0560ae2e2840ae52decbf733e73,c95dfe24e7203ebc73429d5bbb839d6aba1c8b67,fcfcdc2ccd310f211d4ffa4ba084f48ca9d57379
3ee412a4a5468ca156f3a6dd4715fba1a43f98a5,8d7517b43014cb5c7936638480d5689415332746,e571bd869376b0cfac853f82a15513f86bf899ed
43229cdf2e5e0245921e5b5be3495aa3f1cbc907,ee3ff193120005677c4ef63c84ae91af57ff8c37,6a067b55d1523bd258aa3bc8ed2eaa2046892d7c
478a227aa4ca965b1af6badb27f3df4c01b78183,a4c03016fc73861bd514ca9a974de5ef990f5e95,73867e47f92660f175f5bd2fa65d90e59825616d
516e078fd923405faaff667b74036badb55ad4c1,331e851549f6438b21daa6ec12f431210c3347c2,91ee643d5f6cbbfd1c9117653419388e07aff583
fef7d7b6838c9f62f50a354cb74a3754fff5a951,342d3338e50110e9f77574571e5fdac29330046b,93937f99ae6cc39b0e11d625aa9a1da05a5c6d67
4016e1accafec4aab026a040ad4e3145895d43d7,28704b2976186d00132f872ada99234a80de9d7a,b530804eb6b28e9776875988cf3ea5dfbe7cc707
cb164667572a20b17818d90ea2279922404454f3,89cd72b71c8c567ef7f1f371860fc43faa7eb50b,0457690a8bc3590080fb5267e35311e8d19ca918
7fb83161b75365d9482736bc485e02f2cc5649c6,a06a20f9c03dd42ba19457a8c0a4c570af5fd6cd,295364e95b7aad394ac3b596618913cf4ba134cb
a57971204c103f738674e3af5fa72c940cef249f,b3b4343e6be782d5697807f5d03c054322d5c075,87137a4aaaf7a9a389c2c34d2eb96ee0e744faf4
963a55db527b89ce0d0a3d5d9229c533aeefc360,429d04089ed2b0e89cb34ffe0b3f87a265c4c372,bcdd29b556776ae1ec8d3b81d4d926d19140fefa
1737035501ddd392579f1da5974ecf778e9f1c9c,124480e73adff243d2cd0e2096db03a029f95fcb,c81f10bfbd5ab6ac67067933be7c9edccec95040
1c96bf5d30ea0c339ab5234b17cb6352676576d9,2536529bc01873d211a7309c76c0a2f758247bc6,e788fa7e3f7284a6516569ba282983e36ab12917
52651a7ede3b51d3305f84d5e1ffe90e6811683d,ec2f18f8befdc0423298f1a439278988c0d6e4f6,d270c2ccddda47397de4bcf4fbd791e7d4b675f5
9c81c4a5faa18681f921caa8ca5a7cbdade4044e,3ad7a0e716b497df356b2d8c6e799045c6aa7623,28a849a2931afcd495438a761dd63fab1615a6ba
396781408129dd8a31bd35df2e05e6807921d297,a1e4d5a51755c7e23d4f93515007afe7e46fe2c6,536b85021d2b19f24530f982d6dbddff0d0a3598
5043bdaf183c096f38d092f66dbb5207fedb85cf,c1d6cad44411473fe7c3b28e9da40f89889ba8eb,e48fdc5b0f6d6791f394510f678233d5eb9dafec
08bae9ee2ea79acb659e3bee1d46ad29d57121ba,08bf5f72013fc4a7136eb935473d5cc2f3d5945d,6d157b5bf0128f5aa9077daea7f66e89d8dd00f9
657e4bf838f850e1d209baafed59ad2ddcf5246a,2f5cbbacb714ef74a99c483f545d530a01d600ae,a4242e60b2b8dbb6bf5b03bf2665343d7441fb42
afd7d9965ab56f5432773a3f472f1663f243a73a,47e4eaf3923a93b7300a14d9e63e5e3292092ed5,c20178b6e1622a7da4abc72815c3b9882a9b16ca
951d2f394212678b0ec84648dcd2b57f3cca0b04,bcaf8d14095489a4420c09f9c81e61f941d4c1de,1cea95e8e0a2832325572daf6f47a7622ad91801
6f7d2136c6d60a501e9a30a90512d8cb6b37a1d4,f35a565f4eedb53ef47faf2bd12fabe9f02b848c,04a9cc3ed9c74b2674362eb1bee7a681cf438b3f
3160e45316babdd507b140acf2999fe102699377,303c0378e9dcd43ac922491017d1ab7c3f81ae13,3e098316fde811eaec9c9812f42a2dfd7f0015b0
e579da0844fc82f72b91622902c2671c7b7c831f,1a714d688a6365ae970c5b63d8ef74d7a9bb9e8d,2fb300c5c0ef04ab2832d7f6e32a5cd57811838b
038ecaef929dda1588b181c3058bad1ed56bb537,5de7084d35492e6ec6d4e3c4cf0cfac3d881195d,c6794dd7d73cd099ad0688483d8f215ba05c4821
8413c2b0732714300db387b1faacd8f1d9149fcc,b9a6b01c97afca09b44ebdf5bac8f91dfe7ff35e,1a93cad4f3db9fb747d23d9b16a75642c4ecc0ad
13dfd1cafd67261b0d44079a243186308553b6fc,04b9bc77024bdfb7da727fe7648b1a3534c34072,406d5f414736946762cbc3aab6db1903ff480498
80febbd8cf6cdf0dabb80612060d0eb36363a4cf,5b5a8b3387ed2ca1f590c323252575382ca8f2c9,8708144c509651ebe9e928c500883c4703dfffe6
6d45fd09a23252a391f48f1775747e0816e76674,a21dfc0245ff29ae5f23bc0a334c05aa43e9c4d3,a179ca8cf8c9e1a62bdff1e9693e55b9a1453ba3
692bd6235922a3c84f329e0fc8117d7e9b656151,41ead20bfb32f03c1b36bd4e98bdcb569345dba1,6a1eb520e961845b4a0e277fa57df4c6f138ea9d
e61240156247fac15c854294ec2a0d7dad1d2868,10ec49d75bf66731bda613fbad531fe49a8e3907,cc2406ad742a00b88568d4c2d9b64c562b42ccb2
c2fcb1a8336cb9b40a43667c6489ebca7081da14,694341aa789e1bc5d3653e5a816cf102179ab554,bb93b918a5bae47027d01ab5dcf79d01147835f0
31bb06ac876543a509dc04d7af53b55db145d84c,9cf31e2bb3a99a883fe22275f205a87c39412108,7681c192dbb6d74b6944061863445a55825506a1
aaf536ae109a4797c13d4c6a0655c3103596d5c8,801f902efed9527bcf5ee2cc44aa5d2262a9637d,ea33fdcdf8541621e1f1778a551238607308a2b5
6be3a42a2f18a349402d18241c83d68c492c7bd5,74a4550ff01a1cee4fff5c5a5a7361729608613c,4afb07cc5ecfc9d3fd300b9672ee83fa3626d4c5
a417b0db9b9c8f19141be552e6e01da1e4057893,3c027b0ba03df25a95ff94cb18f15aa1dbac2272,ca0e04a346d37e96f7b6ec65dc678f9cfd03c8d2
3e6cd16bb56e5f468fecd2ab3250440cad90f7f2,23dec631f52229bc132d7050f4fa7e560de750e7,b340994e1b1f886bb660aed64e0981a954414d2b
60bb6c19d9a3fafd600b3f8de50fd2e9fc7c9184,68f41911192f5e8b63fbaf02badfdb5f85952df2,8bbb28ace8d4ebb6b051425761958e4b4d14d242
da597114427645ef37f4d1ad10c9c19d5d4ce23e,9d771396ff829f3fde3dae0ffb6ed5cef1064ddb,9e0b2869a3ecbb35eb9244db4352fe33a1513166
45ec51dc1f56e8511468583d99121cc942af05f3,25af7a4281eb9c7323320b0eaa5348a9daec39bf,d0b03c9c71369432011b0297674fd5bf0a5644df
e6ba09aedd16890cb76de875abb370512ec0aa01,22c978c33fead9764e6ed6b34ad271bd8740b2db,f23cc9ec6d5a89bc61619e53c9eac8a57ef1dfbe
77d592221ac120ece3ab60730de6a00eb826761d,e03389c6a85ad2aa2ae11be193f3a95e1483cc31,fcfce9f2d582c9adb1435161d27a73a86381a6ad
a0e1dce1fded5e40a6a060a5e946503c3eb11a18,5d058258fc3fb182a42e750ad8ab09962bd2f4c5,af5c2d66c2337316c85d8541149ce3baab650cd3
1ecc880fc813db7da9b55145e21cb6f62b45220e,37c32a9eb76ca90f6d984f52e0293cbd79cf6bfa,a81eac24838b7adaac46f50874b2a8c92aea593c
594b96e305e14f029b70a1330c6a96ca6e930972,d4816d12f790f6fc56d492fb8eec520da62035b0,258211e0389cd78dfdafd9915f8c074ff5aa52b3
abf04f10869a9822d041f5c0814990d58fbcc4fd,c53e1b20d774a75aca5a52624da2618edec29bf5,92f937c40eb8ebad413e8819de0474306755a1a5
73ee25071d4922d336dd4c1810d5415271b58729,34025aecac5ddc82c0b8fa17873849687aaaad5f,610f2bb3c9a50115f706a01488c2ab5942d3e395
961042356ccf45e7d6247aa334323c44230586f6,a87481cfa4c3e5de8c80387677c172cdf39029f8,0642f145520e2893519c967678575b6a2e3d2542
70ca28701b6fe30e3d0b8d81b02d5059eadbda85,44a5f6623bd8e58b80537eba80048ea01ed72df6,6ec1b7e1b55fb40c21c86eec260ebda0f5b1d1a4
db86dd07fb93ed5aa73827513dbe1483995d8a82,99b7b19f1743d796d9e5f78db2e64fb0c6afe8d4,f1a173bdf6ed78c5440ee794f8ec9bd6a9cf09b9
7e938ffafcff78037e849ef69727ae7fbdea395d,d1348d17bf8d5d81a03e2ea3c36d15add9a3150f,605ca8144f12c6f84cfd285925f91bd55a5f0926
cd8fda1c2887334eb49143c156536ea904f770f1,df4ef397624905f8ab0f9d7fd7673e36da1cb7f0,afbc36897debe5e933a07faf6f2daa961405f8d4
f38b12240d40e4684f7c7de354295812064b26e7,39ab212642b9c86dd002d39a9811d14785b885e1,334ef633a80967422b7c9a213da44731b47d1fea
0d5dd4196f9b83859a45cb62a1c2282a9df18f48,a441d8ff28f7e68a2801285bc58e8cb599602ef9,90a756931ed4e354ed958c55165b7fc31ce05d41
c9f6b93d226d8404f00dbe3786863340ef82806d,07b4ceac49abc1138ed4be662789a618c84c6824,3a473f9148adbe0219e6d11c634dce828571d12d
b6f60e33ca63f95d9c862edb186aadf20f266aa7,914b1fecebe3e44876dd69eba8a98a83501704d8,8648c0353aa73dc211796e0a0cfce6e5035c21cc
4d48e7e4d33604c67ad1c4f0e8192ae92dbbb28a,cfa7d6a0c61637941ed8ac693347bc52c112e3af,b985cd0ea55ca2b91e7b74bd58ccf9688f393bd1
dfe60b53d1a020908d0d585adf8f96d0282ccf86,4adb6b2beea805e62999fcde8f667313bf1a8d17,2e2281387cfe95db0175af1e145106d8f73a983b
f81485a9b10488eca3d521c79cbc15f9ca1ea59c,8833fabb4b16a4a492103636e9253241278f2966,7b05051fc16b5efe71e55dec68336ecf78d37e5a
3218f25d130f9e3989ee3a8c6e3079aacde55c8a,296a7923802d48155cd66417b7e15e1da0f29e20,0366df9fbdfc89a0ea03b7ff89abaa953b5be5e7
6ef37d999a126d73500bc57d6b07a76bcca94aec,276618563cb97f4689d2389b6b71b6bbecbc36b7,43660084b6d2e00a6d7785329d630604d7ad0331
68acd786405462b0f27d38cb7a125f9d5c4afb2f,081af9a892a11c4ae29bfa932acc9b3ea8e96854,a53eb8b230b1783f11bc13898d2968521e3f97ae
bf78823e60877ba498c1297b560159de98cb9a01,c54d1d4b8938af969afa035435067ac224c8354d,159d97e86413c12d36e4c763e89a97c86931ae2c
7ec9d2bf9fb0b51a8962ae005eb30382ebcd64bb,167b5213d14e72cf0dc5ed04c8a6232ab22af047,b499e7593a593b86ee2f543ec1bee6efb0899b63
de5b2c519298a13ac253169ffcb6c42f99725dc9,a65fff24e938b9013076c5462e121f3f3b90d86b,711e412cb7682c3ef80b5e78038201c67f627b8a
8dcf4e62b753d35569f4e5d815ae45bb4f02c20d,2dd610c140127d6d836b0020e33d3995fd1305b6,44f58c702fb70614cbbd3702228443212239b759
13fbc876e0b46bc7b4b6619b2f1b0ef82b981552,a4608bd008938e4e8853e5fffa1ca47c24abe4bb,02867fe9184d95890305bf5450d9b68171afd55d
4527365f0d0aa5e413c476bdaa5b1fb66941f044,0f39633acc39fd200a3c8cc29a5c5efd8ffdf762,aa658473861af6d1f96d68bde51dfa451fc2ae1e
200fbf64a11ef6df7276c50b9e7b3daa2dad87de,487afd243e55de56d45be70fbe7c9d7056d6b777,a521ed8c7667998de242d83adaabaa9626497c23
edf7b26f52d05ca09fb69043148acfa4785f4414,db1d903a119e29849948ba8cff90c6569ffe373b,c8eeb2ec547079cebf1ab60e48bd731287aeeb39
aaae62ea8860ca88b9965b157398375234f4c22f,ad34a8d5749f8e158e57a4e176f1182d2ec785bf,781560f3e01579422da5ac66c0d88fcc0fc3d4de
db05be80bdb6e831c819f3f746326aa89c77ea69,1210747f1d4354b8f00054fb3ee496462e5c4f11,ce04ce42eddf132f110173b5ba7e4f103e835d17
017b41de89da93c848470f2f2140b6df019ac1aa,7ca0ddc70ed45932763f739ea76150e4c744ebca,4112318e2f22f8df913e17ef086c52a863505802
ccbec9ee7d6b1c7ccf6faad32b02e606fbcf50f2,df26a02d9d6d3b000c185496259896d10835a3bf,1e630e8a17b58d3c6d4b6340321c2623429b25c9
c8b9eb3c5c693ab31bcd408f1015dbc14dbffbb0,4abbd82135800a4c79414bf252e153b76940b988,6dfd2de1882096019b27c144ffc2db2636b5d466
492e38069c9ca4eb6132fac300532840e4880a02,7fe6438d4483f66d347dbbe4205123743bd36ea1,a0ac317aae017c1bf828084410210324448661c9
42d8a29156066b390681f0cbdacb51fc41fc1a26,919f8f383d208f340520a34a8ef2ea958474d1ae,1e6061845ee7923d066cc24f650ae3ddb0044976
6128dcc73542350ce5496f6b56c47c43c0d89187,f81d4550941206cf9269b4a2aabe2d9e42977113,d5613906873899884c47557ca7b064e7ab8eeb15
71ada8453a88ce899600a9de10210476e553f79e,7fc6d5aaa1ec5245f4c4522f896ec7dabfcfa40f,184c612f7865eccc53ad40f688d9ce5d9288f6c9
cad9cd22d36c362b4de12cc3a80e1b207d5ce6de,97ad8fafd8ede9df238e03bf8db06c7dea8bafac,0a6344270a4299f21101e0134ec8aa3c329c5e19
0735ac0d1f05e1a017dfe19f2ea607bbb1fd7113,4f42553cb3b884a0a62ca6a5dd7edf80c5c63220,d2785117df1711e874d39e68494c263862584274
d7352e7b663fb94b38ffba53adbb94db3e2799ba,7a1c50ff87ab6a9a29f41415655fe65e2969b5e7,58a3f2ef64ff6ed1eec0380ef829c93aa1ed7572
b6527c6c031f373876d81d57da3f2bdc3af25026,7ce2f95db0266716057528bd9fb9083bdaf32789,54d65ff75c15029c7420b5e52252dcc15703b127
37ad2c42efb5196359a31351441ee2afabcbab6b,8c3829e6981523efc6046c5aeea5426cf1b737fc,887826cd7c0407b7dfb46691fc5e0c20591392e9
00d5351b55bb27987494d07f39660522d235ca23,dd26c1502c8637ab6bc1741724fe876d66af1104,97b61b64c33a9f1ef4495167004c69fb93adc9e9
6de766e40afdb32921fd875aa8e6f1cc36bd8873,f81ce16d2abe8f15cd4477cbafd27c048073a173,d40aac6cca99591f39af1d6bebc2ac557dc0d143
b8fdd7148b07ad5e34ba18c8d7112deec110d7ad,c88873cd46efcbc367c003cc2155e0ce63490a21,90cc6db5cb13a68b33e100eae48ebfbad4432815
94d7aeb9986412338dc62fde6603e2dd17edfe75,b40d312521043069d928494839eda85cfa4702a9,e60bf232b9bde0a79d705ec3cb0117d868897545
70998b6720c3a13933ec7639e5a5eeebe9309a83,7e07a36fe49239eb878e16fa050978721cac8b71,3b0d2b329a8edcdfda5005bac6fcf1fbe2070ff5
2db7b8d565cfc0be90c369d503e77c755c5d2e37,26a49835b5043b671493833b0532732c6214189c,8a38755dab7d8d94266fcbe80eb14dc9e4be3d46
cd2c8a6539441e0917d3f4b30b4e28d2c701c674,4fea0e355ea297b6037c8452fbaeeb762402378c,ce5a632432ffcadaebbd5024637576561db422c5
d53a81e2d96bd580dcc90fe32fdf3d71cb412b9c,5e327453a858f41964f6751c5ebf766681d414d3,a76ca8f60e8f91d9594f3e7ae208c6e38183ab97
6ab6d613e0f272502306f306e05cf72af1904420,ed07cd14b26cf82c09f481b7e0d9495f58b2443c,342ede81ee24eb90a1a31ffc63f226adbf443b0b
660836e027ffc0940291abe39df6c5e9e30d3430,5ded9e3cb308a1c9ba7148ecabe6e8f0db5c9f13,d43d58150736e4705ae6ac359df42f5cb484e453
293ddffebd9c09cb3327bb97ce03d0e81346275e,7949e53d8ac045552c53fb29d969246b8ae505b6,28b080d9bcc50c59ccdc9ca300e48a3c0d05ab04
38100cd50193384ec3f68514d15e32d4c47b68a8,437faaab1293556a232cecdb3a6c7e5eda70de95,649173001c2503161bd85280562dd9dc97ecf800
d786b639c016e22d09da7c59e5d62f4d3c4085ff,3e036e4ff83042e70c62561455fc5044991281cc,75e061e06f3dd6fcae380256b04c115f8c6e8296
3d204dd0daa2ebfa70d37916960c7c366317a6d4,6149fe394e66d4612026cfab03847dc79e600470,3d25e52b614f2fdfd0a8e29f6b16971c9eb9d727
266662971b00a6d943b63459b42384272ce3035a,0314ba9bfdcd7bd092506e692df7b84edfa9f648,ccbc28dd85650b3db35cd414fbcca3acc1331c1e
00e528996782c384b3a03cafbf18555420898147,aef32d5de98cdd07c1843ced826ed128b84a2ab3,2dd0b55d0429e5d52bf853e5622297b6c4ef5424
964aa8b71bfc312e004d7f41f0d0e04a12313de6,45374be28e8b735ab8244d1fdf567d2ea4574905,9146eaf0839015e323a616b828ad0452445daf8b
dcdfad4dc21ab02bdc30d4e197fefb2798dd19c8,528ff51a8fdb9c064994cac9f77cdc08729a5e16,8b0ed99fbc0f72d4db1082d5b75f13eb04ad0b11
471a735fe61eac749ace9d95f990ec38f006c89c,517123899ac290cf59b795867aff780e1bd8e139,5e996dc18f9969d3a691625a19ec1e0fa75786dd
d79c549f039365c60123f239cd45149a037e731d,27fd290150dab0dc7c05989e8c93f3904987444a,51fdff0e7f8ab62b1f66450fa930af1d970118ab
2ba0f42508c179af0d79e41d711493b9eccd8197,a0cfed14fa4e9b0b7d6659043b60930e032092c3,424686ce34b2a84815ff79e6614b3bb2ece64d99
46a9fcc5f93074c9c37fc2539cc9b19d094286f6,c0d6efaada138f939f067562354f1dc483c5f353,9600b5276ab4e010dfe8a316557c6757515598b8
677fd4fb00c070eb2f5318589245c2ffda606898,a4ff1d185e956160be4d3c4ab96cf70ef7598a7b,adac1e6db211ade0b010590d5bce76ead3208f13
1a3d651cfb70a3bce17442b0cbabb3b66412655f,af206dfecdfff756a0c85a01ddc6b7c14a019492,1084346b005135274fdbd693dd1ff5b744e87707
cc15c3c2de57d0039fbdcad6632349c26e6c78c6,a20c83fdfb69413a5ef7587d6c29d491158f7487,97e5936f788017402d80384ae987ac55ee08d1c3
d60300e807e911efd4e903412082084b21db8e07,ee98fa8e3f5f31ebbad70b1f2225d62157db2413,9799c6a5ecdbf7d46363a0bfbc8e0ab7b94cf565
60965cdb69c7c9f0142138ee3d112bc325488174,b7742def46354751a38bda786b6abc36be303246,06917784d033fcf9e4a1c59888ef5758971e8105
359d23e595e164d4e895f90425ab57d1829696d3,dbc3e71edac58d1896c0896e5d3ef211a0b471c5,9c3a66930c7be316b97b9e932140a56cc0b35394
1ddf0149803ddccb0aad22d3e6545a04f17bbe89,cc15a2dba7fc9ad98ecc335fcce6a0c994214a4b,d1e239f3c497ecaa770cc162b3a2c7668fa7aab6
d2231e99e8cbdff20da1d4331fec565ecd3c6861,23debb77b39082f3c483337f10e4dd454952210c,d41d98b70baf95c1767395d713f1b10329c0da29
c8e4a52428e84c11e26493aec1952532e60fca1c,d81170ab23c3f1f76c69034f96d8b1e88a045978,99943610cbef38f25c7589329b5ef5b5532e5cc9
cfe85a036b812b0c167fb51e14300de975abd82e,5c91c89aea81931b071f69738752fe5056e16ea1,231bb3df8d25606f84aca047230a79ed363a6e9e
feb7d54553838a48873fc2a198e822740f2ed733,f5336f631141e3f43711928226a7eac5cc803991,3e2b0ac8b96d739b7f0b7f36d4ad432bd094a551
633f905b79f556c0782d6381294546ea61ecbe85,84da5e619c4adc3c72c5a6f2da80c56be2899a72,190b27ad45fd6e8dc45643da93fb09c8f85eacee
761b45196210d758fabb7f87573c2632f9dea107,05b67c740833c9bdd5dfb1e20e9302943b7edb91,b9ca30165cefbe0d857c4f2d32bbb6718b141bc5
80523e192a26f9918a7a942d0adffca8ed180f60,1a08d76ccb9422788daa011c3fed2d3f464f9638,562ca0ad801ea4d6015f8c9c971c8929b9c428cd
4914a5a31f907bdf8ec97ad9d9c5ca3ea52b716e,993db6cf32c96c03e2e339b4d30677211ea5052c,36ecb2b5daeaa10898b4d276cbd8c2ab33f545c8
aba44452f36284f757f4b8e899910b328864ce12,beee98e246d2684dc0d1fa42ef9c77c59a381733,0e0c4bd6210b11158e9ded139b9081858abab805
69e7ffadba6ea06c82ae706349b6e1e46ca072f5,400094921cc3714875282ba96219af966c842d70,9d7ea2c069d125253462baabfeca9cc814701fcd
cf7d9fa4c5a22f6ee4b6ad563c54718107c168f1,29ee863e8faedc99e3b12b1e4d66b21bf51cddbb,b1a18f569018cac1082670353a18f8742b5731a7
76fc3275bce9cd593ff9841374ac4ef572336eb0,c883683b6af371a8e4f2c4f709729d4ac1766d64,334102e3915212911b03280d719e874a35e9ee2d
1f0c72b6c18aaa6e2aefa9b6a250ccb461837e62,5ac4fd0b133541f705dd3478fb90a6f8f75ce70e,b18e3810499b15d3f0d4dd4c5612471523c18e68
705b2cf62ab01655c2c7f3629feb386a3c86e703,ffd461860b9e36af008caada650839ab99845053,2ee8a59fbda3b2d7fbe3b160a644459cc8064f59
85143f515ddbb545e199b5f2b3725a774d4a65fc,7c545cfa8b3e4d6d9950cb61ab1fb52b9a3d7689,b5d0cd57edfb7390bba5b8fb7b617311774ad1c5
507e728ee87ac8f16aa143e58e7a584dc9551291,a46c6229c516a172c35f68e36b2d35f6713d93a6,8b48127b2c4640fc2199829158e31781082d5dfd
ae83472a06f37feefb22a7906389ebb8d94d65a0,083ac5c1142ce6040133ec4da1318626367db612,33a389dfb7dee9ccb787d70e6aa12cfe7a2ac330
44d9234f385531cd418214f6c14fff10712a14f1,1ea876b5173b6823a10898eb94acec7e7f3a2a3c,508e0dd01cf2d4a7511449e4e84eb5febdffb847
130d1e9d4050a29a8f2ee10261f59487402778f8,dba753eb8d899be32b91af258182243b109b74a4,a7be888255630421c404200098dfa23c4aeee5b0
3ae64e5e175d07677d9c367bd41a4edb101d2a16,5c94ccc4c214ddea0f81bbcc1561a0ec4f4dd07e,eb440e0ff132cf5854b326cb80c697d359e048a3
cbd4e681d0645c8f85c69ce0784c3589ef37935a,d247c30965fb9ced124b85502e7b1e7208a34da0,7d83cea8da7e877ae8f24395236e6628372aa830
8c73d0a0e2fa2d847cdfeafeba39203200fd7a94,a348dfc8060bf369c7c2ff3c384a49e6ad67ed23,a67c85cb89a556194d53dbf3e23c09750e4a16a2
818e3ae6e508788f628a7edc55782cef1da96d77,e1cb1881572cc0f36cc92b518b3f57ae9e20691f,17fc8249170e813e894645da3cbbed8044a62b4c
0396174bbf0e312992ac44f74140338c8af6bd11,696aaa4a4fb6e085af2d7e75b18f954c850ad7e3,b6390354150470f83457c679541360a9b387cef1
17c0765655f44cd0ac761df780f746f435c3aff7,d7e24e8708bba502dabde291f496b4e2feec3b0c,63d9c1f077fe89360a57f07c3fc5619f91f43090
368a77d75e78d0cae0c92ef4300117ed07afcc3d,10bbe83284ec6c42f13c8470ce95755401aeff9b,034c361804c13b896340761ec26f09b78cd5b1bf
9a8c6fe93d3ce3eda84042f2a3fd8b64c50e8f1c,7c023d33d0cd106ddda298cac1e340ebd5a098d2,2123c5994181a14cbd912c4064755da6ab0bdce1
b47687852e39a2925ca9e35f0b9657c00ada96bf,14ad18a82b20d0c9cf48bcdaa8cb0e03a066087d,530a962dfcddfc079343559a51c96f7ca855c906
e9d8bcf484ea417ab2d599700a8e8e5a5d019df2,d1438e0d3905fc5ba6315e4b4bb216b2d07746bb,3707000121d9a39ec876fd4ea90bef28a87eda0b
da0cefb36425f2bc70dcdb2ab8ed7a15ca1a14f3,5769d737d1849f01f27faa65218cbb55ef505e2a,77c51bf7e2ae535b273f6fa9d0f44e3ce6c682f5
f356d8cc5198111bcd53e61cbc6bebbe0fb16960,91d3746adfd29cbee1f14c8e0456f09a2228d947,1eff5ae28abf539fe25f11c8206d09388c5c75bd
fdae200281798334038bcda0cf43790d4ea6af03,8e6a8a36cd9dd38e516b9af63180cfb70851e5c8,a6eeaf2c72770f56ebe59005a0d2af0a62ac2d1f
be9bfbecc588b206ea124d7d2e27cbdcd8451e30,8cacfc3355fc5c82aaabcc191ae368b282d3d51c,b5a0c3b1b6be6538d7111f2863e4575cd32da662
4ff2b54f704618925c63c8f985a72eaa7c926922,66f73d466b16f14994b112cf6a6064fc271048e3,19658ea42b5f08f6511cf3594ac3c4fbf4eff318
213918037918f4bebdefed4074e5f71b72931dbb,2f5fe67e56fad1e8a05058fe3099774f5c26d19f,0dc2f78bc8c384579be8c13b271444eace7a04a3
abb5294b6e9a9caf553211a291f18266daa9d4b6,7e73ccf915eb7225b37b7e156d2985e29990fc45,d3b14eb1ba8dc3b5f2ca1dd47db1faf79cffd2c3
149db318a0c4a4acff4fe5a23d43dd66e7704017,b900e5f61157e6ce28832f003e342f2ce53274f7,66ffc986c02bc46b3abf1f9e6defc054c4d465b3
f4abc07748a03c44b43ad1e7655abfe0e3cf1db9,fc039aab28d32444a74aa0a9b3ceff02ef11fed1,00d86d24be1b301eb7cada055e591dfc180db86b
180c23b3956a04de88e75ff33bebceb6b5e0fd38,7b02331168b52fd8f59f9dbdff6cfb22ba3078dc,44c8193cfa93c9417b9f5fff5abdd56fd68e7145
b8154e387757772ddd003f29c78cc8e297a302ac,bf7bf44727c0f26577e093a9cccdcbe44f163171,b077d17cddf1140a5aff2f176e12990f41e00e07
23a66d21bdf93f93a84dccec9110ac1f3d725b31,3a9024f0b77a16b942c6b6afe42ab42ba859717b,4b4365a013af5f5de21d48622ecd6dba2b22c9e9
d3af1091b6f6947dd923fa2efc2602396323e1cb,f6c487dcd7cb1de2781348bf2bb32cd034078eca,cdbbbf036baf5ef43329fbdc85b7773052f52b68
dcabb0151fbbdd802b70cda739aa920ce91edd45,ed7da321f572d03da3bb3a89716cc51e5578eb85,b667be825ef6555eceb4cae7c2c372b514617dfd
a95cb9f35af90ed8f48c816e705deedbe3e09056,4c7dd0810fa8ceeedfe7645fb79d148798c92772,6ad30649add5a4b1e75191cd0583ae3dfa8ab572
aefca4c22b7142dfccf09a175500af0d988f3755,e8c627491557ec9da82e99d2c834db9d6f284e0d,23dd7a51731239e06e2e1bdbc966d240dc4d21fc
e9fa0510d0b589026a57cb027fa45030b91681dc,6ff63107a68f173d9c03e99c41ab9c40738b2ff0,3a98dfde1b41255001728ca5fd934c3768a880b9
3dc3d83757e70ce1aa6bbdfbb0726a7508d72d87,1e60810df9007fab73f2e5da4304655e95ad8995,584e49c6a20fe67d9b1ceee2ce99a0a3ec22d3d8
736edf6422e705c231b5fa076f16e1b671974a8d,5b46c44b7d47c686996b5576c5bbfa98fda6830c,9780607d0577980ea8d6dbc88ef74fd22be6e75a
b78679afa10ff51af3ae9ed5cefe3e64bcfe7be5,3431cf5bc032a23946e4e9964949648242836e8f,cd3a06f66e944656d87018cac9d45c542fbb3866
57eba4032c0e8569b40eea12123b3c77e31ee189,1b26f5c3a3acfb77403de38b8a5271bb03fb24ff,ce20ea80436b8dc97c226bbe6d7e3d18269268ef
42f15792ec8ed8752024b5b162aff2b3aa159022,a188322e76155477bc266b686db87c03f7f1f8d1,36293b8dcb54910a1783708ca0d897669f3dadb1
683b566cb7f30c643103d8f2d941c41f3be2e806,abdbe4065b8a62f30500c0f5d112b2ef33c98d56,3e7d58bce78e5d8c5dc6c1a2a6f34f910112a59b
aeb17a48fc82636dc9e82da0ecb3bfa2c6b05b18,8b1824ab3413c13f054f7e73494ff0c6449679c5,2141465c58344f56fde321bda4d34c04f7d35946
a0fe88b60fb73ee24c27c214f55907722dcfdaf3,9073615dea4160ccd37bccaa0dfd78a1d1338c63,9fa091f8f5358d22d1d97cfbc257a9c655aed209
c24cae29d644cb68b0620fe1c576a2b2eeec5ef9,0c7aa1805d0f4e3574ac42cc7742007e625f570a,1850aa96b5e0afa40f5916a70921925268a3d0b1
477b9ad5568da3430987d95eb6ffec03b7e6ae50,322301ef0b108e3d567b014af89125157c7c0a52,47b45068026c90557ae7a99cf0ba1016782cd924
f9ffdeaf9e0066ba0d4c09e065e8200e570c35c5,6914d812fd90dd2ba82ca62ef8c4d4fd55642d74,9662462d10429c9a6cc7f17fcd5ea25af0e956a8
f3ffadb2173f7771cf81da3c17b93428ceb44f40,9eaf79d30c7edfb8dd0c7005f8c3a97dafbe4784,dacbca0379997c8615fe24c7ea70c6910d4e4ead
73aa2fd2661a9c3eb215c77ec503045891638e0a,94e399faf701699bf5b211ceb581ec4461377936,fe6e7430cebb9ae654c7a0351f453d9e1b6ed960
987d2174a392b313c304dcf70b1003c91c8d05d8,fe4f12172124b3a6fe604b20980c556e6361ced1,7b0cd590a60f1d3c5d836fd4d829cb1cf86c2527
28e1daa8e1e368a02e2f08a7fbc1b3275ad0d62b,e91c8040eaaf56e3e6e85edebba4cea98407289f,23bbf87c101945b090bf3ceb95a2ad72cac77c6d
088f394440ca4f75a0aad1394bc6007814579711,e7cf7538cdea0ac695ccfe3a1ab5fbee24231641,8e1ecb6a67c48b8c31a5a31769af555f1fbbb87a
b5de5eed0e28f0d1fa3bad97af033a2038dd4bb2,855a1fa03e2a50624604526f6d4d8c4e57bc98c7,ef16a99c08ac8201c8264b9dce44ffab4c596af8
dcf6a97d64c9514cae9ea9866bbd954ca0e2521c,cc063e7a9c6ea5455b4afdc4d3507eafa45346c1,73420dcacedd0ea88ea26f3c9bbabf31903adc4d
0417504d128f8217972e3d35cc5076165cd0b6ae,c83a047dda5fdc5f6e5940ed6df0fba708931e05,210cb8cb74215c76bf1f3f9860d082e3139ec2f3
67bee1b652e6f0d2c01e70c7e3bbe0d5de10238a,2cfb790eb7560f8827f086bfa678e64888783957,1d629270cab501ebf0a2193b4637024c2a59607d
dc2261eff041fd500eb3d4df3cb1a7cbb1302af6,742158b678ba56230806c0c590c02602e528893c,46e5903792ac7bbf9c21910db01df1c41c0ad3bd
32d0531c7170455c208923ff1f47ed56344140cf,bdeb161d85e590f36fb0b5eb88c2cd1e3f1943ef,bb31f32941bf3e95b5f231d59df37d580aa6b676
3d0cea88e958ceec83fad9cc86247aa4ad7fcab8,4acf7d25a0312bd7dec9700c8e2cb1514d25d7da,ccc6fa0ec6d2d4efbdbff40232d50e2ec10866c6
7c56f544cfc01571446e611d151af597b03bc775,e048266473f06c7e74ffa726e126a1cb3e11612f,04b0dfc8122fb817789f221f7925d9a613302735
192b8a8bfffff7c10937a878d2ff280f346823ce,53df6927c5101107ea921e4a68dc36d535c9d57b,c1f9d4998b432d1587c0e89de8716daf24d465ea
c883760ae7b4469d893a1f8f094080d073010d47,46dcffed421e5f6093b65f17d6721c7cfc46a1b5,c82861588675daba0fdf004b5b471f314843ee13
6f17e9122991ff051faad0d348aada972cd7ec90,b1b623232aa0147f35d551617dd49e01bd29a740,dfcdb1e742d327840d87c5cb7bcba0a79e82a03e
b2892adebf22e769736c9191ff4a9b33885efd24,37b7835b12bfec0382b308575ea4742223c01cc6,d79c12ad5b7efafa4c8e8d7d3007d30b5794ca5a
431d4395eaf0c4e1e9cf4eadfb0f1de0dd4a1047,b8a4a72760b1db9dd3101da2dd82011f1c6666a4,bb218b2fb1265c5f413c76f3a8c7c7ad92d11071
00ae194e0a1ffe6705a6b990eb5b585284eca598,25c1112898f1582a967e784b111762808ace8a73,bb684c0bb310f38d34ad4b0b5bc5cc3d60bb32c0
9fc475923843d43e9fb47c4cb1bbc250cb936121,978b1212c5aeb6b033d786f9f198d87eee4dbd5c,dc843bf86c3380661c9092be452985dea9df5621
b201ab9d1dc597842b64a6970eeab0c964e26dc0,28831a7734810f0bff7cb0cb7c67fc4293ba7fb1,3d868d13491b82ff41be7246daccec8e330af3de
0b3f80d231e504a0d942ecb694e81dc3d0d15ca2,4e877c3c11da6a50e4a349398935fcaf779c56a3,481ef7273e0d4c245332785f44ab8debf5cec947
eb29d4fa95153879d9087c30f5381fc631da98be,22ec4a20332f8208273604b46e727e481f6502eb,cc0c46becec5ff1afd53093cb81583a19f7cf1af
5f7c9b17993b96112b4b2a971b02d5c82ad21206,9143abf069b233f8e1478150de2bd68d76f748cb,63d5c0078df75a9493867921dae6c9070dcc907c
ab9c4996508936b4f113a12220f68bd34c467ad9,f768ad909462fc45f70d81875597d5e85331d26f,44d8cb3ec1fe097e9f5d5a5390a10bf342947a1d
16e7b07f0fce34375fc5b498ab2a65b643570f30,8b19929ad9efa332268891a6bab296749df9aa9f,e55ff3763e0ae97e5107738d44fff2c4a7570d48
397293f09f7a3e116119ab629687c64aae507539,b693af69a65283bd65883d88be7cef1034eddb48,74d2d2f0d8281e0d4a293d5569c832f201bdc3ca
bbc74de2419404402536ec164293629266789f80,e035f673391be4cc075332455026f46d4ed28473,d01efd153c4e9fde82e66166bde3f3ccb1a1434c
a9f522c29df6c2ca2189c9b9582840d52924985b,5d4bb6db9be290e5316aefd9cd7cc18945b90307,2262d2050defed7a5df8aa6c70ad696603335d3d
4ef30edbd449910f1a5da609064eda65c184f820,2ef822e8e8545cf5335254ad8f7bcf4ae05ac77e,a1e9dc444781c99cbc28eee7b8b9fda291a662ed
3e8e02bede899086d07b0a34cf798b93e594f7b4,2baee68fddd2b5270e6110c323bc436a36cb38c6,03689044d95ab61e8c9ebf99826c474bc5e42576
201d38d6fe1a8be5aa5237807103f49b4c8cb53c,4c97e43bcadf0f4e00341c08489fe412a62d006f,cbd641720132d798a81453f327b2f2cbb8293346
7c9506a62951e3a0c9d10812d9473b7d58861420,83807ba780f33ed79f97b458cb88c734033dc6cc,ef1ca55728d8c011a37796d2962613e3cd880eb5
220971289a712e00147411d9918ab8587247c4e4,511beac49c57ef4c6791494a450cad1886a4fa9a,b416418134b84248bd3508e7dcf4aa08dfcdecb9
54dcfa78f88fa0e0bdc48642bd5ee3b27758f121,f6419874645e723d5e105c8f78530a31827ec9e6,06eaec4313692b4b7b56939b3e71d56715f79171
6e655eb5a3f59cf4a6e89c0d3e3061d092bae4a6,b74411cf03d616201c8bd7a7370df77918d80735,75d7b66bdf066af9f3dbd899c5db07e37c183370
c08d73054a8e99c38a588df27c30115f298fcec8,bff561063fba763a9be03fa8b4d609040f849292,ba7a76bf37e402167f65e8a7a4ac97a0bf595da3
538670c5a23a14ca36ed47e3c6d46f51164b861e,9d283cd983406aa6a6017c0faba2ad4509385dda,b5ad06da4beb8f88a17320667578ed2d193ef7ce
7e36f16e87086d1059fbe9e628fcd161b12549e5,34b6d4f5723e2c1a7461b6b9b70f2de88a503ef8,7a963ac56a0921ec1b12701c6a4c02bcd9421154
d544313698982438389e638758c5e3799b876ba6,a99ddc37538bfc87e169fa5b65a2af1d999d7f0c,4f10c539baabb55ad648b1c23fa3edbe77295115
77cb7cd454d4c98a9ae46537654a63a67e3f0046,31448dcf03274e3760cf27ea838b56c86fa9591d,b28681e91d1fca8d60f7bf371468bd0f766d1d39
6618c0dbf7c282a58eb2f78c868f9ecdf96d70a1,1778fb6fe3f01f16c7de5270b19d3e2f15d941f5,b7edddf9d9274c827cfae90b610d84cd0f5ad7ba
51dcae0285b81ef36f481102046815e8163ccc36,ac4f90b4a7f61cb23772e38cbc613f72ebebecc0,a602ae8685b573ee8f04610b07e0e14f5511eec7
7a31353164ced364430e6c03c0b656e13360effc,59a1199110f4b4f9d937817994c2f369365ffbbe,63734fb7923dac12282e5dad47fa17737ccfac49
800fb6624e395cadc11b0a4ceea9e2ff014211b2,99a9cfbc718e5a4ceab0866b149d95bd7d39aee2,18e519963f6759ef68e90f6328e9a8902df63550
dfb401506707280f0b745e0c80891e68034e84b5,823b376a9d827cdff8fae34d8811d871a3e340dd,782b70776365c018c75f918ef8ca7606624fd6cc
5acf85a932b7afeed5d0c53e1160abaabe5115da,d790d7bf50c88da2c97be80caa978cf1bf27b1bd,9352e09849d4ecce1f1dfae8948e864638d70e96
f7b9eac5154cc1868d81a8431e99b9e117e8ea18,5d0e2993fa99cebdc739dcabd6c07ae3b906ac56,f8b454779fbc4d64a8f2434c905f6e5a380576c5
bea36238e7ed10caf56df832ed070f569d6892f3,b8cc7fb17591772e40cc2232acf85b386ffef5a4,05b73f1523b619c68e08f7a63f00c7211fb698b5
4cf202180e47ace9e3e796c3a1d556a931df1ab3,7343a129088752d50e578547bfc8996bedfb0780,183a10b2928f2e804dde61b04191af01c8d05d6a
cc0adf66d0491527fdad460db144f372f6437b62,f7bcabd9568c9c27b86b7e77fe6d01c1fc6f7d0e,2469fe8d700ebbfffa9d26b76f7c3607e9f2b15a
0b97f169b0eb951810216ef03a36200dad8ab8d9,8498eacdeb34d2b8cbffb24553914ac8af91912c,e2431d41ae1e88d795194838f8fa15a97d5b089a
cce871258e703b1305f77f2fbae347beab7a5f1e,f70a430b6f170703190d7d53da1706b607eaf1b0,d9ec917586b3d945bd4d79a857b165c3bb0aab81
bcdef8341e0216ed104673fb40c5d61189d3a4e4,4784c141e39633131ec89b42e7ef593370f2ae4c,6e575e753eecdb77597caed1a12f85ad37c63b28
8450d4f5e7e24485f41314364c1baabc88aff5e5,75987e9f0ab847cc0a27829cc5aeacd84c87ff72,2d40b7c463eb3c0b7eb698c3d506909e0fcb0103
091189a40c7de400cd14c694740904ae3032b47e,8486986ad7d9f85db741a0899e455e468a617b8d,f52350382817a9aac3bbab9b8e869332d209bcb6
2cefdd35b56c48ff4f48b119b9e13582e3940d2a,c2584561a1a567f0f84d41b4f30e2312af7fbba1,3f4298dbcaf7efb912eea9a81db216fef6345903
930596bd85d746a12bce9069159035d8bc9afcd3,22d7033d18ff3bad17d2f22331de5f47e296e0fe,f35384ba53ad9cef995d5ad0f13753835cdfc89a
bdb3d097b5572bc7742604e66b7d0be57e596b3e,6efe984a2da795b134cff8743964dbae083e7e63,57fd8f13c9c8368db8949d835dd7a81d32f8b109
0430e1bd1ae4c64aacb78fa6a8f08dacc108507f,bc03b48632954b3960c85c502deb2bdcc016bc32,b7afb6237fd0a50d85c54003ca5ee8fed8e03b05
465537583b5c51f1e8e0d2682c41335e26787ed2,552ba9353657a25e0457ae36842afb8a8bbe9113,f2d44148fbf28294f0dabc8ab4260889e2c7e070
b67415d1a82a54b96349e18acec88a3ebf680e3f,bb27442b1963ea767dbcd322ce8beeea7810474a,f6726b6a874fd6280cf343482c50168247088400
c3ad885277c002e7638959e14921f697fb00661e,dad75d44722010acf9c23518958d754a6e3702c8,6e73a3b0e1e2c813785f9e104f4230988f065a0b
fe6dd84d0172170daabe5c2f3baa3f7b1f5fe24c,d96448cfafabdc0116dbd1f7e7c983b2c48b5a3c,d486463bc1f0a9aaa782da93eda78a9be3c5b17e
12f0ccbb0191ae2658189b83d6ebfb655637a2cf,e2dd3a09dc4184a0debcc3d87cfa09806be7418a,42c5e368bde9ca694e9389c5c8d64e6fec8bfa8c
092ff254f15618cde13a6a741dc1a6f7b0135b45,ee6bfa357a056d26096ddc9064a85a45e84ce5d1,959804798cbfdae932b7ed962700ab26f1450975
43d1036b3a8ad931c8c7a2444b2daaf08c7e665c,1b44d17899751257fbc91703ccacb8290ede4ee3,ca92c49f8c8d1c226f2a3505181510ac4632a90b
a8520ad03e940aca0bb07733be738f19579f5848,4c4388f830b5c8f02caf246248f0387eaec13204,1b4c2b055124e6ab99c3a1464f8d7ae0baa2c5a3
fb872569da337454566eee04a45f55c09e26aa02,e9107bbf4fcd7547d5ad0ccd8a13350227884ddc,5a2b045388652a7640d3e8f3dfa0f69a9d7c15a5
64c27a86a8544dd6e0eb8ef0353afb4180b48c28,d0c33bfa5d29acf7caec944ef55cd8c04a7508ad,87cfd7dcaed01a183d42256822af192ebfc10790
0794b375dfb5133f130bf8459139946bf2caf1f3,204575594555ca74e78387772bf993852bf7b7ca,a0a17d5f07344cecd3087478f023b983b0cfb3fa
7e593750e8c57286c6a01977b6834401bb8f6391,ccae78f97a11267394bc62419c78e14f691fb069,2d0f8467fa235f102b3b7c2b39e5e00a243ab8cd
b95db4b610eec3bb298d1f85b30e36dcd799dae8,db9b2a6a9563f51f8980a265dc4d5366b92e996a,4b92df28cfeacf147b4a3b555a1123282a5bac08
89b1cdefbeff7a773a31187097218c3138e6fb74,0b0193106fdde9c4cb466beb8af8136ed4fcbf41,b6af220f1a99d352a574b0dda714ae57e1cde29a
ff89a4815aebe723cf72d8154bd227a7d24a7db3,3936e35b73572f9ee52f66afbc962638fd07bac4,4a3b2c3c32a2fe99aaede77640799dfc8090d698
38b5a4cbb7546f1943ffbfbaef6124cbf178cdbc,4e4f1ec4de1153ed5aeb1d2732bc14d23d49c9f5,25954d39e4779f6b4a8a8e1c0b58ac5169eb1ee9
ede14da4d24932f581704fd74871b041c425ae8b,e4af0fc1e989534551aa5df34d8fced260bf2787,798d793cdcbc23dfd952e85bb386d7afc775e71e
6ec84417441cc7bbb04e0a6e8cd2bb2760dc01d0,c48d8e9708a7963865223814d4a4a7e5bc5422d7,ecbd0fc0da5fa688aa81a361f1519e42e3038e65
08762ab8f0ee1043f3ffd06f661a0def4fb4d7c5,0b49fba6371411abb804cae8ebca925b54ef468a,4267545c72371e41ccc9c039a52bdc9d1eefbe7b
36611e66e62becc8dd75bb7e42f87966bc65cba6,ddf56bee7a4a01e8d8b3429771e0af8baf16fccb,4888442fb425fc85437547d360ced84d6c65bad0
303834e2a20989011dd4910498bf4a0ba861a922,86da0baf02481d1afe25962bcd46f243edf3566a,89da1e07291a3c6ef97ac56791ab9d34683e18d4
d84731a07ec44969b92739a42c11d4d09a959c13,3855187038d5ed929224a2c9877dff21b3c0f349,bc7ed55aab86738d7974bde4c0ca30a22076800c
2301f09d7749d3de96f2b13c9f5c919d920c0213,f6402d6ff56ffbd048e1ca5505a55da833f1ecce,94a4a38ad68e81c676361c556e17d28ca140c5ab
40f90b60eb0e01dbd415feb19c18448ccf313547,1230e5a623c5c8e31a2c4f0e09f9f1e3fa89e28f,28e9ebc7da23e7afdef9b8849717f9084360fb3f
4d732b44d47e2f0bc6a5a1216bb6d353f465e013,03f98e749cebb73d0bb431a430c6280ea25a9888,3fbb5e3ecfcf6507793dccd5a39e79df574780a1
3c6f111209aae8754b50e18dc5f370bd0aac6215,09f3600cc4518e997ac7e517241c2dcd68a7f9d2,d1db5d21043516e6a04b651343d83e5d6bbd659f
0e393084165b9c57b308920039d1c09c1c1f94c9,ad4fe174b114c63c0fc006cdbc35a1075c3d178b,7b3efe6397630799bd023b6abd573a02018ef356
8f37905609f636b79f3c368b05c86727aceea058,26b6d0223e08565cf3080313a5828462604660f2,b05e85dda988094245c818650f9b91f04a5bd3c2
c236ac5e97b01b1f2407957f9908c5ce99a47d00,e03e62f013cb259d43b056de85e8eba3fd61278b,ccf1bf8addbb8c16497a07c8014bef41a4108aee
cc7325e31624bdd2933bef0c72be6fbd45b982e9,e1e301dea8e7569a7d68160c6891681438057f8f,8ffbbe6a93786927117165a122720e792cea961c
e15f731a9b1ce32f5e44116362a457eb902499a2,8d24a28c56af4482982d8e44db12645baa59f37f,81d24975f0a5f7400bd3c3e7a2f10b34e9bebd24
ac4b089e14bcd6af507ab6e6f9962710968d6aae,0ca0990e8bda7df7971edf4e8d2ce35b56a1021a,8cedb10c3a01510b921bc918d674cfd94b04349c
7148866f8d87292705655f568a0616772f6de0b0,6f5f567087c78419d5c23de88e0618dddeb97ad7,1b8209fee4c887946c9c8c49db9a52c4a3302519
3206b2e0cddde24f0ef1ca944c9693b5082ce8cf,246d7865c552f9000a3c1dbc2fa875f055776f42,f1050aeb73100c28576e1a91915846e04fd8e053
74ea291454b64f8896d015fdc9bdaf6d5db18e7b,7b213bb4e6a3221062afc1b0d3c40580603f4b9d,fc0fb5968a98f3ba261cffbb679baa41eaf563c9
45f7be1b3c9485e7b3de3c5f48debca75b4bb559,798f2ba63272467b5c4d2e1d5362304c759ff720,9dfbc38a501c9d4585303853b763f72eb9dbafc9
9c4a354d7bf4eba9cd3453d780a55b6041836028,389c927061ea6b73bcef5f198fdf81fd73177821,3d6710c0e3cb9cf9e954a856b8b5c165cc5b65ed
c8b649186fe1bc92d15736ab58bbdaa8c2dbf6b7,1cd1415df746ecaf9603bb0afb8660d3af3ea1f1,c45d03851afc8d46c3017888e688ef2426a7e3ca
27a0da5a20d1a1476678f715063450d57954d4b2,1f2ecc9a42d450f78b040978d020eec7ccae3b97,564d50ce8ec142bef993af8c4d0c7d0a4188951a
3a481d9590e9653882161d7696a4c36b82dc0afe,5887b1fee31b80c727a2360f7663bd452f6c5e7e,eb08fd88f25beea82dbfc6f4184b635fed39accc
7f682589c7a33e74208b71c5aad347baab8313d6,4ac0781dd8b0882f761b4887697b88e9ce903c90,8685ec918f949ecc76cd9af7dee43412edcfd858
e8144afb6b2622825a0b204c90d1d4c9225bb716,d775dadced3c86c4a530ab75a0bb13575f5cd4bd,7b3fcc2a2e42d81c8cf01fef3a22cfe164d154f8
a1a0c0e9bacff1c0893d0884ec39389b610ec1d5,072f1bfb29d954596ffa94d129cfd1c2b928f707,f72183eb3769dc2e52cc04b9d54014b3b1540d1a
474629788f91eae38e8f5a8f88d818cb74015123,f689746372a3889341136aeaa6b6ad852a8340f5,295d3f0969c886c51a99b6f6e05aa948063943a6
ba7e87aff39460175a57063e388219653dd45537,9f16b0a0f4f4d21f1e965246e3b2401e062713ca,4d67cd80fcd11e84ece296ef27a2b3de39e1c78a
73e96f8f1e80f882ec7e09ed5c7dedd22c828e32,e471c08cf84ba3451feaaabd837798d56c5f13bc,9d10123b0deb6214d2a16b7f6be098484ae49a0b
b9a198b1a8a1ad6cf66e788bbaf43eb8961e9c4b,1ce0204088233e082773a1d1c27cc2e5c2c3db8b,5d6c8130a0e503120a1fa13dcec305d2ce652e81
a815beea2c83055291685f9e331f7354f37cf9ae,5b54ab2040772b029046f130fb3c13066923d5d7,60b8dd4276f5d0350fc869201f887a54bf7cc54b
2e54ad65fbbc3e6bf100689e572a6b15bfbaf084,7be06582b243e0c500716e9b3478cf71a31dbf65,5a6f7b3e29a675feefb8fb987fa5559fab1b3d75
fdd0ebeed90b99e423335fed1e63e30976a96a6f,5346faa02c531c2f9439e173f02542e9985fe5c2,546c3093f7dcf4953f4d48c0d60c23286eefff29
573b82c67f58bda7f6cfb5cea54c49bbc4c962ed,20d9ddf5aef09214b613679820d325e35a619afa,19d908a964b40ea8494961c0b8b7823777c903d2
128a87a2dc61425e3fa6718be3774aec102d9f06,16f9ab3bdb11659a2ef1d15ed704cfccb17f7b10,9b302983b079c826aa39b405137b4dda20aad420
4c8f718a8b7e27c98cbee65db0b163b6613243ba,60690e379eed41b2e342446bfb3dd7254303c08d,2390e70a4e434e5567c0b4e319da670e932afda5
76a15dbd6cdf30319d964c9fcf22ec7aa96cd79a,0c5281343338d4963135c58f586d662b0219b445,63a2a4d9e7d9b725f75bfa80a4a0841863a07c6f
96cb3b01ded7fbe81f07c8a5269edcee205f6222,d3316831ca76b07f481fa4bca778b70d5bb232f8,77ff0bd111fdad400c0fecb6c7e0b8a4252ef695
9d94ccdc38542b77098666fc821a0e225196479d,e94d02a06788c0953111efc08dd5a7c8da5789ee,fbd17b43ac6acd6222c8473f4af0104162b00e34
f38cfbb23f182406164c1622ef22659400e4d343,b4127651169ce143161923d74b03489c1fb13afe,c2ceb4bb9987b36d3d890631835eeedb84b065df
a8ccf71bd0ac5b1c231bfa3d65d900c2cc1f7053,c29fb28bdae22098524115e2d988281e52b6a2e7,6828da9c6c843ea5401d82e31a8b2a923f7dd778
311c023271a74374852431c0d9492cdf2749d4eb,5e53c7fd04135465103cbcdec36cad76635e9e41,b26c009d90049b91bebaca9616ae8e43add25d06
0265d5d0c968f5115b78438533a3c4b6f5e2296a,74bad92e4db4897b52b95d4e5f8a3626d03733a3,f32eaa1564e54eb793af9087a8c467681044c5ec
98b1aee2a515ed420dff3f94d424c625e85ee92a,5632af2afa36d8f178c916a355840d47fbf4f5a1,d33e7920a2eb99afdaf33173b41a0723efd72b7f
ae938e16a5fe5710124240accb3d0cb3420dbc80,bb43afd26d9fd96d9cefbdf658a73b566caa8b6b,94a1f33f6035c5475713f144bc3cf8f1ef01d716
6035058a215e9cc7e73644c0f422696e3753de89,bb2d12457cc0d860ddbbb857d9b867c3eb37fa40,1c816990c33b47ee7b6ea90a2909407295d40b11
59457228111983bfb67ccd8cfbd5953034107499,69140d22eb808fed7f93970102904da246991518,98a7fe6204d5d2a966ae5497b9ebf76325b82b06
5a6b4ed8e4200680ca5ce39d4fd67e0570cd2f8b,6c1c3e35ee99b3646a349e58243530625cd21d74,072cb55315f8c79baf9561cb6218f6fbb77e5057
fd10c8826473e4cf3f333d09dd39e0b218919778,cc6aabaf8b68bb0454c4c960d81ccf85d0e5bc95,4a596a2de30c4b63c7cb535ddb367d9d84bc2964
0acff7a7c15779641a79847fa0a204146e243824,8a92f5f01e6a0b31962e5e584b247c42ea9b309a,2deb5e655740b037102c4ce76c1c0799efb57190
a1892091ed23cc85175403ddf8ef2e5e7ae8bc3a,76e2ee99701b89837445a5b636d4507eb435f567,060c06c0524b5f290d315b4d91d851fa4265e1ab
b8bf81bc65799e7ba1c7c3747effa274e7869098,cb072b6b8c4a228000f98307e63bb7744bf7287e,4bc9f64b7044a10050c32c7664213e60eaa83507
81129445c3435abe6163da9b4ce53f4b878e8eed,493ad0aa73c2e935093b69d7ac211f5c2ea2ec80,8023fffd3ce6e6713f2b508fabc5cfae73cb9fcb
49aa14170341f23598bb18e720cc6cd033d4b921,24faf6e0f1d6bb857952f46728977cd828c3dc27,d14748813333c3e0826427bef025e3c3a5caeb7a
553a1b968d546f947f85acd344bf93a16a3a229c,c70e82bea6620979205e635e5cce6638d9cb10b1,dfd8f5c62b03b013a348f00dde06dd9f7a0ee0be
b447ab211f4af8a5868970fb4ce4143d7cbe9931,4afc656ac59f5c5f7a37fdefb51ccb93ad7c0173,2070a452178eeeba70327863539c0c1e98394b18
e552165b7a737e8a2860df87da2f53c1dae69395,1f19edef004bad0ea37aa0f7dfdef2139de19ab4,8834c109fa68e83bb3929bea9361f766ab3e1414
774e96f8a9ff472cc47bd1a6f2c25beda6665413,a6e7e3e74345e9d508d57eaf592885763bd57d2c,72459026608d111de2682076c3d2464d5df104f1
faae36afa16b19bdb89d63fef546e406dc1bbdc8,cdce37b8be185c37c4de44d1cd42f2e4ef29f212,0c749505eff609a619e6efe07840efa8ad078e41
2da48488d7075d84f0022cbaf0be8084482d4749,af233b8ef8b75f8f47ceadc5cefa95bcd76d1b0b,8d0bdf2f16632ca4385d7c95cabae36f2e7f299b
891e91590fb2ee43938d78065ca3cf1decee9207,e7ae57b0cd6c880d5c201e1cbf11c9ad2f8e5278,57da25581e2e3b830a072358bf68765a28f9d98b
64ba751ef174c8c40fff1c88aac96ca7d09de115,065a81b72c3d2ff9ca6498c9a11cd2625590daf2,aa0ccd8b59475f48c55f58d837c1f9d32745caa1
b4a83e29a44254ff564c12278f172b2d05d16afd,9ba3b12eaa58fdb22ed90edbf421a33c171e4afc,310afcd78344b1dbe6455df06bf463c9b6029970
9de0025394fcf6d37f7726d17e208fed26a4f534,291d2e911a357f7e82428014d2a57d15410ec3dd,32b3477fe23c5f0639430f814c6cb8a64439c8c4
b7608b045b9fbc05d2ddfff1ad866d97cf493902,79ff74ac447bca6cb85d7b1ed2a01b433716a120,93d855b2ca1b285cf0288d9d0166bf274cfbda10
f7cbed1a72bdf83f88def30a963aa0baee4ab4d2,5d65194777d52c2e8b1d31a22950d4e0c1edfc4b,a7dab71da1074b50ffd81e593537072869031242
db83f9c696ca94eaee9d068bc255fdf719854e40,8f81b213dcc96104d0c3804ee544a80705004b7a,9b63123bf0535b0abb704b898c2e7f4f031c357f
1748f7d860a6110534a72248c1d894fd31d1dfc1,dedc018beb810b57caa9880741a92de64f8f1aec,a2826343bbda17b2063e06c511e83e36cd9cd3e8
3b7d9956ca19fa5b451c80cb8d1997e75185e465,64e87c87bcda295da38e615b64068e1f9eaba1fd,de8d54cfef354dc0dab00d3f19e7b463468276d7
e30ca2791434447e1e7df097cbcddd250428ca7f,4aed151833107e24c5256561422011dc5c786ed0,024d2bfd73f96ef948a502538e58879442c2fd4e
7fe7e266592d081419f56d47f54df38704e844ff,d335ce60dd4584a89ff9ca56ceba263b96aa585c,c3a6df26ee40a7acefb03c87eaa5d7ab62f52b6d
f2d41e680b765072e791c7f686637aca7b09ab95,70c153123b0cf8b8df0a22d8215bf02895eb8f2e,459e1901d237f54e533cb1c2dc1233a8e5dfecf2
4e5be1337c9ea590cb757ee9e1502ef0aa989981,80c59d24743da5d6d294c7aea24fb7fdf078d6fd,a16f2ae35dc914bcb8ce5c545bd9019dac1fd98f
40f9d006d6f931f07b2df21849bd8a96776110ea,52d1a5da946c8581bce5a406f9160a9ec8913a4e,498ff5c56c49f6fba330c221d08741e8c1f92da5
9a2d0e0692e726e018abdced722bdc9f7064a9c1,1388e2af5b82e388a14d7e255f4cfa5a0f32bf58,3ba27d3160fbe4b4600b85a4dae0869849598a46
2f086e1ec2f2233c092634854e674c1cdad283ea,e9eb8297bcea216c8cd2c4fe06e25a45f79805da,349003662c046a66c1ba05c14ec8973c3c082b55
417ba4cca8daea1e6bedc7305f6d95dca81bd270,2b56b2d725f713336880d44f8c73ae62d2e67655,abeccabdf16367f9e90f6e2108d4bc71186084df
df365a56cfa06d600aa5734401f8edfa54354587,b1791af0a3737f230436dc1103b1e94585a2b6b3,59be46a6fb02c4dfee8580b863b91e0327b709ab
faf085662d8c8250a63530ac784a8d59886e4461,558a7ef1edf41744d37c8a2da450bc4ea15fd347,5ec9386d27b93ea85844bcc56e7bde2f867be560
4f5b708d492c10de06fe7925340f240d029b8ef8,72a3729ca09cb7d13025259cc8094f3d6686f694,2a6fb3297410fbd4ea149d863c6f783342e1309d
540807c5c8cc03b662c1a9e41e9b60f03869414b,2c9bbc932ac652a3f45b563bc30fa951775cf1ba,cffb0a08455210f43b940a989ce4b18b808fd02b
ceed183e334ef91b14950569717f21485843e0c8,5add7991935fe7ec87f5659b795593268d5736a3,f3b28369474a70f7464a6cc94999c57c1b1cec29
bc3b68ae7e42c9d62e0dbbd9309e5c7a925f1c0e,c40dd8bdc1e7116ed6f8a23a2b717e252d30ecab,ead882f58d4a99e73d6fe60ff0f4241fa9b685d9
4185e1dc671c371e5568b2bdd0f9d0ede480fa01,8674d45d7b6e407f09daeeb160747a27727a9926,83f1d1eefb7b819ba405346c73580e7c16d4c72f
835c50d97c6fb3076d6012c997995854c3678ccd,9a7d1ad07cf35568b61952d9b725468b1119000e,8c28eb09353340bf68e7956ab0456e60bf5d7626
f7264d3f2918102993cc4b20570d7fadcfdf79fa,dc6057a112aa528100cab408b6be81162486f767,06f8ad2e3dfa87fb4c8b623a04820df85bbf65c5
ce72fbe54d0da5b50677c76d61e21226496036c2,d18a565e72aaee4b9a6679de12d8875158a230af,50b160651c091249c605731b5887d6430944a73f
7991eba0d1a6947e22cbd81ff30007ff76f04caa,bb8098adea72f6b87caa27895cdbe46d870363bf,2d46e35a455b447edd5d7076051be59af9744487
72daf3f556208778d53f644711db13c5b24b1e2a,69f0d251e9d5377c48ce1f25e9ac43f52b2af95f,863fe13bd11f982261f3a5b25f798c069d35672a
e0cce52aaa83a3ba99001e0eb0e3454177321919,90c03c7e702da5a5713c5e569da0f3e8be86fc01,c8052a3f1d18e4a5f151c6c525246b6e331a088a
5c4db7dbca8f5d751aff8796c06c47ca339f2675,846250b83102b907e9da078cddc1ca2dabbdee8b,decb6ab3c62d0105bfb7f7a434dd9a6bd73deb72
155756f668c3623565bf2f7cca2e61466e9912a6,91987f003742b490ad3087ff35ea8fe05b6b4d80,bdc926f4a2d3d45785070f07b1530ac35b542845
406318a299d727e696421774833fcb9dd4473f92,507b88ab6f554b08a0d7a6f45a01549f803e69e3,2a017b7f2b16b0254cdcfef72c1044ff7bf39219
cca6fe9f98b67d471d6e1b437068b6784734f8ff,ad3b32db69da4dc326bc2b2c2eb469807b4b5320,a2a513958f89a5c59ae7bf11b74ac91c68ddd931
94a102d5e78a778aec785b9485652ce006d2d16d,ec7e917b1a9279a5057bcaf4e90f9f24b8f9db9c,1ed23e54725eab96a37ee6bfc0b77bf8f7e1e380
14dbb7cb762f9329f122afaf3c6d91c1da49d881,b4d3468f684385086d1146a8f1218ac2d86b3698,2c5a070959e86b72c6e86ac78633a62a7f15b4fb
b5eaa8555aa8bca1977eb25cf3b60bcf2f062431,7aae7a8d51e763fd3c3fe3a17ce1c37ef58478b8,e082fe97528a712786b136263908e1eeeaa3cbef
af7e61603a4e61118ec1bf1126c1374c50b4aa72,5ec3e6fd14549e13e20a7f49c3935fa732bf0535,e73b47df2a180364b2ff6cdb13eab5cf45479987
6c7d2f6bace8232e7b1ea3127e66915225d0c145,3f0593b55489a7204ee246cc9ad57d3de5622135,f2f39d4aaadcefb1a20c4fe6d8202f82b58b1ba8
e9a49204ab06a3ecb28525e8323fc4c0cfa41b4c,1d4ab430f173b6fa48ee26d799d04d5de3098c36,3b83d06d16a9103b6af5fee3d5d8fa6a9a0f5c67
96144dad6dc92f5392f7c09c3d04baf2afb0d0d9,885e257c129c807385487627ead34402ec4b5d68,bd1942eb90d1537f38363accd5e22815496be248
d595976f4cfc6022036dba60a6dae42008220a7a,1a7d14c04ed9b63668fe000c967e93d48d6ac395,46c2be7407ee11d4ece1f5c210ada2e813eb3aa9
a370b6ff1d4783db2208fc82f179e3de4e702b9b,3123101b0cf3c0f11fcda939e2a355069f58684b,29ad3f9ae5e0664c1cc28a002818055be0297d10
5d100fd2c6cb07a929d7b5ad9e59f7eccbdd9c97,8488c87b20efb6e3a934a9d71475ac3a24d9d6ef,d6efbfb2bbee4486913eafc26e8d0d67b4d8fae4
2c03eb2221adc3a8cf192bd4cfb28c86c476007e,598fbb23a19f9e36cb654b4da07217f2af03f1ec,e698a88b623cdd317eca50b4524c3ac5cfbc80df
5530e6626deac83c24bbe50773cc5387ece0ae52,40725146cc37345879b82d1edaba02fcf0687fff,f29fe358ad694e288b751a4632ffda7ed77305b8
5af16b3da3ade743edac011cc0f7d6e26817cfa3,0d11caa47d66c65444aec8a2588f45eaff310b65,904c25745c4442c973c36a28d8ed6602fdc5316d
fa9ebd2d4c38d79f5c871c200fe699ce24af94d3,2b356964002ce6be93ed83c8c6de05129dfe10be,7fc62dadfc6350a2f316c24b2fb7cd10f37df925
51055fa1968cb724c5bb64ecafa67e8669fb9775,4e96751cb7ad933e3cdaf3b6418f75b71403f039,24f498292a2db87acf24e023d6b5666da0de5e82
aebc7458e1aba59154cb6a6b5c581bafad061e14,550fd24d29bf88e272bde50d2f530ed35f6e1a58,8e5f22383fd0dababd820b61265753a444efcfe4
c893233359603fe5e4db38afcee458a56922c357,12bc05d2b46d80da42ca8e322d92211d9414666f,c3110dfaa982648f79ffef8de1847cf6a07c619d
290e6311c66b54c46f0af53020a9e766281dcf96,5e41a1417f13ed23b0b3407a6689eaeff739720f,c422c137f89fb79683924854f34161a2c1fae87e
a9ab15c60d1ebc2ce17a894b15c69c03d13ada74,cc0012f3dd7153aafd1e94f62c78ea95fb7b602a,366acce9ef86d9f3f572a7db3735d746de3942e3
fdd911c6fa7e6914ac88a26e9bc467f725f89a4d,63845c2be6555b0887c45570a62ea7636d3ef479,1202b2612fc2d80bd448c3ebbcab4101a60e1cc1
971d97c179dd4b81ba52910d708a6aa6336ddbc7,cfee7d07d8b3b18a40690d95a20db6318ec8f53d,dc2c6c8996617465b43e53f88ef0d7faf491305e
5bb4049737468baaf97a5a67bc86f01e496ebed9,f417c87ec8137080b45c58423ec6f7e502dfbdd1,c6c05f839595c5aff6f1cf930c2e0c8068b5caec
546d6235266c5e6804d9d493869ef8307067a4a9,1a130056f7ec23cd4d68cb2d954353d38fabadd1,d3c3b79e7914220f4a6ffe6843cd94f69137f280
2c54727c740520854466ad8bd0ffc4a719fcc61e,9355e703d7fbe78c78eeae2708aec79637ca7b99,15f88d5e13bec007e13b061ce86b9323cda8fc7e
be117b33d33e303c4fd85a63a9d48f7d3052f749,fd677978e7661b22a15fb3a9bce3f5c4b2ae8134,a60b1f2bc7b535ff9ce187de9aa432c85a391093
5c6abd2e514df0c9810a62a8f6dbd29692e4abc3,599b187589b51f8d6e6cce36c25c72a87de5d3d5,7f77aada6b3960f2c346f7666674a78fba003e24
c229096983d325ab5ca2a077abc6ecdb167076cf,d18f31d156ee93f67962e4b053d2b0a7665bf241,d1c3ba96f24008fc4d400353d68a357e0a0ba363
33cb23e99b6820d41581925318e2c155d1ee3004,762d1d2f1e0d1229bdab3e970055cf140b2717ae,6da401b1c3dc466ac4e9eaf74a7c34f81fd7be12
0cca70151f3f56db2d4c49c1366cfb9d6f8db231,4385fb5884a7eb857ea1acb5c3cc4d1164678378,b1a47a5d7d2b7ebad337cc6d9b4fd099e4a7dcb9
a34b44b3b75b2766f5e2ee4b47f155705d7a500e,720b9cd1eff0cf5f7f26967c2397254e18396423,ea9e3e02bd1be61fe98ef28d9dc48270a74b7277
879e13d96a1893ee102a97d7862fca9528e1c7e0,38e2cea5336a5a17f741000a1eefab36dd0efafa,a4ca9f53572f88115aae5a7e6d84e0811e939c9e
b1c2023af1f7b395a9b204f3fd63a14ff48825bf,2b30f8b96ad15f51f0971bbb0ce827a4a808eb7e,61645321961f5c055ccbe4b9f8a401811e7a7b52
08f44aff2c7b35086d9987b855d5ab6260ada904,7e5d9680c2f4f18349bab94ee03fcb5205c29a41,cfc5f17b0dc3dd6ef2dcd5a94752a367c8c2c478
02b31542f677b3f7cb6eacbf1b8f004d3aa86120,2f0e446c153eef6b211dfa68ab56e6bfeb64d8de,d2f5bbac508712e27069d377e0bb3c4bc56828a1
bf41de879a50447193b8ac33bab610d3cf0ba381,73d2ffcf42d12956d5c1dd25b622a3423287f352,9b2b1c12ff14617877a441d51ff27c01c196deb7
925091d0d14658a943ff204e7f6a39819b42bc0f,0914565a52c04d217598761129ba6f2a329c537a,d959e47c830cab1f9246e1d2291511c9cd7c4760
9cac8e61839f0426093b8d1974181f04ee1d7732,223745f6b7bebee9efe845f390f8287bf8604305,28a9a448945b0ad5a917b1444ec5b87e830e90f5
5e813e62f24635c3947c5adb1efcf94dfedd2f0e,522612a632e38fb54d6f3099f80310832322d975,2e8b9e7e01ffbf180e5c0ac2a2a29d0e06b822a7
ca53c5e7d451643247a3b0544d4e99da5a00b6a5,c6a68abfb6a9bc4e660ac3ad63df9dd06489e83b,0a53f40f071f9e1beeb7fdea071219c7ce4624c6
49183639e08d2fadc802ce5f3d2459d32e2ff701,0f9d21a098f2fb22b7033ceefba971f29b2cb4b2,709a95b9773a9a619b5453b3e70e56d2111af0a0
f8c09568d8011a9a9c4b40266e1611972e75d8c6,12db8a59b526a292182da0b43adb15e9e30b6c7c,6972d16c3ab08068898d123f5b677c6e56d96d1a
c3a9b671184e86219aff35da1497d49e95bb00aa,a3f4786b1dd2ddcc93a2267316addd1cd27de136,529091f62035efe1853c083f1d545f222af9ec11
923ad699a17547fc9b892b4e5a115c663021411e,cd7656233940e163fa50d2d0cbe2ab961b6a4d9f,95c2a5a2d796d208c5e7c86485940c7b566af69e
a6077103b2694880f2ab19610ed9265adb283e19,98b551d261663612e3af5016bb5b406b9a6a4e89,690ed25adf866074ed4a398bdad427ed97802c85
5f9ea00b38ce9de9c48f7fbd8c1dcea937f75753,74614c02c67ac3ef404458dc2c9ea93e60b79912,9602ec533622e9f565b89744d9272ecb02b0ac4c
c10e57f1d8cce6f00977245d184c3ab5c65c1260,c89b6a5908a1249edd80f59739fd7abf415290e4,cbd9f716c20f733f17a68c336d4ca4c9cd79291c
b97ace9168f2599a205548163728221910a49c73,5b3b041b96d45d737da34c03f1d2d51edc26782a,33c1e3e53715836b22d95702a7d1ece9d0c21c55
e86a4a9c1f6e4a406a8353d984c9f8f9b103af63,e17c5751234075579fdfd122ef5342b136ad0209,1e041077cc42b56ea2ae77075dadc8d3082532a6
2e9b644cebbb09a78a455e575c35a9154bb42c71,b2eb481780fb2489ff5377802d035e631ec0ac8c,0e3c9b9531d10efe478aa5d71847c7e49d9d9ecc
498408a376b74ab8d93a3d67dc0ea758d2786cef,53e4c5b5fbcfe0c0078591a736ecb8108a6a3309,370883c86a97a82b79d67c231b88ad7cd7144e6d
c3f80014b41db2cb4a6fa50a50c2548a03000124,6ccad3dc4e7ad93c39eeeeb2cd0f99775feb340a,212b0fb7a834df33f9192ad64dac8eebe35921ec
671079789c912a0fc31c164e309e3d7535437395,3e6ae3f887f9c69ccd23465b185b70fbe798acd1,d06dd9532c66a81d197ebfe12134a48e3d30102e
56fa196b03266a23c6446eef7d0ba4d48f3a5ad5,452c766f04347cb598a62e29ba6e1f6f24921f2f,2e77e1a47178ee197608c6841982a9c6a3c82f52
6ce57a16257939c96c97fd1af1d44bb98ea04c77,bd1a6a60e85a5524339f9e1bda0f534d6dbff914,9a77a855e48641858be539edf52ce48a44863871
f1725289e96b1d08d575685b0d7c5b5469f72006,ba8554fcf5edd85995295642fdd0f05a9f1c8866,f75de6c340ed47a8b0bb0ee2f54fc84391b1dd86
00ed18a61b18a83c4cd730aa44a20f69f5831199,3b5482b580e41bf79f53c1f61dd75402b1d471f2,83f9a9450375451d72b358cb1e611b0a7ef81231
125da5f10a8199ade31c07f5fd7103c214c25d3b,98a5072fbebceb0c99483d2ac6ea521bff420b10,f270543bf4537afa59149e4fabe9c5a9d094f068
7f4df82e7a81aa5a7887856f20d2cb2f0b0f1727,4d8c9c9d78172e8e7a3860b37cd97c0ecc187ad5,d0b4e8730a687d0bb85fafb773245d34728e5e56
aeac1c60d1ea303d4585f29a9c9156f20d4d6715,714c0a312fa350f0eb443da1902bfb97bdb49108,5fe3963d5b68e5859d4acaf1d03228c92b1095ee
bdb412439bc34b143c2ec5cc21ed1ce7533a636e,af942eae6fa7cb1b19893c2a013a3ea9c1d97dbb,e46f468c555e50cb3b61d7f76236dc3d0f2db9a2
4753acb3fce051ceec26d4b31af2ca6d96c0cd19,b810e6d5cf42b881ebf91c5c4602ee156a6d3487,1cfa628320f6a0b29a2436c18fd8b94a75004f86
814370b894f989fa5c83ac4684e6e0f5465e6227,44282acecb50c64e9507abc318cd280266e93a25,0b3d0594582bf3e2a12f56310f1e5fe5b8ad532d
6631f83ccf244b4f7c2eb777cbe57459d7bee2c3,66d7408b3d62414553485a33a8ef42fa38ffd6e6,10e6a54b59b5d62dfe232c84a1b0159c6c73239c
b5254fbeb460d4fa435e53cbcc64bc7b477f0489,b2f6214b33f66b5d50dfe8e7aa59ade2fd76758b,f7f8c9a615e9fb06080fc3903aa43de3e71c4ad0
b3d555c2584b513c07ec64abed99423fc5e4d41e,ac98583fb4db6cdc82b5dbc0c7739886f2a6b5f6,92b3e6a7d77bd3f5bde9d2e116b37d912380bc2f
9cb6497faeadf07c48657a342bbbe675107502f4,d1ba97d46248d4061e2e13d55953b1ea5b40324b,bcaa58db019ac175d6857db93693133e0912ebd4
09be204011872adcc3fbc1ffd3a2d33bed479ed2,6cd75b75c3001e2125bbc687b59d878b90a26165,ec76f13bd7d4f2fdf2484e3f5388bbd385f499f7
1802a8c4936be2572af60b0b9d58d19c61ab03c2,7b67378206eb56e738cc2be5110c259d43255854,f3ded5e82eb74efd6c9d0464381b3643ceaa8f72
8790c4303a6836ed7f21d0fa71c2111a9e6f8599,55aa5ac129fb44d38a1164f4917dcb3182fb8256,03f45f8b0a16e792dddd7c04a4b94ec35a673bfd
840df7e243f922a34113b23ec3b68c41e854a88f,99b71eafdad72910e6be2f5a9838470f47350924,637fa74c5c305cadcb0aad0c43b0f6a9a3c30888
1a07e13c023a6ef423917c4500086f242fe056a3,29b3b092518ddd6ea3525fdfc1cfa1d7b512e824,346ec2e86f63643ffd071963cdb371af63a34e76
6ab6be4793f300ac18d0b03f44b20c0d2128b2f1,490c431bf99b5ddeae2d13ecc5d75f08d0033430,c04024506bd2231d49b371e9814907de5dc01d58
008397cb492610afc8cce7a3d4b416daf4c60af0,708a479fdd177f27565d1c740c62266c590ab94b,27e17e318610b2ac62a0b35b83228fefa164d64f
21668148d853092dbb56bf5f8160f2eff0c0a1fc,d88aad944eb20e217c1a8d7cd47bd9e7d7e7549a,6852903b57f2738defb66bf245441b986ad13844
4e3fc8290a13cfb748416758caf51e840fa060e1,d71f8233735c29084123bcba463b9e955982410c,de51e6a32abe540960354cc1411b7a4f70a00d6d
900b1fc4eccfb1bf16723d2747107c02f8135c5f,9a223100d1c5604e4e3be573d93953073051bbc3,5a07867d202654130e326b89c2c6acdf0bce7f8c
d87ba066083c2b7ef48a3ace83745ce65b460632,847ae42cc11fa393a13977cbb810d58b81e60f2f,3a714774ffec45484fce4547c7b2fa72a6ddc789
ef7f2ab5a7aa65dbac4cfd06192faf5594c59b52,326356e8e9000eec4b8c1a24ca3db8515c57f80b,c005544f3dd010457719f39c8f6082172c3e7d61
eb38ba60c4b0efb9b5a6fe99cb7b7825a244062c,39fb7618e4d4e5e088f1381dc1b9e3fb933f6d79,9432af9ec67bd69d61b9e3458f8da00ef1e8bc22
79750108d391c5d90bd1a82ceeb0cd384c95fb00,3e4fd4f11b3be0aeae7747c8938482f92d61515f,220eb378ff6e5f2921e27b9544e28e5a3be74ac6
93d7c4d20d76c526206285e8cfdbff29cb36650e,ed4544ce7a61aa113be28e9cf46f18674bc5cc1d,96b8a79563068bfac42a7dd5a4089f14104ea4e5
1fae85a1c61d4943e768f280eea380d85d3b89ff,300d4f26177342d908d8fb859ced9e21f2ab12e9,4b271d8e0eadb801ccd5047bf2ac433c2cbd9f08
12599706e51c6898342cefc2296dd325a4be3702,e920651b4d01ae157a684ff41934ba27e3b987cd,3dd4b7afbf7b2702e5befb411ceef644949a6dbd
0ce984580945702cb50f17cc7a4cfeeb99ce109f,7c01edf8314c9321857c76ec02e6833139c68f85,e09304f67163e4419ecee27440712da5e09e8451
0730e86c9db81917c48711b7f00c1dd503d1ac91,4427392d56d0cc33d961a9af0df1454d9d95e6be,d842d822ff3679bb77dac51e9f147d85a25ef5cf
8e45bb133dda3e4417c9427f1cc2c11739447b38,4664e510e64bd76fa3700d739204e12a72bf5f5e,fecd25bac187d7df0846f58ab719fa2aafede2bd
899916d76a68988cbd0a2f95c2a519c7b4bb80f2,11076f084c5f4c2c536b07761c93b37c362cac83,665b019ef3b1f43c4bef68237a604e2af1487317
da6c0e919b9846586a59ccfb77a698b2093b3b80,e749c81040070d3e8cb0c070e6e63f2f9b54fef4,e219b24aec902218ad27678a06d18359f10889c5
4648f967bdb769a954cdce0cf995a45d9aafdc55,eb74850d7c8705c4e7f24618fa82e8b1073a9a45,7c443001362afde8da7686d318ff4d96c945394c
79b240ec8165084058d553693e696819c7732f1a,b2f5f6ac7d3527806868807d95621861b3a0247d,e237da95d2b16fe25ef196674215cb341b983188
4b757dd360796cdfd6ee412ddca5e806ef4159ee,eef5001455990d30981fbee37135829f97ecd77c,671a36c823fcc87d2bd867a644bb50aeac68dcb2
0c939ac6c6e5ec83962f636cec7c98ab93199759,d35a2f53e770df0a1b7a5c5dc07264997e7a4f35,9b2726fe316a385ee349cdec688b79771f252f21
76d155d87265167c96216ae0de03eeb4bf71e336,d322143566f8177ff5a4c15f13c81b5f14dcb67e,7e89495a0950add0013733eb631483aa9ebf24e7
6286ff38cca83503949d91e60edd03639dd6056d,fa384956d60c96d19c3c6ef891f3ce0936b491f6,a0a453f8903b9e9a261b5e6b74ae0b560301b4e4
c40cb181fec5fca3abb35c59d87e9b60d03d1612,e2c96612344ee6ecdb8abd1e977fb99a7d993526,7f9def422f1d4e7b8eb5a85a1b45c044024975f8
b2dd980329175ae2c9a308034893c06d6b9592cd,831a46eb2f20a1649fc30fe31bd5eb0a0b8998e6,f29f794543d5e05480925957d88fc72f78ccbd98
f85aa24ad0f75a4a32c03ea62503d4cf2901ac2c,a70e4ed9be34661a2ac97994e99899fea47da7e7,610972b26cd6e8847e6fb31370fde0839ec81cc9
553681007535fa3d8397aaa9c296f087808d69c6,fd72ed8c5691877125886042ad5da7e9cd33f9f6,83c9b17ec5aa3644201b414cf72c3166fd2f1930
d9e97e3f0fff5d6cef6a083b20bd7c2674131cbf,22345e4a281c0d754644682eea303b87fad04fdf,e20466ffd120ca16ddecada5f822b25f0f206b6c
2bc965ee280146dd77ef7a968776c8759a0f7bc3,5a32b7159e3110c291c8ebeaaa641d3c61bce92a,59ab80bbb06eada221101354f6572aaa6dac8fa9
995a5431c3f4ac89744634ad0ea2cc00b269f852,ce8643a2bca9163f2530f802e9c47adbad804c0f,12c494cc0f58f6ff7034778860954a5a90d07758
1f965d262dc09aa2de789e20fa23163280a5b9c7,4423989868609ff712c6b7357cb6c26e0623d15b,251ca6b6582660db76aa087a996020bef7bafd5c
32c1f78dc194610895ea173ae48fc2d96192f44e,4340d03ba9284c1388dbbd6bebe9284bb9f5ef4c,92de1a6fbed74d0f06cb7d1739dd341f60c4c976
cf0f3374472a21aac94daeee98d1fa7ef1d77028,924c917276b094964f31f72a3a9cd01d38c7255c,ab3a10eaedf10ff086f89f5e7c940b86a93e130f
b8007e33e350ed1f071ea4f2ba3a6e779c231322,bf0c724d802e013daaf93789f1a43dc51118943f,55d3d1447cbc07c98dedeff63d44ce1e4364abb6
b9098d8c5fb0762955acee79c0348d375558d44d,d86e726e87e279ea5c73e9c8d04c5f16e509f99a,698e16a12d13e20f468ad022453b708f4bfeeb78
1d85913234850c31b1d68bce91b27d964faf5cb9,890512cae2c6362d8c7bb3465c07a0932d087341,70591f6449a75f084d5ebe630e4597495abe31d6
0d069b160f12ba276f17c0802797899a64b7678e,51035eb0f48892838ab40705676d4cefbb0336db,d1dbbc0a35aca0bcf45bdac1727808f2341b4775
4ac20ba523b5d11826b0f2c5d9e77861d2e63d27,ac669830a292d279bebc8bd0dde963a38157f0ff,31644454d01f6e1b5bd739be288254dee6b024db
40e41a846fd3dd360d94e1f16ee0af0ffaafc96c,7703ff9b34ee48665b37f418b699a3229c0bcaf5,0977f0ac0d1ecf3284554b2613bbdd1bb03359a8
2ef405b3e577461668de1e776cb07aba7ee5342f,0df9da502b666cddf8e5a4a8762202f777b20eec,2679972f3822ad5301d73f20c9da79ad0b27e208
b4b4896f7fc2b0f61a920dbfe3e220d8358a1a6e,dd2e8c8d3eb4e9b6232633d43f9e21adbfcd1f4c,28233953c1a73a1be5f6a9094e2be04f1f612ee0
af52e8ce9adf61172df5c65a26c972bf130b5006,86765fa5a63e390b4486e25febc1b3550eaae558,716aeb47835782a38be7c830f245edb1bb089060
a341661f989730931d5914fdbc55b67344146360,1034d4d9a5d6bb8d38866cab4f96ce362f72a1e6,ec788a84fd0ca7f86a7718c35b4b4308f48fc819
13ea45d243369b38bcfe8347d7b2ed6eda41cecf,59ed4c9228e3a2f4c164f35d548999092c914404,e7ae1f9152a492f43193e216db44334dad54d5f5
b40450d6874e220e23c9b2abaf15fa475ac6d89e,3677680c08bec7ec537c111027b3cc37ebdb19c8,cf632954d41b5471ff3fc6c73b96126a450c725d
90faca9e69eefca34849ab5b290b1a1361e9689b,9328dd648970778be0ecc10f575d6038d6278937,4200ebd748aaf9bf82357212f6c2286649298509
c89153242da64ff6ade4a10334979d26fe5ab6dd,aaf0bf7e191b8abfe6cbf4540de096d4e5234b7b,aeef060a0ba3bdbad60f1597f66358de1591e03d
0ebb98da7bc60af4daaec6fcf08d6cf7eaee6620,b4af922d15099962539df9c06d15068ad9ee09cd,bd5aaf041fd4d5ef0cbefe8be2a99639236e3477
c433b740e445095ee93b3c8cda5eb494755df256,2484efc2e7a75c34c905d179a7aa636114c105e0,1a32b53f2c98b680f35a05633e64064a12a74849
1199bb3eb537733408433e76a356dfadd11b71fd,d34d5c545944537cf458f5d388205cb88f3ee24a,783436f2a12e9860c28c5f5ca2f76182bfcfee29
39ac8a79233b885785148b3f4a2fcc1547dcf599,2b9455e262e7e7f7333180268dac1cb0263b4143,a90e4358c022b52ecabd4bccdd106c7b8e049a87
ce134abe46a0a22a91dceee69f6b2996a3959bde,8093b1ba0c8c9bb4a8054a1107c20b2efa368ba6,7a19bc012a29b05540b958e90bf387c21c143397
ff2492edf5cf467ac35494e0c2087d51ee30151d,373ebbcf41478383382db9db4b0fee61d649db9a,d91be468dadc5cf2c66efb2596ba4f45d31dc80b
ed82c8325bbaae6303186b5bdc892275d980c907,e6d140df80b76227f76f632da148795fb696753f,df42ee55d4a655e754a53ca4a52a9ae07a79c858
984a468997fb1fbe5a38fdf44e1f386fe7c272a3,74180145d722a89f6b0807b2229d99fbe6e3f638,117aa5c883af61007a35940a6e2c049dbe8a85b0
17ed4b4d6c25c3a29da880701a6f4e20c5f4da05,efe885c4467c369f5c4aa634fb472f4f649f6019,393fc1cea27033cce6e7d7b832a1c900c66eb555
2ff7f45a362c7fd592206c17ba5a789c5353cb22,523c4486aa382ce7e9c975434c0bc76c319397d7,a05f52dfedcda219d999d0bfe19f4410d0283bfc
a412bc39cd389f7a82306219d9c8bb98a9ce5ac3,1f6ac0609e416b083e8e3431263501dd729434fa,0d5dddfcb5deb648397d38ed618c4c49911f6b03
09417140dee6b84871b1d193457613b8258aad68,c515d4502644f9aeafd447169e848196a17f9083,263e7e1de1f5b93c9b06ae448faba3e32fcc4f6d
f0b2d4a4cab1f52c8d03cec742da524be80ebd6e,57fb0bfa3559093d29a53d216c029b662587c71a,97fde501012bb27041b27a7153b4381a0784552d
9ddf46bfdcd87420f79130d49c835f1eb183fff3,c7290bfb78ae1802361d1efd937fbed9d4f4cf82,1d22802ba97ac135714c8f6944c745517c3ad3c2
42b466015d8d342c42d03884c94d4620381ffa0d,a150115ed2bd5fc2f1c6d3f913ef42a233117496,b50d6ff99c013253bccb5c23de6c8c0d7482e2db
b5bccf7a77fa90e095eedb24b57b9ef1af768c45,922457e5b58d76a13ff706f9220d9d6350631930,ad50adf5f329454329b5bac372c7b5091c620edf
860a2d01455925f60eb3f14a0289f2d47a22f72d,4f92679625e2e03c9eb08b7bb50ddcd19e056949,b5e20033924651f3481c3c223409af31a68e751b
d48e984ba029142af8abeabcec98e6e22608e22a,8870c72d91842c08da7d51ad432a86ccf4b5136c,39a3f5a67817cbb4e1d267775cfc752b21158b7a
28c14ff345a75d5408d41ff6032d6250c2aa8474,ddd846ede494e86e85832d1bb3a1043c4196bea2,edf4f0b416f6e4d4f2fa0b57f30998ec72eafef3
bf510fbd62d3d3df146c684d9465e5d9c85ed64c,2ee0138591fd6498d78377291da7a91d79c5861f,2256593e92fa68236a3e5adafa321787e9ddfd12
35047acebdb22864f7a7b659bb28a83dcfb54db6,b58469a7bd20259b4e6ecbded940cc3a4593bee7,07a2c6b37e194371572172e72e821163a0266447
e33f720fa5dc519ca19b936aaae9578cec74187c,c74c4ad9ada5fd217f40663fe65820b3136e6c4f,58df41dcf09036df5e244a2781b93f1529c20bd8
5e641960ac0ee1946d419175aa4594d68b0a66fb,98f6c64f826f0cacbd817d84e920c194a33ffcfb,b3a8fd009a8653c759f57549db0926e5b6af0c8c
b67e6ed75e558f7e7fa90b74c0ea7b2130ab3e07,be1fedb2ec90082a6393c6ee2998ea3a8db4ac28,1547f28a4001e3d405294bee87be5c889c87b1de
ef5c0a4ba85c12edfdfcf395c7317c85d34e6d4e,2f3c0bc8bf96ab70c031af16754bbdfff8fef1f0,bfcdd919504f75c3ad4634ff1a70e1589ecf815f
25e955b6e4d407fbd87c0c743fb6201997643455,b09cdf35a55c30a7b4174868f2145eb4fe54b8d0,1068015c4da99af9466ccf7c4db1d5c8b8bc2780
480200a708885c2d63270a1314808ca0668a65e1,0f2248f923dc1cd790a9588b64d0a2dcffcf3560,21276413ea4f5044fb183efee1b78e303fbc0715
8b816782c3a6a06e4c30b61f89c618fbf384e5ca,859b100da682797de580abc1988b3103751a0a10,4652593a8c13f551efd3313da8616d7ca996d3a8
2cd92ee792e46297dc982a8990638cfcf0244bd1,328e60c15536be8fe559c9bf4b8f3eaea1370f38,e05a618483e8111d531a8f8dbe71988754c5d143
30c06d66c3c30adfee4d061a0902dc79924cd7c0,5aeaf398cd6ca30c3a0ea01fb78632eebc6dbe81,16d8d466919c531acaca0afaf1bab803cbf64c88
db7abc11d679d11bc1dab883a4b21b4c023be2ab,ec3ed04b73a1a8999a5683ad708f92cc823cd33b,36e9e39bcaa5c5175d96b4e7141126b9ec75384c
166a24ae7748c6a5f724325950c7533a25597b1f,f7edf0355ae2f2c1c538c24082048ff5afb5e574,61bf79c0ace37a74fa7ef47ed95577184175f9dd
8c5a48da2bb48162c53380d92d3cc192ee3271da,9792ef566ffa8fd34a18ad56b82176bb9c59c9f2,e0aed719edc7d2c7bcdea2dc35b1d978093d4e63
310069221a259dcc21e1ed90a58193716b8e39c3,e1478e27b3474c802494c2260b82c63b7376c115,04a31f8be27c7136b81319e0f2c3b4fc170bd3b7
36e65b34645b0b06770d401fb047cc5cd169b78e,d3a0a2dddfcbe3d8036e6f3f32e79488af221363,6ba102ee575ca97764117d05c580e30385438b52
1ef148148845ac920b73d8c32d836ca2130a4595,b20f968454f2c803485916fec7d5b4df4d52064d,4b5c6ba3fc0a23b340efae4ac53bccb72c26da92
1a57a65c5fe1a17f8b1d447051ff18559fdefb93,eb5c61281cbbee572ce4fbc0f4ad7adbf678dc78,91667644f4680967908c455496ac2b2e70832a5a
f0cecf536700060b56eb12c7c8db20ec6e839428,dc5c99be6db706536ef07f18a4d06da831b6e2f5,cafaa9f5b805627f3ccd22ae9fd5202625152f8d
6314d69c400ff08dfe231a1a67e85e9185e2e819,8bd781aa4adc3244b2233348db919484cb38ee8f,bfc11728449074b822b73e8354d0828214076fb1
547fa426c7f399f60cc70a06c7f4d1449c6a9634,754c40cdb0175f35f8e1b61472c14d424188918d,0785652b55ab72528d0514b2cf569be75fe641a0
a74a4aca030af59d0e76d8b0455916bbc1917e99,065ddfd8d434ff901b14c71b1ba5eaf095473a3b,f65994ddcb5ebe7e5d9122477ea2cd1e6cfc2cb8
f8f54dcbcfa27eafd4fa8593601c692e1bb1a13e,a093c6e59a2c70fa8f7ef2ba002000e5b967aaf7,0d988f2c9632a5e8643f86931757f984ed24472f
ec5b4d458eb30432becb64bd3c0dcd8a9aebd055,6debe90b072d33ed5c3dad5c075a1668579f1fd3,548e91f104a22e37552632fcfb43a612e50fe18b
c07da2a6546c72cda73c151a064e7508c47a63a6,84a852bc1368345c77cd1804aa60a630af3a27fc,b1151ef4ead1548855dbbcdb65bbd2c5c1250e40
282f4aa06022f30f1347f161ac44f13a0162f178,425ef662cc54e3293ef63bab37cdff44b29a23a6,62236ec2bb058143ae3465884cb20f0856482f76
736fc12e55ab4872f92d85a6d45f038bd658f94f,43538416e37d26d8bea7b2fb2bada8c52b24b236,9e9153b2d30c088de589ccfe57351a14d902c4a1
b611c0011d4b874fa5cabb48799ac4a879d66e62,7719a5a5a7332b087701a6a99cd418273ec9ec8a,fb126e32f966918932da974d7f566443ff80c74d
1f01ba4bc0bd8dd7ae41932bc21e7a94fba24c0c,a7978286190c9223ee9565ba4a7e577c2e81e2cf,3bf5c67485347d1168a9abd0f09e97b98b64aba3
63b3f696cf57be3b92ce77d3916cfd3db42e9d9c,7e0060e7ece6a821b6de429158fc5707b3abfaf1,1a21ea41b8cc67d92edd4e1ecfe05f9caf27052c
fc43e66f05361eae720d140f9b5613f431aa1967,1a65b058b3845a129bd6c35a047e94218b5a0f0a,c6d3e42129e424c1cef6cfcfcd337cd422aa05d8
6c4d218b8d1c00cec55f889ab5fab9639a8159fe,b0852b70c613024ba1558036b3fc50fa8012fe04,bd1da8ffb7240bee2f5ab4055c94dffc48c30290
da65fc54a62b73a8f937fdb1036d2cc736982fbd,9bc294a5ed2ba951f6cc331ec28932c76355a44c,32a9dab401b50a69bf4068eab7c07e396b454a48
5b661bcaaac203046c81c47ee002684190884ac7,0d63a5fdda7e4f1b121b4825147e82d20514cf44,2406b203bef98955ed957d2e5999a42b4c287758
4b04608a4465649d7d4e7e09a4611342cc50a3aa,6e964d153eb3cddd861b302d68e6052cd1f80f00,22c91ec12426e383ebba173bd7e870db19a14017
055bd2c653a62ea69911fb05fe5747e01a36f88a,c8d86b3fdad87a7dca5ed48fd65285ea70c27655,293ddd6eb4dfa5d5ee7652ced7aa57059ec37f0c
460c86e78a6c0d6933918645efc7139b8955389d,6e9e1fb370d8e384b2d78935e2839dbbe6bcfe64,21e13f0c2c71f896dabfb3190144e10146e281eb
7b11f25a2693d4bcd299bd5d3510ad4f2f288565,f86068b0e177b4d14dfdf8adbaab5964bb04d258,2d6a0d59f0ab6965600f49ceba3c9f3c97b88234
d6825a35612f7df856097fc778a74d3cbd88a729,4cae231a521302a6356875b1d2268323067a321d,f672d4cccf83d80351f5353a80270b55b6d74eb4
47f10ae336af84778c34665d18d2523e2e6b4e5f,9dc3169e38be675b148d295a4a1de45f52a3e6ab,bbecb015c9c841c77d38d8499d26f4fa6a2a27b1
cc81e56eb22b94c0525dcd745aacc42b7f04ae55,f6f150f857c46a09447f5b451ec9a32491677cbf,5952c5452b2a8db9b25083b7d9a88e6a6148d56a
36b59feeac619f11b933cd8a61b44b7abd35fbac,632ecfda9ee6c9409de9f5ea422860a4f6641383,a4cf7ff6e443d01fb531f1550e04d94839fc101e
472afce137c3a03b9111c8975db2c28b609052bb,835375e7e06ad42a02640b6a48a1bcc86c4e39bb,23875bd8c47e3cfcd9fc287781c9ff95870c7fbd
97929c3f50fae8f509caa264261b0c644f6aa62c,7afde9fe77b9f63131f5bc9ddfe1eec55416031d,0a2ab423e5f8299d1c9f9fe6af9be3cd0e0efd26
eba0624535cc504fcaf367055cd3adeab56097a4,baa6f2a1ef98019e5db9b34a4d04976fea804799,51b9f31f7cecef028afa71252926888ca9ea42b7
dc0e6f4aa83c8ee516b6b27104947a23fc834f48,2a30ef7acac482f88402f7ebfbc582f6edfb2393,375369ce518bb6df9677cd8b8cad0290944ebabd
06aff099c163330f64f6a871ebe4ede1fabe7286,c8bf474d6d0fd0aab4399033d42c643c9264a3d4,1f3cdf10b70bb83e82dc8ae3f3061a46814577a7
2de241b9ac50be94703ea3d7956cf27e3244a685,dfbd4eac2a81a88c0e11367d0159781c2e254821,1ae6ea8f88bb85e469d4f3bc2672859c3147c94c
198abf11102dffe016017ab966dd97741ce0a93f,927020d981031267e392273cf672c1bca8b5f6fd,e7b6a08eae73effb64efa5cae6025a72d01d7026
67ea121250f8d89f5d26c26088554cf4c9ca4e6a,d520f1df0baa2a96adb5f4506ff855419529ca82,1e1cc16569ce36050108947539cf31da3e710494
826aabe99db6011601402ea4c3c4c6270140ac19,413586c041bb77d4ff76143d5d272e3e5033865d,569cceb2a0d5aade804041c283cba334d9faa762
14dc707042622bdae6651a1202572d0fd9682c5d,e5996bcf5faae0790e80fa60212ea9a13fa69a1c,c3f6db6a9505fd86e1b6624aceaa629ea05fbd35
32a19eb5b358499282ab50300ebee96114a613ac,f579f6dba5525abfbe88101f52bdf676d5b3a32c,1a1ca7206793cd3ff4edc335a485d9546a4f4b3c
818fc4244b1573e67294f31793e4e73b7d7d986d,f971398f4700e3847a500805ade5b34e4027882d,6906c2c3a79e39f517d43333674d6d62348a92a2
571088ff80cc883c5a26840a9fc41445b25af0ae,24ff6f76ab3b7ce7dcac2763f4c374c7df1a29e6,ec0ac70df3feca81b4a36bd6416eaee1467539c1
aabd2c50671dd79c8e52514483cf8cce63e71499,b1be21fab7c5cfdfc556cbac93abb2d443012b48,7dfc45cfeab2cde98e23e10733a7f623a23ffd01
48fe8e6208ac91446b65d3a4260413eeccf7cc90,ddfd3f747a27322a537e48d7aa5fab6a71d90d01,5e7bc906e5b4ca4e4ea05ea8add74e756de40ab8
ee5903fe3e57b68e4ceb3462eab02b31eb0d1fb7,91cf939ca056fd3ea4df101440a21ad00326b272,97ca4d019a8a3ec7aa582be9c99fc953c313b8ae
0da9caa6f589d015ee4d72f6c5d47ab1d141bf21,f33cfbc2d86d9046102e6620d32a4c81c0f65e95,9849de984bb974c4e253f134410fe5b52c28e1fd
5dcaabc91a9cd6856b7e01a97eeae0d1fd6e0ea4,afe6f1270b536e57afef32df55f7d91cc852a598,d79db82ca2ebdf6a89396c6f73efb39f566ed83b
317b01db6528a6e0e2cff27caca9688a4ddc9373,9d85249ee5454a2dfa037edfab9e9ea29fa135e1,bd97e48790c0b28076098d0cafef4efea3b02d57
1844b2a918359886bf3bf646be0b851295047b52,be82caf5a00d34ec3a61d095aa8392d95a18c5fd,6008dba0f71e1e690c10751794dd442136996143
9cb7e6353567937a0b50661173ace82cd9e6a204,bfefdb67c3be4318ba52be7e603c8dea90299da2,d2926867d688aec3b5fba8df1dfc09e64610bc3c
ffc7a00b98cfafb3a3f2e4fae954a7f80067d414,5646d14a3c5b7161d4d1c47f45d3ec2f2a8fc854,4e1c9aa1dffeb368e82d0376eeadc3c7e7630956
f372eb8a33e269d3ebb857703c4861bc7e62a1ab,4faba3dd5d7b2c49c80422a117d9e87c5fdc9162,992532d5657f135fb597b6e164fcf39186a8296b
eb9bc5532e4deb01624054017418796dfb206f39,a27d35d3491366e0631bee81aa1c2c994ec3973c,cf73409470dd3688b070bc658b0f72c1621797ef
266a0af993498604899b2dd3586b7bd8ccbfaf8e,5cf2fac78cfccd72dd2ed6f6dbcf480edc680f46,e867b540344e13681b040b234101f282f30cbe60
a8baa49c8612634d317d916904feaa2acba67bcb,e2e1fcfe63d185ffc3bd7097344a814ccd01dcca,105382b8a17691d31c3991ec127fb2ac391e305a
fb04659eb956e92b7f0d722c3f3c4403c4cc99df,8e6a4053e36f6c1cc6666a77b6bb3e96f34985a6,6f526e83a4d83f9a4158863a156ef06b5428e5bb
f8f7867198fc525fc8505e1dc1132e29f07f9211,95993ea7a4949af99f8987912788dffe382ea957,5ffdfdd04ff1a060e5ace0958c39d61ab5ffe1b3
b49d2f689f23e5e04d8d963cec7569799821830b,0c00e3ae132268798ad2574b38b71f50b1b7c4f4,37a74744713d98643bddae01e040d19f2e547eba
bab854df2f08368e2d7e0648e6c492ec66ebefc1,33bd12aa562a0555922cb10ee4884292b189f6ab,c4439abf14186c10969c6026aa34a3fd6758a89f
c3b358d25b61b58de842c4166c328e3bedf9108b,ad88310e5b7700e6d46903bfb3acc66e64d125d3,2ec7817ad4c6f72be0ce69af53ad43ce890ee98a
c8cb48ed7393e5b4b794c9052db34d6478320eab,235fe93688cfa9100a74cb6b60c58dd0b5df30cf,4cbd3ab6fad6548337cd59e5b5637342eeceba7d
7d0ef337668af544e9712b025c75beed6f28e29d,e2d58b8b944227a6b1911c62bb59cbc686da0ac2,9a7a8f0d5c184e9909b95cccf53f9883137e7a97
4aaf65e9f849a8771046f8e2cdc68de851e4422e,aa182cb14737fce742689f269210acfbc51e2b8d,0610d691b6ba50c6596ddaa3906503bda2771b5f
63b57ea842b52162f31d396b7a605cb01f0be835,1f232684e0cd239f89516faaae9655c4c7dcab9e,08b7d2ffdb662073c748512c3b5a60bc33d42119
3df8de199470da796a9c00fc01f7ed6c3a07dc18,1bbce993957e044220c326855fee149439c576e3,5462dd388ba79274fc7f0dcd1bf9018966842487
4ee4e9ae1edc970498641c1bd864fa58f968de23,3c5b049f6b5137be2ce5823aa9ef8fdbba11d0e5,ff9aa15143dc4520453a4f35c4aeaff57776f01e
0dea63ab081bfc42541d6513f1f11bc25a126fb5,51249b103a8296dc7429981647bfbffc5ee52f4a,cca0c2e11132805adabe526c4e7dc91d0968c31e
b1f122ffadcc952a67cfd4de2afc72c99e080722,3811b307b5cb5dd560041fa392af81b1269954b9,d04a2a498a40717c229cdca20518d38aecb59700
463a14e2951704b0937ddbb7d601716b9526e4ea,1ca244023f1782753c3369f5162702b87a906300,9bcb1b6f2104572fdd1a49dd08b3a729562c79df
de46b06f27cbd94134c533cd2e8016d340fda765,b590ad70d810e29146a2e70b406b2ac7addd8808,e4fcde89205896150af5af2ab7d3389fd02aa8b7
49665f88a52d3268cc554c03e637b1eef3ded8e2,95f8a78f901005253b2e4c7f15249e41616e04d4,ecdea22992677a449f3689d50bf94dba59744ca4
1527c578bfe0060db2a9b5d06bc55f10cad2acb4,e42b16beb40d7aa16e9561f77275d473289cc16c,7ad30e81ac2948c0fc53de4cc79ee5a2987a5078
2d355d511799d9f19fa76689240845b586cea28b,8353fa6c811f455e791f284b0c525ee4e38d725a,98aa472873f32202bc4f19b73f040fe5cea28e79
7e0e284fce59b7e1a0f7638db205bcc9bbb576cf,163f97b84e7c3728961f60ffe0f10e25001cf189,0a8f1b257dde0f079ef7344ce210ad5ee2dd2eea
ee3fb5544246a4f3f5f1cada28f38798ffea5440,cd1251bf00fd0a3891feb0611bb4427fbbfcc8ed,fdc19ea05117ea6498fb1526cd4a2cd03735e83f
37b3a88fa0b455b8e3084b66bb395f3f6510b873,21859d8867d82f3dd578575f58e94f5e6c428af1,d659ca7427cc2bc71fb26275b6a2e5d2fca54c5a
abd14e713b53d0cde7a469b6a297f6a27f989951,92eb7ba81fb19495c752ab10db47de92c973e8ab,d47fa4cf1b94f0e7dfb8e826db552ac2bed57c65
a003040be198c6c7b4ff0aabe258da0e0a4813e6,17ae93f916438ff444b4eb0a8a1970412c35892e,470e3b94489c95b9ed86fe299771e50d801c62ea
e1509e1c6d287b826ff8968650bcb514cc4730c9,9d55e3aa0ed0711c8695927b1469565437319de5,0cac40d2b00a2233d96fd5ec6bc9cbc9ace1f873
a58def8baa8f6538f861bb5fbe0361541ab7905a,1e6fff947363a916c35c54ee6ac0130d4277d68d,2f1314c22ce42acfd32b3d2142e7bf729b874188
d8682f36b99b3da55df517bd99eb75855d85b999,975f0118ac60b28b809ef58b2c0c2aa6449427f4,353bc2775693f022b66e8de9c7e809e401689999
67df8802b1c513faad634e90893c690477f612e2,c64dc1f97eb002fd4bd4b86f93b7d4c5b8c9f0f6,a841bccf7569b5633ca982146580ab44ad90f026
2d351ba50d2a7b9d368c3d16e7f8951c634d7741,602761fe442d0ea4513b655f4eb86d3514c19ce7,02752fdd36d556ebab970c2d8eba0ce689fcabb4
20fb141ca24489f8c5f026c5ca360de5e8a7a2bc,b648c6e23716ebdae25e9f59e0cb2a844f44d507,bfa16c0b32b99bcf17abf8d67bc07919615838ec
f2d88692863dfe9896e5fd901a2cc5e58c12cb85,41c510a5b63e413a7115cef9275385e9c9c44526,80883ee7c0c067545bf11e8d7de07ce245176117
d18812b32f1a3035ef0531a75a9b2287b427f605,0a45266aeca2b784c6fd65360ea318b489a9a504,290c597878560282b24831336bfe41b31a464ab0
ca8bed443fdb37492837382e1415f866c8bd88e9,fedf091a276aeed6a65e97cc122ac8824f9e8673,0c02585c62880cce0e9d1fc98dc17550daef76b5
f6e353d257f8fd7d0b2686f83f467bb394c83bf6,5f0e468901ed7b93d9ac620ada1fecd5fabce9a6,8c35709cd1b00a2859c40dfaca4b34a093b55141
386219db0a9ed8c41f4e227733d8a627d80f8dd0,952fda2a172b98ffdb17986bfedf5f63ac8c4121,6548dd02119e46570611e64d5b9038d405a00fd6
697ee67e9789b57de4f3a567e56403c1cec3f9ca,85345c54d878838e8b1f034c2d55d6a34104b443,4459510e5c4686eaa2c836f8e7e0c3f6be4c6920
f6353540426267c8a192124da5fa5fe83a8d7724,8a836ccafcee73fbb0cfc57e4c7b6674d93fc398,0b0033f53c759ac7c03578873bb8cb1848d8570d
1d72eeb2cfb4c82188138ec3b703b09937c2bc9e,5745635a713dda23ed3761de15d076d18c6143f2,1a5ca1e4bbf3022a549420a8bdf0d67ac0f52c05
a70129f39436ccf9fec1780aca4802ef0ef8a74a,b274091fe8d50ff6d490cff92b82f43b06f77bef,45d8ffe13dcb4dc2eb46e8977e145406641d8322
53cbfe3f85f70d0f8225d1e6432b08504e9e4645,d53ea44fe42c328070b800cb51b0ea1b754357d4,a5fe90e3921e7648ee4cd8f350a8b4dd50f901fd
a06068b4f175a724b45b2322c7d92b947605e526,870a91502a98846e5285221a4e336553936b03da,e5a648817fbde5966e62b6a086badd4b0ca077b6
c7c10bd2a4d1055f54483a79540010b7febd4211,cb4bcaa068c86564249be6f58c28458c8fa839d0,4c7d6b11607cf86e541347e5bccc5ab29c56074b
e3e1285c5d450a34766320e32a0b6387126503f8,095ff0d96a57d3d49a984d6a20f6c0024a36fd4a,6724e3dec8f871c0b718391e6c28a868d876e9f9
5c5d590abbca26edf633815ba771301517ea1cbd,f9fbbd4a88b447e5da34e624a8b0e07e0bc38571,71cc17d60d592700030b7d56624c205ac3720538
6870e68f4e9320f9b1775206e1c1183db646ad04,bc59422f00c3ce3b451f543013a4a50139e80a6b,98563dd06904e1fdf03a0efab4ce75107e4e09f1
98d8830eb79bbc3d67ea9fc3a852e6088d014502,8720ab7d3ddf8ae2604fbd4211226272849e5202,18f2553e8e9440a7bc95bfb1dcaf272fa7095f90
012dab8bd3cbac544faa0e867f346ae85accbc6a,8ab1fa256ea6301eda45343f2a791a7022b34eb1,778dec8f6727b95b8268175605762b88fcc1af26
7566679eb0eb0f73b4d058c535dfdf190e83454b,6473bc1e82d28374fdcd4d1c2eb3ac8c1a3d6d7a,0beb7870f3901de9a036670df6b90db71034f60b
ae45947cb48a965b6cc5eed9d7daf90c71b3580f,df8c00e2bb03a9a4b406d1e90333a87869182187,5f215e812667de34f93c9170941eb396cc4b6a0f
aa516f34d06cfbcb0ef0213e73f698c7f9589dc7,0cb047230fd1dca6846c910d5a2b94a4822384b5,833c668e29b7f3207eb1d2f94fa8ea80cde73b2e
4a81f13709943f3959be282269e9a8f01c491046,f3311d95767f33d017f44ed67535697a02edadbd,88d57454a0fe887251e117c18981cbce1eab55dd
cd661989a5af02db33127a4c61a9e4988a394d3d,b2031773156d644efa0a563cedc29233cf580cc3,1d006185efb6d8239b6a85959030ed7d393b0897
3a89160739a11f10b7ac286ad320abe44f4b0f25,a291258bf86ed22b45cf3e1a9e3b2b577c2acd46,9236829a3c4b810afc9449d6416a92965b92b0aa
6608fe63414fe51c057dde1beaada8584a1d28fd,ec8887baf22cec2dc11e211a547f470eca840680,f406c2400b1b529c74e07ccd33b265ed817fef74
562048c965f06a75caf878087aae44a10be56a55,73e0a5e0c2d3f69fb87285fb508ee5338c7232ec,ada0171abb65f7c81868024e03c27ddf2d8ffdf5
2734aaebe6c79ef5ecfd2807b511bd244150b4bd,198106e43e1af4466fa2cb4d1b4264cfc2d6f15e,7a4dbdc5aa5c26e363545ceefec120c986de73f2
90685b3b5de1f481a9b0338d14f5fc3d967b260e,b6a686930a1df8012aaeec7cb2fd84d9bfbf9219,b790ea1a861860f58e431787fd36dc1e008f470d
5c24a474cca83ae46ebd64712b9e6f51def04a7c,5da7748be15cf2c5c90ceb1f1efc179277e58047,e8b60753118217ddb880db1f931ffe4c6f30b1c5
37cd24f65aec7b436c306c60adc81efe7c1a950a,5c5ace6b13b7adcc050237bd80b34568d03bec89,2c542734537fb87fb264ed30fa7becd294e1dc51
70f521e6d0a962a79e60e6b4eb440dfec01528ec,63e26059288ba398064d7ebba0d9c3243841fb9b,32b217bcd7e9940a4fcbdfe244e4f7cb9ade4c96
bcb02dcfd10645a26b41097f128e730760676324,a1ffb893a3f1d90473c02cfa109a399560cb53d1,0d5c36bdd6bbed5c46767669bbb65a09ceaa01e8
45df8cc902d9f4405054e4ef04eb7eb3f6ea2bd1,82b458bf3e907c8610ff181a748c39fe54723708,ef2c9ecc1c8c9e857a74ac62b6a7da4207bf37c5
34b2fa27f509d210668625dfb9b25d36ac7f6c34,00a8bb2ae979befdd3ded4346a9865a62bca4722,0cad75f3189bdab4bc78ecf0a52071104d45c753
d030c85f12be754349ef74282fb9a7ab597fa41d,aa75783329a9e411442b36c655637e7787497041,b3591aecc2c68aba17a4e01b53e9b9a94fadf72d
49a46d107c48335a8160a59696ce38bdc459aa0f,7961b1f893087002ea597fc60a889b5f5a891075,7435893d392e199f9379a218582ab6a650de2917
6df79b9d2ff6d792060f7122c002bffcc9b4a4f0,994ebf55ecc59d97605335edf443868b8ce4c3ae,80710db0e0730ee49ccf72453d1316f5c008511d
5381fb2a4f3f6af3daecfe95a1e130844854c8cf,313f2a335fbb470c4c185f1ec2bb3f470197fa3e,424e69d343264d4e3205de2b73f3e720ad961669
d09373cd0408ec7f2d7e34231377000a10df36e7,eac5353bf5d14d1f8cef4c2b15d215cf15267d4d,ae7141fb8128e5bd55f1b24333f065d9a6954761
dd88451266b736440e0d4c0b315b80723efb444c,5d72473ca10fb30d4eae79087a9f6c2cfefdb4a1,6789d41671467be6e6bfd6fb0b85c07d579e5a65
f2a0c9049d67d93dcd2c271b093971ec0753ab37,d5ada197b8a33ac922ab4758c5db3c3e5914d803,17d5d47c91fceeeaf2ac1881e6dc27133cc4ac00
486824c4ddc0e710bbfcb46b6ef44b639a6544aa,b8ba852e946554655cac0897164b9b04ac4f0e95,bb62a9d8f0c702ea1e15f2c64d72b84ee6588e6a
ab64ccf73a9e59be412767839da148c0fa60cce4,225fc12164a760946394ecfa634e6abe4b137295,2d27ffa4275a879e31b3b2d126edcf2375099a25
1ebf3c1615db971e4ce8d3ce38a0060efa34d26a,ce3da8d36014a3b2c91730ca9cc66fd05f693eee,a8e34cfbc9e8e362f50f64297c622601410ce0df
7452fb5477cfccbea4bac1ae10d3647df461504b,18c009fd98d509c109791eba325c2d30e6461dd0,889db707e452802aef66a0920e2a329b9b96f12f
cc57bb2146626257f6d07f0a05c47e1ba6b09bb8,515735eedb89d7621ce7ce7ca9f5df0a1bac272e,c8f8d3a1d31c1e90e24347ce71a079984a388ec0
f7e0de1b11d423d8b64f05352d10a106da895999,539f014c48cd3736726bf84d426ef2db0737dbcb,0e2890630c1cf3f0126ed67c795b876d33d61add
9424e9fda5e528cee0eed7fa1a98578fff90be06,3c1e3b663a2e7e89ae1ba39734fb57b6d7b9c04f,391c5b79e433cbee3f3d2d34f2e382afd5475f0c
27e2871246564d18f829820f2e78ffdc2ff93004,78ccbc6d607460921248507d3f9f6ff8a24659aa,2b947b866476ec263674b2a14fbd5375035ab84a
7df69170a0fe73c5b9550eccb2412abea4b0b996,41be042a28b88bb2e765586dd1fb5e0e5c082ba6,c083d61c008db1afeb91f9a19df9ef91fe6d89cc
8d82a7ed6306eeb18ba01eb1c5504a91a36d6cee,667607f121f69d8b8f8d8916f87fbe3a45ca86fc,8e319f567db6d9ad2ad1280052301a56c6e5ccce
e497019fbc740f596ce7ea4b774bb9764332149a,5e0cbc5b22c666cd7536db5c81479a4fe10f9964,3310a49ce08b5dc9647a684e4200de49a030111d
28b54dc9de1c26402e1ffcaf0449cb46d9769f99,5dd835c79f6d1e69a936a6f3e8bd5274a04f7c1f,33c39147cd564864908c34e2f08d4232147f6523
5fc7066777ba1b6d6dbf942d078b5d86ee6e0284,f1f28e35e1798b0a10b5f266b5a4f759c9a9a5b3,abbca70ef7a78e8cc5b2164abff308d6040cc249
66123763f715ae8fa8acb08452649bf3664d587a,9701f72a3f2162e690be0975a0df389c758ecdcc,9f4483823a03b7116660be0d07a5068f2d5233d6
378be9721cea87e923aa7a07f335ac67ec5b8444,ca2f40a76cd56c8085213b817e1fef91ca921645,c8d931cd3f78298f9c438eab315e8ab0fe5e0a68
4933f3b8439d59bfa0e09ec26d775eba93a72ec6,c8da8817bd481eb7a49f1f0ec5afef9246292b32,609d8bef9038ab6aadd4591ab5713a9110674676
1ab295ac6b3f612f318457c48f345b471bca94e7,bbf0df48ad89c8ecb9f5e023ac737eb6aecc27f2,aad1b8594fa37a0a2c597bc7f69d869f847b584b
27772975cd31a261b83b96cd673effa307c92259,29f00416d672fcc2b054262823cf70b015abc6dc,62cad88c8544ee34711fea79ace55d19b320ffb2
2ca1dfd0f366385086a4d4ece1bb5bad95199a02,dd01c88f94972d054875c6a3fe134ef345420a1c,1b4e46ac6eb9e350cf7ed17cfb30b1de58ff6d3b
9577540d2b61463db47e95ef5b2f3071317a2523,de689cccfafd050c15ffb8b88a45845caf919cd7,21d7fa4e3f17061347af332ca063a615e4e735b4
67caf32fec3d830010fab2bd1cc7475e06042bc3,9255f39d1c2d4de4e141fa0e34357e3a27434457,b64fb10cc7746159710de6bc43c90d0a32b6faf7
b3094cef04c5be7d78d6d64abf80a053a48a861c,44d6b579922b8ba3f31d3c682fa6ce80efbd7901,cb41a0b2aaa79b0bac20915887cdad6e1a4cf33c
10dd2297d62f7a062e718b5417e88cb31ffa481e,11838cc98809eb764bf9985f55274ea3df7da9f4,644f5d671714a11af595404ebfe17af400326a5f
435b6c0057597c6c68d9a994b047b1ddcc21f7b2,661e208808821c68ae46a79e2f3dba14db68a1e9,f5d6f70190af189c8afc765be51a5f0ac74bd955
e020081140cb6a7a5a5358751738e694b12b4c11,c1aa60198d792e04288a0de2c9f795b5338f4d88,4a6b99df2d0cf35acaaf2c5fb680d4fdc7f08962
70b8606bd8fc743d7cbb3d8f9a241ff94a80123c,72f8e7992e69e3f201de63003ce70a3e6b3bdc3d,cae21c4410a8db8e89446a57291f998626e574cf
7a760c9b891c68c0a8c9562088914db34def3e6f,cd72a1a6779c4e512a848b62bd1445c2acf69866,d6f307215c6e0cde5c0419df7183bbe1a2ca3983
e1091bce943124f553fe1dd6ae3e34d039b4ddce,7cd4cccbacc58646cad732c167f3ccb53c0eae54,bdf2a6087c406c4b64ad98197bcf6709dcadd3d5
ae3e45d2717955d28c3864bab73934679fa85055,5fc7c81b0bf5ea5f7e8598ab53335590ad1f1cc9,c573f54fb969ae8c1b7dedcca2026dcde37945fd
523c2c206a00416e4f6ce04b0076e21438fe24e5,aeff4f55f4a7c707169a32c5bcd5dace6608e8e8,5554e6d31376fb4d889bba4b3241575051fc2b1d
136a2692ac916c0c8852842772aec2edf579f346,e202914f089442acee251567f0a9a2a49e7748a6,1055c7e0dea4a2ed3c30c37cfba75ceae9f5dd98
fd0dd60f55c4258be6a80a5fa4270db73e704cb6,80891e952e0515444441e4ba47b56ce620fb3726,fc6740af15e73a5ac7459a96782abfe61decf2e9
567c4f81be9cfeb002f541e33ccfa2eb9dd5ebab,fc411c5df50b25c1efcd0abc9a8b9ccac7112ecc,e36cb38acf5f14116aac39af18b585e766cef8b9
774bbe927c4f06c090b0557df7ecbd50df7afe5e,2c1fa9e94f8bee6aafac56c0964004cb3f9ee864,fdf911339875cb872b5ee102c56860d1fc8189a8
9eb9c86e970f5159f9d00ef8e32ee677564f9ef5,4168976a42e374a1414764e4b37d68023bf5512f,548a07c0dab9d6d1ed9139260b88007f2e1b83df
413eaabab2dd7080ccc505d4e1801e335272e3a1,a86f4728a91793cb6116e13bb270c42b30caa59c,6923ac3d0a17cf5f10561a3f448290418b2118ee
afc676511f96cae20340cfc84197e138a7b567f4,6c705e128067cccbf9a8315a7c78b9d3786f27d6,04af66679532741d82157d80c16afa84b3506f25
149b95c2255abfaf4e09d022fb221ca30ba7e4a2,c4aa8b02fb86d73c0b4f2cb908e22ff539af80cb,49ffc6f6c8df33f4fc74904f7e3bd86a79d3fcf3
b92a6f96ff92002fbaed92710cf9f5ce5e888335,fad1fbc584bc8fb07ffebd43738f18697d9606b7,54c4c7f5e02747d195289d16f4c46724cf494ddc
8d6b823d4e1d335308bcdac2e4618e3de5501c23,7fac24bfe5a8fcc9ca571849514a04ff8079201b,8a5ad129c992654e14382da1e037ba1b99a4ab89
aaa50b7cbda6ba65b58320be7eff4e5f128f4100,b96bd62d6cefe06baf877f35c8628c654855d9eb,1c9dc63e3b495104e6134e19306b98b5937928f9
dd75a44709991bc9088c482dddcfc2351722fe53,2c951dacd583a110f57bb6468e0d16c802286434,71ad8cf5b8331148b27e957ff9c5e9c48e84b015
ae08a3feba49c9e8034c98e05d7688605df239bd,66af3496466af77325579136ec2546a2fa73e6ca,be27d47e2a35d9cd4a9aa6c1e388e7577d1e2953
78475e30709c70398a07578002da345013ce6058,cd284bd030e5ec10fe4dd10edf9a74645a5e474e,84f3c4908ac24847f0ac522f9eadeedb2c8ce944
95cdffe28271dd0ae04a3f4c2036533e85ba7326,831e6c6d757d9a73226e2b02719bf48a38d8321a,ea548eaa56b1383b4bbf3c6fdae919f84442041a
d9a66255ee68332828a826f875467a8c40442127,5a77e17a24449841a283d20f47a2fd5fb813f2b4,202a069031fefbd8e16b85c467600988e02dfc3d
613e964e3cbe603eedee9993bf05872829990749,f5ecba57bb0e896dfd36e71da5a7dcb84794c96f,64eb8083acd7f61127c9cd748f274e04a4ea16aa
7dfd188a9bc0ea329f4ba181fb0346c249bab832,32062dbecc438e197b747abfc1894cfef8c31fa2,2714e2d422c5f739625c8474da16e5c8527e3014
acc3219aad24f298c8e930fb315d9c893790168c,1deec48879a667ccd5ba04f4c3bd44c56550eae1,db09ff937030ed73675d17c403997da9942f5f5d
4e69e46b8e551b6a6ce612b9488d69e6e012e334,49805e03616c0722aefcb1c4b1819fbb3482c531,5ce9e0e2515c53839440d3df753e84e063a3d8a9
aed82c9adf4764ce77a215fd2189bdb3b3945acc,26099c1d98907c668f1eb56f3e0707190e258ed6,b2242d7e109d98fee63b6f6e4dcf2d249083621f
466049434e76930b1a06389a63683dbb1b55d5e4,e6114a573d60a14fadde963c9455387b74d4bdd6,d87edcd4be5681177f219d581edec148432e6843
a789dfc8e8f391dfb14ff994fc31c0452df3b2bc,6d6225a4af85adc344622e7301668d6d5c557e34,e951bf74af57bb494534c8021a4be9e0095421e0
9844fa09490e23a221affbb81cabccc445918af8,e1b6a8f192948f34a704cee421dd9086bd6ddd31,d16ea18f27755528d79af24d096c529f66d72155
ad89d402a5749f5a05fbcbcac91d8aef03813b54,0d4634742a1b34e17ce3897f9c6d62a90fa90a28,adede6d2ae93189beb900e805095c983ebb85623
5101d2c4ac68ddbb1872eecb096be852597792c2,5f69f5a7cfee0b717d43747935e24a3afb983d3c,13f44e0284b03135489034cee932708fa0cb2303
34f50766e1e01a3cddb2c2b28da6ad08923cf020,57092e3336497c4e75f6bc48374a3a69aa3b8d11,38fd88f0017894f9b69f10a384063938ac704ef0
285ba1cc6f344d9c86301aeccdc18ab77d31a2fd,8facd4839edd72c2d23dc18dd305d488018540e3,ebff68a7981731561fc380c25e5f2217d1ae642c
ee79324b57acee28782e9eeca09b8daf533dd67f,bfaa957df00f30b6b0574ff071d82f54061b0a58,dbf18e9d294c554ff07b2a2ab074533ae2dcfe02
0e30f6c97c02479a12faaa327c2fe476ca219b41,f1251160db880c5e0ce2c992df469c586cf0211e,ea76a1f5e0807d7a3c06ecd300397651bbe45eaa
7a24c2e7206c9f0ad36e9a9b901a5de3429a792c,9bff60e270524d662bc80745ef2b916aee91678d,2757e8f299731aa7b200e68d23bbe1828563a77b
6b0942166c48136c759c66d8570daad296f2f45c,7b2b51e6f36b8a9d7074266c2dd1d894e6834b00,ed1893bd8fec07f964e2339ec6ab9255b0227ae2
eb233fc4474b9056a9cbb7d02069c7f1024e8026,1f035adf9f63f3b63bf5f6f495b59d39bf7fc36c,3efd82b68510341dbc53270a793069689b1ac152
e5a64ee5216b24aa1a58466e72c9400a41c489eb,a6af56cc0d15edf8464a0b07943fa1aff775a0a1,84a415897956e4787e6c71b7e555a92e8a193ed3
0420b033390aa01745306fb25f2b804f2f52c4fd,0167471b9142f35903f201f11a62db7f757f24c7,cc60175e6732c84406a9ce8fa26c1a9100b27edd
e706df5cec6a39b3c22e5499ffa11527c0fa9fa2,d12e8ddd506052db3c04cbc5074ca7f3b3dd4f2e,075985568b46759df3cf96ec6cd08f52037bedf9
2e6d9cc2ec86194f19d520e2899ea4197a44b4d3,edae43588c523da042ad915e06953b48366da47d,9cbd77b05960f368ddcaf5e487a113ef8a61646a
694a360d4cb892ca4c5fd1009994e0c8d0ef8960,ab9b6781305d0717169301cffcfc98f31827ee2a,2e3bbd9bd64ad7f3a1e6eb5080e179e9fff62f16
fe442d51c24c3d4cd2a24b7ad58b7e35fdfca9eb,5f670d26c12e8b8546b8c002fdb1fcd34700d886,fea22868c01269d2c262b28da840b2f668930578
6e853a59cfe05f9b7add7ee8327c4e13837e8818,13fa0cc1a86e2e647e53951559e63e06396bcf9e,61f8659d3bab4ab430c67c84b627488d86dd8900
9af8d099febb6e14bdca626f0d1283d27b5aecb0,d1242ad4e7a612b2bd90f24c04ca3f7dd8a2f807,bc19c030709db2ce344f60918a8719cbe3789c37
5f54e2fa0a60fe738f1c7d27797283a9bdc42d88,045cd97d732a3730190bfce20da5af097032c5b3,0af3f2a903aafdf301d67835b15f7177b3543ee1
ad03158349efdbb34d27c806af7316fd681bb15d,961181b6e7ba43becf396088f828c65af4b8bf91,d67f878722b78f4d78ac123e351bc74a20a24940
0b176e43f7a7b881f8957c27be9c1d71c58fb2d5,b40e89d4c83c74aaed519c52d129abff2961b401,0b84ccd55546d56e7ce0e67ff0928423acab34f1
e9e0b08a3cc21d4d385e047af0f41e90f2ab9a1b,13c454e01506905d6c17f768ee72bc75c83f65c9,bfab984080e734cbf53bdd2bf83c0cbf8b430d38
329442eb27675becfad560fec496b72c989ea042,9e54493696ed8f735a774c1b183b4f689d06fbd8,b2a010de7fd9817c7d8149920260c9d1ec04b185
41c42af1586a1548bb6f5ff0ccb9037e7ff67980,496451ef1559bdcdbd5d598454e7f7e2e86e7d8d,101b2ed7f40b0375661a859710dfab0a7a5fda3f
f061541bad8a21e3e119505bd1a8ec71200f783a,38f4c3ac9c9bebd60d098da5b39ca5bb6a11dd53,8ef1499404dc4d05b5ae1584c3674aa172a6899e
129d8fd074bcf19b1040ce48abaf230db056486c,befdeb9f237a85cc447859b1de6edd9aa902971c,ba843d4598b119cf892ae2112a550dcec882ed5d
4f2bf506e508961866180ea6dcb716a78d57e8d5,41fa38d2173523460111fe528b745f1b80defbd1,54f71270484d103ddba65cd7613f1efc724a4b1e
23217f4ac9df2a8a6d2ed0a496cf1294c8a115c7,8c1e70dc29dda985092c7e55016549b969df6125,79eee75aa0aafa7a7cc51f1a79ed236aa44033ea
32c1d7f9bd72bfd4305e5b566708021c7efb7f80,c19d76f9768754542ddcc3bb3732e34570359989,c856b5c5bfeceb0818ea8eef24f466503636b005
f3a443f99e78c74cb3606e03534282b7dc1ffea1,0f337a9a2ca958d9d5587c33ececc77302d8935f,f1301a14e172383a02c6a061976de6bbb67ab915
8de37f69b9b205ceab0777338189aa37b1500fc6,bf533ab2acbdd05e891682424d56057451c642cc,b0b60431ad2a06162e25ad380f600dc9d74bf2cd
f6ef9f2aa365331d1c9b44f2ee02dd769a389da2,69611bba2da4834fb190bf1b9fb36cf17f02a086,6a82ca8a1e431a1358f12c08b60ae211a6d13ffc
820f0b290703e98d723f89fae25d4b3d56fc49cc,21fe99bfccf56bdb4c765b5d0dd5c4629c9eca92,1fa7d4f92ad5d55483c3ab609279783ab6e16431
e1d6a355b532f0a7ff613a3aa1554342ebb20068,d91a4ef56f98b1d4695cf7cd8312b9458ac425c6,0fed8ffe7cbc6e254c33d1841b51b3627349056e
4f1f0d93a5022b0f9365f0c1891d5c3d2c3fb376,2b837452110ee09961ea737c0a7050fb88f18503,0d2297c9ca511d68e4fd0a1dc25941ce0aefc1c3
f71871e60d248f1127e033061d6470d4fac3f6b2,26cca8dfb0ba955db10d14d1dee5da743093a9f0,1f12737bebcd13ecc1aa3531d1aae1bdabe22950
2aa8fe76d96326e9adaa2e463831260e41d7bab2,436c3049b90197acb537a2233771bc1518fd7a37,d72363d84df791d6e6a8d96617d04b4b3355ba49
6f8244ad519d78283fa91b0ce989295e9f4153e6,9df9f1a0ff0a35b6abcad7e37d77086194d9fc66,a45253c7acbe22cbf2ed3f7c43637527623b2a8d
688e20f7a5306b29e78971cdbe1ae77d964ca191,65473dc5bc6a4499b52bf1f9c9f07ee71559bffe,9d1dfa17d5d365e7c760abb4188b8934d0aa5b61
1d5a31ed4187c9c88b0441f28ce1573b1b454862,4cbd57891f605bcfa87c2bfb8340e15870b7b5bb,012b53c451cbc1314c2aa3ddd321c6b8889b5112
e059f7829b4f7ff19aa2d4f7b375d865a549225c,e0daa4fe846cbf0bb7c0a825db0e14dec64ab41b,6a259624da012c2e8d82dbd135f4661ca60a9c14
df67f32d557d4d5975b32130de41b0c48c64e883,51fe99c7527f40e142cf617594e684d9adc0a44a,a5b79cc7d7b8894a20f6aa612b418af4a482fa3a
6ed0a74f54327e07f33e66ddcc4fb5eb8d808dd8,9c2da4ad14ef9fb3868d26caaf42406f399fc887,e9026b2a1c027eb84fcf708d9d2aa9808409965e
02a80735eeeb3f500637ff02b8de141af09f30e6,f7945f9029acf50301639b3f35a2fef75c3d7499,5ae28947e06daa51d0d33cafd64c35e49c3a8a61
a3022a34b4802119d319865ce109562b01f5022e,a291347d98d47e317d6ebabbad1d2a99a964e28c,c75982a639166ff56c8f117cc0752cd737a59cbf
c4c71d362c2d4b12f15206af9dd4496558f706f1,8030e218e1dae0f2707f76ec9d3af7aab7e4a9a3,ed65f26e98ddb3e358a0b361f02e50eb8b907214
c60ea93da776371ddee010a30e7e08cecc487eac,d27916e006ba63d3046fdbdefbc0f1e2eedcfe77,b383013bfbaaee78de780ea1e04c78efa9f80b73
bc9f78750f083002996acd757245a77759e0d80a,0bbd64b9dedfc12013248feaa8179452b4415d59,63c4bc29baffd173c2322fe7ea6c2e35f91ff53d
4dc1afa83e670391fc238f00789d24cb343fd805,97e62a49997405c8c835452614f47cd6ccba96f6,19e38139eaa104de3fa6ae4565756f444696b12e
f9608e850692595aa8393cb5d684f681081ee618,1f962a5fd233bad39ba0e6d564b44af23e0357d0,c21beefbb2a1a26f84bb1776829bd4cfd3d6e58c
8c3758f976b720e56fa03fad4a65207d1bc2eedd,7ce80bac7d99d795dca56d27ef2833d171a5e5dc,26a547a11abe2dc30ffcae6d3a60a4e06b3ce649
b079f27ecc4910c18da4e8ecb6eb402d616bfae9,97bf2a5beb86eae46a84334a533ec1450303c22c,46999f1f68dda09365050bd55a663c8bc4d90d44
9301931bcc9c2f1c2f5f6ae116ea5ca6b2d78cf0,8797966db30c975cc81b6673baaff62bb40694d8,f7b3c03489960e283b64ec9bf20f881d5e351461
d7da4c90a0574dd9e87b131a56780787fb4c3a66,f96357e27babf617ca7e55270b28c0b7239c2ed7,1961de4ce0a3ad344e6b72aceae2719ac5f8f748
61be1e67205725559f394d8921c0b014a4239a9f,adc93a26d5db06ff033768f8b9a88e5fa49aee0f,43e88d28416201707d4705fc86053dcfbc707c09
cb019e175744db493ace616177b9a418c39e6981,354b335b0674006c5f951a20b8764c5b06151e95,78f7d0bd1e984457dc332ccc982561502c8531f4
1f3a013f8f17b287f7662f7797717155ee8ad140,20022beca84f6e75339fb2013c01154692bae963,78a870548c9ad778a32703ef446a80eb9eeb10fe
562410b89b67e8683d96e0375ee07e06a73a81d6,19acce7c8ac271167530edc41067ce1bfc9247de,956db59bc21a423d462a38c0a8398ebd1a5f3f5d
96e2242e289086e2164e5bf812e451a78776deda,6eb2be4bb7416a36b7ab6fef2ab646a49d5dabfc,07bcb62d5e3589d1bc026d1d324d2fd307e128d5
9d94f4cd625836824210f22696c42c3d4a76c8bc,ec0dbac1b809b8ef26adc731cb896c5458984c3d,bb9806940b435eeb6aeabe1e4590dd7127a68c73
bd9caa2ab275c88abae8d2bf69794f849073009a,cafe1e33916a15e44f751aa7a6c72d7a22453414,0e28d9a85ee18c1ed14e3bfeee65995b0a30898c
a4499f5a0b21900d175f94c5b24cd616b731eefa,682a643766127fdf2ce8011a66be25bf07a19244,b50284466fede3f9f0ec06dc9b3adec9c5c097ff
c18c56024d13ad2436699eac907618acefa35da8,b351566b62294206c140e6d06a24259a3dc5acc1,17bb41f2ea3a2aee5df2562063b58f276e5bd13f
6debe5591a8c4303e8c39f19cfcec0258ee845c2,da2dcb57e944e520b0c3bf6ce5db28639d37195b,f53b738089905ee6466b5af1fff9be51f7f2ed54
a5059d4c1fc1c2e75711bb45be1c8470ac3e1fc3,0a09583b10279c6162bec8e01bb02af64b23741e,0a3b8df711858debf9e43e1469618e85156aeddf
ca1511b83c836da5e1285ce812f254ea1a0a3a7f,ccbebd6463ceb5933802a48cf411bb86794ca219,a5a0d735203dc4be40af3754cb211a1ccd1b4929
894d7bca1fea8457757d65db317b92c66370a0ab,4782efd43ee449b4bf532cf9eb2048ba8a6cb605,23cbaf1d8285e7f22a583e7348b5a9a360fa8b78
0fead21e7832d9682b13a9a70e4b82e99e1807ab,d29cc470f6f3c1a9cb05608279c55e62b242e2ab,2e4e6f5b4e45510e3942052a9d77c8a86fa5fceb
22720790fab4269a087c95fe2c7c7e0eeb74e912,6c9078a4a763d55a89a968b53ebdc693b96dd630,247d777d5e983d82a3575b1d590ebcb577c51e99
d87bfdcb9fc79b41dba76bb8536018be4da9c3df,03697f213095f00dc33b8e47e834a2cf87659d49,6c1f738f0d2cd209e297f0462f0b9f2a3a3248dc
0e1bd04a78d07ffbd5516c36acb4b961913d5c67,4b0358ad902fef3e59a0a6e2177baa95687e2086,67b6d38657b27fef5f9b519ce30a7903b9aee322
a17e5e81c8bfc259634008d0dcd1e7604a575cd6,4af9b675e2d6b4ddf08231bd8c27ec6d8b79572d,743289359b570da1f6101411d7b48e99126758f7
06b17e637162b071d56996459d2724b7372a7a0b,2399700a9a9df1531ad629929a9173da6f05c85c,e4224aea8820b3e46982c0dd5d145e206e7f3e9d
4773d806ad198872a0caacd22e20e58bc8af9159,b32912d16de8c0bae711f2e4949a946194be81ae,8977b49bb0a03625927a84ea6d08dc4a1b315ee2
d3ac07ad274b6c6b09ff9b08a9d7007aaf780aa6,bcef50a51a8b3c58c618674fb2947981f35df50d,2acf7bd1b83364ae89e8f14813303b6eb94fcd9f
63783ec47a6b8af1446aaeb6d39400b586cedd18,2adfaea14585229973e960485f71d81967ad3859,928312d331b06658316fb1d7a1adb55ded530e60
b4ee56eef4de3c2a7881ba2bcf10e30d534d0d81,b225ba27781e00738f46adeabaa7c948096fd32d,5c9a86794da0cac9ff1ee47b02c7628accba7a89
c4d4beec8dd2f0b9080439859d2490554e83c179,1a52b14a70e115ae9caf4bcc9cd48d61f80eba8f,466f50d173335ea5f0b524ff1f033227e2c5255a
f01bf2e0049084198f670ebae0f784b363c67aef,c933b20c29d25a4ea9b2b0a930aa92242db98501,b2e897d622fc6a91e11c800ce07ae1545caaa233
51c5bb8bdbdbc6ec7587b6bcd7dc8142d2fd98ed,7cdcf039102a65e0b045029016ee77e132fd8942,0b01378398030ec72a05d6d4b6ab71b9f2d2fd23
0a088a319ba7d8d9827b0797b629d727ae8954f3,af970e5be23b90334b1c81335e1cfd603706643d,7b5b41642dd44b6c6d3e7c3cab84aeecab1eb5df
6f223a163459b8d9e5b3a227cdd0d088efe4e83a,57fd2963d3902c547def049fa55387408f4f2625,714d421ad3a6ce0150e7ef1d01b7805c0ae5df39
b7f23d3a7eb4d18bb5784a5dd30d558f376242a6,dbf7ba4721f8336139e84a99c74b89025edc55c3,1a97db3a9f3904e3a2fadf939f0fae57e0706249
0a8233aa25c946e30de0b4d6427cf4bf989afc4c,61c09bcb479e145fc1f67f6cbe17301fef2312dd,104c89b9d777636414e2790fa5dec344e1087b45
5414a589b8125f8ce0720bfcc8f70aa13a8becb3,02d82debaf04d6fd897381b7c3f7a5ade66dc013,24484b6dce5626e0070849969431f317b693b477
54b4c114cb1dd08ab86fe6d6cf9c5f208224179d,22d010b9053e943452247bb24886a052dd134d4c,37ccaa7e3ea96b682fa4b9c146083533ad5bacc6
6b133a30cf86bfa485434401fd2fdf1f2d578f19,6e3c29bfb326b928e4b0da119dfc4ffe45a3714c,e0064ab03f867b2598a441e8e6a295433f908ef2
b69dc1971c7320d33cc73c2edf045b43f6dd2ce7,1c3d93ff107e489108670fe988b9f26f6940ecca,4995b9f3d42a548c3a785d9c7f970197c5da5d8b
5b04fa819db7dc2077ceeb24bf44030c650d435c,25bc9d995de319b6011fb5b4b14d8154fa258239,30c1d10a91da04fcfd68d839052213dac5bea91f
d7f38784b27482d6ed8a137a249c2dde7cb02089,15d6f3808f41c4c83be6e2b8c56f15c5c8a8fa3b,b0879f9abb3df6562644b18cf758a402a552c7fb
0c79db7ee643fe80026b114ac297df443c829720,425b12b1368c93b63170a93624cf0891758d2c02,f1cbc8b4005f2cfd6c83552599e4064a93ff9f49
4dbb84f6298e3328298d38f13c76481cabdbf5c7,76162a81064b41c0d6384647bfbd515040e5f138,cd48bd17fe9962027abf37978ff0e67e0c4ab451
e82f83bfe031cda36b8cb5d5fe885694ed0ed406,900e09c634d1f92b04a3a6bd94170a11b694a46b,4f471afa2f79c4e9545843471433c6e9c00394d7
9fb3cc9c313d70561425a5abf50db1ccece0e5fd,263ea6f463148053b1b20491cba94649a8f6c0dc,9472851a1dc4d778d72ea24e331b3fc3c60850f5
8c2337d4f87727f6491e2253f8ede224a7791f42,2aa4153120256e2104fd737a5f7dec8c3eba7e54,79a74064088f3f3bae71df203ff2697ee7de1b2b
74367b930cc9c3d103770a9ae5d04bedaca26813,30c1523d91af9e6f355a887ed476d4c919762bea,621ca7d416a5e221260d10f39a9cfb8a1f04f832
e91acbc569fe463a28e5be9fbcc57d9ffe690e54,5ba5e4fb4e22824372ef3e61d79bb18aafff4d59,b1343eca01212c5e2bd227587a4a173698d51f9f
8470ed075de657428919e85417ed11980bdc7e5d,4801ddaf0a68852a9b59eeab34224a8aaec87bbe,4d07da193fdb2601de32e9b42a096a0638efab94
3818722b232817d24cc013b64da9b25d4bb312e3,30adda92214ac984d22e908ac3719f189f38e8f4,a6ef71473a20edb204e6e1f91ce735257ee813bb
fe1f3041acccbfa7d579a914899fd2ebcba04102,a067283bcebc6815d9723aa7e52c4fbfb2cbb734,6a934513eaf3660d2476c0aaa0a9b8ef5270835c
f5bf774d358de32514592eca609839e58d2693fa,5be2acb757d337075a72f6d1d60e8b5314b74659,a9b5a7df2d73869479ec5dd20f40defb080132c4
c19dcab3f57c8eacd929f9b7d60960aca51ddb89,1ceaa02f416697dfc369ba245e9875fd6086a7b5,66db4dfe9427b0a9a63ffdfecae77a720aa700a9
29bae9fb3c4931f9bdf77abda736568f4ec9266c,b2509e2f44989fdcabc25a6fa3a44de9bafef118,d766dbca4e13dbd9c55abb2253718b7189208ffc
c93edf4783b7700c0f7aff0e0b9786e209823759,79d64a8b6570e356724b6865eb5f80197cc3b9fb,294ac1deb663d478c2a51404a9ef855ff447396e
d78ca793b72df14271ff7eb37c6a59bb27b11cd9,34855a61d3847439c2564c5d1fe1d182c1a2c5e5,18492a41794a3062c76bdb9fd0b5d0f16a96641e
cfcba5038565af140d5b1d4ad45db9a78904e273,444b7254449b307e1129ba5d8527eb7dc850ff02,3cbd937a8d40e5ce27ee4f79e969c1a7be00e202
5ce613e4dd71602e09c9e8f95403a66e745710ed,2f36ba10f5c0a1a17c444bfd40ce5c64bbda2e99,8531a81aab8049481ec4d77939b0e90284ea003a
69eb03c54a22b50376c65bc1bd6b9cec7c5c85b4,ff5a27cf937bcadbed1804a62a62297de80b3262,b8f789143a02159cae1ba9ae309e42408b317562
e4fc454e4f08f328d71db867377f33c8342bcf2a,6a7d42bb22ff18fd0617108517ba9ece4b7a3e14,b4d04891480b29aca310ba2ab7b2ace3c0e3345d
f60a88a38dbac9effe54bcf2f9fd105fb6f1c64a,5e44cfa4865111e4d802fbc2e22f1b0556c1d7eb,cbb3225e6af004eca0e9b4cb504183e58dc9e32e
8c8180d3716f930dc8ed5f669e9010c7f5bdd5b2,c68a8b77c4b9aff8b5a344a25c50a1a4eb830dd6,03e21a8ca4b813c114a4f4404694c53ffb642140
5d058a189ad8df6eb0d54ff561a04cb85309a449,4ad6636f0565c1484b8e27b53a26c870dbbdd5eb,12bfa69736f5990d46b7c056171e3e77aa115f66
3762a704238d0923c4d5bd2ebcb32a286b22e3a9,3299b73099f428c975eb130104c7c690475f72d2,a4669b86d435df51c24df9c978979dfbc25da048
e6c9c808aabb241d974d041f531ac622a726ddd0,5b3b5579d47281f8b015187cb2604270abd5efc1,121b9c04a17d4087375da4ae101f9bda2e731472
1ac1b12a3a4c01b902021903f2f9a37ec4328d76,f5b41fb1f378a947cc208ca096262bcee4d73e3d,b6fddd6bc97c2fce59d6e89c64c49a0c3fe268d6
d8b05a6a3b9227d12c2031de013602bdbdf28390,77f1872b811de1d052e24de9176ce7f6f1d8515a,a6c2ea2a98304f09289060b8a0b893aa40654f80
38fda54ec6f5031a3d3d9dfdead3b4f3d3f0d4a2,2a4661a99b92906b02eebe027535616e625d9a52,3da92b35a9c3fd8ec6fb444a309f214cf239f9e7
ce8a4b2fc0d389fff326c6cd6037339801fa5619,1e2637f0e295dea980ff2434592dfeb4337a1657,66942ac20e353a9fff227993a0bfe60f96d46156
adc3932c1b5c603832035c99bdd2da1ded7af5a4,ef7f9ec13a0e15b716cc446ae508307b0843c764,907cc2586227ebf449058340537f715b0514251f
c43da06c8de04d2391571a74bbc4565cd96df63a,89a4beab93310ca2c488b9c6ca23a46024f871ad,604769dd86e5655bbb0db2c16463b5bdb470db92
9726b4443b076a3c7002eaa8feeb7469d4182a11,744c7c8d28a06497137d31d42e93d35b7d2fd1ad,de8c8d3633e56f471d56c3c87bf1f9e6feb88f7e
ba0404766e1f0b6133bff32ec8c1f69338a84ada,2da236b7f507468b6394ae77f41015ef4a059314,40cd922b7be16279334a6ac0666863dcb067e95d
2dddcab5de057c67b006693e3a3edd7b31b2508e,91d00a3a16be4b0f631da4854c7832255d98c9cc,cac70de9af210e66a64f3f2d66f521d2c4c03003
53762fe897cf30a2b517a4be42e16d3bed459006,f94f4e4ed92ae6f9014df8fd69c5667bcafb8ef1,e17ee248c31ce412ea08d1ba59efd453aefbb37f
0b298c398af7f7fd9e4aff9a489166227b1aabd5,cd7350a81a1ba97aa2a4848631598599a9bb5b66,e68ab1a7b272f8fff954c23c310f209fe7ac3e87
09076236540fbf09b068cc0e4ccd269a3d1083ef,94141934bce5329435fde57308d53a9e5194f11c,154acf45d5c61b2ba67c557654ff161b4e39cd68
2995772a029602afd1b5afeb0818d72166c90281,da58058722f844d802afe0e469da52f87f64a8ae,a3ae828b657d08c5f832796d81b22663c91ba2a3
38298fa21531d8985a20ef3948c7276ea629f23d,ba6a170292c5f3d36cdfa499876ccb97d6c4d1de,a5f0fb8b670692b1f09362ee8a9a1d760ab14fc6
d8d6732a1053f04ea76025c3dc9542a48077de34,eb4ece98b5bce439d8a0a3ec156a1f7b31803ed7,97560f909c5e598c1622c102c13e844146698a8b
0d4474e11c4af26dbb3e8070560fa1f09a38d018,d6ff2d6eb37eae0da1e9f56c79fd32f9bdb5a378,d6d1db2bfb32aeeec7895b6eecb7773de09089ed
4a1af9eb6946920b2b8aa8d44e460e4d8883b910,1c9d59510c00ba88f1c59389aa4d23cf2ee103f3,03eb9d0c0ac89969bab0b57e803e5ae6fc3a097a
aeb3ea06d49d0051a0932dd0dae542d9a8712c54,915d7a325394f0de7a89a9c0908112f808c6631f,b64c6c4c5e10621069294d461e60de60cc9c7de0
0ecd8cf37eebfbcfdb5143b81e0b5d2c5f185558,a359c7b4a886ba520aa79cd233c5ae0aa35bc76a,16e667aedc766658c57891b5bba8d92be1bf160f
ec2528d868f56d8ca3258dac08e59c9b5e133c6c,836a08bfe1ebab81a33a54908d49bd7e236a658c,4580f10604dbde7a520f70551086c1d655c4074f
2d343150529f33b56fc9ecb1b2a7fdc02c8ff79f,d216010b3fd02fcb6b48f9346fe5a1d1ec6e546e,be7c4dfcb6060c24405b9e4edd57feda18e9bc3c
e60bca8489f67234b8f8eb081a3e3f270c78625c,0f9dfa29ac686c36337afd2372311b6077776f08,4bf58bb2d0ff8c2461f9576b633dd52dd3f92ab8
c2b8089bf4d890729f7d9e6c8d9330a92324e79b,dd6d142f4c0ecf827f1ff6a6bc0c8b2c9e8af262,abbfd09233b9d78e12c6a1676b8a5e3bceb7d199
ee030e31b7453658cc6ad05faeeecea29a44407d,97bfcb8bf2c79831ac8bc616c157e156726ce860,d58d0a55541a134d03d37a4a007c22386f02c56b
f2cfcdab3bf2d6e8c84ee337cd6516579c6544ac,843cc4b7966b612f7649c5a25c7b6a1d51354f7c,fb506b5c02a5eb6b40a7ee28c5d6c5e077bc9140
e255eda4f5891e6fc305427208e70018f171180f,659d94ed3f830050e449b77618b00888e83499aa,ab6a6416c4829fbf205b889377e074b5f9fbc4eb
e23c96dae2335d363926f116001be92fac44e45f,d2f11d1d2e94fa39f6675b10d2348e950425e540,9d8624b6b5eb45939d52c3dc7cf88d74ee224fb8
60b8e0f56dd97615203818c0be2817fde36c13bc,dbccf5e8444ac8d9631551d6ea91e19570b3f5ec,0fe6f3116cde738ca7d20aa96b9f5649a470e031
e0cdb3743511994b97b5d3769050032717ce45d1,e954408b4a9171be6a599d5493f03b5222597e26,f3aa0e27a48c39ad5a912e332ba7e972690fcdd6
32eb50d64d288e13747da602013ef7d80dd129aa,a502921481bc6186b79662cbc21401590978d9fd,7fa4524305a2b32fd29a9019ab94f51b90afa36e
197818631a83167df347979eaa01a64efd1c33ab,4be5e6933adbf5e758978cfa934ea5106ad6d852,3a8febac35a9cac76bf50430a08076326bcc80ca
4697a21761ff7af670abb6e2102689d6adbbf242,b0174d2cae859b1f599595ab9abc56179ccdaa41,ce61e52266180faf9cec3d8497f5ee25ba0478b3
1ecf9a6ef9b70dd0ee38f8165087a662ca46f03b,e833e5b7c6c8aa860915169158ce989a0c3dd119,67dbb5ad94cd900a4e8e0e8f185e95025c008c70
9c2a042eb80df402d3f343ff1fa467e22b38b5b7,f504442086c45440e46b1b7945fc373e91dd23ab,333dede76d45f9479725d10de86cd9c9819bc488
b08c41c42718a14470644e12e3d4e1d3f42b7821,b79fab32661f06caee3e11154ead1d6ceab57b00,3258cf1bba05ca3d641d58a8627121104fe1e43b
975e5d04981bf090971ff5c8bddae29cfa1889d7,1df2acf119fbff618f92b8cb69ce06dba7727761,17f0bc1ae18b5dc17525fced7263078f38e5e6d8
1ddcad0d22e9b04f9bebaeff063afbd3109f3386,58e81ecb1f3cb6b26db3ee46c3e44b24748ef624,690463852bbef1c0531814bf128c7f104f5fec36
54ad4b25c61d9cdb8b61b447495ba330316ed94c,a9e735f2575d13fe42c43ccd0c94596baef0d547,b584df777456a75cd490096402f77e2d6351cbe3
a8953e08326b9521f5521c71cab2c2daff53a28f,3332a7218c37198df28f08f2c210eceb9ff8d1fb,2d1dd508580ca301129a7544e1e27813fbdf890e
30c631b6fad1b1dbcc4840afc1f20c3bcc2cf4a3,12a43c01703fde61a383be15c03338c3b21f2957,9d6b66c9e4d5b63eefbf7447653ce9e6478c8958
5bf33deb9d6e7a8105c98a6e5ddd4fe80611c02a,74028317a78d5bbec0936e64f5dcaae1197e323c,669ef2a7bec52b5e35b51a19d5ee4e34466c872c
52043998d3f2691b151b8423899595ef84c17799,ca7a7445e3ea95a1effda2ccb79a5cf0462be601,7d9adb9734ee2e1061e91cecdc73a0f0865cd5f3
f7886ef2a8e68e7c881ecbd4caa80a75a2ace59b,433d93c105445880a49c2c89b2aeef913ccb9229,0b697baa8bc26ae0c296809551bc706be26fe1ea
5eaa53faa18b6d7fbdfe4900966824abc61eca88,c177cf7da27bc8ce44246876029d24aade4738ea,947c30e9f10ca6aac25e25a1fe2c5286a1135714
4708886a0d7dafe098ecebc81865e311afe4abb8,738f0a8c839f8a8fff1a69f33ef27963796c3402,7dd98c4c5bc105ee0c1e42baa48a5d93e8112aec
36dda1724559cf9aa7cc47c279e0150b364ce22d,701904fe85297673699f35014d1cbbaca113e9bf,d72449d461d87649a7627511b2ba8357672afa35
e59ed178daa619fe575dcab60bd4f9702e536132,7e232fda2e9b6621beb9fd94fb9e9ac621cda887,9ed80546cffebf75be9f8e267eba434301c0b052
7c09be1b5c3cdb33069312259500ce50148341fd,8198d88c142ce719f462ad6c732efe303d5a2980,bfa5871d565688cff4d617dd8649488c3891a70e
0932e34a71c9ccb5a38a3ec2b9546ed9e2b5b68b,4bb876ed989bb27a5488242915a7f26e5f041daa,56f53ed323d9b8d3ad8bd757ff8216e411b3a95f
a1465ad0a8035c49d0d8d8afa740fe1b28ea585b,6277cedc950c755caacfe6d9fc2d9c94fa93e181,70cf80323c1ba30642ed61e9bf454b2b965d6134
5585f1ab71e4965b932c53e7b741580d336bae76,fdd8a0537ad58569d073fcb6ec5d649a4519a35f,2a9edd3ea309c57b8980f9e449da43f1da7df042
ef37f67749b2714993d3960683e4043f9bd8e824,c9e11d2ae7fe0340ffc10016a4c8e40859a6baa0,4557e5c66b59e64ad4254fe0cc7237741f778f0e
a73dda69b40c711783b9af46109c5f1a7072ff60,9e59ff02b3cb3115755268ce051b9936e8b3f74b,0525099912cffc136c51e57ca0e9a2aba1895f6e
d4b79e24ddb43d75e90857d39f56fd07e8f5a49a,5834bb31d327b010a3761b451f9b709906077e0d,e17e9d14f2aea90cd86265095af690be440ab16a
1d73f6ec04ec5212bdd30a1e0c621fa31db478e7,4832338c532c0924315e7d09283eba043566d93c,d37d68bc422d646aa5e5c53b66740a91b1dd8214
0dbc293bb149ee8bd5477ace689b927fb6ae70ef,32d80e02f2e9b17641036b8bebbb2488cc958d89,1c8fc76b19fd47e6689c663508b5a69f67f89008
0dc1a7f57cdf8080604366af2b0cdca5bd246834,00863fdbfea0c33c3c92a28d45970965876b1982,f90d43d79b870b782ecb2765d0ef49d54e6e849e
02153453f7ee8cfaea0761056f64779a67e6b1e0,7b4b947849484f26144657bb5abd1854eddd1caa,ad3b5e016ef14b242b3103d7ff233bbe53c62cbc
e9b3cd434b5ed3e0d907238a0a5caa58a9633180,4e163d6ac5e89cebc63d903f0a5c71400deb31c1,5585548d9791157debc2e98245bd33ffd4655479
cf8924b2c686b2fd3fc111db437e227a893fdd66,5b2e7b1461cf388565c7c0872cb3f64d77080288,d471b8534336038867626c82630c2c25034465bc
c02d0763bd48a7a554dcda2a7286fb3109353057,7359d98f6594a7cebd3e3f47a313b8f21cf7290f,d92c7e5ed6ae2b6e12da443f74f8e794a624bd6b
d68487d021fa60731a5d161cf206ebf041070477,dd62764d4007e09ad55a65a641d007d19b915c80,72da6199fc7f8e6f8f506af206e8755d2754697e
e44016eff9433ad569973d307c5f7b18c154c34f,bd946e133bf95f7d3620e65c437d78ede37ff59b,6c878125ea926ce65ac319868fcdf815ef762e18
0a2f7ba14937545db8658618116027ebfb49fe49,b7ff6363c8825aec865483d8f64547e72724bcb4,c90f945db27821d4cac7f923a40d71be1a9110cf
a066952b934e260d43870b25ee12cd8ddcebb65c,073b11b1b0d62ee04801a5d8805b41ec57c980ac,5f81c871a3a8578cc70af56feeb96367ca6faa72
9ecc83420a00ceb75286b8d78d55c2cbdc25508b,a35946a635a9a696846646af3b1e3ac02dba4bd3,62e79c32835024a23c912bc28fceedc4495a4357
af2846286502a30fde4e0a22c773ebcd17b7f2bb,fb577a9175032d9c111324b4e890789b7a786943,6cd4fa85b5c73b53e8fa7bbd108abbe30f075692
d0ad23f0ba036df5417506728f1cce50bb5be87f,2aeddc8041f494f0961f6f68517aa39b60699755,2833eb6383fd02655d116965044efddff145d46b
1a06faf039c6a9f8207e01ca585179cd96844432,876d486e596f1d7f2b45461fd77c347f8982407f,b68203a4aef5aa6f4ea8842cafff25f2135a0994
817418ef1d89e54244614684c14a6b610d514e64,c611adf3d8ed51d4a10b4cbc227232b16d12105b,6a0993de33101bc2384ced2d046514d8ed266d32
af9c66274dd89be6aa9bed00e4111a7df4c1e54b,586e7f0b43ce46614d707f791594fe612c53f5c9,6faa27ce2c95a0dc7c53f0cc8257051da69217e6
aa86a1b20c6a58b0c66900e1587420122f15e80b,f42875077d87c940569ba1712b969bc9d6c20d3d,129c3e666d092ebf5f0604d219a9c9fd3f122017
6d7d859aa0b6aa21b6d7e9b2ee8ff7791a9d4601,b08839b23e032c751ead8f432e55c250d2148498,b0dbdf0a67599914a6bd55b388f21899b998e2fd
955896f5c39152ff44706dc982561571fb566dda,8cd0f2bbf8175cfe967cdbe7fd4ac1567f050fa1,dd15f3c3af1810df18275953b43848f15a8c767e
df2c2f3b96f986dfc0ff290af03e1cede6c0da03,d0c29542cde1f642ab7c825d4b8b0fcdd2acbe8a,582cab6342fec04fa639c2621944b6b8664e02c5
c44c572d02398c52cb6e0242ca6c85f92d5db4cf,4611060e994d541eaf62d2248da99be8662af21c,76099bf30e3b693953af2fb11445f386589fb554
923bddabc8fe1031687b1049b2e39a9f4ad928f7,c8da8b6df400759d7e928d7a50bcaadf2d80ddec,1f8a8dd1602b5ce6ba07fad09d2e6813a4cb3920
fafb1c947288485120f2539f71153db2d99415de,6c8e6e2d2acda2bddb8d3c7edd5a63efa5afcb74,9031eb890bf450f9d46929d2d29418295d47208d
c91e7109e8eac8aa945bfbeff1a760ca540585b6,d7de6ea6e888b6b7ce2049550ec0d2428882bf83,faf38f1288e7979834850090f01c584cdae48198
563096b33ecf8bacce152fb7951ae81bd9d7967c,a6c86b9d1c706f6d40797c1104736df83fdb45c9,cddf16a3dd7172607a964bf7bff8447f584536bd
fa097d1ab0561c637dd2c907783f31a5ee410e46,fe74647e2c13aedbb059c1eb084d74b3f6cc440e,5d7d5f6d8368182bd603cf384de2124c54dc8086
9c3be3351f8811ff5ebbc84731a22a26579df8ae,88169968af0845949d3dad5673392a4289eb4ae9,4a59ff048b97e18a45ca004f68e9d9d4889fb5da
1d1794404b97e8f2c11380a7feab9c0b62e37af5,6fda9b58ba275b3305400ce3e9dd922f515566b9,b3ae8ddfdd4a729445e3f21af540784b2d34e2bf
bea570ead89ecb6b08d012b46fa92a8903522e74,31e0c33187464ee42736ed353ab793c8cf76dfc6,64018f18b4184ace3e60b014315b312141afdb39
3485dcc5347cd3f0c9d187fbbfcfce781f70fb53,16e24b9ca17a2eaef91c9a074bffad88d846b1d7,e7f4e3fd5081ccaf54adc6f759b4b265524481d1
907c9c6d5b7e7c0fca8cfc971717f930c295e90e,93477bee4e60e0359c6e7d4cfce222a5c35c71f1,3d74d0ceb165da2fdca3488cc2166bc3fe37e6fa
561ecb8a6d37fea131a3784f9de4fdda349b381f,4d9562231ca3aca5967b502a885d607ddacf8414,a755f38d2bbc128036f472a4ec8cbe3951987386
5bf217ed536638b5d85d3a2377dcdbcf65fa6c4e,c53e775a0903b9ddc5d65e271eb86d094a051923,7c9082f8d5f3e2ae6a512644d69dadc3c6e36ea5
d824f801200ba9db48755ae83535a58e715eb216,4284e61fccd5c66948772364576b5aeff28b6cb2,81a55adffb5c4aea8a13c6632e5d1fb0087cb3fa
d4fee76b14c8bcb0f4799353c7b196b7365612c4,a5ef9e946c054981076fda28f2c37d1c6e652c4d,00d985cd391bc7ac46e50debd959e5cd6bc0ab6f
a2a5c3c915f61dfd3e3ff47e563f73dfa792591c,7468addecfb5970af040ec3d1e9bffd9c88fdb40,0ebe023534e0b830ef59cac58e9b78a6c40afcbe
2a63c7474b53286b72af858282f61c2bc2fa6f9b,8a208b6b1f1db1ebc3fe1b0e24d1243c06bfcd97,91eb56bdfaffb170be11e51f6f72566551141cc9
09b029ba9b2f4de32e4194ecb78677c12c903d41,7eeb313376a23b321a44e1639401468ce58ea81f,021f57fab6d01fa071ee2703448df4cadad82e7a
3a77574acc7fbe8522585b350bd1aed3147d8af3,ffa00e60d73eb9d3e88cee7144310a26806f3c23,a3a4b97ed60622831f2accc32b8eca15e3a807cb
dd5c25c2bc5377e605b12bd0daf5739eaa371637,b66b156963018f333d755642b7e234224b846e0c,fbd36fe22ef5385116ea09125582bd48c5500432
e552cb81363b3d2e3965c835318e2eb42a98eb73,7774e3c736158edefd0cb43a20a88afa4552ab7d,481d7ac6ffb9e44e8600396f348ee90643051f9c
a618b486d39f3e7b6db8072b51e2e1ca38e5d15c,44e92f7b00853839deffd5d2dcb1c3567749728a,d53e4030afff7b1a88f1d9e9f3b5e9545076b2c7
98ab19b6eb05e5ead38e54555f944aa0a26bd5c6,2c1ff71e8c0bd2d4ceb05dd5759c46188ebf9dc3,cb4594a1554abd06c6beece8bc1fcd33483d4c1a
789b3614828cfca36125fb7810db43813b96332a,ada0fdf9b375e124b72a2b8cddde447ebe451d52,180cc4fa3fa19cc9cd925b49d5a75e908da9dcc0
49c9a1f3230f095cdbe3d88687367bf927389711,6b3739f26cfd6f3f4f11e7a101178d2e7130ad72,d8d6c7958f88a17dcb21ca895485a21a92d13bf2
fb44abdcc1e344106802d06cb409732323b7929f,ebe76b7b0028a3db5e4c0369d023a09ac858d2db,4d3f31e168fcf405a1d250e7e28e99b2f373e9b6
ea587ca3ae7810ddbbeb0c06c2989a59c295302c,ba8b0375705e64998592eb8d54617115b8aac14f,602bea2a1d1b44e1732207b51cf9754eb2ef1b7f
be04dc238b28e97a8e9d5b1d7a92010c1533bd0f,a43b95a6b3b1e7508c83c2f7d52cd16fda50565c,fd2deaac870ed642a6fe7595a2972b7b4bad79cd
050ea38de0c61b191b0b53fb1bb020af0c1d3f3a,7edc3bf168bef3b1b590661e9d11467b00b39969,46049de4cc0734ff8a078a663a131d36931e55ac
edb3b426aea697596c883b168a5f1a5c0cafedb0,c5a0a0daa252bbf9f8be3e6cd0c19097a34179af,14c6ba6991001a6c7e67d2fef0e7456f96391118
8cd5c3a793c149f7170f4ac0b54f135f655dfe72,00c6fbe8ba3d02220020e37e5d54eeb92b84d187,e6b71444729a0a31c375a7b71de41deb65bcc36b
b85b81303dc9968b394496670ad47034ec698c7f,b432d3620551a27f34f7a5b2a5b51284d6c72adc,de30ac10d4f228c5d4915c49d48715063ea55787
0901f4464b62dc4b9a8395a449abd79229a23af8,5408f4eee64074ec9810a9b8c674370e25d02f5e,fef8e309caf92fb305d6bb142f0a316bc67ba9d2
ef77de6e06c9e8773cb705bc915226eece405d42,374ceceed0e217fcc60a08fe4b6f3af8d48ba6be,5b2c47df8d60429b7c6a77aa50881c7a1aff56a5
03c8ec49ede8833d7e274ab2b3650344ecabfbe0,67ec1358966a0f7abd438b7634e70e256440e4b7,381e15ff5b2cfa7adbfe0eb5028175e3b2085821
bbc025e3b9c7daa46dceafb5e4d1a2a62f0e9e60,b79d3dfa3e6b6e16ad8ffaf0c543ae70a03e7e60,354b1066bf6e1228aa6a093e36c15bfe3e7c42fe
771d0aa49bcfa46d8e0112d5f710a38f498a0d70,4c4ead3abb2eed920f9025c2cec1a39484b6ac3f,ed52887c0200355436a4b260009c40925436defd
f4fade5ffe4cc63a70cc45c56cdc3a5394ffc565,48f007ae247cb96be2214fad8bd5fb9f72233189,1d664955b7156d7ea73b5f2c9bc338c0115d6cdb
609e00071389d37d64e785ce7c617b062c9aa7c6,1d0c356324022e9c4e3e8b562d557990f76edf47,0b8b93e1cea96dea6cdd8805457b8256e1213324
bc4842d19b3e42ae27c505d2d4d6f79bbf4cd8ac,254debcdf1fc077778d63920964270b1bd372b85,cc1966bfb1aa57cb2505c1aef1a732be93a7ef88
c68d88d74f5c08a8722e6c89365657c5a42f53c5,046a709dbf8cb672302f8b24df66c6d99c9d5bbe,e1c7c239763f82f06aea93dba72dbe76b047aaf4
8508872105cfccc6a9408b4a84272514224321ba,b18aee1995c7851bd9ec20e2bd10cec347c2aef3,d3aa5aa7645baaf5f20b8fcbe37a73065b0bde79
7a1aa47ec5f964ff515b4416483956876cf6a212,335431fec4b3fc1e64e3d9e1e3e86ca54c7e36ab,f660df531a22f12970082bd1e2814d1d6eea066d
1e2b50e76c1ddc5576a459484c2ff4f3b853d7f2,db9289a0f92656d13a3f07618bea239aa5242dbe,fec04eb419893933f27597ed4db2ab78452a9e08
fbee7b4a16461d50a681612be013b96631f719cc,7a4c1b0960a3a63bf1ea2acd67ae2568824b86af,ca0f47187e0085a3037c1201409b3cb573d130ac
2330a15dc2dc44c08befcfc7f1a9ec2eedef94bd,7575931e83eb7cbb6418df77c5f02b5920596fbd,3b7f402136e1ffdfe8854f50c5bfe21f1e697d81
a50c7bce4e1b018fdd38617a74b6b7ecde5fb286,7348f674ce672f24673bb13ac18452a346b52139,44d614e4be082ea8d060068bc53e6531face79a3
4d975d8a5f65ad009059704de7aa2f5de82a03bc,a07cd7cef18667c58e0c3b332d3354fc46598fac,cc8359b7035465e1b8e91c8c85108cf86f577a63
4868b9d542aae9a279023cc2d3cb9488ae4ad841,477da86f77577a1fe85db303fa64eaa9df8af681,305c7734dd345ccc594f1a4f972cc88688ff2b47
cab717ae28d35ac0f8b9d818380f3a60cde6cefa,18f5d5cbf4f04c28ec86467508a09322db404aa6,8b8fa4d3495212afe8c2e82c89a7f36021cec147
50c6f8c9ee1107364e702f7259ee41f6837b38d0,980c128724d7239cd40834eae34aa86b9bf24ad7,d0d9a8427a94688624e5b041027d566c34b4c4b2
ff9ab54b7e714d8acf11153ef10eb2196a6a7f90,dd35057d80a6e3d0e736062bf2b5a98c34345cb8,d57974dde70a9ce1b4555ba20b4bf568fb426450
8e79959f0cef0bf5f4b462334fd21319d1814740,6737714ca459924d240974160ad8631c45e2d705,4753dfecebcc523b2c9af5fa10da45fc0cec49da
501226c0f4edbaddec5f11e6cb9c2d1432d96a64,bd007444f0cc07539568f893497aab2e23e4dfeb,3a9bfc7a2432aaa1c562da541e02d02cc6046562
972639ee394c9d2f9420db59f56fd1b6ba23aee4,101d129d91af700e4bfb44996863dbd4a3c5d61d,18e3f4a11c6dd6c9d80a74f93ae64129c90eda1f
a274655416b25ab6b9c8629f33f71b7185b1cf55,63522fca858feae0335e8bf5e609b8b1c149cf78,31b691084782609af3df85a6a64856051ee9c988
3f0c76aa45a64f015f6e1224889997471fbcebbe,3889b7ddd0db6bc329f38977bb7f90e8a164e1d0,341a33f4ba05813a9298fd2b41d9bd7a30de8503
090df8e6899b2e0c36a5fcf4d91ae5ac739c4a8b,8b6de92c9cc1a5c1d213fea6297b1d5ea461e768,4a31be415301ed5be38ee741a205d3eeec80df1f
343bb0918773a7d102fa1cc83000ebe285aba2e1,e88269a105b5a50bdc31c314f142cf51ae9f04ff,2eb0813af2348731d1b0ffe5feb8c222176fdb7f
aa78225be0fa91a114f4936282787570b1b93774,229e50cf057858087d1f5cc5de5c5297ad406f8e,b7d1cba97f3a976f746ebb52736960d155a95fe6
706598dfcd6961cf184816c4f5fd564194159693,9d7bac161141d6ca4346a0cc0e060e60a2d36899,d089f213b4838789ee1646c732b7dd14e04e309f
6fe10aafff86e1703bf1ad6ae73912c8bd4b4461,80d35085aed7253f15b5444fa72487d98bb20227,7e5278a40b0e563834cb74962662cb485f0b980a
50732a780ec8665f1b8fe5bbb84de2db0b649b44,e9dc21e4bc9104a498dab16429aedde7ffa9bf71,dc29758cd0143e7ded318c01a74a4cf2ccfb17eb
60e27781edc15bfaae690cac9789f3e800640f29,a4687843644167947aab82ce21b8bcd11dddbe0c,9e44ba82c4528f104c3a40ea2f2e606698e359f8
786ff046ab18cd8b6d1466a5d873072fbdb53b91,ab24a234e603628ff173b0a38621f913f745a271,200a10a187095e28bd2cc1c851af39106efa0398
44ae2f85c8c3bb69edbf2dbab7e45125030d0d9f,c4bd58077345a8d4ca50df52f00bbe032577c60c,af595389a602100f0b017e638bb8e7e60485d6d3
b3e2705226752a1fd9c37e91ee47733f93d2a77e,8195b898941ae23c96765d5a38ecd5f48f979696,a43d3aeba6ac68e67990cefca952934e7fdab593
fcba79e567518fd8de6ac9b18049d3469260f187,185286192067fb7f2bd173778b5e8305d6c94c0d,b207785ef03bc4fa2079bcbee5715107b4235af6
9e28a0ee80a6281a87ab390398195677d35d3d9d,798dc13f9b48a3cc992beddc2d515052109c2d14,211db1d6727930170a26045c2b90d34fb8b975d6
0fb946f7d924dfe125b1ba4865534c37258db6e5,e8d90a3042f57403cfb1610cf4aa12461f9b5c34,196a2c3331cab57351594d5750b54ddae846917e
44aea2cacf30f006670951399d6709338b6022d5,03ca69969cfd9d1c8a43fe3e13e88a274b0a6506,836c54b097db72844a450649cb31c01555f6976b
06748de38f55328bb612537a8f919a388505313d,611679b9661506400dcf1850734eacc8d7053975,b829348b4842b064f93175e0c956d1e520c6bc3c
f539dc2a3f867ecd978b82c6f3a3ade767e62799,60ae7aeeb554565d34d350ed75a1bbc931b7e77b,63622b01007eacc47a10974adc01b7e4491c938a
404d27b6676cfc6c237a1b16984d62c1e0d2e878,6da840686bde6832b131f2f45fb54f5761201415,82504a26ddcb45ebb2ec8d5f69abf06b2bf7136f
77de2ca2796929b08f39d40be0c62b9ae795a33d,4ff1b9462d112cf06eceee0132a428aef35c7b56,0e59e9ec6c8eebbc0e672c8e005d401bd871fb70
1b9a107eef549c92a18b8f88133e416b9c7e2390,c387c49877b4dade7c5c3ab5dd1beb7c3b97a13f,bfa988e188d68bb3d7461736cc33c887ba1590e6
3d536547eb124b203dbd3668a56c6fb0ee4eaad2,9a3465ef19dd93a2242aad06912282b4ff179ea3,9ac4809befedde03c475f8c5056ad94192a48af8
92ebf40f04c5b9b6b41ffd153d553c0a082c5c97,f02fb76c771512becf94ce0beae10461d48d54a7,0db1de216bd6368c11bf499bc48bf895eee420d5
0e06ec8d380edefe6eeb148b27afc0d4873854d8,34696de6e71001fc6651c32a6d1ba9c9daa5d969,2784c71b220de16a7d36bff7d1bd94c44013086a
d10348774eda2459128d28c86785bc4422d0a253,45e454f268eca06906f4f0efc19571924d08f003,2d9377426d6ad9fa5076f4674ad6c883f59ac742
e8ffed0b3708bf52e770221af94813ad7c834fbb,0871271ee228b85184e7edffd9b842cb6063a9f8,6b1f77c267ce6ea8dac35fdc01736b29c4d1deba
7c75393d407b5181702cd0cb14701895ed0c6783,3ac69995208dc36bb24a7747d51b127d80d28a95,1ff096448c693ca79d8c72168cab25b8202bffac
2073531058d2b4e764532a84ba0f3d78d797677f,8d4ad501bde7289b3d5890efe508f4b00754d964,1328e490f971b56cd5a5d39ee158fde3c422d3bd
61c4c65b670c0b951cd02cb2f58879b70b9579e2,6d39914851f2b0b7d262ce6b67a069a935295e0a,9170ee0ad3e25dc0356312d5362512dbe280ca79
fc7704a9926dc718681c7d3d3cf6987ebf71fe48,d8cb1e2ba4030e310de834701830400d5294243b,ead3c1042110f86dcaaa5969a2ea0287429cab1c
87b44cb2b9fc947022d2d8e4f3f7ffae32cecd82,4e4ced7926392c1abadcfbec07fc0fa145d323b2,e47fe40ae0ceb388e0b29817f06725cb4fb10ced
6be9d4791b35673e290ffa0fe77a216bddfe1b77,8f25466921db3b56c9008ce79233cd2b1875f07a,b4f66b6a8b8d6e103b0fa2269d4bfeb35591127b
8f199de0f83cd30a9788bc8af325b2591130eb56,fb3a71d1738a43d90c40f3a7c59964e6e8bc19a5,c1493ac46c70318e4c020be278cd6440e83e5d50
193eeac5609a9bb8c65a7d95a56550fda54af416,e74303e3f9b888813ae55cde8bb4d9ff19fde057,6ada3577ef1549b6021e1aa7ebc37b1ae33a55ab
d131af15729fb06ff9852a309ff2888f44cf10f6,68229b7add0f60b1bdd2e2d6535058b1250641af,a2f6e19dbcb7bb37aea010192d6ae5e21e5f52ca
0c9951e30c00a6213fb668bd0581b67def02bd17,ea9999fb03cd0d9f95b3c307f0164cbdacc3f274,ca8e8af1b6b15d129fa09cb9d685451252315d60
7582554ba2a59fdcb2939cacb49676b829ee038f,35ebd43d395ea214e9f3101394e93b131c23db98,5a2a7deffb5aea041114c3c7e660ec64625df106
08c1e50ebc0c0b049db198fe71d7d2419ec4922b,5d768f725c6748ddacef547fe74e6e8163347c4e,35604b0926e836450c921e8140d75058d23a581c
edf3a6d86af2c8a5cc4d219c753d8baf27a70b7c,ce10988ca7676ae222be59ad2e18d38beb1b917d,438d60013abf3811f15b67e7bf603fb7dcc8c526
3d580691991f8970f57a808ca1a65f754212fd22,831f00321025aab5387b3f5552d429c4abbd7fdf,dba413d9ac6653335f69a076f1b6aa4da7f10396
09be6aeecf13286481b5656b2df0bd24c32dafb3,3ecc888bd4cf377d9ff0ce62281fe1ede999e981,635c4c761cc22a6231637679512d99d0ad651693
bdb427b08454cff85dca2fbaccf7249716962845,0d0b5df69890c08b9c992a048678079bb5ee6a1e,36d94705af226ecc2534c8f4388126a8399a0714
5781bec20a12d1e13492286326b0d7f61484c769,6d893bcccb01e905f61e9ea6d90672d655ed6911,728b282fd816cd7261a917989986ae74b72ee2ac
56e3168120cab8eae00ce6b1f4dfbd8ff30b0d1d,afe5e085e47b57eb7410c418e2ca62f618983dbd,29ab0f0bfc00bdb4439819f0a1a62a42515c1e99
8499765e32c676bfa8e5aa33a60e8f18417fef10,dd0570561cf8619f72284702e685f725cf8dd05a,af86347690cc0155ed495adcb425f7d3bbee59cd
b896b99069f297d944a50842ef99ee4e6cc8f0aa,d2891dbc13f2b86c3df492a455b68391b6a0baab,bf76329e668970c2e581916e75105903956121a3
c26e75a3c4eef379f5c9f9ace8045be9ecdc9cfa,d13af29cc8ff7801fb3becf08a4e8690fc4efc05,611ea7a54c26f395e6894576db850af875cacc25
c777d2678084ebe821efec94d6aa2ad491889f4d,4e920d2c0003d2fc182a66becc349ab791643ac2,4ce8bf22b86a63bc8386f421c3b54b6430d06807
180a1db8dd073592f41494d2a52c5bdff554c43a,6b17f81e784652696d33940f4cc563da937c71d3,b6be686f7fcd0039593730a12dbdb453b86c4949
40e226f137d59945b733d399dcb3aec42d934a51,efcfa3ce1e03ac26e9c5988a12aff58d2b98eb4c,9293ae57783593fdc2e6794095c60697de51b606
d2c8ca359c8e037185aa56213d8994dee116ac18,ef02056859b90020adfedffd1f5098719ff67709,28230592cc659ae7a787a928cf6a6ca7c6bb4f76
6082b1b2f727ca18121640017022cf8f1d363224,5aba42b0f46a39189f64beab6b40948868afa0a5,497513ee40520f3f57b92c5f254e78391f6f994c
642c2d047d2e941a329a383771bd21800d8ecc90,49a31a7c923c883933820bfffdc4eeadd6961597,ab7c7238315a035f24616c2e349c4e39d372784e
bc2af0d6d6a5a0304937bbde98edbd41b06ace6c,73a87132f818ed2405233c5f76ceec4fc5dcdcc6,9f64b1bb32835f7be399b4c603b66c8cb6db9dfd
6dc6a9745407f9d53a56e5ef433ac2f7e585ca67,d3180ca2259a1e07b8ca4df764efc04a090c8f14,16a9651046d485ed998db65ba501aacd4dcd1561
e0d11e050ff147a763b162541f8258fb168f8139,81a82dfe38b05f6f6ab43b9878f8415ef9964a3a,04ad7a2e2d73a0c85c2e8bae5ac81411b806cdb0
5cc03d8b27393af99f197d2259a7eb42bcb5279d,21e28e6095f7f90504f47b9daed885579e3a4e8b,51f3548dc282a8856a54b53255216417631e981f
f9a36d68b0a823dee0490d8f052bf58891e7169a,9d0e1bdcfd17bfe244460ed92d0d9cab4d6d0223,dcd81891550e7ebabdba5b3b069c1044d28d23f7
c5a82f52c3bddcd8c74c8d17691227097ce00f05,aa8050f30ce7a23f8881de844c07c0f17033409e,f83b04bd8ce65be4fe060f89679c3040ed0c7199
a149686c1c0233d1f8cf3dbf488791b315e07cee,ec8e9de18142a49485452c9abd13158d408877bd,029245b1761c37d48a63658f2a4f85e41fe14aea
68acdbedca677bbcaa36ad953e342030f2c3a1d6,b2ae73813ea38ff12b4cba312d7a822a401db4b3,b3afae567b3d321d6ceaad5d543a9097fe0e1890
cdec9590e15174576ae13885158c73add1905ea3,ddf7126972972b2bd185c6e07f4d20600ce2cca6,2eaba50b82271998b81b1debe9233c7484869f5b
7ead401881dc584693b1ca1b86ffe7b380378d47,225017e466d968614e38a5ba433ae697b9dc032b,260a89e584099ab624964f948482984084850767
6861ecb38e9b822509b309333b0ba961e1d4eef8,d53f2b4acf86cd05c49380a1f4189e733c93f7e6,92f6613e0d1ed75bf53da984f54913c0300491df
e531e4c302150045d867997f2a9b786ef71f9f54,c9cd976704df0c470125dd7746a5f3b7b5fc6acb,271886083ad238c77e303e79f6172f0b201325ae
7917051df28770d23f77fd8856d40852da639aec,cda720c16fe1021f06dbc6d92e7584994424d165,934fea03397fc6c57bea208934275e966e9ac1a9
0c0576cec8c26f0a3e0831d03031e3d0f2555186,e8bb0cfcc89dd3bd6866c66478964c454742d170,8563e603b95e84ac6c0887fd79132287b21fc8ee
db65e3243bb9d7a4e46b288639770cdc3b9bf67f,80f73f5899324291a8535b9430fb5620cd52674c,e54e626f22d008eb72558a6aa9a2605a7b7e9d1f
9565737cab2f5454bda9e7ada72ca88de7b39814,edeae6609372ef9f18a37ddbda60748c28fb6065,fd32b14c7f30fa7e89b3aafa79c6f0215e3117ef
d0ca7d6664f2dfa390aa026e183563c151e41828,528dd4989dfe5593eb7fe082ba23bc50ec8b5896,af598801b773129e99a6b59a6e9a77f6f7cc42a6
8332b55e3472c311c9272e37c2175f8a3b34ba48,f0a1d304e093a397203737ef005e613de31d002b,bbcf84a48d354902e681aeb7f610d4d692ea41fb
28de9bd11f9787497b318109a48744a2fccb2e26,21363dbc0b1f4a6b04d1c4e4804ac7d07f3a0d89,2b44cafdf397117578fc974e4a842a997c09fca2
8074b6cb52b84e4e43547a198b751e8fd0d3408d,a4a17efd4fb57a921f280315da0937564fc95d73,6001b7e9771de235ba1ee09781243495e8ab340d
4f9242758f161f234af7c380679970386cddaf4e,53eeb1cf0f7cf41b90eb2c0ce22de4c41ba9d173,cc3fc58d822d80c14bfe5943720789bad46bd542
4a205d33ae7675b4c6c4e3322ff11217be6946a6,1fb2311a6a5affc704a57c00a63992e973b87b8b,82c6035c491269f7962319ca9967b54bddbd6659
3036c3b6e7318b3825984585baaed97ead6cb5b8,779179cec58d51a0fa37e736d26bfc19836069b0,5ce1288e9e24cafdca21698d4cddf6994df5b698
745e21ba0b32f88ee245aa5ee66d97f1f3700fa0,77dc8ef23284855586a3d1bbcce8c5df31696050,d39531043a541f911d7a72a4523614f0cec9a22b
cfa7f5f77a79f0355b05d639732cb4bb995f8355,435e50b55cb5a6e30cfebcc6ba30261b8f020b2b,f3b776834edb64d7c4264001c0c0ffb765da2f3b
8e67f7d2b251f97369c667fc1fe7528965c84083,ab471543d2e54c7ed05fe9508f1cf126f7d798ac,f906495ef82e9797af6ae885f698eec50ef66b66
8a107ad67750e04fb24e16d9002d8fa369d704d1,a9a8a7959f65e9234279ddbc79d78a1236b37f71,26eeac7e342332186411f76ebbe54f1bccbd3186
9d355e5cfa1a1d0a0d2dbf1a5b26d21bd19a9fb0,5596aaf10ef6a8faedf77e3db8b376467b39e8f2,f1d800af0dc784e4d3256b6a0e75b72d064ebc4a
8737c028337b241f11e11c4c96d588a718d8e2ea,9b77c6264686ce9ec325d0a8d008a69fbd164b38,f7dcc18cbf459d01890fff46374eb49d8b489d2c
cf4952eeab038ca2dcad806abc0c9b93de638c1a,34216ae07cf0afb47b2062436fa8f8d408cfa498,f1d062ccb7d8f60234cc7054f2781e1f11350904
b01dbc035904721a8126a0da4d91ed5e8511d14a,daa27044ec474e9b6c547cae667653fb8e574cc7,62c07d0aebf19a07a60b59267166df37038d52f5
5a0f69f452a4d5534b11dc6ce4dc50641e28b71c,e4e58c383eea29ac7678e12974d33a2aa322153a,fbc84eaf6cf2321eb246a7c4354d3aee1aac312d
33214e82e3959850f9d083f53d49a982ffb8790a,31446a8fb371c63f9df39094dcfaacab3ab38578,28119a61ca4e1a7d618115eb1cc4422f6ccd2083
349f9ccc14243492ce0d832bac5231d53a52c114,35d9f304b187620e49f6e3af08002a9416cc49be,4ce0b7932a6650cc0cacf218f69cd32c9d0bf756
7f5ff469c6bca408f82706abe621e3b00f36d4f2,cd70bf6444a7f9c75e4952677878b42af1b30752,7b790ec5a89c6481539e66dbaf113588a1bb7b89
70b4a6bfef8254dcdc83ebd03d8b5f64244a1c62,682f4a750f6f42a804f305fe7d791059f73342be,e4a7a38e93d2b1f05c7ff6ac95f8b8284bd6eed9
8d1a22c4e547dfbf9d62e002fde5f3aa55bb5876,41bae7ddb3fb527278ce466daef97c85b5b83d80,5858ba9fb5626f81bda21288d279e2cf8193cad1
58d2420c1ea5d26dc0532697e9e0bc5a42aafb45,b964a5f5ee3ea9f4fb5229fefb74be8280d34ca7,32cbfc67cc0f19f6e580870bf57d42f170512452
2dee5c5d8bfb7e4b77b83df13e123dd8fc30e120,1ec58e5178aef7fdf9109fec5a45c72fa708bca5,5d98e7c73d9ae1100b52e5f239b5a059c7e66157
d411be8ad96c8c7fc9b822a4b041fad62305edd4,a0e4a7168d741bcc38a827aca86dd434f3762ac2,8838f70345199512fc0f3fc096a19c91f6c586e0
c551ef3b591c17a49e3ea2efee12269718f626ba,24672dc3f49770d4bd66e8bfd096c636f9928845,c8524d924fc6404d4ca41a845ea34913d2f00eeb
d2d7b6d0458ad417722f3af642711166ae5585d0,f54b7c3b1564de36c84bb5bb772ba2459af08254,7721a88409517d1a3ea96ef025bf185d4e971563
b6f1441a32dcb2f58b026fc5ba2b9c27e612ef44,2cdc202d0fb0aecba489af6634fbb44588cd5430,603cdc8183c8d1f9a4aafe6ba48d721902b085c2
8d4a491aea21c65712d729fe042245d5ca6e40ba,4e3e213652ca07ad7581b0ca4d5d200e147683b3,93fee7a6861a09567ef13f9ec5e342f25f75fff7
720b67b89432764a23b8dc119b63a5783d4dadc4,0b3e64fdf52971a1e41cbf7778230f53fb5999d5,a35fe4698b65ca0be8f2b5f9113b5394d830d556
82f3f2b24a2268cad06cf968af70ba6231bac48c,e479ec2031b5c68910c289d3da12440e32c4814a,f246b7533ce68febef886ee175041169a5655283
7d79b285b04802e5b914e9b64f7c7b8c272158e6,9cc48239f35fa3c922d57195601fbfb5fccca4bc,e4a60c4c693fa018e3d6b94b82577a4424af34a6
b825513c67767fc2a1ecd58aab920f11038fee40,8d8485431f6673ae70970db1c74f882761114427,88965f8cdf4684b5ab30c04fb228eaf24529a442
eec2e10bcf82043c2f7a06da2dabb6ec1409702b,42927f729a8613837f7208a152af19de5b170b4b,28f6bb4ef1cccbe6b6cf719505ad44b23db64633
dfb82cfcc19b602d6aed03c19316bd33f84c40f1,b6062322110791aca2b86f75c694fdf51c782bf7,c188238d003853ee66ee2f2d0992ddddd5624cce
e63000174e68d13e7b96db7208fa5e766d40dd17,baecc97270587fe67cd5e94ec78b91739b5244c1,3db184cc3046d8dacfddb1aaa661ee4e9cb12197
5669fa1a193a47da5eb072cb103cfb7e29d414dc,9ae7eba2478f96b9a999276eb64bd378f96ff281,03dad9a28ef987bde9d647053d6912b3a44dc99f
019cf17a69a889a47c313093e080fbaaada86042,4684e4c57e783be1aa764020207c4c3c3ba2cfba,41e226f2659ef7a5447503343212c2756f0ffb09
9d2bacabacff10ba719853ec570142a8950a8ef1,fb3e87cc4ad4c0521b387dd4d8b670feb2ef16b1,68781abf2d98221d0f7ff3d42a235104324737fc
a39d48b22dd3506d726db4488523fd7cfbe7d09e,4ae5a736f31814ac7ef392ab97d74390f7a6a6a7,f77f6effa1e1ed349bb73ae5e85b7103c1e859f4
0d0964b459608c8d91a07575d74d3a7b033bd523,2ebb42c141d6a181a0dc12bd2843e1ac9c57b4c6,7b088f9484df06d283eb1ef1334815a970781d91
c16db7d6fdbe33420bd92c3041a06c8748f92f91,fe21d2207b2c236e1e87e515c1632d3a59e33d10,c2fd1c35249b091d8d32491b21813c7d472e8d81
7eb2dc9684ac59986f560001333426964cadc3c5,938ff0e7907a4d0356c964d0fe46f22e0104a89a,0666ce8bda13741d33ef9a22b878ae0bab86d410
189430f98ed5869305de6b08447eb7a7443faf3f,c3a6d1ef72dcc3f56348761bc1f145f17de15dc0,29a3773a69f72fcb35ae06d498c6e9e635f69d0f
6a6e7bcb855abfbafbe83aa91a606007d22a4f40,df32b4c0cd4780f434d72a6bdd89334f238da054,4afa4f43cd9ee458e7079a2df722c31f5ee46696
a5cfd52cabf635484d17f953e4155b466e4d6286,6b3ca128e04d86b3a8aa4ff6e3908107ba95ec62,2a521657cc818759f986196ad14654750f474613
861b9f83db7c50d4e1e36f4ab989d095e1df0ee8,afb01acf78abdf25be91600cbcfd799d0b0cdaa7,64d604d34922713ccef6745f7b5d5c431d1569c9
5ebf96886942fa480fe3d1b45af72a1f1a16661e,2ba4487a05fc94de3e78fee3e32e4a511dc09a3f,00fafdbd5483003c49a03c627c32466b753bd37f
5c6cce06bcdfed34c995df2b8d894b7de5e49194,ccc3decde33e43ba9cf392c8ffaaaedd1ade38a4,060425cab6117ead6b9f1f3d293314a4b4b016ec
b32ecf34597adfc8df2750b09c431d0f1d222773,25da45f6661a314a55e35927d658ec9158033bf9,41483b26915c6a4454b2b48a01caf92d35a96eff
a7d755d6f2c64daaec0a0b7b619498f1662ce29e,d735a2a9ec7680c2c3c49452e2fe20baa48f9e38,8896307f1544174cf808cfc1899262fd25b57776
8af23fd95b538407639a55316a42c2c84cddf530,c17b3e43caec0bfe53e54c632e541cb2d4186468,b3cc7f7ac2e97d699823dc3efb112b3be58644db
a2c89e47f8b538909316deba0ec0f6135d775750,82c794ebce4aae1866d6da42cc8508934da3f471,192a4474b6d2bdee94b1a2de4c10884b343b7d6b
2bd50d370e8a8833095d5d3560800d4cfa8f93f1,4fd3922aa4699491d1f70c3a4a9f2ea9aed05c70,901164f6030692ba84a2f4ca2aa1fa916b147740
20744c169fbcc7b219eb375ee19ea145d434d24e,6677b2ffcd6e67e70c1f7a9db24f121bf8771887,69361bd5c16eeae7664cd7b1a9d48d3e64f00d35
3dc6cea9bef7554e6d7de579df01f5d90a083276,4d71c213eee0782f1cecbda825898d68dcca3783,b94013cc04b51414049c820aac5bed0bf24bbcec
f8c8f279bbfb3facb30382b713d091b4bfce9d73,e7fa63e0eb62cab8a3f622979b040f45619ab14f,f5cec4db7697f7ebd16ef30f80218e5f86186213
dd36542f63e6303a92042d8e14a0b9f7e7ea0d10,20e52d20ba9dd91b35832f1e4630b4470a8585f7,4921be352392c32c401dd689de50980fdaa7b578
5b9db6c9f3624ee1e895137c57b0da716495f180,60555c4462c1492716fc3ce4fc6f29d5cd247e9a,1d2056bd290ac3d9bc48ae1002939c95c4a1d374
20d72426f9a7086449a98a8139a1e628ad64a88d,206064c9fcba198059a6e27d254eea064881d6e7,4e121f2776b3391cfb17916cbdd11fd66147de77
90741867b73e63acf9045bc95a167a171a10a2d5,dbdb796ee703201e58e3e36aeffc44c6a619eb45,8b94547e08049147ef72f85ce60b825197061fe2
6acc7f1c858a893ef36a054d197b3e89d0a1cab4,1375424dfea11445eea25133e7df2431791443fd,644fe1ef487b74bd725a500ff08e86eb371f954d
b66e66efb8baec1bb7ee2d234b9e156d47aaa64e,97b2d250d8bea50dfac605a78e5458f2e4361cf9,2dbcdfe9fb322bae1c8f6eada2043a230191781d
1afc052c6fad5605e570a1f626588e4cdb3ffce7,9a39e9ef8a001914b2c51dd587139227247089cb,0f59ace8ee7269af66091b23f211ab38f078baf3
b86563634b2e24969067309eb23fe04ea299f1cf,472261a37711826969447eca271bddcbcac56a84,022aa29fe6605908056678705a2f6ef5a765aa74
5f0b3ad14a40d42b942354c0270064bc1f3d2512,6755fcf7316aeadaa9439d633068506c92a70676,88df11c0194864fd6ac6540244e483ff2c5d83e3
31ccc6299d02cefc1c72f655231cb9e5e7d4a26e,7b4387b267ef6a8dae4f7f637e96c9ebdee096f1,339d0d832aa2d37f0c5654fa429872a4258efa6a
98cc553dad5663e54614a83bebb6d2bf46b079af,0aa7c3895b1aeeb35a7986ed97e30eb526fee959,b8fd9ed87c0490f077359385f1a4f9f4d6e41596
b9c00b2abb1cf5e74d25fc94b4b98479c8cada4e,7dfb99e8871c8cd4593165b0c5789cd88410cad6,3c3c8c49ae02aafaba8783a76cec68eec1f8cb81
510d4b9a801b4c7acca28cb7eccdb6715e9d0643,23f09802686b0fa4d5b204419899576f14059b1e,27761b9681216d508f28041137267631320287c3
95bf0ad6e926d5c351c5f1856565c7b570037fd3,2026af6d86873585198c476311c75859c021f746,b92030cfc4bc1a972a70fb5c4de763b61ad0cd5d
60f281d47e8946890eff14fdc461c6108a1b8fc9,fcdcf9a96647f0907a65f05cffdad899a662d246,691246d140bd40f90cfb16bbeb5ea415dede87f0
2e24e02bc32649a0d4b2a3a687b334a3d064fdc4,57b932f3b19720f466179904ff67dbb67d7e5801,cf87d0d3073644329b76a03561fd65ee1557fac9
f7102d217930b362911575057fd8eac218a1eb5c,7ed7fb51cb6e334cf573d01af7fe880c5d097b6e,6bb8e3657b54ef470a4adbc261f44b722e98b124
fa8a4f60380701b72e7a076ad8cb1d7f546f5ad8,b522f799626635814a41513909094d72c749552f,56448693bc5ca9a0737166b95366bb281eadbf1b
09c4c1f10223c5a33eb21269997733ef80a04b7b,bf45f4f098e333fbee0fc4d13e79bfa6757c07e4,41ace52006fa25e5a32a26606c73360d5db6047a
943f12afffa51ff5a84450a8e6ae659f48d8e615,0b338549c01fcbd75918b246cbaec3cc8c9bbece,712e2ea786cae09d9463e3e5820d5b20f9ca62eb
f1d570bf5f5f81fa0274bdd2eb06495957fa8e59,f84a938f084f4c329031fbe4c3d8118bd16efb58,74ec67d5dc60c111c09262a1c5c208d385bf8149
561739478e683252ae4f4efb82eb6b5de32c8aeb,b842530a6f474753a94873221ce725e6c52bec9f,e52d65c8b8952f360db0bc7eb361532556a461ef
73264577658d5dc9410c3ecba6e06df42ce31326,1c33bdce41e2995b4e7c9c8931a0a75f59ff3bdf,d55fc6565e66c1a260472a0515cad1ee842bdad9
ade7add550a2aabef28ca43751b8006f342a2586,668e4386412f22c8121649dce121ebfed80c21d4,7ba39027fd8921ba884fb568e8e01d2058fe8ea4
85b890c2972d292182d8dd0930e27a66d5386fde,c38e0689f1cba9854bff4f126c5b416624871339,da278f4e10b02b0bc868736ef6a4cc64923235ab
9557911c751181fd908c45937634ec3c3e640748,4dafc88b9ad2aff1f1efb3a6af680c44bcd0e21b,749c186cf8c9390eff916341215d8dbc5a987ce0
54cf8960be818f7b15c548f059124ae7bc167559,dd55a351a582dff3195e3213e9a024355903fff6,ed1068a770c0c524b6bafc93c5956f22dc0ece80
2917e9341c00d294497eff158a7530b0088965c6,c2ac27536d480ddbd338e45189474588f93b6bf7,a6ef35fbca5e1444d408723a54b84ac27cc18b43
42de81a53fc167f2ccd2821d0db0ed8a941e67e7,676b467b818ebccc253fb9b805bb552f225ced8b,71b24b8ea753032d6eaf0b4ec8ade5356594d488
6106de4cd6d5ee5e0971ea9d42c57b9310346070,d6ca464b3255d31c9a88df37f565f797e902a42d,10ecc20b5c97b66ad018e2636e9669b4b08f772d
433504407f1be18f6d6a2af0f24f52cc921760a7,4e39873fc92c0a5e6b74d4f4cd35d7c7323a6a73,c6c540b65d7277d30a9130366337fd7ffd78cf23
4edfc9baf6e1f36096ddb1ecd24061993c3640fb,251aad4d52548accfb85414e4b467f9460cb420f,957d20c0bc0529e842b06422afc081cfa3e0b834
f80957d163610efc9d0515df6f74f88764f059e5,1d4f0b9b612a8590b2bb83586555229540b35ffe,1c4899ec5afdd8df173c71434ad5a832d204405f
57c090eebc63df56059eec538be7a21d211f8a41,e9d3c15fde3e144d2e26c51c7337af607c7d8f2a,3ce513ba92dd1daa9f67e8b2e9427315d9bb2618
f71412090abf30d7db9f2449fddf75105434474f,986cfcfa86ef42d99f053ae87ccaae246670aba2,a67ad328884f6acbd78505a27311be82428fc11d
00776435c6e10c5fdb71dd58ee73bfa99b1ec19d,8a3309f9d8a25311093e04ae8aa393a3fce511e9,50b8ef26327bec8cc56683316ead3e0db9253e57
a9a69e3ba98d643c013d08581f87f04c79c10c9e,43db5be21b55db98031b84e95e237b1210793e68,14264e0216abb12baa6c66c3fd8be99f226885f0
ed1484a87a965142116ffac478172d219e096a60,59e793c5237a3cd1b734827347efc6b8151cbc43,727332c5eafd8fecc38af70b0d6030c67b3f6809
c0b4f1ed720cf890b6832e34f548a9ec1b6701d6,6be04eaaf09fc422b1667947ce174cc652cc6420,89de2f4cd9a453dcddd56c88d4abf967b08fb48d
1d8710b375e5ae2118266a48acd16ed92d258092,d06c2d8452639e44e1c8158d8e17f09e56af0046,390e449d1d6aa2e1cda014dc59d886827b45a1fc
9b92634499fb8ecf0c189c08efbf68d17679cf8e,97b68eb1d158a6083a3ac19b011ed3910ba45b73,49327da10b0e9b8212c17ce2bda907698dbe202b
290605f092f460edb5fc806a347c26577ffac0cb,a5da235662d979f1044dbe8e68ae427f503e53e5,baee5237881529ea068dd424e2f545aa753553fc
3bbdee22d286ae913348f688648ee581e67cc8ac,ddc19d24c1262af93243b7837f28bdade2fe48eb,7d22b9f990fd736824b7e2a6dd58d9b7af5cf5d7
d70f6a86273cdac6b51e85cf174b3c4aa07c9247,32f843a8e9b56c0bd9289108cc12add1a30bfdc2,23af0dc57f8d17121293aec9e8b747ccf904633a
949efa1d2f54d274d5dc5afece82f3cb3ec68176,794bf30ad61f7162b738758a5248a1183bbc6cd9,46698e47d159349ebb0c377a7e04a8df4054a605
47c22155822f8a74d2e1c5b1e8c8f6e6e4f49815,ed107f8164dbe9c4e398c5803330f45c44659b24,aac79fba7b7b657ae13cd120aa8c11e6961b63b3
167d3e538f47a7a4a9210c677b22eaa2cabe5882,fce3b6539b8ad57a9748826595a4b12d4dd7ea69,4f82ffa9830c50d1630b0a697cb2d70da175b773
7e501fa2aa13d2383bcbce41c7115f604cc72a01,c562becf56d7af8ff331c1251e3821fba7f9203b,b0a5cc1603e663eba22ac959fa86787227e345b6
5d3eab7d00376a38db5feed4d6f65b0456d2c4b3,191a8c666731f9f41ed03a13d6849ead7b500a49,1af0430f2c3b688afb020bb1c72c7add6d94b187
1d681b67a84ce56f750b9ddb6397f7c37cd7557d,cda74dc3beea4360861b751d22cc9d9ca141d583,38c08d72f653b0bed57e0c741c8c0ff2b2ef2aed
d50c80a77e21c0f8dab68257ed6f146aedf57a70,4b34e6a39ca41d0552d43df527f3994505d4f61d,4de9ad6d54faab74dad6aafbf3c9347fde85adbb
a3060867789160a402f382e3e49522797db30c22,681737fef900755938f5e528dc8312e9f3ccf2b1,c79b677948d22df9dadf8b705acaa21bb12fd4da
52e38b7043288185fd0d2546bccbc5064fca71e9,1ad0ce208d43b780d6d30286aa8192541ff2666b,cb8a3b95eedab7c915bf1e6b4fcc2abb87e217de
0de9d0422c32852ad338e3e2c3e0054aa211b2c3,a31bd7b0e9397ca559887fcb8ad82eccefdf314a,c2b01ef53dd0f3b951588402e9cd316d16136108
2beda1b133eefb7ae8c23796bac89a1a71856c7f,115c38831f7be9d18d6248107bfd8dc79bc9a0da,91b9681f3d61b998f00638b405955f89cbfe8719
e2d01e3adc56ee2b85209cbd84423e7e4e66d92f,c12424f52870d2379d8d949bdfeadf31efd95b5f,f59688c8ca8ed2f6e9aefa8b73fc85db2532af0a
a21eb6f30c4474ccf7aa9c4e827ba3959475787d,4cd9ceb42309a410066885a6e23dc07db97df195,9245a56fda3806514e3e12d5267782be37a4f9ce
4175f705f37a6a63337913281841820363434d58,e9cbc4d220f7c9cd64b24b6ca93cf289a5d7e840,809fa39d8097c9e70e3044ebea8a721d2cb58871
b87675dfb24516743c443184bddab57aa6a0ba34,d8619783b373fb23b0a8f7e20815b8076be6e1e3,a18034c3014382817fe00baae10492242bc56d9d
e663407adf90a929374027271d8fda1beb5c0a23,b29b083139b94714f1ad4b3fde1915b331f3d3dd,ed25866f52385c80e364c3d70d61c94cd50003b9
afe6cb424daa3d19d7e0822b9dc01e3367d52591,d43c1054a0ab07abc6656bbf1ed4525444ee8f6f,85419fbaeb28437db234b2457fce2e22d18e361a
02a42f092e2c8a8d7679af7aaf81571995e12d37,814ad72c7bca2dc7ba4e9132ab312912a59d8135,a31f64dad5de6b7f4b8710d7d378f6b8131d35c8
bf3a604c12b3c0d49a159ee59c3b61a4cb9f7574,17c002e6460417e6980fcae2affe6e5bbb00bd6a,786c2ec2c707fe905e44f5c432ac9902c10de643
31b071a6c802396846dec5e36355e46a5c8df297,3707750b2e1499c149c123a76f5cc58af3377270,64a07db475e3ea59a343ef5e475d165099f6f6a0
ae34ea28ef05e9cb4b1cd4c1b3bf0248a7f862f2,af4da1fd6f7080ca34b387de1fdd8247b00a9a80,8d1c8e28204f429802d1dc37ab0b7593f117f57a
ba349f831343c311bfc1659786b845699177530e,4191ff9ec7df20be0dabdb203b694939ec1b6aa9,3fd9657559c4c8e76e41c6e84fe10238c9977791
f35083915ef010b9041ccbf55a8d925d098e031d,8c34e31fdd70e3ab624f321e62ba0066de96295a,2808858d59e9b96569316ae6161c99b79f9e64d9
400fb5e8684d6fa7ff274094e3deea54609ce012,08b3e049010a339f01db61f3d21463ccbf779059,32974c9e837b0364d4247a8fc8ed3d8615237245
be34b6f315a7ee1cc380c75cb0da331110bcbaa9,dc954f5c9dc67f028cec97cf9f027da866b51a03,0870970edb9e5c89356ffa5ac290f858289cf75d
48a468b4e667f939239c07fea4823ead16c5a43c,9aec4cde2a5829327d9f8e940919fdceb85dd446,0ee82363fc2b5add7564b8be81df2a4b4709fe93
887dc52ef4ed6fbd3f913c8a7dab3d54549e2dc0,8da7a8c1969847b80762c51279f248b1877dfbe6,a3443f7b3f4a422170e99b4a65d0ec45a63bcec3
59214c46c30ae4a3af101d7134a18fbcff0b3c10,7c2828602980af9d7e218321fe7c7df9bea1304d,d51715bca48b57239feb2c1539d57408837556ed
47010b3dd9d785f82e360890b851388400a65ed4,452f951d3ebfa4620d0cbb3d6c5fe6248656e33a,0a6e06b537e81b6c17dca0b8e9cc87422f6b74cc
ffe3aae7b0591b51f850440300eae9d765a2d81b,35f3fd16ca305341384885fec68294cfa6fe97dd,439c8de6df101d79065b2aa31259889a0b9f6557
5966e891f74591f4ff95c19ac09eaa9e55e960dc,96adb50cc8395ac25665aeb1d552a203539ebb4b,fe6549f0ba5a7f6a0dcc8277fb04433cac8550cb
8de9f388e176a6b52612f6979ab822457e43de20,d26a3b2f3cc1dcecfe2cd6d596cda89116c32d55,4096b25bf3f71a9cd375cbfc03a807addd5bb0ee
a14f8bb66dac07e58fe86b20fbcdeb1d05451dba,0c4d6affc850f36ccbb5ad2e900045a10eb307b4,e35e94eb4df3c6c21387dd646503b64885d71421
dfef2e2a13c8520c796cdd47594df2b0f9ba519c,a5b7617b26824586d20eed1b82677be2236d5c8d,8007101b9f3d2e1ea60d9c0409cdd81fdc7239e8
13957fce44ad2f4e1d6b23cf073238a852f2eda2,72170261206ece315c248bbdebf3604621f23067,32a8b348878f8acba1b943aa7b0f96bcc90ff474
73c3cdcfcaf831174e0fce7a5fdda967ad7e2564,e030f019fe9dd1cdf5aa8e8bc81fc644ca29805c,61c7f95f08dbfccd2d9682f53f4610ae81808077
88e777fc7707c56c5616064e835a3f591fa25fe9,561699e00caa974563e81fd27dfb9cf60cd03bf2,b23769bdb0d8b2aea8430c1743ad2586b572198c
992b6360cedf4ad11e87de4a29140d9893832510,88b9e1a788b4ffd9d9c4250ce2e9601177335551,76dd3b0d858c109c5f48d0f43949222dd01f3047
047149a8e47610f796030d868f9f43942572e531,bac9e504c57e743343bd8c0342f968d14e1a8091,103812fbf0a15f7b47e343ea02a9fc48bd9d69dd
4f08a0a0c9b205612f273b84bf1e877d753c5d89,5e473c9db97f451c39a070c662d1c42a81929911,fcd43354f6602308c4377e57085b38436d8101e4
31bef8601a2506d0fa10871e5c94381c30790c29,56b729e8ddc7ee8b6eb98a37e354f7840125449f,710f42ca5da9ad758893c98246fa6c8df50086e1
08405bb0cc72548d8905a3d3dcc54640a9f0ca4b,89152d9440232c4a4386cfd7d52088f75d8656d3,6f4a82ab0715ec2924b8c340d175d1f14d2e5284
a58dde6adc392bb5fa51d9c85b2143e72de91452,5317a8602f51c8f5c93e9b4315180d848608b924,08ccb0b34e3a6fe6d40d4865893500586eed1ccb
524cb571f42e2c1101c807948e043a5d8b8c30f3,f69a0f01ec2aacaffc57b9d29d665accfe09fc6a,9dbc2b5cd2254a6d978833636c8437256bd3d08d
a783c57b69bbb1ff095a74864695170668446f50,379f586f8f05fce7a54ccb1557784cb4141e557e,af90a8445b5a06ff27dbc6333789414fa50f70d1
5778f06332c84ae081754bff3a9a148b83227274,d5810183c9dfd2211c09c8114688a2bd28cb17e3,a2663d68c353ed61bc8db27edaa19fed1481174b
fddc08144e3872ff5e59b72a7c75798f63aa2672,c642400bcbfb1224cfa1d64b4baa0b471720b37c,82084dad60c02ffca3d051451534f4e9fce80558
c94fd20fde739384a02bf96526fe62aa84d2e10a,2754bf666d52b981306b91b8c59e834455708b72,e117d9bc3d50a9667670326c3563c015486c4a5d
b0d30d4e645c794f80fadef33462870247fd99d7,5949f04577d984f222cc7445ab31634e6a7eee6a,2cc0d280adf29ee63c072fcc15991b804dfa9f0f
e6d398ff6c11db31218f876d23bb66248f819801,ce51a37f97d7d2ebd17ab4afa610650de975ffda,844da1266fb46880e9da892aa3337e8b146688c6
5e27183af2f3d0f1dc14371ca0b580ce4ca5717e,175a512efb5fd5c79cf89c4944c8912a97151f25,dc43aa7cf389c95397b609caca0b57939de590d7
fe5a39c822424766b0402fff7c39ca8bde9b4689,671e25e8ff79f3b407d7a81047d794de5b1e281f,5c4007efc3fbdedde42fb3313d603f44ffc23c46
ccf5ba6cbf31c32addc2b9a2cf58d038d3e52c95,d020bd76677f050d4fb31e30d6eceb7cfb4fbace,7d34dd3c61920f997cf3a4dce84c1fc92b25489f
d1172ca8aeb8798b93aa191cb93cf78a9915ff56,63fb20938e20f784874d7de38f1c42de777e3dcc,a3e3cec13797a8015037ccb111707b1920a26c0d
880f4329eada0087ee47d015cd7d4c2b24c9a239,cb142d78e2180db1a2b1816863fad8691e2b8823,fb2de70202ad44583c4eeffc95dba9cd573f997b
0f1dbd77b2bf3a2648b391fd15b775d650abf5e0,396cf575488f7cfa8a16685c9046c18f2f87dcdb,9315690761f19ab1bbef11d4b3eaf07dfd144f4b
9038b712bb44b2609288600c2ab8fced3df38abf,a4d44754db767c985692aaf376accf558058f13c,907f58b2ec9df26770ee6300058b09a9df7ddcb8
1339e59d585698b701c898b6afb69f62d016ea99,18bee8e10b3378bda7f6c23c8fd5dc713c069f17,f113115ce8dab90d9ea4e1abaade673076059874
b98674993bf46fe2aceeb816bfaa4621c28fac9f,d3975bd65e6b4865abeaa0ce3448bb2df7b67ba8,2d320449b9ae2043ce20af886adb8855cbcf5029
33fe3a02f3ac738afbb4e682fc390ba601fb0d77,866036d008dab86499cac96679cbbe0203f38b30,f6a1cb6b38af2daa98404c0bd794172591805561
5658d036c493ed2beac2c6e0febc651007d74bdd,8431e7207f7ca1a24a304a1ea154aa312255cdaa,8003027a8cc96f42f15663e7d8189b1854fb0447
df05f38ea18f1c8e45468b42a168679991ffa0ea,33e4361ee9a3a7bc6a11031fa51e8655c57cb96d,6d7b4b4bb572151f22681e59cf9d011c381260fb
c1d1728fbe7d10abf39d7d6a005a572ab536fd9d,45f82d746f6fbb9bc0b61419864b39f1c4a91a7e,069e142aabaaeae491a509b583581ac1bb4137cc
e5f2658eeb29d7a23784c0e343e13c2e2054dccc,c43d9777ae015d98482470f9c10e6ba7d14a8def,9f50771a5328753e5cf1423649e8ccb15966ce6c
4f7f57e80c832a8e1a84de6607d4bbf0c69de32f,79a9c2e990aa40466677bf7fc3b83efd3783b97e,99fc1fb39aa7e63c2835e3c91bd46ff957974d20
792d51692b4c9dba9055147fc65f30d2b0a87b46,e57e58b806f0c1f651fa17de36cafa12f6c37511,3124bc68a4488e76e3bbc4b6ff9bb34f2f072716
28ddbcd7bf0159795321cb710c7b81cf71662665,d3dfbd1422807dc56cb805e946b1dfa808194ce4,710d56bf0d0f5ee7f25e7510acb5cfc0edcec6c9
febda3cca6e3b48dcd7cc69fe4b436f1e79734a7,641354cca0bc3b66344da0e63026a6636ab07d66,43a998dc07900f4fc4e7a51888c1ae55b6aba565
9faff07d06e69b02485f33a43c911b69f44cc606,66b1f25ab3b9bc02a1605d819c39703be46289b6,bbfdc842b8ab27ee72793f9a513bc23d5851b337
9103c9290523162bf8de72fec70d701f51eec2ae,15dceccc1a4b666a767c0381c6739a0b820d5990,f9699e8d513db3418f279f72cb983a2c937d360d
9e4c8eacde4c9eb6e705a75cc079534b68e93ed2,b05760c746e8b19a6b75aa9c065e642c0a836fd9,cb21e48dd6295dc0ba5ff304e9f62c1e04510eb9
c69a054cac302409da2296a9a9b2d31d288705d3,e4e8bfff3e5bf73b0ac1272b2abc9dd509b765b1,ce9a60ff86a305f45cdb332b99c8a8383669a92f
f741adec682d1ecbb32c8c347de1ee914e744739,b1a421debef595890e2f9fedc4348e146650d225,c12f81f2a43283a330a7aa6d94a4e6faf5fec79f
cf3b76190a58feee762d9172f98d632932b4255b,99ea1d506faa3d3484ebe2bae5e57c07b2920f1f,23e1c25911abf9c19c05a6c9089365a1783ba429
e7068366aaa85a1aa8825ea8bf46335d479169a5,3ecd55ddd16b6561818293d2667a3d7f9b02b4db,6dcde3b90187fbb8f5a14b1a134b188319a3d10b
42993d99f02fb7955350eefe1be382e99a43a465,7e07ceb8cdf71b0056e06e17c08546976f36a38a,c8cf3ca28ac3ef13ce04b15e6e45ae12397bc785
9e6581fe3317ae8e66f6e92a44cc9e4f28240ed6,660a8efc171846ca6661fc67ba4fa283bb9e162f,897ec4d9815ccf4aa30d50a8502e6ca55c456d38
fd0654fe927f783f43bead96b025cd4a24f76f89,5787b43060b26053a33abb80766bcc5f4127b23f,1e8a583cbf96bf083c4d3e38f845d55589142cd3
f947936cf9d595dda27174ae0bcde5bf9e56659d,1ec82f8d51781007557e41add88aab0b0d4916bb,440696f33fb839fc172adbeb8b3a02d408f88d06
f09e59e9e62858d8cf3152cbfdd85ce1f2d35de3,3371ae157726e728b6e238cc5680dd877f21ece4,329b4a07a52fc0e1b9065534b84bf7c998dce5fa
456dfdca5949eeb943c9aaf0cfa9700cc320bcba,e7dbd2ae851774124ad2cdbf457033d5ec837186,db2842e58151b9130eee3b997b2eae92e5899b15
2a561718b493de17f524d20ce482c3a995ce039e,7a6251bc8897b1c769460f00472a28a7d5abfade,be2b29ed5dbff699747289761061bdf92ce553c3
d39705a9568f5f076c894391b9d071613dfcde2d,5ae62d52b907d724af339314b9fe8e927da74606,1922cee9d537708ff98d01ea25e4dee6b91d0843
87e6e285fbdfb1e720fa4692105a5434b5d87893,ecaaa71b3088f908d4a3dacb544e25a4b1c1cf79,5f2f629781085b28d6bc7b9537f3c9bcd1de2e90
812f8fb69cb7088bd33f5387da74a80b5cf1d464,5985b58ba832d1349365e0f47280c50ba2585a44,af9fdf251f93c895246214008decfb4ba19e0781
600dcc82f48edd35315dc4c7dbb64de425ecf610,581b508e8af0bf039de0043b16830f356d0475a5,6da6dca49151914f813709369eddf5429ab6ac70
46a3a39b93eec0659baf5d67fda24e5f45a1c14a,ca233abc7a7fa62a1e1976d46d59855ed5e08576,c9e4a89020065baf8232e1d335e664be8f3d055b
00538953ec7446321ceb12432ac21a1d8316686e,b1f8f8fac4e51806f606e3f14a7cb0a94a46803e,c4247a2d27b4a1cc817c5ccca01074420b289066
b251ac04a450a754d3a0d13ae801780bba8869d4,46d65bd00a9446e50acc2c28c9948e3a4207d018,1e42abffdc6b1f3c5b4dd8c0bffc01ceb9c687f3
0cda03ed95e53e8fc23e0daca9aab0fa6093bb39,41fa80f5917d8ca6c0b8be02e8425d5473c57944,acc89a14c881682bb6aa398d122a2c27310fc682
4fe20ded55263cda9e279ead43b90512d617b194,cd4a0d1fcc6ddb5b56e084305dfe14a8f519a539,3acb3bc8f1305324c2db27a0d5093534379bb6b1
66e38aa68f26975fa2700469e329a8d4a3458520,e76b0f468b964722d16467a9e4f7a88e0bc1deed,2d7ce72ad770754061d9c4720291be4008485c8b
a61062bcc4a55061d6130f7614f60d81e0b36a11,399bf4a0cb9cb75f515aaf1b55229a44dd7070b8,fa235b07a324817568d1473711c761d96ad32d90
12e268f6f67f71de0b674d04309d597f9aff1a94,480c6b00aee75a391a161d163148caaf673c43c8,245b8e935eabac6b346888f75800bcaea0f95994
691903f8eb666d9993a46655213eead16b976255,7bdf98d50a54ff6f311b37c529b3c30cffb438a0,0f9521d474d2f4977e3d13e4ab19582117f2dda7
1a53769cb371c6c9aed05c180caee73d23a9501c,8594e9ad47d75d3f5b2febf67dee5ed3bef844f3,bdc92e0f8a1c72c40432f0348f27d3f84b61a63a
43d0688c81121e501e10f04c25b2eadcc7899f22,f6173555587ac61276919f37fac6b308dad53acd,9f3fc3d2d5b206cbb66ae340365f36836dd040e4
7f261027fac892b7ed0b46668ab4ddcfd5b9288f,f724b49d1fcf6974d17b2069ad4fa15a8e2fe963,19b234064cfa7e4ec32f9da3ffb022b97c45d04b
eead61e1613d0d65c6d157a449364916a5799107,f792adf86e89c19e68361c9e8748eb96b9894094,9afa109f54f063b87c2821485f76cbc1b6a87098
5f47388c7eea1e48ea35ec29a9210ffb340c6e4e,2c7089be70dd0a8fdd8b8deafef3dadd4a793d34,5f24827f47779bbdbeeaa31e2df83642acf950ed
4df25dc509e192df7ecf4e09ae7b378aebd600b6,41b39314894fedc8631f390a7ad7cfcf21c795ed,2a856e4390d981a6bf8e7ee497ad3462e4c9eb33
59977d20a866519f7a1c85eb571215e437d080db,fe55d125fe81807eff649348b8df41aacb8cd520,1e0b42ca1e6ef90055a7268712adef1d42b2c2f7
46b51b09bff8aacbd80d78c9385e7a815a70dfaa,9cf6395ae996a03bdcb8da7d1913ee1a6cd530cf,6005d595f7bd7e8ef2c26d125152f451c5342a0a
5616c480aef0992c29f51401801d0bd4104b72a4,2372614710cb7353bcf1a3189b5ae5065b7dea9c,b505917d29d7b4041a692a82c056f6ec75481308
a38fbc13b550e3cd46c5d6e74da5c964e5c9f6df,0d852437124d61989adce8426b7909974c8771cf,9d7d5cea1a4f882ea5975e05826829dd37971072
46b9caa01ba2ff2adffeae2588a84b4103929639,05a045f1a9b0aba97f2666e817a5e0e35156fd3f,6d929e1e72a2da01d2440ea49f8eaccf0637059c
aa0696d840e25fb078bd4d701b39c04d3248cf36,708603c134f2d6576254d9644993c32817d3d7b0,dd05115585eceabc706619a546e9198238b3d677
6d6d0df0d25208a0f1fcb42163cd92240f25a582,811f5f8707bafb1aa3efa5a5369ad2113fdc5905,4afbed7b7e2d549ac46325191ee49e48cf2de36d
4bd87f7a923516bf12c04dffe3680035fb48b11b,dcd240c245063e1f82ef7ba9f7f771e8cf05dad1,5c62789f346a848108fb6d7e66f636a46f13b955
951e5583cb64519b4287e0adc4e92335d853e6d8,f1a57f0c71c6c15dbcd86d35b96c3a80f057025d,7b774e62fddafead3bd586b731ab343e54f01d55
9795473b9df9ae8dac3c8b7b34de304c16bcdf15,2c1b8365efcc6f6a40650509a55e7cc6de6ea447,c70fb56575714bc1178d0a2184a5c24d56412552
c2ae8ae921bb92d35c0dd14d8af9f668d32929af,6b686751ff5dbadb080fc332d8210678811d9abd,86fbcf3e811bc9329ca65f0841ef290a1820fd43
985d0f6ad9f7c267ebfbfe04519ee578bbcc6faa,e48ce1c6aa60ce12ebab4761867f82e64494ac90,9bd3c010dcece8397d2325fd7ca466dd693cfaf9
9fad39ff3b79d04fb951555c687e09abaeb10c97,f7c919c2f8cca593e8d3316702dee8ab31a2207c,3bf32e7e264164b6cc3b1d3bd1a8b6f1f5743901
f0d9dc6a3ee9daa1190bc4d9b716f953a5060d67,a236118efaaaacb9b0e438401536c4a933f55ef2,9cc44529dc5c39ee64938ff3b54ad03d381738c9
c3ea9a3c93fd48f1de6fb9c98eacdba9b9d7d4f2,5bb9d9496ab62eb33ea79dd161f4f91dbe002ff2,c2fa262893b353e7098558abb0be123063a0eca8
8485babdb5e695b90d47056e07a77c1ff24ed434,0d3f40cbe11b455c7b71f8739c775d3981b74aa4,0e3c35a854d3f30e595ff20f156add103445cf1a
60aeb79ba3edb027663ad756d8420f7ff0f3fd2c,38ba11e1975398396c882ac0ae5b5b92ef0f3d35,a8f1fd04c9fbf6815e63c3093ed0a11546ca2f4b
29ca7c45ed736b9f382c5882249c890d14e5d888,d5bb15994a9be6565d21ccb3e04beec3c413240d,2a85b186886d27f2fd853852112c28b6f8685401
3eb0f608f7e3e7c747f58f1b91d96e1f6e653116,b5d9ffbdb4906a84fc59f078a43e47b4f2fcb85b,dced938c7bf5e1c241d61a4a4c7293032dafd078
4a11d6da463f9ca8f8d90dfad030721c7d152cd4,a2d69eb46230f04b68aa37e06333226f7e0170d2,e96a8ab1e14b1639f6d85330a67280fb571bc449
68eb2bc3d8981d44449763423d3166e58bd0e526,f9303392c08c77a0f9652fec34dfb9a31b253737,68cbdbc87f6c1b3356ba7c04634dd0c2c9ceff5f
99f848880956de7e5924bbd5075426c84c166fa5,20ca0c06cfc2eb101d29dbfe21563b7c29c2be9a,502cbfb2bafaba217b5ac8564ed2ae7ea0ab6fed
b9df889ed2e0943ea0a3897fe88213bc054a2bb4,e13594a50e685bc619aeee2e23d3db9b60d389b9,a3caf9dc94d697f969aa63142b57eea52f51f1c9
b16ce76686455cb9d52df82f9f8c5a9cda94c876,a2c5902f2e271bf4fae5cc2b5d5cd070f0411990,29926235246963112166369e54fadfdf859439e0
bf5da86055898d9e710ec08100cb50d45b6f8322,88d86c72b172a78bd1188213dab8c3811556d6d1,240a333addc0c1b07b58dbffccd6f5aba69aa53e
362eca555c3cacaa990c89ff04941b54b614d048,83a26bdef855e64092c7134541b52f2d77687ee1,e4ce1088be834862148eed31443923139b596be2
ba39ea600be9db4537959cf518e2c69169e88a97,bf6ab322557ba1a0e6bf4cd653250afe7b8ed865,bd4482c6db33ee68bde64699a5792d18a702c85d
b0932452bd4297edf83944d1f7e0adf8669ae2fc,44d8f3dcb60b0ff8b38f8ebf632edd03920d4cb3,19db130ee9ffade44abdf88e20caf9c873345ea8
08e65b564d390b1975f40692095684c441664baa,b33766ad2168553c3d7ac6e938ec374bb1c3300f,54bd40cf896401000be50af825bfedc50fe00cce
d9e30ea4107c9ec2196ed9a43488b3a27e2eb38c,dc29f1c6d5b41f62b458388470afd0705b7333df,6f33f1b9e07927acb674bf81c32e4be705647234
cbf54a297df2e68a97ef9d1024aa3e845c705190,3a9460c69bc430c336c04aa389be510eae5dea48,f979e427451551f0d4b1424425f79e8dfbb3cc98
d0aa007cbb8354242210fca17a747d4a8cb22292,469bfec67ff4c183abf8bbe394e7852a76192d4f,c21fa64f0491f7ee638f023e963fd50fa9e547b0
858be85bed15d2472f14725064426f35129bac9a,52acdc044d2d48264b8e8fbac2557559bb599921,91d932e236f624d942f9820e2995bb7f693fb411
364f892455d6bc15432aa66d1a93bac08f6a7710,37d3c82324c06fa009e5d8b8b84fbe884188fd14,40d8769b23169b53361b7316d3eac3c6b7de7641
726b3fdf917b93dac1b6daf42043dee0beef62f2,651b2b4310a9b7118a3f3c7189de138835d059b7,a7f5a4b5b9b6477971e9ec450ab74a4fb9e3e08e
bc89123653269b34be8a7fda3df0b4cea7243ef4,aa3a4ed280bde7b6df01e28b1b08e5596c1d394f,93967eb7801d7eee08359af484b1e4a1d1097742
7e9de1eb2d4f2c72c9118b501b10d324f0b55c41,f97fe1db2e1bd51e1c45218dcd9d962637ff039f,c12ca3bee349d551325163a80ee04e76957d92d6
991614e35782ff595e2dba6a35db9168eeb40293,861a2de8bb200e97b75d2085b7c91ba841494889,cb3daffc0059c4f848bfc65c1749d1664c1f0613
3e132bb72821f025f9fed9d9c5f582d236104195,98af4c2be8cca9a22b77d0f9edf352ee1f38610d,d6c5b4e101551b927c42bac2c45ed9151ab3ffb3
c87925915fb0ba9c4f617dc7cae0faebb5ed7af1,38aa0cabda30c9c2f1023a7ee5092d3fba0fa017,23ed48b8edef96234ecbe9ce7fdb69eccf520742
99148c28131e0fec9d9f7ddd62438d15acfd707e,0557caead20ed9b4f28d15fc76b86b6c3a1ba17e,0666fa92ffc8e7733d64ae082e2dff26792ddd59
4cb153f6daa2f03e062291f57ac6ca63b5c9ec35,608df75f47ed32e71714e92c92b8575a4e5abeeb,9a22ebb00f38b04ce63781fe399b8cef585856ab
a4904c3ecc645ad5bf444f3a1425d8c33f9c6a15,e5d7b1ea353f916e94ae01085072ec0218bdb3c9,61a2ee8be8f4aae69fa153794acb19ca12b60e59
05754257700eba6df3f1be5c1850d45a60258e6a,daba99e02a92d9e06dbe8089e0f62973e3ab2713,934a5b4e3401a53008427df40009756f90ae4301
c82035e2b30bf196a743e00fbc903da84b32f4fa,809e33c6837d8e39e87d928aaffc257c5488b1c4,c7318aa95ff0aebd273e4e143e181f1e62b6fd05
1b90309f40ad373157237bbfb406c3a181d0b5ab,fd77041d7d18feea18ac06742cc8a5748b77a326,da03e1a61021ce647db2117732e145d960692741
339f2ed7e23a2ecbbcca52a8fb96c3112673d796,c08132632c866f469fd3f1030e09260d31fb2173,3989b8927cf67a516a4ab309c124577e40036ded
8036833189309aadf62af43293e03b4da85e79dc,6c342d7e114342b434aa371636aa511c5f7cf947,4247384c2d8081a49c24630fa98e4772f44bab2e
fa6c50a35e959a35f2f7c867b4a61a5699fe57f5,876d0107f3de18e8a8737a9d94ea91f2374c52f9,ee7b3cbe83f216ffdb32434371cca629e19a3dd6
3387f708b9a9549782eb608de13991ccdbac90da,a489b69322779f22af9a0c7443d828f5e0b742da,c192e372472b5db9e78070edf6f6dce3d3ec56b0
90faad59251d0dcc4c1cf0b41aef0274d490296e,3e473b45193dfbf812a8df16b887a0eb1e1ea916,2cb68b6ed3585a9b8a09d7d9854b2b86118069cd
8668fd6dff93167e63e8e3c8893ee07c0efd6f7b,c219fc0087619226172bb23e7a6396e4b9ab64fc,9177ef5a5566371ffac02c908a3e1811d5839249
b440f456f32eb8f49ccc6f560e78864c5a54ffec,03d8e62c9b4be3a20769a0ac26403fbb065867c3,12e1aceca3b3fd35bc93e08599b89df09a4a901e
92bb99049d0969073f8c7e3cdb72f6f6c875f284,670f9396c47e09b314c92996dea99b309eeb963c,58bfbf8dc82e94654a30e901b149e095f94f0af7
15a6c7e97711bda9efda484c2625264253a23dbd,d139e50814677abf68c2ca26d4dfb3d5e7cce553,e93778b4c55b8011ff4e8ff8f80694ded9e71cf1
ade6ce94fd5e6d8c49fa54421194bebb41f3fff7,688bd549e86ede807d57f3c0d546dc0bd73903f6,d63dc5e2f3dd9203c2d4657286c82ee7464e25f1
ef4c3bb107794987a678ea341e5d9b9df4340e53,d5200117f3125d7a56a31e689c2945dfcc35bee2,83cf03625d28f6e638d079f9970f2ccebaee7040
904974a510865adc35083b962725f6ea215ae26f,b54851afb12f754d0a14de21ba5b229ccaa21085,f2a78cb634f0e5675b9ab1b573d18e9b5eb739ff
badb90a1252cf00ab85a31d3d24d23ef7b3b17d5,7fb8b2f124ad72a10d1ff4208a26d2a289419940,05489f63d84cf87fce482d921e26d0a50d4a7fd7
baaec1568b0b9aeda2d0f49e78ad6c244cbffcca,693a0e2bf806834ca2e87396ae68a04849062abb,d5589051a7eecd32bdf8e44de1413fd2317629e0
9e81a4bdb474079f53999a7e220fe99b08a4047d,db5538ae2bb9d66a984a165a659082f9c275ff7a,9808dac68a2bd595f4603ce432678a1183bbf372
9d712abab161a022f969cf8b3461960f0a94f101,4f4a5bd8ba6a0bdab0572774add582b2b5967fb1,2aed3c726c034ff66fabc30cbcbecb31135ec8d2
31766f44ebbd07443fd78243536e4785310ee506,661d020239a6c7f4f5cd437f8ed2009c67623356,96a028932431df98e9d9379b3b1978b5a2a978c3
19ecb6290a64c04c7f5e513cbaaa48f8cb9a4912,58619e1acc39981e4d141ca16a09c325fb8ed42a,6eb5d43a1f981f5e948d7ab9305f0a76b9bb9de7
42cd00764a1442da061f46f8ac1887a69eb966f3,ad078f5deadb146290a894989f1685816e7b0d4b,fcdde3162a9fe223d559d8adf1ae3eb02d2ecffd
8cfe9f910561e347734eabfca84596b5869816da,dc70162e2623a62e3db8d0a2f0e7d129e1752ec3,237f57cf69b35f8564fa70e3a668c26d75d332bb
7f4f8aa1bb3bee449297d9c562d0a5162444d98f,5165355dae3651c04e0af0b1b77d64a22bc546ea
Clicking a revision will expand files
* normalize tree: - do not allow statements in expressions
+ add a comment to the destructor of tsymtable so that others (and maybe me a well) will hopefully see that the destructor of that class is not completely trivial!
* fix test 26481: it tests for something different than the incorrect type parameters and in fact the need to fix this highlights the need for the previous changes
* fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons
+ based on a patch by Laksen, optimize (v>=x) and (v<=y) into (v-x)<(y-x)
* support aitconst_*bit_unaligned in the intel assembler writer, resolves
0034222
* relax formula for max. nodes to inline
Merge: 7082b6e34a 88f83280dc
Merged riscv_new branch
* fixes broken compilation after merging
Add missing TFenceFlags and TRoundingMode for riscv32
Fix default CPUs for riscv32
Fix PACKAGE_VERSION, restore 3.3.1 value
cleanup: remove ARMHF-related comments from RISC-V only codepath. no functional change.
* addendum for Mantis
0034333: also complain about number of arguments with the maximum number of arguments for Copy ( = 3 ) is exceeded
* is_range_test returns false if "lower" bound is greater than "upper" bound
* additional tests added similarly to tfexpand.pp to test modified behaviour discussed in bug
0034166
* fix building with LLVM=1, thanks to Karl-Michael Schindler for the hint
* Regenerated makefiles to support aarch64-android.
* Modified test to not create sub-dirs outside the test's directory.
* Define slowcpu for android.
+ lazarus project files for the avx assembler test generators
* fix to write correct output file name
+ patch by J. Gareth Moreton to support BMI2 instructions
+ extended avx test generator with the newly added BMI2 instructions
+ support fpc include output in avx test generation code
* fix tests now that the RTTI of method pointer variables also contains the hidden parameters
* Fixed overflow error when calling align() with corner case values such as align($7FFFFFFC, 4) for the longint variant.
* Delete temp files after test.
Fix riscv64 compiler compilation with -dEXTDEBUG
Fix compilation with -dEXTDEBUG
Add -Tlinux and -Tembedded help lines for riscv32 and riscv64 compilers
* Fixed writing of method's RTTI for aarch64 by explicitly writing the $self parameter first.
* Reverted
0039947. According to Sven, the $self parameters is not required to be first parameter in RTTI. Appropriate tests will be fixed.
* Fixed overflow error for the qword version of align() when i=0.
* Regenerated makefiles to support x86_64-android.
* Undef FPC_HAS_TYPE_EXTENDED for x86_64-android.
* fix tests as depending on the platform the first parameter in the RTTI data might *not* be $self
* tests: On x86_64-android long double is 128-bit. There is no support for 128-bit floats in FPC yet. So disable long double tests for x86_64-android for now.
* Disabled some tests for android since they turn PIC off.
* Disabled some tests for android.
* avoid range check errors
* remove .NOTPARALLEL: from compiler Makefile, accelerates make fullcycle with -j a lot
* few cleanups
* fullinstall builds (and installs) utils now only once
* use the built compiler to install files, so the version is set correctly
* make install shall not make assumptions about FPC, if one was provided
* moved align helper so it actually gets inlined
+ make use of the BFI instruction in tcgaarch64.a_load_ref_reg_unaligned
+ implement assembler optimization Str/LdrAdd/Sub2Str/Ldr Postindex done
* avoid to create a stack frame on aarch64 if possible
* take care of the fact that x and w registers overlap when carrying out the Str/LdrAdd/Sub2Str/Ldr Postindex optimization
* Optimized generic implementations of tcg.a_op_const_ref() and tcg.a_op_reg_ref() for PIC and CPUs which need 2 or more instructions to load a symbol's value by reference.
First the symbol's address is taken and then it is used to load the value and also store the result. It eliminates extra calculation of the symbol's address needed to store the result.
x86 and other CPUs which can handle refs ops directly or more efficiently already have overloaded versions of these methods and are not affected by this change.
* SetExecutionWeight(): Set execution weight also for nodes with special handling. Minor code cleanup/improvements.
* Restore previous execution weight before exiting secondpass().
* It all improves register allocation for variables inside loops in some cases.
+ created branch for keyboard/video/mouse unit unicode support development
+ introduced the TEnhancedKeyEvent record
+ added GetEnhancedKeyEvent and PollEnhancedKeyEvent to TKeyboardDriver
+ added functions GetEnhancedKeyEvent and PollEnhancedKeyEvent and implemented
default fallbacks, which revert to calling GetKeyEvent and PollKeyEvent for
drivers that don't support the enhanced functions
+ added an interactive keyboard unit test
+ slight fixes and improvements to the test
* print ASCII characters better
* write physical key numbers both in decimal and hex
+ also invoke TranslateKey to get more data (either Ascii or virtual key translation)
when converting a TKeyEvent to TExtendedKeyEvent
+ also fill UnicodeChar from AsciiChar if AsciiChar is in the standard Ascii range
(#0..#127)
* show all details about the key event, without using KeyEventToString (because it
sometimes outputs control (<#32) ASCII characters)
+ added a keyboard dump test tool
* replaced "is" test with faster field value test
- x86 align does not use a register anymore, code removed
+ introduce tai_align_abstract.create_max which limits the maximal number of bytes being inserted for alignment
+ new fields for more precise control of alignment
+ support of new alignment control values for GNU AS writer
+ support of new alignment control values for binary writer
* better alignment settings on i386-win32
* improved inserted align directives for if nodes
* skip align directives after unconditional jumps
* number of cycles slightly increased for better measurements
+ factored out TX86AsmOptimizer.PrePeepholeOptIMUL, used now by x86-64 and i386
* generalized and simplified the code
Disable three operand overload of MatchOpType for avr and jvm targets, which only have 2 operands max
* Removed 'inline' from public methods of TFPObjectList and TFPHashObjectList since they use private fields and can not be inlined when called from other units.
* Reverted
0040181 because the "not inlined" notes are issued not due to access to private fields, but due to string conversion. It need to be fixed by overloaded versions of some methods.
* Removed unused local vars.
* Commented out unused "size" local var.
* Removed unused local vars.
- get rid of MaxOps, it is redundant with max_operands
* MatchOpType with three operands is only available of max_operands>2
Fix 3 operand version of MatchOpType
* Moved inline methods to the beginning in order to allow them to be actually inlined in this unit.
* Rearranged the code to place implementation of inline methods before their usage within this unit.
+ Added overloaded version of stringdup() for ansistring to allow stringdup to be inlined.
* moved some drawing routines to a new unit 'vidutil'
* If a function can't be inline (contains an assembler block, etc) remove the po_inline flag from its procoptions.
* Removed inline for methods which are too big.
* Removed inline for functions which access private variables and can't be inlined from outside.
* Removed inline for Unix2AmigaPath since it is not necessary and can't be inlined anyway due to ansistring conversion.
* Addition to
0040225: Forgot to remove inline in the implementation.
+ added an interactive keyboard test
+ added keyboard dumps, obtained with FPC 3.0.4 under Windows, using the US keyboard locale
+ added kbd dump file with num lock on
+ added a keyboard dump using the Bulgarian Phonetic Traditional keyboard layout and code page 866
* switch to using ReadConsoleInputW instead of ReadConsoleInputA in the windows
keyboard unit. This way the console input is read using Unicode and is later
translated to the OEM character set via WideCharToMultiByte. This is will
allow returning Unicode character codes once enhanced key events are
implemented.
- removed redundant setting of result in TranslateKey
+ initial implementation of a windows key event to TEnhancedKeyEvent conversion function
+ added a keyboard BIOS dump tool
* po_inline can't be removed from procoptions when the interface part is already parsed. It changes the interface's CRC and causes other units to recompile.
+ added BIOS int 16h keycode dumps
+ added a LibreOffice spreadsheet with the BIOS key codes, as dumped in the .bdf files
- removed the executable flag from the *.bdf files
+ added bios key dump with the left alt and left shift combination pressed
* the 'left ctrl + left shift' column moved to the right of 'right ctrl'
* .bdf files renamed .bios.txt
+ added the lalt+lshift bios keycode dump to the spreadsheet
* right justify text columns in spreadsheet
+ Added the pio_inline_not_possible flag to timplprocoption. It is set if a function can't be inline (contains an assembler block, etc). When calling such functions, no note "Call to subroutine "?" marked as inline is not inlined" is emitted.
* Changed verbosity of ""???" not yet supported inside inline procedure/function" to note to be consistent with note "Call to subroutine "?" marked as inline is not inlined".
+ added color codes for the keys
+ add svn:needs-lock to kbd_us.ods, because it's a binary file (and therefore,
unmerge-able)
+ added the NilEnhancedKeyEvent const (equivalent to the value 0 of TKeyEvent)
* use x:=NilEnhancedKeyEvent instead of FillChar for setting an enhanced key
event variable to 0
+ overloaded the = operator for pairs of TEnhancedKeyEvent
+ implemented SysGetEnhancedKeyEvent and SysPollEnhancedKeyEvent for win32/win64
+ initial work for tls-based threadvar support on arm-linux
* basic implementation for pure pascal programs to allocate tls space
+ check if initialization/finalization code uses implicitly thread vars
* disable generic threadvar handling if section thread vars are available
+ i386-linux support for tls-based threadvars
* define renamed into tls_threadvars
* compilation on x86-64 and i8086 fixed
* non-linux arm targets fixed
+ support for tlsm_general on i386-linux
* redundant code removed, work is meanwhile done by aasmcpu.optimize_ref
* use :=NilEnhancedKeyEvent instead of FillChar to clear the result of ConvertToEnhancedKeyEvent
+ implemented generic conversion from enhanced to legacy key events as well
* handle nil key events properly in ConvertToLegacyKeyEvent
+ switch the win32/win64 keyboard unit to use enhanced key events (they are
converted to legacy key events by the generic converter in keyboard.inc)
+ introduced TEnhancedShiftState. Not used yet, but will eventually be used inside TEnhancedKeyEvent.
+ added the 102-th key on international keyboards (outputs "<" or ">" with the US layout)
Fix arm-android compilation by prepending syscall_nr_ prefix also to __ARM_NR_XXX arm specific linux syscalls
+ added generic Shift, Ctrl and Alt values to TEnhancedShiftState
* TEnhancedKeyEvent.ShiftState changed to TEnhancedShiftState
* i8086 compiler fixed, resolves
0034552
+ detect and return the state of num lock, caps lock and scroll lock in the enhanced shift state on win32/win64
Avoid overflow error in riscv code generator
+ introduce TFPKeyEventRecord - a wrapper record around TKeyEventRecord, so it
can store additional data (not added yet) to our keyboard events; this way we
can later add extended shift state (e.g. distinguishing between left and right
shift), etc.
* do not re-used gottpoff symbols as they are PC-relative
Fix riscv32 compilation error introduced in last commit
Use same parameter type for update_reference_offset override
+ add enhanced shift state to the TFPKeyEventRecord object and call
transEnhShiftState only in HandleKeyboard, when the new key event is added to
the queue. This way we can use GetKeyState to determine the parts of the shift
state that are not in dwControlKeyState.
* transEnhShiftState moved to be a local function inside HandleKeyboard to
ensure it's not called outside this procedure.
+ introduced TEnhancedShiftStateElement - an enum type, containing the elements of TEnhancedShiftState set
+ added test, that reads enhanced keyboard events
+ distinguish between left and right shift and detect num/caps/lock key down using GetKeyState
- get rid of the ss:TEnhancedShiftState local variable in TranslateEnhancedKeyEvent
* better alignment on 386-linux
* three operand shl for shifting by 2, 4 or 8 can be simulated by lea
* set nf_write flag properly for vec. nodes of types with implicit dereferencing
* better alignment of while loop heads
* fixed adjustments of lower/upper bounds in range test optimization in case
of strictly smaller/greater comparisons (mantis
0034385)
* moved finalization of code generator temps to a node, so it can be getcopy'd
(needed for LLVM, where we need two copies of the finally code: one in case
an exception occurs, and one in case none is raised)
o also first finalize parameters and only then code generator temps, since
in theory the former could create more of the latter
+ new spilling heuristics which takes care of the usage weigth of a register,
not yet activated, can be selected by passing SPILLING_NEW when compiling the compiler
* finalizetemps nodes should never be considered equal and have side effects
* don't generate tempsfinalize nodes in except filter procdefs, as that would
finalize the parent's temps twice (fix for
0040345, mantis
0034574)
+ MovOpMov2MovOp optimization
* building on i386-linux fixed
* disable MovOpMov2MovOp optimization on x86-64 for now as it seems to break
* pass volatility information to llvm.memcpy
* thlcgobj.g_unreachable() dummy implementation + llvm override
* fixed dynamic array constants for llvm
- reverted
0039188, as this hack removes the type correctness of the
instructions, which breaks the llvm code generator. Put such hacks
in CPU-specific overrides
+ customint torddef type to create arbitraty bit-width integers
o use this to handle non-power-of-two-sized parameters for llvm
o no general support in the parser/code generator, so don't expose
* systematically capitalize first word of errormsg/sentence, patch by J. Gareth Moreton, mantis 34618
Regenerate msgid and msgtxt include files after commit 40422
* properly initialize phdr and phnum
m68k: reinstate the inc/dec tempregister type hack again in an isolated way (it was removed in
0040385, as it was breaking llvm target)
+ abi tag for i386
* arm abi tag moved into pascal file
- disable cs_opt_use_load_modify_store because for llvm because it is
apparently buggy as far as type information is concerned, and it also
results in tons of spilling
* ensure the generic version of tcgshlshrnode gets used for llvm
+ volatile() expression that marks an expression as volatile
* disable matching volatile references in the assembler optimisers, so they
can't be removed (more conservative than needed, but better than removing
too many)
o the CSE optimiser will ignore them by default, because they're an unknown
inline node for it
* also removed no longer used fpc_in_move_x and fpc_in_fillchar_x inline node
identifiers from rtl/inc/innr.inc, and placed fpc_in_unaligned_x at the
right place
* use volatile() to prevent wrong optimizations by llvm
* do not call InitTLS when a compiler is used which does not include the abi tag section
tosunits: added a few more VDI functions
+ llvm_lifetime_start/llvm_lifetime_end intrinsic declarations
* only free the temp holding the function result after we've loaded it into
the function return register (so we won't load from an already freed
temp once we emit lifetime info for temps on LLVM)
* emit temp lifetime information for llvm
o also allow freeing temps in the middle of a routine for llvm (we won't
reuse them, but it results in better lifetime information)
* add nocapture and dereferenceable/dereferenceable_or_null decorators to
parameters for llvm where appropriate
+ added all the missing test/units/* subdirectories: classes character dateutil fpcunit softfpu variants
* fixed bug that caused the "sret" argument attribute to never be used (and
a guaranteed internalerror on AArch64/llvm)
* fixed paraloc def when changing the size to OS_32
* fixed shifval for big endian (bits instead of bytes)
* set paralocations correctly for LLVM/AArch (must be register-type instead
of parameter-type based)
* only coerce the type of the leftover bytes of a record if the location
size doesn't match the number of remaining bytes
o prevents a second "single" field of a record getting interpreted as a
"cardinal"
* support OS_32/OS_64 in AArch64 cgsize2subreg() for MM registers (can happen
for records with floating point fields with the LLVM code generator)
* initialise cgpara with valid data for the C-style "array of const" para
(necessary for the LLVM backend)
* replaced some stray cpointerdef.create() calls with cpointerdef.getreusable()
* pass dynamic array parameters of cdecl routines by value on AArch64
(like on onther platforms)
o it was passed by reference as a side effect of the fact arrays in C are
pointers, but a dynamic array already is a pointer
* fixed type consistency in handler for array parameters on platforms where
these have to be passed on the caller side (i.e., AArch64)
+ internal sqrt support for LLVM (faster on all platforms, necessary on
platforms that don't have RTL support for it, as the the generic
fpc_sqrt_real just calls runerror)
* fixed dynamic array constants for non-Darwin LLVM platforms
* support for compiling the objects unit methods that expect local procedure/
function pointers using {$modeswitch nestedprocvars} functionality, activate
this for LLVM and also activate that modeswitch for a test that uses this
o also convert the IDE units to use this functionality
o requires extra typecasts because implicit type conversions from
procvar(p: psometype) to procvar(p: pointer) are not supported; on the
plus side, even those type conversions are checked for validity
o note: requires {$modeswitch nestedprocvars} in all programs/units
that rely on this functionality
* cleaned up blockaddress instruction (add type rather than hardcoding it
in the assembler writer)
* fixed taking the address of a label in a typed const for llvm (fixes
tbs/tb0468a)
* fixed <> comparisons with NaNs (use LLVM "unordered" comparison: succeed
if either operand is a NaN)
* use ccallnode.createintern() instead of
ccallcnode.createinternfromunit('SYSTEM')
+ LLVM support for the FMA intrinsics
* fixed LLVM code generator not taking into account constalignmin/max
settings for typed constants
* fixed used resulttype of char-to-shortstring typeconversion in case the
shortstring type is smaler than 255 chars
* simplify all type conversions for formal constants even for LLVM and JVM
(since these happen at compile time and don't result in generated code,
they never need extra type conversions in the code)
* force pointer-based self parameters of inlined routines in temps for LLVM
to ensure that their type gets updated
* fixed result cgsize of LLVM's second_nothing type conversion node (new
size instead of original size, which can be different in case of going
from void to something else)
* in constructors, free the temp holding self only after loading the function
result, as self is the function result there (follow up to 40501)
* fixed string constant length when going from utf-8 to single-byte code page
(mantis
0033666, patch by engkin)
* handle constructor function results that have been migrated to the
parentfpstruct the same as regular function results (see
0032687)
* addition to
0040631: also force inline self parameters that are already in
a temp into a new temp for LLVM, so their type gets updated
+ test for previous commit
* (modified) patch by Gareth Moreton: Speed improvement in case blocks, resolves
000034762
This patch improves the compiler where "case" statements are concerned, using jump tables more often and creating more efficient machine code in some situations:
* If a case block only contains one branch (not including the else block), the initial range check is removed, since this becomes wasted effort.
* If the else block is empty, the else label is set to the end label - though this doesn't decrease the code size, it takes a bit of strain off the peephole optimizer.
* On -O2 and above, some node analysis is now done on the branch labels. Most of the time this just redirects it to the end
label for empty blocks, but if the block contains a goto statement, it will redirect it to its destination instead,
thus increasing performance by not having multiple jumps (this won't get picked up by the peephole optimiser if the label addresses are in a jump table).
* Some checks now use what I call the 'true count' rather than the 'label count'. The true count includes each
individual value in a range - for example, 0..2 counts as 3. This increases the chance that a jump table will be
utilised in situations where it is more efficient than a linear list.
* For jump tables, if the case block almost covers the entire range (32 entries or fewer from full coverage),
the initial range check is removed and the gaps included in the jump table (pointing to the else label).
* pass used tls model to the assembler
* better code alignment for x86_64-win64 and x86_64-linux
* not all targets support the tls-model switch, use it only if section thread vars are used
* changed maxjumpalign:10 to 16
* changed (max)jumalign for Darwin/x86_64 from 0 to 16
* fixed wrong change of jumpalignmax from 10 to 16 in previous commit
o renamed jumpalignmax and coalescealignmax to jumpalignskipmax/
coalescealignskipmax to better reflex the meaning of these setting
(and the difference in meaning to e.g. constalignmax)
* update alignment values for Darwin
* (modified) path by Gareth Moreton to fix case handling
* updated bcase.pp benchmark by Gareth Moreton, now used also as test
* when optimizing range checks in case nodes, unsigned comparisions must be used, resolves
0034782
+ test for
0027543 which is fixed meanwhile
* fixed LLVM memory leaks
* don't emit 0-sized parameters for LLVM: clang doesn't either, and some
LLVM backends (like the AArch64 one) trigger internal errors when
encountering them
* patch by Simon Ameis: adds mcu STM32F091* to compiler unit t_embed.pas; thus internal error 200902011 is not raised anymore, resolves
0034570
* improved explanation for warning 9034
* set default abi to eabi5 on arm
tabs to spaces cleanup. no functional change
haiku-x86_64: regenerated all Makefiles
haiku-x86_64: regenerated all Makefiles, take 2
tarray15: no rodata support on a bunch of m68k platforms
tarray15: the conditions added in
0040779 should be or, instead of and (thanks Pierre)
* fixed several places where the interface crc could change:
o unsetting po_inline while parsing the implementation for various reasons
(interprocedural goto/label, accessing a local in a parent frame,
having nested procedures)
o instead handle this via the pio_inline_not_possible flag
o noreturn can no longer be specified only in the implementation
Add FPC_SYSTEM_EXIT_NO_RETURN macro for embedded target
Add x86_64-haiku target to some Makefile's
Change default debugging format for x86_64-haiku to dwarf-2, as stabs is normally disabled on 64-bit systems
* modified patch by Gareth Moreton to make ie unique, resolves
0034849
* when deciding about the case code generation in case of size optimization, the number of labels is relevant, not the covered range, resolves
0034818
morphos: add a custom lineinfo unit, prepared to parse stabs relocations in ELF relocatable objects, also featuring stronger address validation, and showing offsets in the executable instead of absolute addresses
morphos: include the new lineinfo in the build
heaptrc: empty the array for the call trace, otherwise the trace dump code will just dump the rest of the array as well, on systems where the heap is not initialized to zero, or if the memory area has been re-used
morphos: fixed stabs line number parsing, and off-by-one line issue with backtraces. i think this should be a generic fix and can be backported to the global lineinfo
morphos/lineinfo: updated the address adjustment comment added in
0040857, no functional change
* -tls-dialect is not a as option, removed it, resolves
0034901
* constrained generics are also compatible with formaldefs, resolves
0034893
* modified patch by Gareth Moreton to pool TmpUsedRegs in the assembler optimizers, resolves
0034679
* fix and enable MovOpMov2MovOp optimization on x86-64
* usage example for linux
+ support for 16 bit registers
+ patch by Marģers to support the x86 assembler instructions blsi, blsr, blsmsk, adcx, adox, movbe, pclmulqdq, resolves
0034815 and
0034799
+ avxopcodes tests also movbe and pclmulqdq
* fix MovOpMov2MovOp optimization if no -Cpcoreavx2 is used
* open arrays and arrays of consts might be only stack tainting if they are passed by value
* avoid assembler errors for the MovOpMov2MovOp optimziation in case the size of the instruction
gets changed and the first one contains a constant, resolves
0034933
* factored out OptPass1FSTP, used by x86-64 now as well
* better recognization of procedure exit code
* factored out OptPass1FLD, used bx x86-64 now as well
- removed unused function
+ tls support for x86_64-linux (not yet enabled by default)
aros/amigaos4: enabled ELF32/64 and GetModuleAddr() in exeinfo, based on the MorphOS versionexeinfo.pp
reverted accidental commit to text.inc
morphos: do not read beyond end of the .rela.stabs section. do not try to relocate stabs entries, if opening the stabs was unsuccessful
amicommon: moved MorphOS-specific lineinfo to amicommon, for upcoming AROS and OS4 support
amicommon/lineinfo: added support for i386 relocatable binaries with .rel.stab section, as used on AROS-i386 for example
aros: fixed lineinfo to build from amicommon
amicommon/lineinfo: fixed copy-paste error in PowerPC codepath
aros: only build lineinfo for i386 for now. FPC on x86_64 doesn't support stabs at all and the Amiga-specific lineinfo unit has no ARM support
amiga: enable building of heaptrc unit, enable building lineinfo and exeinfo for OS4/PowerPC
morphos: support section GC with GNU LD as well
* do not call the internal assembler if -s is passed
+ support msr regf,reg32 on arm in the internal assembler
* do not load always the references into a register in g_concatcopy
* correctly handle LDRD in TAoptBaseCpu.RegModifiedByInstruction
* first step towards supporting 32 bit targets with the LLVM code generator:
use the generic code in more cases when cpuhighleveltarget is defined
* perform extension of parameters to 32 bit for Darwin in the paraloc instead
of in the cgpara (cgpara should always correspond to the real parameter)
* fixed type correctness of and simplified the threadvar loading size
optimisation
* initialse the cgpara for the C-style varargs on ARM (needed for LLVM)
* fix loading of constants in registers in the LLVM CG if the constant
does not fit in ptrsinttype
atari: fpc now searches for the compiler with .ttp extension, as that's the default on Atari
+ introduced unit SortBase, which implements the foundation for pluggable
sorting algorithms. A default QuickSort implementation is provided by the
unit. Other units can be added, to provide other sorting algorithms (e.g.
HeapSort, MergeSort, IntroSort, etc.)
* TList and TFPList updated to use the current default sorting algorithm defined
in SortBase for their .Sort method.
* compilation fixes for many platforms after
0041167
+ added TList.Sort overload with a sorting algorithm parameter
* added PtrList to the names of the current sort algorithm callback functions and
types, to indicate they sort a list of pointers
+ added the TItemListSorter_NoContext and TItemListSorter_Context procedure
types to sortbase. No implementation for them yet. They will allow sorting
an array with elements of arbitrary size (e.g. array of records).
* the type of the ItemCount parameter changed from PtrUInt to SizeUInt
* the first parameter of QuickSort_PtrList_NoContext renamed ItemPtrs for
consistency with the other similar procedures
* the Compare parameter renamed Comparer for consistency
+ added and implemented QuickSort_ItemList_Context
* use the sortbase sorting algorithm in fgl as well
* fixed TFPList.Sort. Scary news: turns out we don't have any tests for
TFPList.Sort or TList.Sort... :(
* use Inc() and Dec() instead of v:=v+1
* hook TFPSList.QuickSort to also call the default sorting algorithm from sortbase
+ added sortbase as a dependency to unit fgl in the makefiles
+ added a simple test that tests TList.Sort
+ added a sort algorithm interface that accepts a custom callback function for
exchanging two elements. This is required for TStringList.Sort (and is the
most generic form for a sort algorithm interface that I can think of).
build/install fixes for the new sortbase unit for amiga, atari, aros and morphos
* fixed bug in QuickSort_ItemList_CustomItemExchanger_Context and
QuickSort_ItemList_Context and which can cause wrong sort results, due to not
taking into account that the pivot can be moved by the swap operation
* use the sort algorithm from sortbase for TStringList
+ added test for the sortbase unit
+ added .Sort() overloads with a SortingAlgorithm parameter to TFPGList,
TFPGObjectList, TFPGInterfacedObjectList and TFPSMap
+ nolinline modifier to specify that a routine must never be inlined
* let de LLVM parameter manager merge multiple paralocs used to represent a
single ordinal, as such splitting is handled by LLVM itself (and handling
such split locations is currently not supported by our LLVM code generator)
* set default Mac OS X target version to 10.6 for LLVM (earlier versions did
not include libunwind in libSystem, causing linking errors when compiling
on later versions)
* always emit UAL when using LLVM (clang does not and will not support
pre-UAL)
* removed unnecessary replacements of the paraloc def with arraydefs on ARM
* fixed ARM paraloc defs (for LLVM)
* update the stack alignment field of parameters when doing so for paralocs
* LLVM does not support 128 bits arithmetic on 32 bit platforms, which we
need for overflow checking -> use RTL built-ins
* fixed thlcgobj.g_rangecheck() for cpuhighleveltarget when targetting a
cpu32bitalu
* fixed the default external assembler for llvm when using -s
+ added unit SortAlgs to rtl-extra. It implements extra sorting algorithms
that can be used in place of the default QuickSort implementation from unit
SortBase. Currently, only HeapSort is implemented, but others will be added
in the future.
+ keep track of the pivot index in all quicksort implementations. No functional changes,
but will be used to prevent overlap in the divided subregions and also infinite loops
in case of an incorrect compare function.
* use a try..finally block to protect against memory leaks if the comparison
callback function raises an exception in QuickSort_ItemList_Context
* use a more robust QuickSort implementation, that is guaranteed to never loop
forever and never access index out of bounds elements from the array when
being passed an incorrect comparison function. The resulting sort order is
still undefined in this case, though.
* use SizeUInt instead of longint for the array indices in the quicksort
implementations. This:
1) allows sorting arrays with >4G elements on 64-bit systems
2) allows sorting arrays with up to 4G (>2G) elements on 32-bit systems
3) uses 16-bit instead of the less efficient 32-bit indices on 16-bit and
8-bit platforms
* partition elements equal to the pivot on both sides of the pivot, since that
leads to much better performance when sorting lots of repeating elements
+ added comment with information about QuickSort and its specific implementation in unit SortBase
+ added additional notes in the comments for HeapSort
* fixed quicksort comment about memory use - our implementation uses O(log n) stack, not O(n log n)
+ added randomized quicksort to unit sortalgs
Add sortbase unit to global units list, as it can be compiled for all CPUs
* select the middle element in the default quicksort implementation in a way
that doesn't generate arithmetic overflow for very large arrays
* some formatting changes to avoid very large lines in the source code
Fix compilation on targets without Random: add $ifdef FPC_HAS_FEATURE_RANDOM
+ added test for unit sortalgs, that tests the heapsort and randomized quicksort algorithms
+ added .Sort overloads, that specify an algorithm and use the sortbase defined
algorithms for sorting TList, TFPList and TStringList when FPC_TESTGENERICS is
defined as well. Unfortunately, I couldn't test it, because the RTL doesn't
compile with FPC_TESTGENERICS, due to errors, completely unrelated to the
sortbase changes.
+ implemented IntroSort (hybrid between QuickSort and HeapSort) in unit SortAlgs
Fix bug report
0035065 using provided patch by J. Gareth Moreton
* access the Default8087CW global variable directly from within inline asm,
instead of copying it to a local var first, since the concern about PIC code
(this asm code started out as a copy of the i386 rtl code) doesn't exist on
the i8086, since there's no such thing as PIC code on the i8086
* optimize the i8086 backwards move by using movsw instead of movsb in the Move
and MoveData procedures
+ added asm optimized version of fpc_pwidechar_length for i8086
* updated fpcm revision.inc
* properly quote pathes for objcopy calls, resolves
0035072
+ introduced unit UnixKvmBase, which is going to contain miscellaneous routines,
commonly used by the unix keyboard, video and mouse units. Currently, it only
contains the UTF8Enabled function, which was moved away from the video unit
and which will also be used by the keyboard unit in the future, as soon as
that unit also gets UTF-8 input support.
+ added a global variable Utf8KeyboardInputEnabled in the implementation of the
unix keyboard unit. Initialize it in SysInitKeyboard with the value, returned
by UnixKvmBase.UTF8Enabled (the same function that checks whether UTF-8 output
should be enabled in the video unit).
+ return enhanced key events in the unix keyboard driver; unicode not supported yet
* ppudump: Use buffered write when outputting to json or xml. It improves the output speed a lot.
* ppudump: Fixed warnings with -O3.
+ handled the 'center' (numpad 5) key properly in linux, xterm and gnome
* gnome3 (clarifies gnome version tested)
* fixed Shift-F1..F8 on the Linux console
+ added shift state to the escape sequence structure
+ add shift state to TTreeElement and DoAddSequence
* arm: Fixed crash while loading double constants with PIC enabled. This is the regression after
0041129. The crash has occurred due to usage of a rare code path. It will be fixed in the next commit.
* arm: Include pi_needs_got to current_procinfo.flags when the GOT register is accessed. It forces proper initialization of the GOT register at the beginning of a procedure. This fixes storing of a double constant to a field in a packed record and other rare copy operations when PIC is enabled.
* aarch64: According to ARM64 ABI, function's arguments and the result are not required to be sign/zero extended to a full register size. Obey this rule for all targets except iOS where sign/zero extension is required.
* don't use cg64.a_load64_loc_cgpara() for 64 bit records passed in
non-integer registers
Add testing of use of variable of class
* move the homogenous float aggregate determination function to a common
unit for ARM and AArch64
* keep track of whether a routine has a C-style variadic parameter in the
procoptions even when it's through an array-of-const parameter
* always call create_varargs_paraloc_info() instead of create_paraloc_info()
in the former case, even when no varargs parameters are specified (because
on some platforms even some non-variadic parameters need to be passed
differently, such as on ARM with gnueabihf)
* add support for HFA parameter passing for ARM hardfloat
(fixes test/cg/tcalext6)
* place the "external" directives in the interface instead of in the
implementation, because we don't support "external" in the implementation
for C varargs functions for LLVM (can't generate a stub for them)
o having "external" in the implementation also causes useless overhead
with code generators that do support this
* give an error when trying to call through to a C varargs routine with a
high level code generator
o we cannot create a high-level stub in that case
* type left-over parts of parameters as arrays of "stack slot alignment" if
they're an exact multiple of the ialignment size on LLVM. This prevents
both overalignment (e.g. remainder of 8 individual bytes on ARM
would be aligned to 8 bytes instead of 4 if typed as int64) and
underalignment (e.g. 32 bytes remainder of a record that needs to be
aligned to 8 bytes would be aligned to 1 or 4 bytes if types as
array of resp. bytes or longints)
* remove double "nocapture" attributes
* also add "noalias nocapture" to sret parameters
* use ` instead of ^ as replacement character in LLVM asmnodes, as ^ can
appear in ARM inline assembly
* properly set 8 byte parameter alignment for first parameter on ARM if
applicable
* also specify the byval alignment at the callee side
* support OS_32/OS_64 in cgsize2subreg for ARM MM registers to handle
records passed in MM registers
Fix fullcycle/fullinstall by adding missing armgen directory -Fu option if PPC_TARGET is armeb
* Removed unused local vars.
* Removed inline, since inherited is not supported.
* Do not set pi_needs_got in current_procinfo.flags at the node level, since the GOT usage can only be estimated there. Instead set the pi_needs_got flag at places where the GOT register is accessed during the code generation. This eliminates generation of the unneeded initialization of the GOT register and fixes linker errors when the _GLOBAL_OFFSET_TABLE_ symbol is referenced but no actual GOT references are present.
* i386: Minor PIC initialization improvement if the GOT register is forced to EBX.
* i386 PIC: Do not force EBX as a GOT register if tf_section_threadvars is not set. Actually forcing EBX here is a bad idea anyway.
* i386: Do not request GOT for every function call. GOT is requested only for external calls in thlcgcpu.a_call_name(). Local calls are always PC relative.
* track va_uses_float_reg also for varargs functions without varargs
parameters (see e.g. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23070 )
* modified ReadKey to return TEnhancedKeyEvent (partially constructed - contains only asciichar and virtualscancode)
* moved ReadKey after GetEnhShiftState, so it can be used to return the shift state
* return the shiftstate in ReadKey
* the variables only used by ReadKey made local, and not visible in its nested routines
* simplify an 'if A' followed by an 'if not A' sequence to 'if A then...else...'
* fixed off-by-one error when putting a character back into the input buffer
+ introduced PutBackIntoInBuf - procedure that returns a key back into InBuf
- removed the IsAlt parameter from ReadKey, because it is not used
- removed the IsAlt local variable, because it is not used
- removed some no longer used commented out code
- removed FAltKey, because it is not used
* set char to 27 for the Esc key (for the linux patched console) in the sequence table
* handle sequences that return both char and scan code
* the type of key_sequence.char changed from byte to 0..127 to enforce ASCII only use
- removed check for the kbEsc scan code, since this is now made redundant,
thanks to the fact that the sequence can return both non-zero AsciiChar
and ScanCode at the same time.
- removed commented out code
- removed commented out code
* simplified the initialization of MyScan, since ReadKey now returns a record, that contains both AsciiChar and ScanCode
* initialize SState from the shift state, returned by ReadKey
* moved the 'if not again' part after the repeat..until loop; it behaves the same, but improves code readability
* better alignment values
+ added UTF-8 keyboard input support
* reject surrogate characters when decoding UTF-8 keyboard input
* preserve the unicode keycode returned from ReadKey in the result of SysGetEnhancedKeyEvent
* fix for
0041416: 64 bit values on 32 bit platforms can of course also be
passed in memory
+ add ConvertEnhancedToLegacyShiftState to the interface of unit keyboard
* switch to using enhanced key events in the drivers unit
+ add TEvent.UnicodeChar to the drivers unit
* fixed the linux keyboard patching table for handling F11 and F12 properly
+ also patch Ctrl+F1..Ctrl+F12 when running as root on the linux console, so they can also be read properly
* initialize function result for variadic functions (fixup for
0041420)
Commit patch submitted by J. Gareth Moreton in bug report 35180
+ added essAltGr to TEnhancedShiftState and added proper AltGr handling for the Linux console
+ added proper Windows AltGr support for the enhanced shift state
+ enable the enhanced key events permanently on windows
- removed the no-longer-used code for dealing with the legacy key events
* CheckAltGr moved above HandleKeyboard, because it will be invoked from there also
* update the keyboard layout info before every keystroke, since Windows can
change between multiple layouts, while the program is running
* optimized UpdateKeyboardLayoutInfo, so it only calls GetKeyboardLayout once
and only performs the HasAltGr check in case the keyboard layout has actually
changed
+ added comments, explaining the enhanced shift states in detail
+ added comment about a Windows bug, which causes the keyboard layout change
detection code to not work
Fix tmoddiv4.pp test failure with -O1 option for powerpc64 as suggested by Jonas
* ppudump: Fixed a warning regarding text clipping.
* only add hidden parameters for objectdef methods after generating the vmt,
so that they take into account inherited calling conventions (mantis
0035233)
o don't needlessly calculate the paraloc info when generating a JVM mangled
name
+ test from mantis
0035224 (already works)
Regenerate Makefile's after fpcmake change in commit
0041721
* also accept {$elsif} after {$if(n)def} (mantis
0034858)
* fix msgtxt array size if the text size is an exact multiple of 240
* clean up some things regarding explicit paraloc handling. this should fix m68k-amiga and powerpc-morphos builds after
0041716
* reinstate the internalerror removed in
0041730 for i386, as that was a valid condition to verify
* Added unicode sample using unicodestring
+ Add variables to use gppc386 utils more easily:
Use DEBUG_CYCLE=1 to generate cycle using gppcXX at each stage,
i.e. running ppcXX through gdbpas, using utils/gppc386.pp source,
compiled and copied to gppcXX.
+ Add other DEBUG_XXX varialbes, allowing to use gppcXX binary
at a specific level in cycle.
if DEBUG_PPXX is set, PPXXPREFIX variable will be set to 'g'
leading to the use of g$(PPXX) compiler, which will run $(ppXX)
compiler through gdbpas.
* added extra header to ppu inside a subsection, so we won't run into
trouble when the ppu version hits 255
* also moved several ppu flags to a set inside that section
* hopefully fix fpu emulation ppu header flag check after
0041846
+ added the initial implementation of my C structure checker code generator
tool, named h2paschk. This is currently a separate tool, that requires a
manually crafted input file with a special syntax (example is included as a
comment in the source code), that contains descriptions of all the records
that need to be checked, but it is planned to add support to h2pas to generate
these files automatically, since this would be very useful.
+ added h2paschk.pas to the makefiles
* documented usage of ppuversion and ppulongversion
* check CurrentPPULongVersion in ppumove
- Add support for .option directive in riscv assembler.
- Use addiw when adjusting U32 to S32
- Port RISC-V64 startup code to native inline routines.
+ added OpenBSD RTL structure checker description file for use with the h2paschk
tool. Currently only checks the stat and dirent structures, but more will be
added in the future.
+ added pollfd to the openbsd structure checker file
+ more structures added to the openbsd structure checker file: utimbuf, flock,
tms, timezone, rusage, TRLimit and iovec
- Fix UTX* optimizations that didn't consider the optional ROR parameter.
Move update of fields counting allocated memory to after SysGetMem call
Avoid arithmetic overflow inside heaptrc unit on this test
* insert the hidden parameters for objectdef methods after resolving
overrides but before generating the VMT, so that these hidden parameters
are part of the procdefs stored in the VMT (fixes some LLVM type errors
after
0041716)
* use ".set" for aliasing global symbols on Darwin, instead of declaring
symbols after each other
o removed the .reference hack that was used previously
+ added h2paschk structure checker files for the DirectDraw and DirectInput
header translations, used by PTCPas.
Avoid C 64-bit compiler warnings by using %lu instead of %u for sizeof and offsetof
* replaced TCmdStrListItem getter function with a property
* moved sleb/uleb128 helpers to cutils and use SarInt64() intrinsic (based on
patch by J. Gareth Moreton, mantis
0035327)
* micro-optimization for tentryfile.getbyte() (based on patch by
J. Gareth Moreton, mantis
0035406)
Improve syscall number testing script:
+ Add support for parameters:
-v sets verbose variable to 1
VAR=value gets evaluated.
* moves to rtl/$os if called at diferent level.
+ check if there is a incude directive in sysnr.inc file.
+ Add compilation of C source code with the C variant of the syscall number.
+ Support 32 and 64-bit version of C compilation for systems
allowing 32 and 64-bit executable (like x86_64-linux).
+ Add 'preprocessing' using AWK to test {$ifdef CPUXXX} macro.
+ Add summary at end of script.
* Rename check_syscall_number to check_c_syscall_from_fpc_rtl
* Rename check_syscall_number_reverse to check_c_syscall_in_fpc_rtl
* Try to remove most intermediate files.
+ Generate add_missing_syscalls.inc file if numbers are missing.
Eliminate wrong line (bug report 35441)
Fix compilation of testsuite program
Avoid warnings when -v0 is used by using $push/$pop
* optimized and simplified tai_aggregatetypedconst destruction
+ Add handling of simple types and constants
+ Add ReadID helper procedure inside ProcessH2PasChk method
Add simple types and some constants
* freebsd and openbsd also use sys/syscall.h header
+ Add AWK parser to removed parts of source not concerning current CPU
(only handles CPUXXX like CPUI386)
More improvements to script testing syscall numbers
- removed ttypedconstkind parameter from tai_simpletypedconst constructor,
as it always has to be tck_simple anyway
* fixed double free in LLVM code generator after
0041963
Link against libc to avoid __guard_local not found symbol failure at link time for OpenBSD target
Link against libstdc++ and libc to avoid linking error for openbsd OS
Use %X instead of %x for C hexadecimal constants as Free Pascal hexstr uses uppercase characters A to F for values 10 to 15
Add more system header constants
* Also allow '-' in include file names
+ Add os_cpu and cpu_source variables
* Cope with aarch64 GNU C compiler that does not support -m64 option
+ Add support for arm test on aarch64 machine
* Better accept expressions instead of constants in C #define
Add script to use h2paschk on t_OS.h2paschk file for rtl tests for system header compliance
Add first linux RTL compliance test file t_linux.h2paschk
Also remove -m32 option for arm native GNU C compiler
* Improve handling of command line args setting variables (did not work if it contained spaces)
+ Group all recognized macros into list_defines in preproc.awk file
+ Convert Pascal style hexadecimal constants into C style
+ add support for MultiHelpers modeswitch by Ryan Joseph for Mantis
0035159
+ added tests
* Add Read/Write(Buffer) TBytes, ReadData/WriteData, ReadBufferData/WriteBufferData to be Delphi compatible
* set correct fileinfo for statements_til_end() block
* fixed floating point div-by-zero RTE code on Darwin (208 instead of 200,
fixes webtbs/tw32671)
* fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit
+ support for verifying whether a case statements handles all possibilities
(based on patch by Martok)
o enabled by default in ISO and Extended Pascal: compile-time error if not
the case in ISO mode, warning and run-time error in Extended Pascal mode
o warning enabled by default in all other modes for boolean, enumeration and
subrange integer types with ranges different from the default ones
(i.e., different from 0..255, -128..127, 0..65536, etc)
o warnings for all ordinal types can be enabled in all modes with
-CC
* FIx compilation for platforms that do not have extended
* FIx compilation with 3.0.4
- removed explicit linking of ptest.o, as that happens already automatically
due to the "uses ptest" and breaks LTO (then both ptest.o and ptest.bc
get linked, resulting in duplicate symbols)
- removed test that shortstring is aligned to a multiple of pointer size,
as the compiler does not guarantee any such thing
* Make explicit that Integer is 32-bit
* fix overflow errors in case coverage code
* fixed crashes on platforms using parentfpstructs with generic routines
that contain nested functions (when specialised, procedures don't have
the main function of the unit/program as parent procinfo)
* fixed Darwin/AArch64 flt/int-div-by-zero error codes (fix for 42045, as
noted by AlexeyT)
Disable 64-bit version of CPU_SOURCE is 32-bit
Allways use local pt variable to ameliorate readability of code
Remove two warnings about missing case (others are still present in ppudump.pp source)
Fix arm-aros rtl compilation
* DFA now takes case-completeness into account (mantis
0035598)
* updated German message files (patch by Karl-Michael Schindler,
mantis
0035559)
* replaced fpcunit custom code to obtaining a caller site with a call to
CaptureBacktrace (prevents crashes when compiled with LLVM backend,
and is generally more robust)
* append rather than insert the alias symbols for the program/procedure
initialisation/finalisation routines
o this ensures the procdef's mangled name and its first symbol match,
which is required for Darwin when generating debug information and
using ".set" directives to define alias symbols, because a symbol
defined via ".set" cannot be used in a data relocations (and the DWARF
debug generator uses the default mangled name, which used to correspond
to the alias symbol due to the "insert" instead of "append")
* don't double-define function aliases for Darwin defined via ".set" directive
* fixed loading parent frame pointer for nested procvars on targets that
that use explicit parentfp structs (fixes webtbs/tw17379 for llvm)
* disabled low-level hack test for LLVM
* made the fields array parameter of llvmgettemprecorddef "const", as it
doesn't get modified and hence doesn't need to be copied
* abstracted registration of library init/fini routines (to be able to add
LLVM support)
* replaced non-breaking space with space (patch by J. Gareth Moreton,
mantis
0035602)
Change lib_exit to fpc_lib_exit in missed sources (to fix breakages after commit
0042104)
Add DEBUG_PPU conditional code to be able to debug ppu changes (only useful for debugging purposes)
* more fpc_lib_exit change compilation fixes
* disable regular array -> dynamic array type coversion support unless
{$modeswitch arraytodynarray} is active (mantis
0035576)
o changed compiler to compile without this modeswitch
o added the modeswitch to a test that depends on it
+ Added test object files for x86_64-haiku.
Fix division of constants on ARM thumb without long multiplication.
* support for handling subsetrefs with bitlen > AIntBits in a_load_subsetref_reg() and
a_load_const/reg_subsetref() (needed for handling 32 bit platforms using a purely
high level code generator like LLVM's, and may also improve the situation for
16 bit platforms)
o can probably be optimized to split them into parts that cover partial word loads
and complete word loads (to reduce useless merging)
* properly return from the signal handler on ARM/Linux instead of calling
HandleErrorAddrFrame directly (fixes psabieh exception handling, and
generally is cleaner)
Added T2 form of LDR/STR for SP relative forms.
Fix compilation with release 3.0.4 ppcarm
+ added TNewExeHeaderFlags type, describing the flags in the header of win16 executables
+ added enum TNewExeTargetOS
+ added type TNewExeAdditionalHeaderFlags
- removed "cmp 0/1, pasbool1" optimization for llvm because this discards
the upper 7 bits of the boolean, while other platforms take it into
account (even though they're technically always required to be 0, and
the value is undefined if they're not)
* fix bootstrapping with 3.0.x and -O3
* Nintendo DS port updated to libnds ver.1.7.3
+ added set TNewExeSegmentFlags
* prettify the "Use of +offset(%ebp) is not compatible with regcall convention"
and "Use of +offset(%ebp) for parameters invalid here" warning messages by
showing the exact register used (bp, ebp or rbp) and using the original asm
syntax (Intel: [EBP+offset]; AT&T: +offset(%ebp) )
* prettify the "Use of -offset(%ebp) is not recommended for local variable
access" warning by showing the exact register used (bp, ebp or rbp) and using
the original asm syntax
+ introduced the asmmodes_x86_intel constant set
+ add asmmode_standard to the asmmodes_x86_intel set on i8086, because i8086 defaults to intel syntax
* prettify the "Use of -offset(%esp), access may cause a crash or value may be
lost" warning by showing the exact register used (esp or rsp) and using the
asm syntax (Intel or AT&T) used originally in the code
+ added the asmmodes_x86_att set constant - similar to asmmode_x86_intel, but for AT&T asm syntax
* suppress warning for targets without MM registers
* Updated Wii port to libogc 1.8.22
+ added class TNewExeHeader that encapsulates a NewExe header and allows writing it to a file
+ initialize some defaults in the TNewExeHeader constructor
+ added class TNewExeOutput. Not functional yet.
+ added a win16 internal linker class. Not functional yet.
+ implement TInternalLinkerWin16.DefaultLinkScript by copying the MS-DOS
implementation (not correct, but a good starting point)
- remove the tiny memory model code from TInternalLinkerWin16.DefaultLinkScript,
because the Win16 target doesn't support the tiny memory model
+ register a win16 dll scanner. Not functional yet.
+ added constants for the known CC_OmfExtension record subtypes (IMPDEF and
EXPDEF are the ones we care about - they are used in win16 dll import and
export libraries)
+ dispatch the IMPDEF and EXPDEF records to the newly introduced ReadImpDef and
ReadExpDef methods (not implemented yet)
+ use the new CC_OmfExtension_EXPDEF constant instead of the direct magic value
when writing export libraries
+ use the new CC_OmfExtension_IMPDEF constant instead of the direct magic value
when writing IMPDEF records
+ introduced the TOmfRecord_COMENT_Subtype abstract class
+ introduced the TOmfRecord_COMENT_IMPDEF class. Use it to encode the IMPDEF
records instead of encoding them directly.
+ introduced the TOmfRecord_COMENT_EXPDEF class. Use that to generate export
libraries instead of generating the magic string directly.
+ Implemented TOmfRecord_COMENT_EXPDEF.DecodeFrom
+ keep (certain) arrays in registers if they are used with constants indices only
* building on powerpc and arm fixed
+ implemented TOmfRecord_COMENT_IMPDEF.DecodeFrom
put #ifdef TARGETOS / #endif around the gcclib section, otherwise the various host paths can cause a hard to debug mess during crosscompiling in some cases
* disable array and record regvars for all cpuhighleveltarget platforms
Merge: b9c16b98d1 b08b6a17bd
* reintegrated debug_eh branch
o the LLVM compiler is now functional for Darwin/x86-64, and also (but less
tested) for Linux/x86-64, Linux/AArch64 and Linux/ARMHF. See
https://wiki.freepascal.org/LLVM for details and the current state
o Dwarf-eh-based "zero-cost" exceptions are available with the regular
code generators for Linux/x86-64 and Linux/i386 if the compiler is
compiled with -dpsabieh
* use variables of correct size with movd (test checks whether movd only
reads 32 bit even when destination is xmm register) (mantis
0035701,
as noted by J. Gareth Moreton)
Commit of new debug feature implemented by J. Gareth Moreton
Allows compilation of compiler using -dDEBUG_NODE_XML
which will generate a NAME-node-dump.xml file for each
unit, program or library compiled,
containing a XML description of the nodes handled during
compilation of the unit, program or library.
* one more disable location of DoPipe in case not on a Unix platform
(mantis
0035743)
* partial fix for Mantis
0035346: more "inline" directives for TCStream and TCMemoryStream methods
* remaining fix for Mantis
0035346: add "inline" directives to various methods of tentryfile
* simplify and optimize generated LLVM code for case statements
* also register symbols referenced from assembler via asolutevarsyms
* volatile syms should never be regable
* LLVM-specific support for bsr*/bsf*
* LLVM-specific support for popcnt
* record in ppu flag whether or not symbols are ansistrings, and use that
flag in ppudump rather than hardcoding targets (it's also the case for
LLVM)
- removed remnants of old ppu file support (ppudump does not support any
other ppu version than the current one anyway)
* fixed compilation with -dTest_Double_checksum_write
Commit modified file after commit
0042260
Commit patch submitted in bug report
0035787 by Gareth Moreton
* refactored slightly the BEOS ifdef in unixkvmbase.utf8enabled
* check the LC_CTYPE env var instead of LANG on OpenBSD to check whether UTF-8
is enabled
* forgot to commit tests in
0042329
* fixed range test optimization for signed types and enabled it for them
Add support for softfloat in RISCV RTL.
- Fix bug in 64bit softfloat double negation.
- Clean up handling of CPU/FPU type handling in RISCV.
- Do more fixes to get RISCV32 working.
- Fix most soft multiplication handling for generic RISCV code. Still missing a few.
- Add RISCV embedded targets.
* maybereplacewithtemp/maybereplacewithtempref: also create a temp in case
of possible side effects
- disabled ogmacho, as it can no longer deal with the assembly we generate
* on Mach-O, PECOFF and ELF platforms, write local symbols as hidden/
private_extern (or plain global in case of PECOFF, as the effect is
the same there): visible across object files, but they become local
when linked into a binary/library. This enables cross-unit inlining
of functions accessig implementation-only symbols.
* factored out checks whether a procdef's symbol needs to be global, and
the generation of the procdef's asmsymbols
o also removed unnecessary definition of procdef alias symbols for Darwin
(they are already defined in ncgutil.alloc_proc_symbol)
* fix tobjectdef.vmt_def to search in the correct symtable
* always register vmt defs (so they get written to the ppu) in case of llvm,
because it may need this def in case a method from a class defined in the
implementation of unit gets called from an inlined routine that gets
inlined in another unit (normally that vmt def would not get written to
the ppu file, as it can't be referenced from the interface and it's also
not necessarily directly referenced from the inline routine's nodes)
(fixes sdo_dataobject compilation with LLVM after enabling cross-unit
inlining of methods accessing static symbol table symbols)
+ parse the IMPDEF record in TOmfObjInput.ReadImpDef
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 1/3]
Implemented attributes for class types and properties (based on work by Joost van der Sluis). Added TCustomAttribute - a base class for attributes. Added TUnitInfo record to RTTI. It contains the unit name and unit options (for now only a flag which specifies if the unit contains attributes). Added several tests for attributes.
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 2/3]
Regenerated compiler/msgidx.inc and compiler/msgtxt.inc.
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 3/3]
Added FPC_REQUIRES_PROPER_ALIGNMENT to TUnitInfo definition. Added FPC_HAS_EXTENDED_RTTI define.
* rename trtti_attributesdef to trtti_attributes_list
* change boolean parameters for try_consume_unitsym to a set
* rename custom attributes related tests to something more sensible
* instead of declaring another type with a 'attribute' suffix, *search* for another type with a 'ATTRIBUTE' suffix (Delphi allows declaring both a TFoo and TFooAttribute in the same unit)
+ added test
* also check for invalid attribute data in tests
* instead of embedding the attributes inside the class' and property's type data only store a reference to a table of attributes
* it's more correct for GetPropAttribute to return a TCustomAttribute instead of a TObject
* use a Word instead of a Byte for the attribute index (after all the compiler writes a Word to the count field)
* always write a class' reference to the attribute table, even if the unit does not have attributes
- remove unit info and related code again as that will be handled similar, but differently with dynamic packages
* fix TClassData by including the AttributeTable at the right location
* rename TAttributeData to the more appropriate TAttributeTable
* streamline retrieval of attributes (both in TypInfo and RTTI units)
* considering that at least in theory every symbol and every def can carry RTTI attributes (Delphi only supports property and field symbols), move the rtti_attribute_list to tstoredsym/tstoreddef
* as attributes can be part of any type they are best suited in a common part of TTypeData
* fix code formatting (no code changes)
* check that we indeed have a type node and nothing else
* with a type node it's not necessary to check whether it's typedef is assigned
* fix code formatting (no code changes)
* rework code for parsing attributes to only allow constant expressions; Delphi only allows those as well and better we don't open *that* pandora's box just yet
+ add a test for overloaded attribute constructors
* fix code formatting (no code changes)
* store the parameter nodes in the attribute object as well (we need to write them to the RTTI as well as store them in the PPU)
* ensure that any potentially created constructor call is freed if the attribute is not bound to a def or sym
* instead of collecting the raw parameters we need to collect the parameters as passed to the call as there might be type conversions involved
* to be on the safe side: don't include AttributeTable fields when cycling
- remove unneeded local variable
* better check for a valid call node
* take a copy of the constructor assignment node (and free it together with the attribute)
+ add methods for the const nodes to directly emit their constant data to a constant builder
Note: reduce code duplication, especially for the tsetconstnode (with its descendant tcgsetconstnode)
* the RTTI of an attribute not only consists of the creation function, but also of the attribute's type, a pointer to the constructor and a data blob containing the constant parameters
+ added test
* add a remark that's going to be important once extended RTTI is supported (Delphi programs crash if an attribute's constructor is used that does not have any extended RTTI)
* move binding of a dangling attribute list to a sym's/def's attribute list to a class procedure of trtti_attribute_list
* make the reference to the TCustomAttribute type global
* generate construction function for the attributes used in a unit using a more straight forward approach
ToDo: "collect" attributes of same type and same argument list and generate constructor only once for them
* trtti_attribute_list.bind already checks whether the dangling attribute list is assigned or not
- remove code to create an attribute using a synthetic function
- remove functionality to get the code block when parsing again (let's open this pandora's box only when really needed...)
- symbolname field is no longer required
+ add functions for syms and defs and write sub entries of the sym/def to PPU and loads them again
* explicitely store the procdef of the picked constructor of the attribute
* store attribute information in PPU; this is less important for the compiler, but more for e.g. Lazarus when dealing with binary only units
* increase ppu version
+ added test
* adjust ppudump to handle attributes as well
ToDo: output parameter nodes as well
* disable [...] syntax for procedure directives if modeswitch "prefixed attributes" is enabled; they conflict otherwise and it's not easily resolveable
+ added test
* use two empty lines between method definitions (no code changes)
* correct identation (no code changes)
* allow custom attributes for all type declarations that are not a simple alias
+ added tests
* don't free the constructor call in trtti_attribute_list as that is already freed in the destructor of trtti_attribute
* free unbound attributes
* check for unbound attributes inside classes (currently they are only allowed for published properties)
Note: no tests yet as sooner or later most will be dropped once extended RTTI is added
* allow use of multiple, comma separated attributes as Delphi allows that as well
+ added test
* adjust error message when attributes are unbound
* regenerate msg*.inc files
fixed the messy state of messages after recent custom attributes merge. fixed a typo, fixed double definition of message 3350, restored a message that was removed but still used, so the build passes at least.
* get rid of the scanner message for attributes for real this time (sometimes I *really* hate Git -.-)
* TRttiDataCommon is required outside of the RTTI and DynArray include files as well
* Tenum_typedata needs to include the Common record as well
* first bunch of fixes for rtti for arm after attribute commits, fixes mostly alignment issues
- removed maxcrecordalign parameter/field from recordsymtables, as this value
cannot be modified in the settings (so we can directly use the one from
current_settings)
* properly align rtti for orddefs
* disable UCS4String if dynamic arrays are disabled
* fix test on systems where Currency is calculated using floating point types
* fix for Mantis
0023071: also store local symtable in the PPU if the procdef is generic as we need it to resolve genericdefs to nested types
* increase PPU version now that all generic procdefs store their local symtables
* don't reuse defs for attribute lists or individual attributes with parameters, as
they don't have a constant size
o fixes LLVM internalerror 2015122402 for test/tcustomattr{12,13,19}
* search dynamic string data record in correct symtable in
tllvmtai_typedconstbuilder.emit_string_offset
o fixes LLVM internalerror 2014080406 for test/tcustomattr14
* fix for Mantis
0035866: parse_paras does not check whether the expressions are really constant, so check that manually
+ added test
* don't bother finding the correct constructor if the attribute isn't a TCustomAttribute descendant anyway; simply skip the parameters in that case
+ added tests
* tests with Delphi showed that an attribute class must explicitely declare a parameterless constructor if it should be used, cause TCustomAttribute.Create is private
Note: this also means that TCustomAttribute itself can not be used as an attribute
* adjusted existing tests
+ added test
* more fixes to rtti after attribute branch merging
* fixed field alignment when reusing an anonymous recorddef for LLVM and
the LLVM layout of an instance does not match the original one
(e.g. because it contains procdefs of procedures with different
signatures)
* reverted
0042463, the internalerrors were caused by a bug in the LLVM typed
constant builder
* some runtime errors fixed, if compiled with -CrR
* handle records with managed fields correctly after attribute merge fixes
* don't apply user-specified constant alignments to RTTI data
- fixed check for determining whether requesting the size of an array is
an invalid operation after
0042479, as regular arrays can have high=-1
(mantis
0035874, already checked by trange3)
* i8086 compilation fix after changeset 42390
* fixes TInterfaceRawData to match TTypeData
* we halt if the currency values are *not* equal, not if they're equal... m(
* generate correctly aligned string RTTI, fixes trtti7 on ARM
* fix writing of floating point attribute parameters
* fix Currency comparison... again...
- Fix overflow checking in software multiplication routines. Overflow checking should also be enabled for the unsigned multiplications.
- Call FPC_Overflow instead of multiple calls to save on size.
+ enable the win16 internal linker if the compiler is compiled with the
WIN16_INTERNAL_LINKER define. Since the win16 internal linker isn't completed
yet, this define is not enabled by default.
* (non-ancient) Delphi versions that accept explicit ordinal -> floating
point typecasts behave the same as FPC (convert the value) rather than
as Turbo Pascal (reinterpret the bit pattern) (mantis
0035886)
* fixed distribution of random(int64) based on patch by Pangea
(mantis
0035878)
- removed tests as modern Delphi versions behave differently (mantis
0035886)
* simplified random(int64) code
* fix alignment of ParamList
* fix test for architectures using aligned rtti
* fix compilation of tests on 32-bit systems (doesn't (shouldn't?) change their behavior)
* use the size of the generated anonymous record instead of the manual tracked size so that any padding is picked up as well
* correctly align the stream on targets that require proper alignment
* compilation of tests on 32 bit targets fixed, using while loops so keeping the type sizes
* set sharedlibext for win16 to '.dll'
+ implemented TNewExeOutput.GenerateLibraryImports, based on the ogcoff implementation
+ fpu_capabilities for arm
* some code converted to use fpu_capabilities
* test needs exception checking
* make stack non executable on arm-linux
* insert FPC_THROWFPUEXCEPTION call into the correct assembler list
+ added an ImportLibraryList property to TOmfObjData
+ added method TOmfObjData.AddImportSymbol, which adds symbols, imported from an
external dll to TOmfObjData.ImportLibraryList (similar to
TInternalLinker.AddImportSymbol)
+ call TOmfObjData.AddImportSymbol for every ImpDef record read from an object file
+ also add and resolve import symbols coming from OMF object modules
+ create a TNewExeSection class
+ split the win16 executable into sections
Try to fix alignment issues in RTTI code for 64-bit targets which require proper alignment
Also recompile rtl using FPCFPMAKE before bootstrapping in fpmkunit directory (helps for cross-compilation)
+ added an TNewExeOutput.Order_ObjSectionList override and sort obj sections by
class name first, then by name, then by initial order
+ write the NewExe header in TNewExeOutput.writeData
* don't crash in TOmfObjSection.MemPosStr if MZExeUnifiedLogicalSegment isn't set
+ added dummy overrides for TInternalLinkerWin16.GetCodeSize, .GetDataSize and
.GetBssSize, because the default ones crash
* fix for Mantis
0035903: apply patch by J. Gareth Moreton to update the copyright year to 2019
* fix for Mantis
0035918: don't set the mangledname for the attribute's constructor function; let the compiler do its job instead
* create NewExe sections, corresponding to 64kb segments
* override MemPos_Start for the NewExe exe output and perform the whole MemPos
stage inside of it, because the linker script contains only dummy section
names and thus none of the sections get their MemPos set, while using the
default implementation
+ add a segment number (MemBasePos) to TNewExeSection
+ introduced TExeSection.MemPosStr - a virtual method for converting the
section's memory position to string for the linker map file. This can be
overriden e.g. for segmented exe formats.
+ added an TNewExeSection.MemPosStr override that outputs a segment:offset string
* combine the data, bss, stack and heap into the same NewExe segment
+ adapted TOmfObjSymbol.AddressStr to show correct segment:offset for NewExe files as well
+ adapted TOmfObjSection.MemPosStr to output segment:offset for NewExe executables
* reset CurrMemPos after each NewExeSection to ensure each segment starts at 0 offset
+ fill the auto data segment number in the NewExe header
+ fill the program entry point address in the NewExe header
+ set the initial SS:SP in the NewExe header
* factored out the conditions under which add nodes need to perform
overflow checks
o in particular ensure that cpu-specific overrides don't perform overflow
checks when nf_internal is set
* an incomplete case statement is not an error in ISO Pascal (mantis
0035910)
* give a compile-time error in ISO/Extended Pascal if the compiler can prove
the case selector value is not handled, and a warning in other modes
(mantis
0035915)
o trigger the case node simplification at the end of the case node typecheck
pass, like for other nodes
* test from mantis
0035897, already fixed
Avoid range check error when compiled -Criot option
Fix internal error by using same code to set checkoverflow variable as in powerpc/nppcadd unit
+ fill the segment table start offset in the NewExe header
+ added the missing NewExe segment attributes as properties to the
TNewExeSection class and create the NewExe segment table into the .exe file.
Not all of the properties are initialized yet, though.
+ initialize the flags for the code and data segments in the NewExe header
+ recognize stack segments and fill the total stack size in the NewExe header
* convert the internal name from IMPDEF records to upper case if the
CaseSensitiveSymbols option is off
+ detect heap sections and fill the local heap size in the NewExe header
m68k/vasm: remove bits of Linux support. this combination has never really been tested or supported, and got broken recently. m68k-elf-linux has good enough GNU binutils anyway
Fix change_endian code to read double and single float data
* Issue file change before line and column change in token writes to allow for better display in ppudump utility
Fix bug report 35937 by simple assembly code change and add test
+ write the resource table (empty for now) to NewExe files
+ create the resident name table in the NewExe file writer
+ added constructor to TNewExeResidentNameTableEntry that allows you to
initialize this entry's ordinal number
+ added property that determines the resident name table size in bytes and use
it to fill the offset to the start of the module reference table in NewExe
files
+ fill and write the NewExe imported name table
* small optimization in TNewExeOutput.FillImportedNameTable - only add the
library name once, instead of trying to add it (which causes a look up) for
every imported symbol
+ calculate the table offset of each string in the NewExe imported name table
* strip the '.dll' extension from the library names before adding them to the
NewExe imported name table
* when reading ImpDef records, add '.dll' to the libname if it has no extension,
in order to be consistent with externals, declared in pascal files. The '.dll'
extension will be stripped later, when generating the NewExe file.
+ fill the NewExe module reference table
* fixed wrong typecast in TNewExeImportedNameTable.GetSize
* strip the '.dll' extension from the library name when creating import
libraries as well. This ensures that NewExe binaries, created by the external
linker don't have the '.dll' extension in them.
+ fill the NewExe entry table offset
+ added class for writing the NewExe entry table - not fully implemented yet
+ parse ExpDef OMF records and delegate them to a new method
TOmfObjData.AddExportSymbol (not implemented yet)
+ implemented TOmfObjData.AddExportSymbol - the exported symbols are recorded in
the newly introduced TOmfObjData.ExportedSymbolList
+ assign ordinals to all exported symbols
+ added class TNewExeEntryPoint and methods/properties to TNewExeEntryTable to
make it hold a list of entry points
+ add entry points to the entry table for all exported NewExe symbols
+ write the entry table to the NewExe file
* the resident table entry/table classes renamed "export table", because the
same classes can be used both for the resident and nonresident tables (they
share the same structure)
+ also write the nonresident name table
+ write the module description as the first entry to the nonresident names table
- suppress the warning that the $D directive is not supported on i8086-win16
+ pass the description option to wlink to set the module description string when
using the external linker on the win16 target
+ add all exported by name symbols to the resident or the nonresident name table
+ also copy ResidentName in TOmfObjData.AddExportSymbol
+ enable the ISSHAREDLIBRARY option for the win16 internal linker when creating a dll
+ enable the IsDll flag in the NewExe header when creating dlls with the
internal linker. Also make a SINGLEDATA (instead of MULTIPLEDATA) executable
and entry points in this case.
+ allow creating win16 dlls with the wlink external linker as well
+ added system_i8086_win16 to the supported targets of the i8086 omf internal
assembler/object writer
+ pass the ParmCount parameter from the ExpDef OMF record to the NewExe entry
point
* applied patch by Blaise.ru to reduce code duplication in trecorddef.create_global_internal()
* apply patch by Blaise.ru to pass the record name for an internal record more efficiently
Merge: fc46b6c57c 70a2b0b260
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
U compiler/i8086/
008086int.inc
U compiler/i8086/
008086nor.inc
U compiler/i8086/
008086rni.inc
U compiler/i8086/
008086std.inc
U compiler/i386/i386prop.inc
U compiler/i386/i386att.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386int.inc
U compiler/i8086/i8086int.inc
U compiler/i8086/i8086op.inc
U compiler/i8086/
008086dwrf.inc
U compiler/i8086/
008086ari.inc
U compiler/i8086/
008086con.inc
U compiler/i8086/
008086nasm.inc
U compiler/i8086/
008086num.inc
U compiler/i8086/
008086stab.inc
U compiler/i386/i386nop.inc
U compiler/i386/i386op.inc
U compiler/i386/i386tab.inc
U compiler/i386/r386ot.inc
U compiler/i386/r386ari.inc
U compiler/i386/r386att.inc
U compiler/i386/r386con.inc
U compiler/i386/r386dwrf.inc
U compiler/i386/r386int.inc
U compiler/i386/r386iri.inc
U compiler/i386/r386nasm.inc
U compiler/i386/r386nor.inc
U compiler/i386/r386nri.inc
U compiler/i386/r386num.inc
U compiler/i386/r386rni.inc
U compiler/i386/r386sri.inc
U compiler/i386/r386stab.inc
U compiler/i386/r386std.inc
U compiler/i8086/i8086prop.inc
U compiler/i8086/i8086att.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/
008086ot.inc
U compiler/i8086/
008086att.inc
U compiler/i8086/
008086iri.inc
U compiler/i8086/
008086nri.inc
U compiler/i8086/
008086sri.inc
U compiler/x86/agx86int.pas
U compiler/x86/rax86int.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/rax86.pas
U compiler/x86/x86ins.dat
U compiler/x86/agx86att.pas
U compiler/x86/cpubase.pas
U packages/rtl-objpas/src/inc/rtti.pp
U packages/rtl-objpas/tests/tests.rtti.pas
U rtl
U compiler/x86_64/x8664att.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/
008664con.inc
U compiler/x86_64/
008664nasm.inc
U compiler/x86_64/
008664sri.inc
U compiler/aasmtai.pas
U compiler/scanner.pas
U tests/utils/avx/readme.txt
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664op.inc
U compiler/x86_64/
008664att.inc
U compiler/x86_64/
008664iri.inc
U compiler/x86_64/
008664rni.inc
U compiler/pp.lpi
U compiler/msgtxt.inc
U compiler/ppcx64.lpi
U compiler/x86_64/x8664pro.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86_64/
008664ari.inc
U compiler/x86_64/
008664int.inc
U compiler/x86_64/
008664num.inc
U compiler/x86_64/
008664std.inc
U compiler/msgidx.inc
U compiler/utils/mkx86ins.pp
U compiler/x86/x86reg.dat
D compiler/x86/cx86innr.inc
U compiler/x86_64/x8664int.inc
U compiler/x86_64/
008664ot.inc
U compiler/x86_64/
008664dwrf.inc
U compiler/x86_64/
008664nor.inc
U compiler/x86_64/
008664stab.inc
U compiler/msg/errore.msg
U compiler/utils/mkx86reg.pp
U tests/utils/avx/asmtestgenerator.pas
U tests/utils/avx/options.pas
U tests/utils/avx/avxtestgenerator.pp
U tests/test/units/character/tissurrogatepair2.pp
U tests/test/units/character/tissurrogatepair.pp
U tests/utils/avx/avxopcodes.pas
U .
-- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs in ».«:
U .
U packages/rtl-objpas/src/inc/rtti.pp
U packages/rtl-objpas/tests/tests.rtti.pas
U rtl
* compilation on i386 fixed
* intel asm reader: try to read avx512 extensions only if the instruction supports them
* cleanup
Fix arm specific failure in tw12048
- don't create a heap segment for win16
* fixed quoting of the "description" wlink option on Windows
* limit the heapsize to 65520 bytes on win16 (the $M directive in win16 only
sets the size of the "local heap", which is limited to a single segment. The
actual heap in the large memory model is the "global heap", which doesn't have
a set limit, but grows with the memory allocated)
+ fill MinAllocSize in the NewExe segment table
+ fill SizeInFile properly in the NewExe segment table
* fix detection of floating point constants for arm
* fix return registers for hfa's containing singles
* enable TCpuAsmOptimizer.RemoveSuperfluousVMov for VLDR
* fixed TCpuAsmOptimizer.RemoveSuperfluousVMov to be actually applied
Merge: 416c974d3f ad791e8e34
-- Zusammenführen von
0042652 bis
0042673 in ».«:
U compiler/x86/aasmcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042652 bis
0042673 in ».«:
U .
* compilation on i386-linux fixed
* fix BccB2Cond optimization on arm
+ added class, representing a NewExe relocation entry
* reworked arm vfp capability handling to use fpu_capabilites
+ create defines with FPU capabilites
+ make use of FPU capability defines in the rtl
+ basic Neon support in the assembler writer
+ make use of VEOR if possible to clear VFP registers
* forgotten part of previous commit: fix BccB2Cond optimization on arm
* building with -Cfvfpv2 hopefully fixed
* fix tarminlinenode.first_sqrt_real
+ added and implemented method TNewExeRelocation.EncodeTo
* fixed compilation with -Sew
+ added constant NewExeRelocationRecordSize
* fix building for targets with no vfp support
* change result of pi function from ansistring into dynamic array, so we
generate unique calls every time we write to it
* replace calls to high(ansistring/dynarray) in the inner body of the pi
function with a variable that gets assigned once
-> the FPC version is now just as fast as the C version
* fix for Mantis
0035965: correct alignment also for the class info used to retrieve the unit name
+ added test
* ensure that aprocdef is initialized to Nil to catch problems with compare_defs_ext() easier
+ add a test that ensures that the introduction of fullscale array constructors didn't mess with array constructors passed to an open array of Variant
+ x86 makes use of fpu_capabilities
* moved CPUX86_HAS_AVXUNIT to FPUX86_HAS_AVXUNIT
+ mm register allocator can be initialized with 32 mm registers of AVX512
Avoid error with -CR option in tobjectdef.vmt_def method
+ make use of the mremap syscall of linux to re-allocate large memory blocks faster
o overhaul-base.patch by J. Gareth Moreton, base for further patches
+ some inline directives added
+ some functions exported from units
Merge: 9230ae5aab a5e158f8d6
-- Zusammenführen von
0042706 bis
0042724 in ».«:
U tests/utils/avx/avxopcodes.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0042724 in ».«:
U .
* fix RemoveSuperfluousVMov if the VMov destination reg is an integer register, resolved
0035978
+ VMovVMov2VMov optimization
* factored out inlinenode check whether it may have a side effect
o also added register assert as having a side-effect (if asserts are
enabled)
* Darwin now uses Mach VM calls for memory allocation instead of mmap/munmap
+ added sysrealloc support for Darwin (Darwin does not have mremap)
* added error checking to the test
m68k: fpu capabilities support
Avoid range check error for avr/i8086 CPU by changing local variable dist type to asizeuint
Avoid range check error for functions returning THandle type by using unusedhandle system constant
+ added and implemented the TNewExeRelocationList class
+ added a getter for the NewExeSegmentFlags property, that returns the
nesfHasRelocationData flag according to whether the Relocations list is
non-empty
Move test for read-only data to new separate test source treadonlydata.pp
sparc32 bit needs SA_SIGINFO
Adapt fpc_clean and fpc_cleanall targets
to handle link.res ans script.res vairants with ProcessID.
Also remove *$(FULL_TARGET).fpm file for fpc_clean
and *.fpm for fpc_cleanall target.
Update all trunk/fpcsrc Makefile's after commit 42749
Add generated Makefile which was not on svn yet
* Revert changes to tarray15.pp
* Modify treadonlydata.pp to not use dynamic array.
+ Add test treadonlydata2.pp that should fail at compile time.
Update after commit 42749
m68k: added more cpu capabilities. changed the CG at a few places to actually use them
* m68k has slightly different alignment requirements, so that aligntoptr might result in incorrect addresses for a record's element entries, thus we introduce a separate AlignTypeData function that handles this correctly
* check for CPUM68k instead of M68K; the latter should only be defined when building the compiler, so I wonder how that ever worked...
* fix for Mantis
0035982: free created attributes once the type is freed
+ added test
Add package desciption and remove limitation to darwin and iphonesim systems only
Disable explicit list of supported OSes
Ensure that fpmake_proc.inc and fpmake_add.inc source files are integrated into source zips for packages and utils
* also correctly align the pointer for the record elements inside FPC_COPY
* Allow context when sorting lists (patch from Ondrej Pokorny, bug ID
000035962)
* TClassData also needs alignment dummies
* correct alignment for the property table
m68k: rework of the inline nodes to use fpu_capabilities. added fast path for round/trunc (enabled for fastmath only)
* support unique copies of currencies which are handles by torddef, resolves
0036013
Remove useless code (P.OSes was set again below)
+ FMA support for aaarch64
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers
+ small command line tool for quick creating of vfp register list in a64reg.dat
somehow committing went wrong, second part of last commit:
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers
* another missing part of
0042916 ...
* remove packed from tdynarray, it is not needed and especially 64 bit CPUs which require proper aligment, suffer from it
* avoid that -0.0 is handled by the eor optimization
m68k: try to optimize realconst operands into B/W/L sized integer operands. these are shorter to encode - which almost always means faster on m68k
+ AArch64: FoldShiftProcess optimization
m68k: refactoring to use fpu_capabilities at more places instead of hardwiring certain fpu types
m68k: refactor some code to not fail when the tasmop set will be bigger than 256 elements
m68k: added the most important FPU instructions with explicit rounding precision (eg. FSADD/FDADD)
m68k: added the remaining instructions with explicit rounding precision. fixed fsflmul to be fsglmul (this is also typo in the original 68k PRM)
m68k: more refactoring for fpu_capabilities instead of hardwired fpu types. 68040 and 68060 fpu types should now work
Suppress range check/invalid typecast errors when compiling with -CriotR option
m68k: added some handling for the explicit precision FPU instructions in the spilling and optimizer. fixed a_fsabs and a_fdabs names
m68k: make sure we're not trying to allocate a subregister for float paras when R_SUBWHOLE <> R_SUBNONE
m68k: use cpu_capabilities when deciding to inject scaling into a ref. also allow scaling in more cases.
m68k: cleanup of the ancient mess from cgsize2subreg
+ AArch64: CMPB.E/NE2CBNZ/CBZ optimization
+ AArch64: implemented TCpuAsmOptimizer.OptPass1Data
+ AArch64: FoldShiftProcess fixed
m68k: added CPUM68K_HAS_BYTEWORDMATH and CPUM68K_HAS_INDEXWORD capabilities
m68k: build fix (premature commits are the root of all evil too)
* support taking the address of labels defined in assembler blocks in the
LLVM code genrator (for the rtti unit's thunk hacking)
* different definitions for the same Objective-C class (can happen with
external class declarations) need a type conversion in LLVM (because
they're represented by different LLVM types)
+ AAarch64: TCpuAsmOptimizer.OptPass1Shift makes use of RemoveSuperfluousMove
+ AArch64: implementation of taarch64casenode.genlinearlist
* document how tgotonode/tlabelnode copying works
* fixed loading the address of a copied labelnode in a loadnode
(mantis
0035877)
* initialise local variable to prevent random failures
* fix potential crash with copied goto nodes on nestedparentfp platforms
o as described in the comment for the tgotonode.labsym field, it will
be null for copied gotonodes
* call DoUnhandledException instead of RunError(217) when the the psabi eh
unwinder returns an error (this is usually because there is no outer
exception catching frame anymore -> unhandled exception) (based on patch by
Cyrax, mantis
0035751)
* changed resulttype and firstpass processing from recursion into loop, based
on patch/idea by J. Gareth Moreton (as part of his patch in
0035857)
* fixed compilation for __ARM_EABI_UNWINDER__ with -dexcdebug
* fixed occasional rounding error with currency constants on the LLVM targets
(fixes test/tcustomattr13.pp)
+ add "thunk" attribute for stubs/thunks and emit it for LLVM
- also removed wrong "noreturn" attribute for interface thunks generated
for high level code generator targets
* cutils.pas (size_2_align): Move to..
globals.pas (size_2_align): ...here.
Change parameter type to asizeuint to avoid overflows.
(var_align_size, const_align_size): Also change parameter type to asizeuint.
i386/cpupara.pas, i8086/cpupara.pas, x86_64/cpupara.pas: Add globals
to implementation uses clause because of size_2_align move.
* assemble.pas (TInternalAssembler.TreePass0): Avoid range/overflow check error.
(TInternalAssembler.TreePass2): Check that objsymend and objsym are in same section
and avoid range/overflow check error.
m68k: add subregisters. on 68k, these are not as universal as on x86 and work differently, but the compiler needs this infrastructure to do 16bit math (which is a massive improvement on '000) or word-size indexes on CPUs which support it
m68k: allow vecnode to use word size index registers
m68k: also handle OS_64 register sizes in cgsize2subreg
* extend test so that it also covers the SetToString/StringToSet variants take/return Integer arguments
* try to avoid to use pic based calls
* if we load a got depends only if one is needed, not if PIC is generated as this could be also caused by tls support
Handle change of memory base address after call to SysTryResizeMem
+ x86-64: implemented support for relocation needed by tls threadvars in the binary elf writer
* InitThread variant without parameters as user threads normally cannot know the max. stack size
* we have to use __tls_get_addr from the dyn. linker lib else tls on programs with pure pascal dyn. libraries fail
+ support tls threadvars with the internal assembler
+ command line switch -CV to select the threadvar model for section threadvars
* the final build of packages and rtl are compiled with the general tls model on i386 as they could be used in dyn. libraries.
This does not hurt much as the linker optimized the threadvar access if possible
* section thread vars need to be access with the symbol type AT_TLS
* loading a got depends only on the fact if a got is needed and not if pic shall be generated
* the general section threadvar model needs a got but pic is not required
* be able to set an AT_* for datablocks
* set AT_TLS if needed
+ extra test to test remap functionality with -gh
* test properly (with fno-exceptions) compiled
* fix LLVM compilation after
0043076
* add "readonly" attribute for constant pointer parameters on LLVM
* finally implement tdynamicarray.equal so that exact match comdat sections work as well
* disable the use of C-operators inside the compiler's sources
* renamed tls model switches and symbols to match gcc
+ new relocations for arm tls
* it must be decided in g_maybe_tls_init if a tls is loaded
+ tls models tlsm_general_dynamic and tlsm_local_exec for arm
+ support for the gnu2 general-dynamic tls model on arm, use it instead of the gnu one as the gnu2 one can be relaxed (access optimizations by the linker)
+ support pic relocations in the internal assembler writer
* arm uses the same approach as i386: during the final build of the rtl and the packages, the general dynamic tls model is selected
* with section threadvars, heap relocation is not needed
* it must be decided in allocate_tls_register if a tls register is allocated
* general-dynamic -> global-dynamic
* arm-linux uses dwarf debug info by default
+ dwarf support for tls threadvars
* several linux targets switches from stabs to dwarf
* Patch from Serge Anvarov with some optimizations (bug
Mantis 0036143)
+ support for arm attributes
* abi notes fixed
* compilation of x86 and PowerPC fixed
* reduce amount of software floating point exception checking, VSTR, VMOV, VLDR do not raise those
* improved software floating point exception handling in the rtl
* moved array stride back to array entry (mantis
0036144)
* fixed peephole opitimizer removing some infinite loops (mantis
0036139)
+ x86: LeaLea2Lea optimization
+ LeaCallLeaRet2Jmp optimization
+ makefiles use -Sew, so added to the project as well
* updated for new format
* fix Dwarf 3 array location broken in
0043171 (fix by Martin Friebe,
mantis
0036144)
* don't try to bitpack arrays of non-ordinals (mantis
0036157)
* give an error if an explicit enumeration valid exceeds the valid range, resolves
0034633
* fix random() for 32 Bit CPUs
Fix parsing error in GNU linker script, KEEP needs braces
Define FPC_IS_SYSTEM at start of all system.pp source
* i386: with a fixed stack, exception handling does not need a frame pointer
* change TObjData.sectiontype2options to a class function so that it can be called without an instance of TObjData
+ add a method to TObjData to retrieve the TSectionProcBits and TSectionFlags values for a given section type
* fix for Mantis
0036174: correctly initialize secprocbits and secflags given the section type
* generate better code for length(
)=0, resolves 0036060
* fixed compilation for Darwin and AIX after addition of section attributes
* optimizing length()=0 is not possible for jvm
* fixed i8086 compilation after
0043265
* fix memory leak of tcustomattr13
* fix for Mantis
0036196: free a property's attributes when the property is destroyed
+ added test
Merge: 5bfebeea4e 99d44ce40e
-- Zusammenführen von
0042725 bis
0043306 in ».«:
A tests/webtbs/tw32219.pp
U tests/utils/avx/avxopcodes.pas
U tests/utils/avx/asmtestgenerator.pas
U compiler/i386/i386tab.inc
U compiler/i386/i386nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/i8086nop.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86/aasmcpu.pas
U compiler/x86/x86ins.dat
U compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0043306 in ».«:
U .
Fix compilation error for i8086 cpu target
Change parent class of trv32aatreader to trvattreader
+ include -Avasm into the help screen
morphos: in SDK 3.14, the binutils is finally upgraded to 2.32 (from 2.9.1), which makes section smartlinking working with binutils, and also has finally properly working stabs relocations for lineinfo, etc. so it's the default again both cross and native compilations
* more precise estimation of subscript node complexity
* load nodes for variables in registers do not generated instructions, so their complexity is zero
* clean up TX86AsmOptimizer.OptPass1MOV
* optimize TAOptBase.SuperRegistersEqual
* fptime works now usefully on unix systems
+ support -n to run the command times
+ display average runtime when -n is passed
+ MovMov2Mov 6 and MovMov2Mov 7 optimization
* fix length(
)=0 optimization, resolves 0036215
* also type casts to booleans benefit if unneeded type widenings are removed
* fix compilation on PE/COFF based systems with GNU AS as there the progbits are not supported
* fix for Mantis
0036223: when parsing a helper type its extendeddef might be Nil
+ added test
* remove unused constants
* avr: apply LdiOp2Opi optimization also to and and sub
+ add a Flush method to TExeMap which is useful when debugging internal errors or crashes where the exemap instance has not yet been destroyed
* more overloads for Math.Min/Max, resolves
0036161
* allow cmov with memory reference if it is a pure symbol or a rip relative symbol: as the symbol is
allocated within the image of the program, this should never cause a seg. fault, so it is save
to use cmov with it
* unified TX86AsmOptimizer.OptPass1MOVAP and TX86AsmOptimizer.OptPass1VMOVAP
* CallRet2Jmp works with PIC
* more aggressive LeaCallLeaRet2Jmp
Avoid warnings for m68k compiler
Remove ALLOW_WARNINGS=1 for m68k compiler
* replaced tentryfile.get/putsmall/normalset() with a common tget/putset
that expects an open array of byte, and use it for all sets
o since all sets need to be typecasted to an array type of the appropriate
size, we'll get a compilation error in case this needs to be done and
that also tells us at the same time that the ppu version will need to
be increased
* enabled {$packset 1} for the compiler, as this is now safe with the above
changes
* replaced the arrays in the generic set helpers with arrays of 32 bytes
instead of high(cardinal), so LLVM doesn't get tricked into massively
unrolling and parallelising those loops
* do not allocate an extra register for some integer operations if not needed
* removed accidently committed debug statement
TInterfacedObject.Destroy: fix case for correct auto-completion
* also advance the error code in the case of success
* Testsuite in punit format
* update generic linker script
* do not write section flags/progbits for .data, .rodata .data.norel as the compiler will ignore them anyways and warn about it
* parameters declared as out must be initialized
* fixed default value for progbits
+ MIPS: take care of setnoat
* read more types of references properly
* patch by J. Gareth Moreton, issue
0036271, part 1: general rework of the jump optimizer
* patch by J. Gareth Moreton, issue
0036271, part 2: x86 specific rework of the jump optimizer
* patch by J. Gareth Moreton, issue
0036271, part 3: support for the other architectures
Merge: e1e8986462 47bb71efc4
-- Zusammenführen von
0043307 bis
0043443 in ».«:
D tests/webtbs/tw32219.pp
U compiler/i386/i386att.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386int.inc
U compiler/i386/i386nop.inc
U compiler/i386/i386op.inc
U compiler/i386/i386prop.inc
U compiler/i386/i386tab.inc
U compiler/i8086/i8086att.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086int.inc
U compiler/i8086/i8086nop.inc
U compiler/i8086/i8086op.inc
U compiler/i8086/i8086prop.inc
U compiler/i8086/i8086tab.inc
U compiler/x86/x86ins.dat
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664att.inc
U compiler/x86_64/x8664int.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86_64/x8664op.inc
U compiler/x86_64/x8664pro.inc
U compiler/x86_64/x8664tab.inc
U tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0043443 in ».«:
U .
* swapped decrefs and StripLabelFast as proposed by Gareth on the mailing list
* fix and improve MovImul2Imul: we cannot insert the move target into imul if the imul is 64 bit and the mov 32 bit as
we cannot ensure that the upper 32 bits of the move target are really clear
+ readded accidently deleted file
* load left properly into a register in tx86addnode.second_addordinal, resolves
0036287
* packed tabstractvarsym.addr_taken/different_scope fields into a set
* patch by J. Gareth Moreton to clean up TX86AsmOptimizer.OptPass2Jcc, resolves
0036295
* improve ShlAddLeaSubIncDec2Lea to take care of foldable LEAs
* patch by J. Gareth Moreton: fix compilation with debug info after
0043441 and friends, resolves
0036299
+ LeaOp2Op optimization
* replaced some manual removels of p by RemoveCurrentP calls
+ added comments for LeaOp2Op
* be carefully with references using RIP when doing LeaOp2Op optimizations
* check in the internal assembler for references with incorrect use of RIP
+ test
* do not remove cfi_endproc after jmps
+ separate JUMP_DEBUG define
* i386 does not use anymore its own assembler optimizer loops
* i386: more clean up of TCPUAsmOPtimizer.PeepHoleOptPass1Cpu
* patch by J. Gareth Moreton: fix building for armv6m after
0043441
Use delayed rules variables containing lists of files when the list can be modified by other Makefile targets generated in between
Regenerated after commit 43472
Updated after commit 43472
Regenerate all Makefile's after commit
0043472
* disable condition jump optimization on MIPS for now for the time being
* update sharedlibs variable
* optimization Move removed 4 fixed
* fix usage of ppumove generated shared libraries
* values passed to const parameters are not limited to registers and constants
* relax conditions in tcallnode.optimize_funcret_assignment, resolves
0036279
* MM registers which might not be changed can be still used in 3 op mathematical operations as source
Fix invalid typecast revealed by -CriotR by changing order of terms in boolean expression
o patch by J. Gareth Moreton:
* fix jump optimizer for MIPS(EL).
+ New method called "MakeUnconditional" introduced that can do platform-specific changes
* do not generate conditional jump with full references
+ more assembler optimizer output
+ patch by J. Gareth Moreton: new method TAOptObj.CanDoJumpOpts and arm specific implementation
* write assembler optimizer messages into output file if DEBUG_AOPTOBJ is set
Use same entered_paren local variable as 64-bit counterpart and fix register names
prepare source to also support riscv32 code
Replace obsolete scall by ecall instruction
Add missing and needed syscall_nr_XXX
Add si_XXX.inc files, pointing to riscv64 counterparts
+ riscv32 cpu: Use SYSINIT_UNITS instead of LOADERS
* mips/mipsel cpus: pass -xgot on to AS call for LOADERS,
if OPT contains -ao-xgot.
Also use syscall_nr_fstatat for FpStat function for riscv32 cpu
Fixes by Gareth Moreton for problems exposed by use of -CriotR option
Add riscv32 mathu inculde file, redirecting to ../riscv64/mathu.inc file (this file seems to have no 64-bit specific code)
* make use of RemoveCurrentP
* also generate indirect symbols for AB_PRIVATE_EXTERN symbols as these might be used from a unit in another package due to inlining
* ensure that nothing assembly related is generated for generics when a typed constant (this also includes local variable initializations) are parsed
* restore localswitch settings after the initialization and finalization code was generated
* reference FPC_ABSMASK_SINGLE/-DOUBLE using the indirect symbol if required for dynamic packages
* register constant symbols
* symbols called by g_call might need to be imported from dynamic packages as well
* check the localswitches of the node instead of the global ones
* correctly check for the system unit
* ensure that generic symbols are not tried to be exported
* when creating the static field of a generic, insert it into the generic instead of the global symtable as it isn't really used anyway
* the VMT of the exception class needs to be referenced indirectly
* keep track of static symbols that a global function references, as those must now be exported from a dynamic package as well if the function can potentially be inlined
* the symbol of the interface wrapper function needs to be considered as referenced as well
+ add a description for the link_e_comdat_selection_differs message
+ add error messages for undefined symbols (both with a known object file and without)
* regenerate msg*.inc files after adding new error messages for undefined symbols
* use translateable error messages for undefined symbols and also report in which object file the symbol was first found
* fix condition for including a unit's object files or not when compiling with packages
* use a different name for the packages' entry point and use _DLLMainCRTStartup as an alias to avoid problems with the C-prefix
* ensure that the required functions are referenced for Win32 SEH for packages as well
Patch by Gareth Moreton.
* TAOptObj.CollapseZeroDistJump: Change hp1 to local variable,
initialized as p.next, to avoid problems of dangling pointers
revealed by use of "-CriotR -O2" compilation arguments.
* fixed (harmless) range error when expanding ~
Use correct macro to for 64-bit riscv CPU
Minimalist change to avoid Invalid Typecast error on class when compiled with '-CriotR -O2' for i386-go32v2 target
+ add test for a problem reported by Michael van Canneyt which is fixed by the previous revision
o patch by J. Gareth Moreton, resolves
0036352:
* The supplied patch cleans up some vestigial code from the i386 peephole
optimizer that has since been superseded by the jump optimisations over
at
0036271.
* The PrePeepholeOptsCPU method has had a minor restructuring to better
handle the rare case where InsContainsSegRef() returns True and
p becomes something that is no longer an instruction (it ultimately
removes a conditonal check and some overhead from repeated function calls).
* factored out TX86AsmOptimizer.OptPass1Cmp
* fixed it
* activated it for x86-64
- removed code not used for years
* more RemoveCurrentP usage
+ optimize integer expressions like 2*x*4; which were not found by the node simplifier yet
* cleaned up safecall support: use a hidden localvarsym instead of result
register hacking
o this also allowed fixing/adding safecall support for LLVM
o patch by J. Gareth Moreton:
* adds an extra optimisation to "PostPeepholeOptMov" in compiler/x86/aoptx86.pas:
If the instruction "MOV REG, -1" (Intel notation) is found, where REG is either
a 32- or 64-bit register, it is changed to "OR REG, -1" instead.
The effect is the same and takes exactly the same speed to execute, but the encoding is much smaller.
As it cause false data dependencies, it is only applied in -Os mode
For 16-bit registers, only AX is optimised this way because it has its own encoding for OR that takes fewer bytes.
* fixed safecall for non-LLVM after
0043578
* fix Linux/i386 and Win32 after
0043578
* treat a missing genericdef with no symname set as an internal error
- the error recovery handling is no longer required
* warn only in delphi mode if an explicit enumeration value exceeds the range, relaxes
0043191
o patch by J. Gareth Moreton, resolves
0036355
+ This patch serves to extend the JMP -> RET optimisation in OptPass2JMP by also doing the same
for JMP -> MOV/RET, since there are often cases where the result (e.g. EAX) is set just
prior to the function exiting.
* RemoveDeadCodeAfterJump will now drop out if it detects SEH information -
this stops exception information from being stripped if it is called on the final RET instruction.
o patch by J. Gareth Moreton, seeks to improve maintainability, safety and efficiency
in the peephole optimizer by slightly modifying some function headers based
on their intended purpose, resolves
0036353
* Non-virtual methods and class methods that don't need to access any fields from
the current object are now static methods, thus removing the hidden "Self"
parameter and reducing overhead. This includes a large number of
frequently-used functions such as SkipEntryExitMarker and SuperRegistersEqual.
* GetNextInstruction, GetLastInstruction, SkipEntryExitMarker and
SkipLabels have had their 'var' parameter changed to an 'out' parameter because
they shouldn't depend on its input value. This will cause the compiler to throw warnings
if you start using the value without initialising it first, and may open up optimisation
opportunities in the future (e.g. storing written values in a temporary register
and only writing it to the actual variable when the routine exits).
* do not convert cmp 0,... into test ...,... before the post pass of the peephole optimizer
as this conversion might result in missing further optimizer opportunities
Also accept -a5 for older binutils for mips and mpisel cpus
Add '.module nomips16' at assembly entry for mips/mipsel unless -a5 option is used
Fix trv32notnode, by using same code as for riscv64 CPU
Change parameter type to tcgint for is_imm12 and is_lui_imm functions to avoid range check errors
* unified internalerror, resolves
0036378
* patch by J. Gareth Moreton: x86 implementation of RegModifiedByInstruction, resolves
0036376
* better error recovery, resolves
0036377
Add explicit smallint typecast to first marameter of SarSmallint call to avoid range check errors
Comparison nodes are always in LOC_REGISTER, never in LOC_JUMP for riscv32 or riscv64 CPUs
* use tdef.unique_id_str to generate the unique internal name for anonymous record defs as using the count of the deflist is no longer correct
* adapt register if the size of the paraloc and the register differ, resolves
0034409
* simplified and improved TX86AsmOptimizer.RegModifiedByInstruction
+ add a method to tdef to initialize the defid from within a constructor
* initialize the defid in trecorddef.create_global_internal as unique_id_str needs it
* apply (adjusted) patch by Blaise.ru: vmtentries is always created since 2008, so treat it as such (also fixes a memory leak in tobjectdef.getcopy)
* apply patch by Blaise.ru to remove last remnants of VMT regeneration which is no longer needed/used
* better error recovery, resolves
0036397
* check in CheckLive* if a register allocator is initialized for a certain register type
o patch by J. Gareth Moreton, resolves
0036371:
* This patch makes some minor improvements to the cross-platform code that deals with jump optimisations.
More specifically, it attempts to do more in a single pass which has the nice side-effect of
fixing a couple of minor mistakes (in some situations, it would erroneously remove an alignment entry).
- Most improvements are with dealing with Jcc/JMP pairs and their equivalents on other platforms, by
collapsing label clusters and stripping dead code as soon as it has enough information to do so, and being
more intelligent before calling Continue to see if another optimisation can be performed in the same sitting.
- RemoveDeadCodeAfterJump is now a function that returns True if a jump was found among the dead code,
thus allowing the ability to flag the peephole optimizer for another iteration of Pass 1 - the
destination label may have appeared earlier in the code and become dead as a result of the removal
of the jump, thus opening up new optimisations with instructions that sat either side of the label.
- Preliminary tests show that it does sometimes reduce the number of passes required to optimise a subroutine
under -O3.
* fix J. Gareth Moreton to resolve
0036389
* patch by J. Gareth Moreton: improve test and benchmark, resolves
0035633
* Remove duplicate ibextraheader handling.
* Move SymAnsiStr boolean setting inside parseextraheader function.
* Only accept same CurrentPPULongVersion in parseextraheader function.
* TVMTBuilder.build_interface_mappings does not need to be public (based on patch by Blaise.ru)
* move the common sequence to build a VMT for an objectdef into a separate procedure (based on a patch by Blaise.ru)
* clear up file comment (based on patch by Blaise.ru)
* more correct method names (based on patch by Blaise.ru)
* fix number of last parser_* message entry
* use value_real rather than value_curency when writing currency
realconstnodes (fixes tcurrency1, tw33439 and tw36179 with LLVM)
o we need to load the fpu representation of the currency values,
not the scaled currency value
- removed LLVM support for clang < 7.0 and Xcode < 10.0: those versions
contain various bugs and can't even complete "make all", so there is no
point in keeping them
o changed default LLVM target version to 7.0
* regenerate msg*.inc files after adding a new error message related to C blocks
+ recognise LLVM 9.0 (no changes needed compared to LLVM 8.0)
* patch by J. Gareth Moreton to fix an ie 2018061400 on darwin
+ x86-64: assembler implementation for u128_div_u64_to_u64 for SysV ABI
* reminder => remainder (thanks to Stefan Kanthak for pointing it out)
* in PeepHoleOptPass1Cpu when an instruction contains a segment, don't replace the current instruction with the next, cause then we get an infinite loop when compiling on Win32 with -dTEST_WIN32_SEH -O4
+ MULX instruction
* change information for RORX corrected
+ make use of mulx instruction, if available
* patch by Bart Broersma to allow to declare "LongInt = AnsiString" comparison
operator in non-macpas modes, resolves
0029460
* patch by Anton Kavalenka: heaptrc: Improve tracing by printing actual
module name (ether EXE or DLL), resolves
0036130
* fix building on non-unix/windows targets
* last fix was most likely not complete
* do not crash when an unsupported code page is encountered, resolves
0035581
* optimize case statements with a single branch into if statements (ord const only)
* last commit was not complete/earlier version committed
* common naming for fpu_none string
* some inconsistency regarding FPC_NONE usage fixed
+ tf_init_final_units_by_calls
* arm-embedded generates direct calls for unit init/final now as well
* renamed getintparaloc to getcgtempparaloc
o it can be used for more than integer parameters
* support for marking arraydefs as vectors
* LLVM support for writing vector types
* fix paraloc def for vectors with vectorcall calling convention (was a single
element instead of a vector)
* fixed writing of calling convention for function declarations/definitions
in LLVM
* added is_normal_fieldvarsym() helper and use it
o fixes several places where there was a check whether something is a
fieldvarsym, but not whether it's an instance rather than a class field
* increase support for multilib binutils for RISC V by passing the ABI to the assembler
* increase support for multilib binutils for RISC V by passing the correct ABI to the linker
* correctly handle local reference in the RISC V assembler readers (both 32 and 64 bit)
* when copying goto nodes take care if the label node is part of the copied tree
or not, resolves
0035820
* write a proper error message if
/ is encountered while no
floating point support is available, resolves 0032006
* use 64 bit code page in tppcshlshrnode.pass_generate_code for all 64 bit types,
resolves
0033582
+ test for
0026791, meanwhile fixed
* correctly handle reading of class/object pointers in combination with @, resolves
0026326
+ support for LLVM metadata constant string parameters
o they are implemented as a new metadata register class, whereby the
subregister indicates the metadata type (currently always a string)
and the superregister is an index in the metadata array (which
contains the strings). LLVM metadata can only be passed as parameters
to intrinsics in bitcode, so moves of metadata into other registers
triggers internal errors and when moving them into parameters, we
replace the parameter's register with the metadata register (and look
up the corresponding string when writing out the bitcode)
* support nf_internal to ignore currency conversion adjustments also on
platforms that implement currency using a floating point type
* record whether a function uses fastmath, and define the function as
strictfp if it doesn't (so LLVM doesn't perform transformations that can
change the fp/exception behaviour)
* use constrained LLVM fp intrinsics for add/sub/mul/slash/fma/sqrt
operations when fastmath is not enabled
* use LLVM constrained fpext/fptrunc intrinsics when fastmath is not enabled
for accurate exception behaviour
* fix LLVM code generator after
0043808
o share the high/length code for LLVM rather than duplicating it, since
LLVM will optimize away the minor inefficiencies
o removed temp reference in the old code, as it was useless (it doesn't
prevent spilling to get to an SSA representation since the same
register is written at least twice in all cases)
* set default target iOS/iPhoneSim version to 9.0 so we no longer depend
on crt.o existing, which is not shipped with the current SDKs anymore
* unified loadnf_load_self_pointer into loadnf_load_addr
+ var parameters are now allowed when doing tail recursion optimziation, resolves
0032811
-- Zusammenführen von
0031198 in ».«:
C compiler/arm/aasmcpu.pas
U compiler/arm/aoptcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0031198 in ».«:
U .
* the llvm.experimental.constrained.fpext intrinsic doesn't have a rounding
mode parameter
* support for constrained sitofp/uitofp with (the upcoming) LLVM 10.0
(fixes most of test/units/math/troundm, although there's still an LLVM
optimizer/code generation bug that breaks some qword -> double
conversions)
* use maytrap instead of strict FP exception behaviour in LLVM, so constant
propagation is still allowed
* fixed missing sign extension when adding a signed integer variable with
size < sizeof(pointer) to a pointer for LLVM (fixes tfmtbcd)
* fixed (harmless) wrong typecast
* fixed TAOptBase.SkipEntryExitMarker() not initialising out parameter in
all cases (patch by J. Gareth Moreton, mantis
0036372)
* Add riscv-embedded to targets that don't support non-constant leb128's.
* triggered by
0036505, removed CmpJxxDecJmp2SubJcc optimization as it was wrong anyways
* look further forward in TX86AsmOptimizer.OptPass1_V_MOVAP
* x86: avoid to put variables into registers if they are handled by the x87-FPU
+ MovMovMov2XChg optimization by J. Gareth Moreton
* copy fpu parameters using fld/fst onto the stack
* fixes TX86AsmOptimizer.OptPass1_V_MOVAP after
0043855
* avoid invalid type cast
* let the operation do the type conversion for x87 floating point operations
* Fixed safecall on win32 with -Ooregvar by making sure that $safecallresult
is never stored in a register.
+ infrastructure to profile different stages of the compiler
* missing part of last commit
* fix X86AsmOptimizer.RegModifiedByInstruction for VMOVSS/VMOVSD/IMUL
o patch by J. Gareth Moreton:
* applies some optimisations to OptPass1MOV. Repeated checks to the "GetNextInstruction_p Boolean"
variable are factored out, since all of the optimisations bar the first one require a
succeeding instruction.
* add forgotten exits, fixes
0043874
* do prefetching correctly
* more prefetching inserted
* unnecessary/wrong UpdateUsedRegs removed
* fixed for targets where currency is implemented via int64 after
0043829
* AArch64: fixed parameter defs for smallsets passed in registers whose size
is not a power of two
* handle non-smallset sets in registers in LLVM like arrays and records
* constrained sitofp is not yet supported in LLVM for all targets
* LLVM/AArch64: don't perform the parameter location extension workarounds
for LLVM, as that results in LLVM assuming exactly the opposite of
what's intended (namely that the extended locations contain valid
rather than invalid bits)
* accept locals replaced by symbols in inline assembly by the LLVM code
generator in the AArch64 assembler writer
* explicitly emit a sub instruction in tx86inlinenode.second_high, resolves
0036530
Try to correctly handle m68k exceptions bits inside SetExceptionMask function
+ Enable FPU exception handling for m68k processor
Avoid using <> for floating point values, check that abs of difference is small instead (fixes m68k 'pseudo-failure')
* get paramstr(0) only if really needed
+ CalcUseSum: calculates a sum of all use sets of the current node and its children
* renamed sum -> defsum to avoid confusion with usesum
* factored out tcgprocinfo.OptimizeNodeTree
Wipe out any pre-existing exception on SetExceptionMask call for m68k cpu
Examine all exception bits in m68k fpsr register to decide which into which run time error it is converted
* moved conversion of for into while loops in a separate pass, so node optimizations on the node tree can be
carried out without losing information from for loops
* some fixes to loop strength reduction
* more fixes for loop strength reduction
* patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 1 of
0036551
* patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 2 of
0036551
* patch by J. Gareth Moreton: Some cleaning up of OptPass2JMP and OptPass2MOV, resolves
0036553
* compilation on i386 fixed
SysUtils: add ExpandFileName with a BasePath overload
* ensure the rtl and the packages for embedded compile with features exceptions and classes disabled
- Handle jump optimizations on RISC-V
- RISC-V: Share optimizations between 32 and 64-bit.
- RISC-V: Add controller types for common RV32 MCUs.
- Adds initial controller units for these MCUs.
Code contributed by Michael Ring
* first part of merging parts of Jeppe's intrinsics patch, mainly
0031135
is merged by this commit with a lot of adaptions
* ensure that the includes for the new mm related files are indeed enabled
* ensure that the new mm related procs are only used for 3.3.1 and newer as 3.2 and older don't support the corresponding SSE types
* disabled mm procs again, they are not usable yet neither supposed to be
used
* voidcodepointertype => voidpointertype as suggested by Pierre
* AVR: due to recent fixes, EXCLUDE_COMPLEX_PROCS is not needed anymore
* do for-loop unrolling after for-loop simplification, resolves
0036589
* patch by J. Gareth Moreton: get rid of another pass through the assembler list by integrating OptReferences
into the post optimizer pass
+ insert alignments after break/goto/exit/continue jmp instructions, if it is
superfluous, the assembler optimizer will take care of it
* enable tail recursion optimization also for const and constref open arrays
+ added test
* also allow by-value open array parameters for the tail recursion optimization
* adjusted test
Pass old value of OPT to FPCMAKEOPT
* fix for
0032352: a unit does not need to be re-deref'ed if it just had been recompiled
* patch by Robert Roland to support the RaspberryPi 2 as a bare metal embedded target, resolves
0035236
* take care of m_duplicate_names when checking for duplicate locals, resolves
0033221
* patch by J. Gareth Moreton: x86 CMP/TEST/Jcc optimisations, resolves
0036624
* patch by J. Gareth Moreton: x86 SUB and LEA optimisations, resolves
0036622
* avoid internalerror for dec/inc(...,v) with v>high(int64), resolves
0035298
* do_loopvar_at_end is not possible if the loop counter would overflow with
the last iteration
* last commit fixing calculation of do_loopvar_at_end was not complete,
hopefully finally fixed
+ in some language modes the loop counter is undefined after the loop by language definition
* take care of for loop counter read after loop
* tests: When cross-testing, if possible, use the "ppc" native compiler to build fpmake. It solves PPU incompatibility errors.
* Skip the test for aarch64.
* Skip the test for android.
* do not throw a warning about unreachable code if the responsible node was generated internally
*
0042239 broke the tw13948b test for aarch64. Fixed this and improved the test.
* Removed lot of unused local vars. It is useful to turn on the notes in options. :)
* Removed inline since it is not supported with open array parameters.
* first couple of improvements propose by Stefan Kanthak at https://skanthak.homepage.t-online.de/division.html#fpc
* improve LeaLea2Lea optimization
* fix internalerror if adding the object info for LLVM requires creating new defs
* disable cs_opt_regvar on all platforms when compiled for LLVM (LLVM does
that itself, our LLVM code generator can't handle it, and if it did then
afterwards we would have to spill 90% of those register variables again
to make them SSA)
* use same Windows platform name as clang
* never inline routines that call get_frame (otherwise get_frame would return
the frame of the caller rather than of the current routine, which could
cause e.g. stackframes to be missed in RTL helpers that are known to be
only called from run time error routines)
+ new pio_inline_forbidden flag to indicate that while parsing the
implementation the compiler determined the routine must never be
inlined
o difference with po_noinline: can also be set in the implementation
o difference with pio_inline_not_possible: it indicates that e.g.
LLVM must not inline the routine either
* implement interface thunk for RISC V 32- and 64-bit
* safecall support is meanwhile generic, so enabled for all linux targets
* might_have_sideeffects takes care of absolute
* when optimizing boolean expressions, might_have_sideeffects is only relevant if the expression would be optimized away
+ might_have_sideeffects takes care of vo_volatile now (it is not exposed yet)
* patch by J. Gareth Moreton: x86 "OptPass1MOV" improvements - Part 2, resolves
0036608
* armhf/armel aligns sections to 16 byte, so allow a maximum c alignment of 16
* Avoid doing a syscall with a nil parameter in fileexists
* fixes copying of tcgpara
* fix PowerPC compilation
* patch by J. Gareth Moreton, avoid illegal MovAdd2Lea and MovSub2Lea optimziations, resolves
0036630
- test removed as it cannot work on all variants of currency support
* added information about -M allowing to specify modeswitches
Add '.built.on.$(SOURCESUFFIX)' for snapshots generated on another target using singlezipinstall
* patch by J. Gareth Moreton: CMOV extensions: frame/stack pointer relative references are always valid, resolves
0036675
* patch by J. Gareth Moreton: conditional Jump Inversion stoploop variable, resolves
0036680
Modify code to avoid error when compiling with -CriotR option
* patch by J. Gareth Moreton: deadstore removal improvement, resolves
0036669
* Fixed
0043577 for cases when the size of the new result of a simplified node after typecheckpass is smaller than the size of the original node's result. This caused internal errors or invalid assembly in some cases. Issue
0036587.
* FPMake-option NoIDE added
* patch by J. Gareth Moreton: processor-aware MOVZX optimisation cleanup, part one of
0036687
* Disable building the IDE on Darwin by default
* fixed Mov2Movz optimization
* simplified TX86AsmOptimizer.OptPass1Movx
* patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass1MOV after DeepMov changes, first part of
0036670
* do not fold constants if the resulttypes do not match, improved fix for #tw26587
* patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass2MOV after DeepMov changes, second part of
0036670
* Disabled range and overflow checks for the tw36587 test, since overflows are intended there.
* fix for Mantis
0036652: gracefully handle the error if one tries to implement a method of a type from another unit
+ added test
* regenerate msg*.inc after last commit
* do not allow constraints in headers of procedure implementations in delphi mode, resolves
0036584
* better error message if a constraint is found at a wrong location
* make maxpushedparasize a SizeInt: it must store an address size and not an alu value
* set nf_* correctly when an inc/dec node is converted into an add/sub node
* do not firstpass during dead store removal as it disturbes the for each calls
* Fixed the assignment of licenses of packages
+ propagate constants across call nodes
* patch by J. Gareth Moreton: optimize MOVSXD as well, resolves
0036700
* fix global generic functions with constraints in mode Delphi by handling implementations with defines outside of parse_generic_parameters
+ added tests
* there is no exit stackframe needed if a subroutine never returns
+ CallRet2Call optimization
* (V)MOVA*(V)MOVS*2(V)MOVS* 1 optimization
* fixed tdel1/2 tests again for AArch64/LLVM
* AArch64 and i386: omit exit stackframe, same as
0044191 for x86-64
* in case a 32x32 -> 64 multiplication is converted into shl, the type casts need to be restored
* fold also pointer additions/subtractions
+ AAarch64: optimize divisions by constant
* revert accidently committed code
* aarch64 suffers also from the limited tan precision of the softfpu
Fix linking error, in which libc.so.6 is not found on aarch64-linux when libdl.so is loaded, by adding appropriate directory
+ AArch64: profiler support for aarch64-linux
* AArch64: the PIC code needs also more registers, so use the same ifdefs as arm and sparc
* reverted accidently committed changes again
* throw an error if the forward interface type and the actual interface type do not match, resolves
0036720
* (modified) patch by J. Gareth Moreton: processor-aware MOVZX optimisation cleanup, resolves
0036687
* debug statement removed
* fixed generic round(...) for large values based on a comment by Alexander Hofmann on fpc-devel
* extended test
* track used register better: if a deallocation is moved/removed, the used register may not be removed from the current register used register set
* LeaCallLeaRet2Jmp is done in TX86AsmOptimizer.PostPeepholeOptLea
+ GetNextInstructionUsingRegTrackingUse
* better MovAnd2Mov optimization
+ TOptsToCheck to track expensive optimizations, needs more work
* ARM: optimize mov rX,#0 .... mul/mla/umull ...,rX,...
+ ARM: MovMLA2MUL optimization
* ARM: look further ahead when optimizing mov rX, yyyy
* ARM: fix Mov0 and MovMLA2MUL optimizations
* several fixes to get better reg. allocations in the arm assembler optimizer
+ add test for already fixed Mantis
0024283
+ take care of addn and subn in is_loop_invariant
* improve is_loop_invariant for load nodes
* CallRet2* optimization may not misalign the stack, reported by C Western on fpc-devel
* fixed JccAdd/Inc/Dec2*Adc/Sbb optimizations
* calculate complexity of an rtti node correctly
* more use of RemoveCurrentP(p)
* fix precedence of IS operator, resolves
0035909
+ JccAdd2SetccAdd optimization
* take care of C_C/C_NC in JccAdd/Inc/Dec2(Cmc)Adc/Sbb
* simple record accesses have not side effects
* do not do full boolean evaluation on LOC_FLAGS
* fix Peephole Optimization: Cmpcc2Testcc - condition AE/NB/NC/NO --> Always optimization
movhlps/movlhps only take xmm registers.
Handle spilling of SSE registers.
Add most SSE instructions as intrinsics.
* Show message about creating fppkg/conf.d directory
* add FreebSD to weaklinking targets.
* Allow to get/set config items
+ OptimizeForLoop: convert for-loops into zero-based backward for-loops if possible, for most architectures, this results in simpler code
* Parse the keywords in fppkg-repositories
* attempt at crt1 translation to get freebsd 12 running.
amiga-likes: add fpwidestring unit to the RTL build
atari: added the fpwidestring unit to the RTL build
+ Xtensa: register information
+ Xtensa: lazarus project
+ Xtensa: initial skeleton completed
+ xtensa-embedded support in the compiler
+ Xtensa: support in the build utilities
Update revision.inc after commit
0044319
+ Xtensa: completed rtl skeleton
* Xtensa: completed compiler skeleton
+ Xtensa: basic operations for Xtensa implemented
* Xtensa: initial controller types
+ Xtensa: a_loadaddr_ref_reg implemented
+ Xtensa: CALL0 abi started
cgcpu: Implement a_cmp_reg_reg_label
xtensa: Add preliminary support for comparisons
tgobj: Change direction of stack.
makefiles: Add support for xtensa-embedded target.
+ Xtensa: tcgcpu.a_load_ref_reg
+ Xtensa: tcgcpu.a_load_reg_ref
+ Xtensa: tcgcpu.a_op_reg_reg
ncpuadd: Fix handling of signs in comparisons
esp8266: Make startup code compile.
+ Xtensa: tcgcpu.a_op_const_reg
+ Xtensa: tcgcpu.a_op_const_reg_reg
amiga: remove packed from RTL OS record/structure definitions, use PACKRECORDS 2 instead. this allows much better code to be generated for a plain 68000 RTL
amicommon: make sure to reset packrecords to default after OS structure inclusion
amicommon: cleaned up the voodoo padding magic and packed record from the DOS unit SearchRec. This structure is entirely platform specific, ancient code might have accessed it from assembly, but it's no longer the case.
+ Xtensa: tcgcpu.a_op_const_reg_reg
+ Xtensa: mathu.inc using only the softfloat unit provided mechanisms
+ Xtensa: make use of ADDI
* Xtensa: cleanup unused stuff
+ Xtense: updated conditions
+ Xtensa: tcgcpu.g_concatcopy
* Xtense: prettify assembler output
+ Xtensa: implemented tcg64fxtensa.a_op64_reg_reg
+ Xtensa: initial tcg64fxtensa.a_op64_reg_reg_reg
Add immediate/zero comparisons.
+ Xtensa: make use of slli and srli
xtensa: Add 64bit arithmetic operations.
* Xtensa: cleanup dummy code
+ Xtensa: tcgcpu.maybeadjustresult
+ Xtensa: initial tcg64fxtensa.a_op64_const_reg_reg, still room for improvements
+ Xtensa: tcg64fxtensa.a_op64_const_reg
+ Xtensa: initial implementation of tcgcpu.g_proc_entry
+ Xtensa: tcpuinlinenode.second_abs_long
* Xtensa: set correct frame pointer register
* Xtensa: fix load_reg/ref_reg/ref
* Xtensa: more fixes for load_reg/ref_reg/ref
* Xtensa: improve tcgcpu.fixref
+ Xtensa: initial support of the windowed abi
* Xtensa: generate long calls
m68k-amiga: add some defines, to disable part of OS headersin the RTL when compiling for OS1.x. this is to aid the implementation of future AmigaOS 1.x support
* fix LLVM backend compilation (mantis
0036833)
* Xtensa: no scheduler yet but loops can be unrolled
* Xtensa: fix txtensanodeutils.insert_init_final_table for the windowed abi
* Xtensa: parameter passing for the windowed abi
* Xtensa: improved handling of calling conventions
Fix handling of parameters with size below the size of a full register
* Xtensa: proper code generation for unit initialization
* Xtensa: system_xtensa_embedded is an embedded system
* Xtensa: align literals properly
+ Xtensa: implemented tcputypeconvnode.second_int_to_bool
+ add FreeRTOS as new OS target
* Xtensa: fix tcpunotnode.second_boolean
* use getpagesize function instead of reading external variables to restore
ability to compile against SDKs < OS X 10.9 (mantis
0036653)
+ initial FreeRTOS RTL support, largely based on the Embedded target, limited to Xtensa so far
* Xtensa: fix tcgcpu.a_cmp_reg_reg_label
* Xtensa: tcgcpu.g_concatcopy fixed: keep registers alive
* Xtensa: fix TCPUAddNode.second_cmp
* Xtensa: use generic tcpuparamanager.getcgtempparaloc
* fix ppudump after addition of freertos-xtensa
* allow FPC 3.2.0 as bootstrap version
amiga-m68k: minimal tweaks and formatting to the dos unit
amiga: no packed records in doslibd.inc and timerd.inc, use packrecords 2 insead, this improves code generated for plain 68000
m68k-amiga: initial work on some support functions to allow the RTL to be compiled for AmigaOS 1.x
* Missing include-file added to fpmake-archive
+ -XlS option to specify a suffix for externally called LLVM utilities,
e.g. -XlS-7 to call clang-7 instead of clang)
* IMPORTANT: changed the -CL llvm code generation options to -Cl, for
consistency with the new -Xl option (-XL was already taken)
* Xtensa: shift operations fixed
* Xtensa: returning of 32 Bit values fixes
+ Xtensa: add linklib statements, better _halt procedure
* make TLinkerInfo fields ansistrings as xtensa-freertos needs long command lines
* Missing include-file added to fpmake-archive
+ Xtensa: generate all helper files to fpc can successfully compile a single program
* ESP32: set flash size to a resonable value (assumes external flash for now)
* xtensa-freertos: enable softfloat for now
* Xtensa: spilling for bigger offsets fixed
* Do not try to resolve dependencies for packages that not meet the target
Try to fix problems for more recent GDB versions.
Move GDB_NEW_UI macro def. to GDB_VER_GE_712
Add GDB_INTERP_LOOKUP_HAS_UI and GDB_HAS_SAVED_COMMAND_LINE_BUT_NO_SIZE
to same GDB_VER_GE_712.
Use stdio_filopen to create gdb_stdout and gdb_stderr
if GDB_HAS_GET_STDIN macro is set.
* Xtensa: reduce stack usage
* Xtensa: FreeRTOS uses windowed calling convention
+ Xtensa: boolean registers * Xtensa: register numbers of floating point registers corrected
* Xtensa: set fpu type dependending on the controller
* add support for creating non-address-only procvars to
cprocvar.getreusableprocaddr()
* use tprocvardef.getreusableprocaddr also for non-address-only copies of
proc(var)defs
* use typenames in more cases in the generated LLVM IR (results in smaller
IR in textual form)
+ Xtensa: the boolean extension is used as flags
+ Xtensa: hard float support, i.e. make use of floating point extension if available
* Xtensa: fix passing of floating point parameters
* factor out first_addfloat_soft
* compilation for non-Xtensa targets fixed
* building on non-x86/non-xtensa fixed
m68k-amiga: implemented StackSwap and DeletePool in legacyexec support, also declare public name for a few functions, so the startup code can hook into them
m68k-amiga: implemented functions required for basic parameter handling in legacydos
m68k-amiga: prepare the startup code and system unit for legacy support
m68k-amiga: make all legacy support functions have a public name, and supply headers for them (will be utilized by athreads, dos, and sysutils units)
m68k-amiga: startup code now uses legacyexech, instead of explicitly declaring legacy support functions it needs
amicommon: m68k-amiga legacy support
+ xtensa-linux support for the rtl makefile
+ with the randseed set as in the test, the test fails on x86_64-linux, added so it won't be forgotten
+ basic xtensa-linux support in the compiler
+ xtensa-linux: OS specific system unit header files
+ xtensa-linux added to systems_linux
Fix ppudump after addition of system_xtensa_linux target
Update revision.inc after commit
0044544
* better setting of expectloc
* improve assembler reader
+ optimize SUB for small constants using ADDI
+ initial thlcgxtensa.g_intf_wrapper
m68k-amiga: create the heap memory pool with MEMF_ANY, rather than MEMF_FAST. this will finally allow FPC compiled executables to start on chipmem-only machines.
+ initial xtensa-linux rtl
amunits: add amicube to the examples to compile
* fix taicpu.is_same_reg_move
* Xtensa: properly align maxpushedparasize
* Xtensa: register numbers fixed
* FreeRTOS: adapated packages to build
* Xtensa: fix expectloc of taddnode
* Xtensa: fix flag handling: B0 is considered as default flags
* Xtensa: patch by Christo Crause to handle the sign extension architecture option, resolves
0036885
* Add FPCBINDIR macro for paths
* Do not expand FPCBINDIR on darwin
* Use exepath on all platforms
* Use exepath on all platforms
+ fpu_fpv4_sp_d32
* some fixes to make fpv4-sp-d32 work
* reorganized arm cpu flags
Amiga: Implementation of Amiga2Date and Date2Amiga for older Amiga Versions
Amiga: very basic first implementation of MatchFirst/Next/End for old Amiga Versions
* arm: more fixes for fpu_fpv4_sp_d16
* take care of FPUARM_HAS_VFP_DOUBLE
* use FPUARM_HAS_VFP_EXTENSION instead of checking fpu_vfp_first and ...last
Amiga: simple SystemTagList() implementation for old Amigas including basic tag list handling (GetEnv works now)
Amiga: do not try to read pr_LocalVars when running on 1.x
Morphos: Fixed compilation after
0044709
+ arm: optimize sxth/sxtb
* fixes compilation on WinCE
* get rid of fpu_vfp_first/last hack
* load 0 into unaligned memory in a simpler way
* Aarch64: UTX/STX instructions include now the postfix, so it is the same as for ARM
Handle all existing possible values for init_settings.fputype to set Tag_FP_Arch .eabi_attribute
+ common assembler optimizer base class for arm and aarch64
* check for stup instead of stp
* factored out TARMAsmOptimizer.OptPass1UXTB
* several other routines being very similar for ARM and AAarch64 moved to aoptarm
Avoid invalid typecast in tarmunaryminusnode.pass_1 method
m68k-amiga: make it possible to disable functions newer than OS 2.0 (v37+)
m68k-amiga: have an AMIGA prefix in OS_MINVERSION public constant, add OS 2.0 support, make sure we open v39 by default as it is needed by memory pool functions
m68k-amiga: enable certain legacy exec support functions only when compiling for OS v2.0
m68k-amiga: startup code to print a console message and quit, when the OS is known to be too old for the RTL
* factored out TARMAsmOptimizer.OptPass1UXTH
* AArch64: use TARMAsmOptimizer.OptPass1UXTH
* factored out TARMAsmOptimizer.OptPass1SXTB
* AArch64: use TARMAsmOptimizer.OptPass1SXTB
* factored out TARMAsmOptimizer.OptPass1SXTH
* AArch64: use TARMAsmOptimizer.OptPass1SXTH
amicommon: only include exec extensions when complied for v2.0
amicommon: instead of a runtime check, check for OS2.0+ features at compile time in DOS
amicommon: only include exec helpers when compiling for v2.0 in athreads
m68k-amiga: implemented CreateNewProc for legacy support, means AThreads now works on OS v1.2+
* re-added assembler optimization accidently removed in
0044738 as noted by margers on the mailing list
m68k-amiga: hack to avoid a linker (vlink) warning about merging sections with different flags together. Amiga doesn't support true read only sections anyway
+ AAarch64: FOpFMov2FOp assembler optimization
* Fix compilation of gdbint unit for go32v2, should resolve bug report 36923.
Replace cint type by longint (as gdbint unit does not use ctypes unit).
+ AAarch64: assembler optimization Bl2B
* always add the libgcc search directory under Linux, as it is required for
both the LLVM code generator and SEH support (it does _not_ force linking
libgcc, just adds the search directory so it can be found in case it's
required)
* support building the IDE with the LLVM code generator
* updated after changes to fpcmake.ini/inc
* bail out early if possible
+ AArch64: TCpuAsmOptimizer.OptPass1Mov
* Xtensa: dummy overflow checking
* FreeRTOS: try not to build native binaries
* FreeRTOS: do not try to build native utils
* factored out and improved TARMAsmOptimizer.RedundantMovProcess
+ AArch64: use TARMAsmOptimizer.RedundantMovProcess
* go through cg to generate jumps, so the right jump is generated always
* use j.l in external wrappers, this is not save yet as A15 might contain
an argument: externals need to be called with call4 if they use all
parameter registers, this needs to be implemented
* build more units for FreeRTOS
* Xtensa: generate better code for adding/subtracting 16 bit constants
* Xtensa: handle localsize > 32760
* TARMAsmOptimizer.RemoveSuperfluousMove should not mess with PC
+ xtensa-embedded: patch by Christo Crause to check and support SUBARCH
* adapted xtensa-freertos to work with the currently stable ESP-IDF 4.0, partially based on a patch by Michael Ring
* Xtensa: make use of extui for shifting with constant values >=16
Set 'default' target to freertos in rtl/freertos directory
- remove ld.so.conf parsing from makefiles: this was probably done because we
used to completely replace the default linker script under Linux (which
also includes search directories), and it's wrong in case of
cross-compiling
+ take care of OPTNEW when building utils
* xtensa-freertos requires also SUBARCH being set
+ initial support for arm-freertos largely based on patch by Michael Ring
Update after commit 44790
Add several missing -T options in help
Correctly update after commit 44871
Use same field type and name as in /ust/include/sys/stat.h
* Use off_t type for l_start and l_end fields instead of kernel_off_t
+ Distinguish rlim_t type depending on fs32bit macro being set or not.
Add handling of sparc64-linux and pass -m32/-m64 to $CROSSGCC call
* fix for Mantis
0036935: apply patch by J. Gareth Moreton to fix a typo in cs_opt_remove_empty_proc
m68k-amiga: implemented LockDosList, UnlockDosList, and NextDosEntry helpers for legacy support
* for PE+ specific checks use a constant in systems.pas instead of an explicit list (easier to extend this way)
+ implement relocations for Aarch64 for the internal COFF linker
+ implement initial compiler support for Win64 on Aarch64
+ add a GAS compatible variant of the Clang assembler (currently used for Aarch64-Win64 as no GNU AS exists for that target, yet)
* Windows does not support a GOT, so rely on page relative addressing
* Windows on AArch64 does not support ProgBits either
* Windows on Aarch64 requires a relocation section
* Windows on AArch64 requires some DllCharacteristics in the header to be always set
* enable AArch64 for Win64 in fpmkunit and fpcmake
* disable some x86_64 specific assembly routines
* disable CPU and Signals units for Windows on AArch64 for now
+ add functionality to store a node tree's required temp nodes and their flag upon entering the tree
- remove sectiontype2options overload for mach-O, because the relevant sections have the correct flags in the base method already
* it's rather useless that sectiontype2options is virtual as we can't use a class type, not to mention that the classes doing the overriding are for the internal assemblers/linkers, but we need it also for external
Thus we move the functionality of the overloads to the basemethod and remove the virtual directive; maybe we'll find a better solution in the future...
* rename the local sectionflags and sectionprogbits variables to the more clear usesectionflags and usesectionprogbits
+ introduce a virtual method for writing the section flags
* the clang assembler for COFF requires at least an "r" to generate a readonly section
* use COFF sectionattrs for aarch64-win64 as well
* at least clang can savely generate relocatable readonly sections, so use "r" for aarch64-win64
* as a variant for SEH exception filters we allow them to be *duplicated* instead of being extracted; this can be done unconditionally as for extracted ones their code is set to Nil after they're done and thus won't be picked up by generate_code_exceptionfilters
* use accessor functions to work with the TContext record
* the prefetch bug handling is specific to x86_64
* rename RunErrorCodex64 to a more appropriate RunErrorCodeSEH
* enable is_prefetch only for x86 code
* inside the Win64 system unit convert FPC_USE_WIN64_SEH to a SYSTEM_USE_WIN_SEH
+ implement RTL functionality for SEH for aarch64-win64
+ implement compiler support for SEH on Win64
Note: due to the way we access variables in a nested function (which in this case includes exception filters) we can not extract the finally handlers and call them (like we do on i386 and x86_64, but instead we duplicate the finally code)
+ implement a main_wrapper for the default exception handler for aarch64-win64
* the .pdata section currently only needs to be always included for arm-wince (at least until we have full SEH support there as well)
+ add an error message if the size of a function is invalid (in case of aarch64-win64: not a multiple of 4, the instruction size)
+ add Win64 target to help text
* regenerate msg{idx,txt}.inc
* the clang assembler does not provide support for the SEH directives we need (only the LLVM backend would be able to use them), thus we need to manually convert them to data sections
* due to an apparent bug in the clang assembler for COFF when assembling ADRP instructions we can't use symbols that are offset into their section
* generate jump tables into the same section as the code as otherwise we'll get bogus relocations (in case of clang.exe) or a future support for armasm64.exe will reject the relative symbols outright
* register the DLL scanner for aarch64-win64
* set implicitframe for copied tryfinally nodes as well
* implement dogetcopy for the Aarch64 variant of the tryfinally node
m68k-amiga: document which legacy support functions are unimplemented and why, and where are they used in the RTL code
* Minor improvement. No need to move the terminating null char, since it is written later anyway. Remove a local var.
* Fixed
0044960. Also copy a trailing implicit #0 of the original string to the new larger string.
* patch by Michael Ring: adds license headers to th FreeRTOS files and some renames to make the interrupts cmsis compatible.
* Do not report about unimplemented unicodestring manager when HAS_WIDESTRINGMANAGER is defined (on Windows). In such case unimplemented parts are never executed unless you call them directly.
* Do not assign DefaultGetStandardCodePage when HAS_WIDESTRINGMANAGER is defined (on Windows).
* Xtensa: do SAR by a constant using SRAI
+ Xtensa: make use of ADDX*
* Windows: Reworked handling of command line arguments to properly support Unicode:
- Use the CommandLineToArgvW API function to parse the Unicode command line (we can use it since Win9x is not supported anymore).
- Implemented non-public functions ParamStrA and ParamStrU which are exposed in the objpas and uuchar units to provide correct AnsiString and UnicodeString versions of ParamStr().
- The cleanup code is moved from InternalExit to the finalization section of the System unit.
+ Xtensa: enable jump optimizer
+ assembler optimization MovxMov2Movx
Update revision.inc after commit 44920
* correctly set register size
* fix for Mantis
0035140: apply patch by Ryan Joseph together with some further changes by me to add support for constant parameters in generics
+ added tests
* fix tc_bool_2_int simplification in case pass typecheck runs again, e.g.
after getting a copy of the node during CSE (fixes taddset4 compilation
with LLVM after
0044712)
* destroying constnone constsyms can occur when parsing a generic with a constant parameter that results in an error (e.g. unsupported type)
* fix for Mantis
0036975: arraydefs are not allowed for generic types (this is only used for type declarations; for specializing constant strings which are char arrays are still allowed)
+ added test
+ add an explicit error message if a type is not supported for a generic constant parameter
* regenerate msg{txt,idx}.inc
* use a more detailed error message if a type is not allowed for a generic constant parameter
amiga: Crt, fixed cursor x and y position
* Xtensa: set source_cpu_string
* Xtensa: fpc_setjmp dummy
+ xtensa-linux support for several packages
* simplify xtensa-linux building
+ initialize variables, so compilation with -O3 works
* patch by J. Gareth Moreton: refactor RemoveCurrentP
Merge: a084c8829f a857e60dc1
* merged the z80 branch
+ implemented get_caller_addr and get_caller_frame for the Z80
- removed GetHigh, GetNextReg, GetLastReg, GetOffsetReg and GetOffsetReg64 from cpubase. The methods
in cg should be used instead, because they do better error checking on the register used.
+ added empty strings.inc and stringss.inc files
+ added Z80 helper functions is_regpair and split_regpair
+ added another helper for register pairs: register_in
z80: sdasz80 won't do section smartlinking for us, but it's used for the zx spectrum target
z80: added quick & dirty vasm assembler support to the target
* unfortunately tf_smartlink_sections is mutually exclusive with
tf_smartlink_library, and defining both breaks sdasz80, so put this behind
ifdef Z80_SMARTLINK_SECTIONS
Fix cross-compilation on aarch64-linux using -dFPC_SOFT_FPUX80 option
Fixed LLVM compilation after
0045143
+ z80: added range checking for d in the (IX+d) and (IY+d) addressing modes in
the sdasz80 assembler writer, because sdasz80 silently truncates d to shortint
which produces broken code and hides bugs in the z80 code generator. The check
is behind ifdef, because the system unit doesn't compile, when this check is
enabled, due to bugs that were previously unnoticed. When these bugs are
fixed, the ifdef will be removed.
+ z80: generate correct code in do_spill_read and do_spill_written for spilling to temp offsets outside the range -128..127
+ enable the sdasz80 lameness check permanently, because the system unit now
compiles, and it's important to catch other similar errors also
Amiga: Video unit, do not draw Cursor if outside the window (would write over the window border)
* do not generate moves unncesssarily in tcgloadparentfpnode.pass_generate_code
z80: fix global symbols and section attributes in the vasm writer
z80: fix typo in the previous commit
zxspectrum: pascal startup code. this allows the RTL to be built with any assembler
+ initialize StackBottom and StackLength in the startup of the ZX Spectrum system unit
zxspectrum: in the pascal startup code, match start symbol name with the asm startup code
* reduced the stack margin for stack checking to 64 bytes on the Z80
zxspectrum: added support for linking via vlink, and for pascal sysinit code. also some cleanup in the linker code
* fixed compilation with sdld
* fixed bug, causing the global variable stacksize to be destroyed
* added comment, stating that Z80 has no condition subsets
+ build an instruction table cache for the Z80
+ partial implementation of taicpu.Matches
* Z80: fixed code generation for pure assembler routines, that have no parameters, no local variables
and no 'nostackframe'
* do not use an extra register in tcginlinenode.second_IncDec if not needed
+ z80: added condition checking in taicpu.Matches
- z80: oops, forgot to delete some code from taicpu.Matches
+ z80: implemented taicpu.FindInsentry
+ z80: implemented taicpu.CheckIfValid
+ handle OT_IMM_PORT in taicpu.Matches
+ handle OT_REG8_C_PORT in taicpu.Matches
+ handle OT_RELJMP8 in taicpu.Matches
+ handle OT_IMM8 and OT_IMM16 for getting symbol addresses in taicpu.Matches
+ added Z80 inline asm instruction validation
+ z80: add operand info to the result of taicpu.GetString, this makes the
compiler produce nicer error messages, when it encounters an invalid
instruction in inline asm code
+ started work on the Z80 internal assembler
+ added class TRelObjOutput
Amiga: keyboard prevent double keys on GetKeyEvent, if called without PollKeyEvent
Amiga: special CRT unit (named vidcrt) based on video unit
m68k: have an arch-specific second_length implementation, to make sure length() doesn't return its result in an address register
* fix for Mantis
0036895: the new epoll_pwait was missing the size parameter for the sigmask parameter
* increase PPU version so that 3.2.0 correctly ignores 3.3.1 PPUs instead of fatally failing on the extended header entry
* GetCopyAndTypeCheck forces correct type
* propagate forinline flag through simplify
* allow recursive inlines, meanwhile, there are other means to avoid too deep recursion of inlining
+ enable the Z80 internal asm (which doesn't work, yet) if the compiler is compiled with -dZ80_INTERNAL_ASM
+ added an override of the abstract method TRelObjOutput.writeData (not implemented, yet)
* remove tempref mess for simple inlined functions
* compilation with -Oodfa fixed
ppudump: catch exception on illegal datetime (mainly cross compiled units)
* properly force the result type after
0045217
* Windows: Do not use CommandLineToArgvW for parsing command line parameters, because it treats \" as an escape sequence for the double quote.
- Implemented parsing of the command line which is backward compatible.
- Do not use GetCommandLineA.
* correctly handle result type of string constant nodes for internally created
nodes
* handle generic parameters in Ord()
+ added test
* compilation with -Oodfa fixed
+ added build mode that enables the Z80 internal assembler
+ added class TRelObjData
+ override the abstract methods from TObjData.sectionname() and .writereloc(). Only sectionname() is implemented for now.
+ write the .rel file header and the list of external symbols
* the areas global symbols count must be in hex in the .rel format
+ write the areas (sections) in the .rel output
+ added the global symbols to the .rel output file
+ implemented pass1 (calcsize) of the instruction encoding for the Z80 internal asm
* Z80: match both signed and unsigned 16-bit constants as OT_IMM16 in the asm instab lookup
+ partial implementation of pass2 asm opcode generation for the Z80 internal asm writer
+ Z80 internal asm: produce correct opcodes for register operands
+ actually produce relocations in TRelObjData.writeReloc
* Xtensa: patch by Christo Crause: fix addmi/addi handling, resolves
0037015
+ write the section data in the .rel internal object writer (relocations aren't written, yet)
+ introduced the TRelRelocation class
+ added TRelRelocationFlags
+ initialize size and relflags in TRelRelocation
+ added method TRelRelocation.EncodeFlags that encodes the flags to string that can be included in the .rel file
* Put all code adding cs_fp_emulation by default inside one big
{$ifdef cpufpemu}
* Add system_arm_freertos and system_xtena_linux to the list
of systems that automatically add cs_fp_emulation to
init_settings.moduleswitches.
+ Do not use controller specfic default fputype for xtensa-linux
target that does not support use of -Wp option to set controller type.
Add -Wp option description for riscv32 and xtensa compiler
Do not use inherited first_int_to_real when arm FPU_HAS_FPA is in fpu_capabilities
+ also write the relocations in the .rel internal obj writer
* the parameter of WriteWord should be word, not byte :)
* xtensa-embedded: fix setting of the fpu and abi
* Release registers which have been used for a function call before adjusting the stack pointer. On i386 this allows to use eax,ecx,edx in POP instructions for stack adjustment.
+ lots of fixes to the Z80 internal asm writer
+ Z80 internal asm: support OT_REF_ADDR16 in taicpu.gencode.WrinteNN
+ support conditional operations in the Z80 internal asm
+ fix for conditional JP in the Z80 internal asm writer
+ support creating ar files in the Z80 internal obj writer
+ align files in generated .a files not by #0, but by #10 (Line Feed). This is
compatible with GNU ar and others, and fixes linking with sdcc-sdld.
* preserve the actual file size (before aligning it to even bytes), when adding files to .a archives
+ support the RST instruction in the Z80 internal asm writer
+ support relative jumps in the Z80 internal asm writer
+ Z80: support conditional JR
+ support the 'in A,(n)' and 'out (n),A' instrunction in the Z80 internal asm writer
+ support instructions like BIT, SET and RES in the Z80 internal asm writer
+ support signed 8-bit immediate constants in the Z80 internal asm writer as well
+ call ApplyAsmSymbolRestrictions for symbols that should be exported from ar files
+ added internal error in taicpu.gencode.WriteNN to catch unhandled asm instructions
- reverted previous commit, since it was incorrect
+ fix for writing absolute relocations in the .rel format
* fixed the TRelocDataInt to avoid truncating 16-bit addresses to 8-bit on 8-bit CPUs
- removed commented out writeln
* x86: Fixed peephole optimization introduced in
0044233. tb0219 and tb0548 tests have failed with -O2 since then.
* Added variants of the tb0219 and tb0548 tests with forced -O2.
* If a nested procedure does not access its parent's frame pointer, optimize it by removing the hidden $parentfp parameter.
* Improved the tisogoto1.pp test.
* fixed fpmake invokation when building an i386-linux snapshot on a x86_64-linux host
* only call cg64.a_XXX_loc for LOC_(C)REFERENCE and LOC_(C)REGISTER locations in
tcginlinenode.second_AndOrXorShiftRot_assign
* i8086 compilation fixed after
0045302
+ generate more optimal code for OP_NOT and OP_NEG in tcg64f8086.a_op64_ref
* call inherited in tcg64f8086.a_op64_reg_ref for OP_NEG and OP_NOT, because it is handled differently after
0045302
- remove unused files, resolves
0037032
m68k: preparations for upcoming full instruction tables, mostly converting code away from using sets of opcodes
+ use ApplyAsmSymbolRestrictions on all symbols in the NASM writer
m68k: added a full instruction table (minus CF MAC/EMAC instructions for now), based on vasm, and the required tool to process it
m68k: add the converted includes, based on m68kins.dat
m68k: migrate the compiler to the new instruction tables and drop the old ones
m68k: fixed instruction code formatting in the generated include
* fixed -Cl options now showing in the help of an LLVM compiler (and fixed
them to read -Cl rather than -CL)
rtl-console: fixed keypressed implementation in the Amiga VidCRT unit
* Always use parentfp for forward-declared nested procedures.
* Do not perform optimization of nested procedures for:
- targets which use a special struct to access parent's variables;
- pure assembler procedures (for compatibility with old code).
* fixed test for 32 Bit targets
* avoid unncessary conversions of constants in 64 bit ints when doing constant folding
* improved heuristics for auto-inlining
* generate CFI data only if we're either using it for exception handling or if debug output is enabled (or should this only be generated for targets that in theory support DWARF exception handling?). This removes unnecessary bloat from e.g. Windows binaries
- cleaned up some x86-specific code from the Z80 inline asm reader
+ also recognize alternate registers in the Z80 inline asm scanner. This allows
the "EX AF,AF'" instruction to be accepted and assembled as well.
+ added the alternate Z80 register pairs BC', DE' and HL'
+ added a correct implementation of TAOptBase.SuperRegistersEqual for the Z80
+ Z80: added a registers_interfere helper function
+ introduced TAOptBase.RegistersInterfere (which might not always be equivalent to SuperRegistersEqual)
* use RegistersInterfere instead of SuperRegistersEqual in TAoptBase.RegInOp and TAoptBase.RegInRef
+ added subregisters for the Z80 flags
+ added the Z80 individual flag bits as subregisters
+ MovAndTest2Test optimization
+ Z80: implemented TCpuAsmOptimizer.InstructionLoadsFromReg
+ support the LD instruction in TCpuAsmOptimizer.RegLoadedWithNewValue
+ Z80: support all the flags subregisters in super_registers_equal
+ Z80: support the flags subregisters in the registers_interfere function
* handle OP_XOR for a full mm register correctly in tcgx86.opmm_loc_reg
Allow system unit to be compiled without RTTI feature
Use GCCLIBDIR variable for FPCMAKEGCCLIBDIR if FPCFPMAKE has same target cpu as CPU_TARGET
Update fpcmake.inc and revision.inc after previous commit
0045352
Do not add -Fl$GCCLIBDIR to FPCMAKEOPT as this is now handled by fpcmake
Regenerate all Makefile's after change in utils/fpcm/fpcmake.ini to better support use of i386 compiler on x86_64 machines
* simplify constant expressions after re-ordering, resolves
0037062
- removed tabstractrecorddef.get_unit_symtable, which did not always return the unit
symtable (when you had a local recorddef in a procdef)
* modified tdef.get_top_level_symtable() so you can specify whether you want to
skip procdefs or not
* changed tobjectdef.vmt_def() to no longer require a typesym for the tobjectdef
(based on patch by Blaise)
* fix a typo in a comment. no functional change
* patch by Reynaldo to generate kernel image for the raspi2 embedded port, resolves
0027052
+ handle the flags register bits for many Z80 instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
+ Z80: report flags register information in TCpuAsmOptimizer.RegLoadedWithNewValue for 16-bit ADD,ADC,SBC,INC and DEC
* fixed tests
o fixed use of loop counter after end of loop
o fixed reliance on old behaviour for int -> real typecasts
m68k: add support for bitfield instructions as CPU capability
* fix spilling for PAND, POR and PXOR, resolves
0037084
m68k: tabs to spaces and indentation fix, no functional change
+ Z80: report the flags usage for all the remaining instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
+ z80: handle all instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
* fixed IsJumpToLabelUncond for the Z80
- removed old float-to-string and string-to-float conversion code
- z80: disable regvars, because they don't work
* boolean or/and nodes might be swapped when they have no side effect, in case
of short boolean evaluation, firstcomplex is not called so this does not
hurt short boolean evaluation
* call x86 addordinal for non short boolean evaluated boolean nodes
as this results in better code
* when auto-inlining is used, do not require that inlining is explicitly turned on
* Z80: JR can be both conditional and uncoditional jump, just like JP
+ PXorPXor2PXor optimization
* Reworked the optimization of unused $parentfp for nested routines.
- Do not remove the $parentfp parameter as was done in the previous optimization approach. Instead when $parentfp is unused to the following:
- On the caller side: Omit passing the value for $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=false (classic CPU targets).
Pass 0/nil as $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=true;
- On the callee side: Prevent allocation of registers/resources for $parentfp.
- When possible keep $parentfp in a register.
- Set the pio_nested_access flag in tprocinfo.set_needs_parentfp() to properly handle deep nesting levels;
* Fixed the jvm target after
0045436.
* It is needed to mark $parentfp as used for all targets.
* Added the thlcgobj.a_load_undefined_cgpara() method to pass an undefined value as a parameter to a routine. The generic version passes the 0/nil value if the parameter's location is not a register.
* Use a_load_undefined_cgpara() to load values for unused parameters.
* exceptions are side effects which must be considered in boolean expressions
* patch by Karl-Michael Schindler to update the German help files, resolves
0037122
* Reg1ReadDependsOnReg2 moved to TAoptBaseCpu
* use Reg1ReadDependsOnReg2 in TAoptBaseCpu.RegModifiedByInstruction to handle properly Z80 subregisters
+ Z80: handle all instructions that modify registers, that are not an operand in TAoptBaseCpu.RegModifiedByInstruction
+ Z80: handle the flags register in TAoptBaseCpu.RegModifiedByInstruction
* Do not use the LOC_VOID location to indicate unused parameters.
* Added the tprocdef.parentfpsym property. Set parentfpsym.varstate to vs_read instead of using the pio_needs_parentfp flag.
* Replaced tcgcallparanode.push_zero_sized_value_para by tparamanager.has_strict_proc_signature.
Amiga: optimized video unit drawing
* implemented a_load_undefined_cgpara for LLVM, fixes LLVM code generator
after the changes to optimize unused parentfp parameters
* add tests\test\unit\types directory to list of tested directories
* replaced custom packed record with tmethod
* added missing method declarations for AOPowerManager.InnerWakeLock class
* patch by Christo Crause: fix register search on xtensa, resolves
0037121
tosunits: added some more xbios calls
m68k: atari syscalls might also destroy D2 and A2
m68k: avoid more vlink warnings regarding changed section attributes, when the target system has no write-protected sections
tosunits: added another example which shows a DEGAS format picture
tosunits: fixed the palette to be ST only (9 bits) in the example picture, this is a bug in GraphX2 which was used to convert the picture to DEGAS format
* x86-64: adjust stack by push/pop if possible
* adapt optimizer to handle push/pop for stack alignment
* adapt test
* do not load unused parameters, as their localloc has not been set (and
there is no point in doing so if it were)
o fixes compilation of RTL with LLVM/AArch64
* compilation on i386 fixed
* re-activate copy_mm: using it instead of movs might reduce register pressure
* x86 has to use newalignment as well
+ x86: track use of full ymm registers and generate vzeroupper if needed
* create vpxor instead of pxor in avx mode
* improve copy_avx gencopy mode
* factored out OptPass1VPXor
* always use 1-byte section alignment for the rel internal obj writer
* the len parameter of TObjData.alloc changed to TObjSectionOfs
+ also write sections with no data in the .rel internal obj writer
+ enable the Z80 internal assembler
Disable cpu and signals unit for aarch64 CPU
+ Z80: added the JRJP pseudo instruction
+ added JRJP to various instruction lists
* translate jrjp to jp in the sdcc-sdasz80 asm writer
* CPU_UNITS needs to be referenced
* insert fwait after fcompp, resolves
0037136
Reorder and complete list of supported CPUs
+ Z80: implemented the JRJP pseudo instruction in the Z80 internal asm writer
* z80: use the JRJP pseudo instruction to generate shorter code (it is
translated to JR wherever possible, otherwise to JP)
* use const_align(sizeof(pint)) alignment instead of sizeof(pint) for various
compiler-generated structures, so they don't waste any extra alignment space
on 8-bit CPUs like the Z80 and the AVR
* ARM: (V)LDM do not load from the registers in the reg. set
* enable tests for the Nullable unit
+ started work on the Z80 internal linker
* ARM: get rid of more unneeded sxtb/h uxtb/h instructions
* ARM: factor out TARMAsmOptimizer.OptPass1And
+ implemented TRelObjInput.CanReadObjData
- removed the z80_internal_asm build mode, since it's now a feature enabled by default, not hidden behind an ifdef
* enable the Z80 internal linker (not working yet) if the compiler is compiled with the Z80_INTERNAL_LINKER define
+ added 'z80_internal_linker' build mode to the z80 lazarus project
* AArch64: enable TARMAsmOptimizer.OptPass1And
+ override TInternalLinkerZXSpectrum.InitSysInitUnitName
+ set cobjdata in TRelObjInput.create
+ set cobjdata in TIntelHexExeOutput.create;
+ create a linker script for the ZX Spectrum internal linker
+ override TInternalLinkerZXSpectrum.GetCode/Data/BssSize to avoid access violation error
* buffered text reading functions moved from being local to TRelObjInput.CanReadObjData
to being class members, so they can be used by ReadObjData as well
+ partial implementation of TRelObjInput.ReadObjData
+ parse the area records of REL files
* a nil node is also a constant pointer node
+ convert (v1=const1) and (v2=const2) into ((v1 xor const1) or (v2 xor const2))=0 if the expressions have no side effects
+ parse the REL symbol records
* TRelObjInput.ReadObjData: return success, if file was read correctly
* return the correct size for files in ar archive. This is required by the REL
reader, which reads files until the end of file
* set MaxMemPos to $FFFF in the Z80 internal linker
+ add .text, .data and .bss exe sections and define the entry point in the ZX Spectrum internal linker script
* group T and R records together and call a function (not implemented yet) to handle them in pairs
+ implemented reading of T and R records
* extended
0045555 to take care of chars as well
* renamed some REL sections to follow a similar naming convention
* avoid setting the oso_Data flag on bss sections
+ set IMAGEBASE in the Z80 internal linker script
* ImageBase changed to qword (same type as CurrMemPos) to avoid truncating to 8-bit on Z80
* ImageBase changed to qword to avoid 8-bit truncation in the internal linker map file
* avoid 8-bit truncation of the sizes in the internal linker map
+ implemented IHX writing in the Z80 internal linker
- removed the GetCode/Data/BssSize overrides in the ZX Spectrum internal linker,
since the default implementation, inherited from parent now works
+ implemented TIntelHexExeOutput.DoRelocationFixup
+ ZX Spectrum internal linker: invoke the ihx2tzx to postprocess the ihx file,
produced by the internal linker (in the future, the code of this utility may
be integrated into the compiler)
* changed the exe extension of ZX Spectrum to '.tzx'
+ enabled the ZX Spectrum internal linker
- removed the z80_internal_linker build mode from the lazarus project
+ allow specifying the program load address for the ZX Spectrum target via the -WB option
+ x86: optimziation MovMov2MovMov 2
Amiga: make the fullscreen video draggable, map Help Key to F20
+ add support for DEFB and DEFW directives to the internal assembler reader
* also handle single character register names (needed on Z80 for example)
+ add ability to generate a flat binary file instead of a tape file
* with ihx2tzx now also supporting binary output it makes sense to rename it to something more generic
* simplify code: simply raising an exception is enough, it's not necessary to call ShowException and Terminate
+ add compiler support for the Z80 MSX-DOS target
+ add support for Z80 MSX-DOS to fpcmake
+ add support for Z80 MSX-DOS to fpmake
* allow executable/library name to be changed for an intermediate file
+ add initial RTL for MSX DOS. Simple programs are already working, but there are apparantly some code generation problems that lead to I/O as well as parameters not working correctly
* change exe extension for MSX-DOS from exe to com
+ add MSX-DOS to help text for -T
* regenerate msg{txt,idx}.inc after adding MSX-DOS to help text
* better rules if a 3 op mul operation is tried
+ add intrinsics for Z80 port IN/OUT
+ add support for port object on Z80 using the new IN/OUT intrinsics
* forgot to commit the generated Makefile
* include the Z80 specific intrinsic values
* fix O_LARGEFILE for Aarch64, RISC-V 32-bit and RISC-V 64-bit
+ some basic stuff for mips64el
+ added the 'AREA' directive support to the Z80 inline assembler, that allows
you to define custom sections
+ support the OFFSET directive in the Z80 inline assembler reader
+ add the _BSSEND section after the _BSS section
* the len parameter of TObjData.writebytes changed to TObjSectionOfs to avoid 8-bit truncation on Z80
* use qword instead of aword for bsssize to avoid 8-bit truncation on Z80
* fixed a bug in the Z80 internal linker when reading symbol offsets from .rel files
* fixed stack initialization in the ZX Spectrum startup code
+ clear the .bss section on startup in the ZX Spectrum RTL
+ optimize real operations with 0 and 1 if fast math is turned on
* optimize a/a and a-a if fast math is on
* patch by Christo Crause: FreeRTOS: heap manager doesn't free small blocks, resolves
0037195
* fix compilation for non 64 Bit targets
* swap fpu stack correctly when moving data into xmm registers
* patch by Christo Crause: embedded heap manager: free small blocks, resolves
0037204
* ensure that the BSS section for MSX-DOS is correctly initialized to 0
* fix typo (no code changes)
* for adding procdefs to forwarddefs check for the specialization flag instead of whether it's a full specialization; fixes implicit finalization handlers on x86_64-win64 not being found
+ added tests
* Aarch: handle 0 in AndAnd2And and check if the resulting constant
is really a shifter constant, resolves
0037203
* slash and divn might have an exception as side effect
* write length/code page when writing the string type
* temporarily fix
0037034 by disabling the problematic optimization until the real cause is fixed
+ might_have_sideeffects checks also if the tempinitcode of a tempref node might have side effects
* better check for short boolean evaluation in firstcomplex
* fixed copy&paste error of
0045658
* Optimize parentfp when optimization level 1 and higher to be debugger friendly.
z80: vasm doesn't support the JRJP pseudo instruction, so change it to JP during write
* Fixed the parentfp optimization for some cases when nested procvars are used.
* Improved the parentfp optimization to properly handle cases when a nested routine calls other nested routines.
* Added optimization option cs_opt_unused_para. It is enabled for -O2 and higher. The parentfp optimization is tied to cs_opt_unused_para.
+ support z80 in the fpc launcher utility
* fix -Agas-darwin to say Aas-darwin for x86-64, and also add it for i386
(mantis
0037230)
* regenerated message files
o patch for Xtensa by Christo Crause, resolves
0037099
+ Added postfix parsing in tattreader.GetToken
- Removed all postfixed versions of OpCodes from the instruction list
+ Added all missing OpCodes from Xtensa ISA
* Changed branch OpCode to A_B, similar to ARM
+ Added missing branch condition flags BCI and BSI
* Updated existing compiler code that referred to the old postfixed instructions
+ Added prefix and postfix handling in TxtensaInstrWriter.WriteInstruction
* Updated TCPUAddNode.second_addfloat to specify .S postfix
* Updated tcpuunaryminusnode.second_float to specify .S postfix
+ Implemented prefix and postfix identification in txtensaattreader.is_asmopcode
* Adapted branch condition extraction to respect postfixes
* Changed itcpugas to call findreg_by_name_table from raatt.pas (same as issue
000037121, difficult to test these changes without including a fix for the register name search problem)
* Xtensa: MatchInstruction requires a postfix parameter
* Reworked tprocdef.is_implemented to fix a bug with the parentfp optimization. The bug was detected when using the llvm backend.
+ Added a test.
* switch to interrupt mode 2 and install a custom maskable interrupt handler in
the ZX Spectrum startup code, because the ROM handler requires the IY register
to always have a specific value, but the FPC code generator uses the IY
register for various purposes, which causes random crashes and glitches when
the timer interrupt occurs.
* limit the ZX Spectrum programs address space up to $FDFC, because the RTL now
installs an interrupt handler at $FDFD
+ Xtensa: patch by Christo Crause to add optional MAC16 registers, resolves
0037130
* fix typo (no code changes)
+ Xtensa: patch by Christo Crause: support call0 abi in init final code part of
0037242
* patch by Christo Crause: support call0 abi in entry/exit code, part of
0037242
+ Xtensa: patch by Christo Crause: support subarch lx106 in freertos Makefile, part of
0037242
* fix for Mantis
0037251: apply patches by Bi0T1N to implement the IsConstValue() intrinsic
+ added tests
* Xtensa: patch by Christo Crause: fix controller date for esp8266, part of
0037242
* Xtensa: patch by Christo Crause: add IDF_PATH variable, read from the appropriate environment variable, part of
0037242
* fix for Mantis
0037272: also allow the empty set for dynamic array parameters; Delphi probably started to allow that together with array constructors.
+ added tests
* reverted some stuff accidently committed in
0045704
m68k-amiga: added four new exec legacy support functions, these exec calls will be used in some DOS and AThreads rework
amiga-likes: add headers for timer.device/GetSysTime()
* correctly handle sign/zero extensions for optimization "var3", resolves
0037254
* delay setting of pd_body and pd_implement till the header of a generic
procedure is parsed, resolves
0037261
* use the fpu on suitable x86 targets to copy extended values
* set mm register subreg properly when cleaning them with xor
* fix compilation with newer FPC
+ handle OS_128 in mm code
bump ppudump copyright year
* (modified) patch by Michael Ring from the mailing list to fix linking for arm-freertos
+ Xtensa: more cpu capabilites
+ Xtensa: set cpu for xtensa-linux as call window support is required
* fix abs() intrinsic optimisation, resolves
0037301
Fix overflow when value is high(int64) in OptPass1And method
* fix test to check result properly as pointed out by Bi0T1N in the bug tracker
* AAarch64: handle initializations of vector registers with zero properly
Fix ShowHistory, by avoiding ordering by TR_ID which is not monotoneous anymore
* properly calc new src register for OP_XOR
Add softfpu feature for z80 cpu
* patch by Christo Crause: fix volatile registers for call0 abi, resolves
0037317
Try to fix tarmunaryminusnode.pass_1
Only try to use softfpu functions when fputype is fpu_soft
Disable bzip2 package for msxdos (Data element tool large error)
Disable all utils for zxspectrum and msxdos
Add z80 to PPC_TARGETS to reove ppcz80 on clean
tarmunaryminusnode.pass_1 must call inherited method for system_arm_wince
Do not use .hidden for systems_wince, as is done for systems_windows
* regenerated Makefiles again
* scalar operations should take single/double values and not full registers
Also use union with double field to ensure correct alignment for float64 type from genmath.inc source
Put floating point type as first variant of floatXX definitions, to ensure correct alignment
Fix conversion between TFPURoundMode and bits of get_fsr according to SPARC-V8 specifications
* TAOptObj.MakeUnconditional: Set as internal error for MIPS cpu:
MIPS conditional instructions conntain the
computation of the condition itself, so
changing the instruction to unconditional
should never be done.
* TAOptObj.OptimizeConditionalJump: Return false early if
the conditional instruction has more than one operand.
* tcg.a_load_cgparaloc_ref: Always enable SHR instruction for mips/mipsel CPUs
This is normally only used on big-endian targets, to re-convert records
of size < OS_INT into values fitting inside the byte size of the record,
after it was left-shifted to comply with ABI stipulating it but be
writable as a full-size register into a OS_INT size memory.
+ patch by Christo Crause: ESP8266 controller unit for freertos, resolves
0037336
Do not set value of stoploop to avoid infinite loop
Also check that HP1 is a jump instruction with more than one operand to exit early
Fix several warnings about uninitialized local variables
* Handle R_SUBMMWHOLE in reg_cgsize for R_MMREGISTER type
* Disable range and overflow checking inside is_continuous_mask function.
* generate soft float code for arm vfp units which have no double operation support
* completely disable records containing float fields in registers again, as
the code generator does not support subsetreg loads of floats
* enable putting records that contain a single field into records on all
targets (patch by J. Gareth Moreton, mantis
0037343)
* properly handle boolean64 xor boolean64 on i386
* revert part of
0044879: flock must use kernel_off_t: off_t breaks e.g. i386
+ patch by J. Gareth Moreton: SHL-centric peephole optimisations, resolves
0037389
Try to fix mipsel-android by making sure P does not point to a freed instruction
* revert part of
0045810 which was accidently committed
Avoid wrong overflow error when using -Criot options
Avoid overflow errors on z80 CPU by changing local variable type from aint to tcgint
Add missing CPUs for linux libgcc directory retrieval
Update svn:ignore porperties
Add list of generated executable to svn:ignore
New: rtl/inc/genmathh.inc source file, to provide a unique position
for the interface definition of float64 and float32 records,
available to all systems if FPUNONE is not defined.
rtl/inc/genmath.inc: Remove float64/float32, as they are now in rtl/inc/genmathh.inc
rtl/inc/softfpu.pp: Use provided definitions of float32 and float64
if available (by checking presence of FPC_SYSTEM_HAS_floatXX macro)
rtl/inc/systemh.inc: include genmathh.inc if FPUNONE is not defined.
rtl/java/jsystemh_types.inc: Likewise.
* float operations can have an exception as a side effect, resolves
0037398
* Fixed the peephole optimization of conditional movs for mips.
F_GetLk/SetLk have different values for sparc/sparc64
z80: preserve system ID and linker ID for the Amstrad CPC
* Fixed indentations of the interference graph.
* Added register names to the interference graph.
* To check the size of a register(s) corresponding to a variable it is needed to use localloc.size instead of def_cgsize(vardef).
+ Add a new parameter to GetCompilerInfo function,
called EmptyIfStdErr, which resets the returned string to
an empty string if the call generated output to stderr stream.
* Adapt calls to GetCompilerInfo to change above.
+ Add support for other CPUs for linux OS target.
* Try to avoid spilling of an imm register if it contains a value loaded from an already spilled imm register. It likely leads to an endless loop and the register allocation fails.
This fixes the register allocation for i8086 when handling registers for very constrained instructions such as "mov ireg1,[ireg2+ireg3]".
Here ireg2 can be only BX or BP. So in most cases only BX is available. When ireg2 is spilled, its value must be loaded to BX only.
Coloring of the ireg which holds the spilled value must be as early as possible to be able to assign BX to this ireg.
This fix should also help register allocation for other constrained/old CPUs.
* tinyheap: Early check for very big requested mem sizes in order to prevent overflows and properly report the out of memory error.
* i8086: Removed internal error, since global vars can be in registers if used only in pascalmain.
* i8086: Fixed referencing using BP and SP as base when FAR or HUGE memory model is used.
* i8086: Enabled the cs_opt_regvar optimization. It works fine now.
- removed no longer used -target $TARGET parameter (triplet is used instead)
+ optimize
mod for x86-64 as well
* In Delphi mode throw a conversion error when trying to typecast a pointer to a procdef when they use different memory models.
* Changed tsuperregisterworklist.get() to always return the last item from the list.
* Reversed sort order of simplifyworklist so nodes with most interferences will get their colors first.
Since degree of nodes in simplifyworklist before sorting is always
less than the number of usable registers this should not trigger spilling
and should lead to a better register allocation in some cases.
After these changes sysutils.o for i386-win32 is 80 bytes less. :)
+ add test for
0031714 which is already fixed
* patch by J. Gareth Moreton: fix for incorrect alignment removal, resolves
0037420
* modified patch by J. Gareth Moreton: MovOpMov2Op/Lea2Add/Lea2Sub consolidation, resolves
0037422
* mips: Added support for unaligned load/store. It greatly improves performance and prevents bus errors on systems which do not emulate unaligned memory access.
* Aarch64: set register size correctly for AndStrb2Strb optimization, resolves
0037427
* Re-enabled safe generic jump optimizations for mips.
* Fixed TAOptObj.CollapseZeroDistJump to properly handle delay slots.
* patch by J. Gareth Moreton: Minor oversight in MovAnd2Mov 3 optimisation, resolves
0037442
Add -SfPROCESSES for arm cpu, to be able to compile fcl-base package as for xtensa
+ simplify "x mod -1", resolves
0037449
* reject overloads if they only differ in the result types (as long as they aren't operator overloads)
+ added tests
* do not throw an internal error later on in case of a recursive call, if the declaration of the function was faulty, resolves
0037460
* rename local import of fpc_geteipasebx
* fpc_geteipasebx and fpc_geteipasecx are used as procedures, not functions, so declare them as such
- remove local Random() implementations that weren't exported anyway (LongInt <> Integer inside the System unit)
Add -marm option to gcc call fot arm target to be sure that aarch64 version of gcc complains to stderr if it does not support 32-bit
* do not throw an internal error if an errorneous type is passed to str, resolves
0037462
+ readd Randomize with parameter
* import library function with a name that does not conflict with the functions exported in the interface
* Count the number of interferences with real registers.
* Do not coalesce registers 'u' and 'v' if 'u' is the last usable real register available for imaginary register 'n' which also interferences with 'v'.
This prevents endless spilling in some cases for constrained CPUs such as AVR. Resolves issue
0037421.
Also this reduces the number of spilled registers in some cases and even eliminates spilling completely for some simple routines for i386 and AVR.
* Added a debug output of the number of spilled registers for each routine. This allows to easily compare results after changes in spilling algorithms.
* allow overloads with same result type for external Java classes due to Java supporting covariant return types for interfaces
* replace explicit (sometimes incomplete) tests with calls to doshortbooleval()
* the c-style boolean evaluation of "and" is independent of short-circuit evaluation
(you always have to consider the complete values in case the first one is <> 0)
* Enhanced the debug output of spilling statistics. Now it includes efficiency of the spilling which is based on
weight and usage count of registers. Range 0-100%. Such statistics are very handy when you modify the register allocator.
* Count only usable real registers.
* Early during register allocation, spill registers which interfere with all usable real registers.
It is pointless to keep them for further processing. Also it may
cause endless spilling.
This can happen when compiling for very constrained CPUs such as
i8086 where indexed memory access instructions allow only
few registers as arguments and additionally the calling convention
provides no general purpose volatile registers.
* Removed the i8086 specific hack. Since
0046199 the register allocator is able to handle the problem code.
* For 8 and 16 bit CPUs preload the ref base and index to a separate temp register in the generic implementation of a_load64_reg_ref() and a_load64_ref_reg().
This reduces spilling and produces a better code.
* i8086: When a ref points to the 32-bit data, preload the ref base to a temp register to reduce spilling.
* fixed LLVM register allocator after
0046199
* fixed peephole optimizer replace lea by add even if the flags were in use
(patch by J. Gareth Moreton)
* added test for Mantis
0036014 which is already fixed (also in 3.2.0)
* fix for Mantis
0036775: apply patch by J. Gareth Moreton
+ added tests
Disable limitation of handling of negative shift values, can be enalbed again by setting LIMIT_NEG_SHIFTVALUES macro
Add powerpc specific call to gcc to get the correct libgcc directory for linux
Regenerated all Makefile's
* For 8/16 bit CPUs and TP mode, disable expansion to a larger integer type for subtract operations on unsigned integers. This is TP7 compatible.
* patch by J. Gareth Moreton: unifies internalerrors, resolves
0037471
* made internalerror unique
Add amstradcpc OS support for fpcmake and fpmkunit
Change list of supported OSes
Add zxspectrum, msxdos and amstradcpc list of unsupported OSes for most utils packages
Add amstradcpc to the list of unsupported OSes base utils
Disable native compilation of ihcutil for zxspectrum, msxdos and amstadcpc as it requires fcl-base package
Disable compilation of most packages for msxdos and amstadcpc OS
* Added a simple implementation of random. It is TP/Delphi compatible. Enabled it for 8/16 bit CPUs by default.
* Improved generic implementations of fpc_mul_dword, fpc_mul_word, fpc_mul_byte to use less iterations and registers.
* reworked usage of tcgnotnode.handle_locjump
* reverted
0046220 as it is fixed now properly
- do not call firstpass in tinnode.pass_typecheck as it prevents further optimizations
* In assembly comments include all used registers by a variable for 8/16 bit CPUs.
* Do not add comments about unused varlocs.
* msdos: Include debug info only when it is enabled by options.
* Added virtual function TObjSection.GetAltName to be able to specify additional section name by descendants.
* OMF: Use the name of the first global symbol as an addition section name. This name is visible in the linker map file and helps tracking of section references.
* setelementn cannot be the root node of a cse domain, resolves
0037477
m68k: fixed a long standing issue, where FPU registers would be clamped to single precision during spilling
* insert type casts when creating new unaryminus nodes during simplification, resolves
0037508
* do not spill_replace if the register is used another time in the instruction
- no need to call add_move_instruction if data is moved between different register classes
* added test for bug that's already fixed (mantis
0037423)
* Optimized Handle_I8086_Error by using smaller int types.
* update version
- -Oodfa removed
* patch by J. Gareth Moreton: Long-range MOV + MOVS/Z optimisation, resolves
0037390
* attempt to correct bitpacked arrays on big-endian systems after
0043186. this fixed tparray13 test on m68k at least
* patch by Kai Burghardt to use https urls, resolves
0037522
FExpand: always uppercase drive letter also in BasePath
* better complexity handling of mul, slash, div, mod
+ add option -FF to force the use of fpcres as RC compiler
Note: if we merge this to 3.2.x then we can switch to this by default once 3.2.2 is released
* make sure that the resource compiler related globals are reset
* regenerate msg*.inc files
* it's usefull to enable the test for all platforms
+ add test for already fixed Mantis
0037286
+ add a constant that describes all internal COFF writers (be it PE/COFF or not)
* fix for Mantis
0037559: the adjustment of the section type should only be done for internal COFF writers
* Reverted accidentally committed files.
* patch by Christo Crause to make nostackframe with the windowed xtensa abi working, resolves
0037550
* Fixed nasm writer by adding a new line after the GLOBAL directive.
* 8086: Fixed calling of local routines with the near attribute in the 'far code' memory models.
* msdos: By default external routine names with the pascal calling convention must be all upper case. This is TP and TASM compatible.
* 8086: Do not force far calls in the TP mode by default. This is TP compatible. Other modes need forced far calls by default in order to compile non-TP code.
* do not try to unroll a loop if previously an error was thrown, resolves
0037475
* linux-m68k: depend on FPU defines to compile FPU code, instead of CPU68020. also, minor cosmetics
* don't convert lea to add/inc/dec/sub if there's a symbol in the reference
o fixes make cycle on Darwin/i386
* when a function returns a value in a register, but normally that type
would never be put in that kind of register by the compiler, store
it to memory to avoid issues down the line
o fixes tcalext6 on darwin/i386
* do not apply range test optimization if the variable is a string being compared against a char constants, resolves
0037476
* 8086: enable cs_force_far_calls when m_nested_procvars is enabled.
* 8086: when the compiler mode switches to a non-TP mode, enable cs_force_far_calls.
* msdos: Force names of external routines to be all uppercase only in TP mode.
* Added the $F+ switch (forced far calls) for some TP mode tests.
* execute the tempinitcode whent the tempcreate node gets processed rather
than when the first temprefnode to it gets processed. Solves the issue
the foreachnodestatic processes the tempinitcode when seeing the
tempcreatenode and ignores it when seeing temprefnodes, even though
it may actually be executed/generated for the temprefnode. It's
impossible to easily process it for the "correct" temprefnode
(since there may be multiple temprefnodes for the same tempcreatenode)
o fixes tarray12 for Darwin/i386 and Linux/i386
- reverted
0046457, accidentally committed (breaks -Oooptcse)
* RTTI: Offset of record fields is defined as SizeInt not ptruint.
+ AAarch64: FMovFMov2FMov optimization
* wlib: Explicitly specify the smallest possible record align to reduce the size of .a files.
* Xtensa: patch by Christo Crause: add support for windowed ABI stack dump, resolves
0037583
+ Xtensa: L32IMov2L32I optimization
+ Xtensa: consider also floating point stores in TCpuAsmOptimizer.RegLoadedWithNewValue
* In the TP mode for 16-bit CPUs uint8+uint8 is extended to sint16+sint16. This is TP compatible.
* 8086: Fixed Ofs() for far routines.
resultdef of typeconvnode.typecheck_proc_to_procvar() is reused every time you get an address of a proc. So it is forbidden to change the far/near attribute of resultdef - it leads to mess during code generation.
Instead it is needed to use separate reusable resultdefs with new flags pc_far_address and pc_offset.
* StackTop must be OS specific (and not CPU specific)
* fix for Mantis
0037579: mark the 'German' tokens with the characters they represent
* 8086: Fixed an internal error for cases like FarPtr2 := FarPointer($12345678) + int16;
* 8086: More fixes for Ofs() handling.
* Added on option to implement library based smartlinking of the dead stripable vectorized lists (e.g. resource strings index). By default smartlinking of such lists only supported when the section based smartlinking (tf_smartlink_sections) is enabled for a target.
* msdos: Implemented library based smartlinking of the dead stripable vectorized lists. It is enabled for the internal linker and wlink. These linkers sort sections by name by default.
* Allow library based smartlinking of indirect symbol entries.
* Corrected
0046481. Use both tcalo_new_section and tcalo_make_dead_strippable flags since only the default implementation implies a new section creation when tcalo_make_dead_strippable is specified.
* wlib: calculate the record size according to the number of files in the library.
* Xtensa: set abi correctly
* 8086: Fixed loading a 32-bit ref to a register in case the target register is used as the ref base or index.
* 8086: Also fixed loading a register to a 32-bit ref in case the source register is used as the ref base or index.
* tinyheap: Disable inline when FPC_TINYHEAP_HUGE is defined to prevent code bloat.
* Fixed tests for 16-bit CPUs.
* do not throw an internal error on illegal assembler expressions, resolves
0037439
* Changed Integer to Longint in definitions of RTTI structures. It fixes typinfo for 16-bit CPUs.
* msdos: Fixed section based smartlinking after my recent changes.
* Fix bug
0037601: add some attribte definitions
* Add StoredAttribute class, bug ID
0037602
Do not set EXCLUDE_80BIT_TARGETS to 1 if OPT variable contains -dFPC_SOFT_FPUX80
Fix error in previous commit
Try to avoid unneeded steps for fullinstallsymlink
* 8086: Fixed very long section names when $HUGECODE is ON and section based smartlinking is used.
* Added a utility function TrimStrCRC32().
* When optimization is off always load unused parentfp to a local location to be debugger friendly.
* msdos: Fixed AV in the internal linker in some cases when code or data exceeds 64k.
* If parentfp is passed in the stack it can be skipped only if po_delphi_nested_cc is set for the routine.
x86: It is more optimal to push some register (NR_FRAME_POINTER_REG) instead of a constant value in a_load_undefined_cgpara().
* Added assembler comments about unused parameters.
* reduce number of default libs
* patch by Christo Crause, resolves
0037335
* ESP8266 support for t_freertos.pas
+ -Ff switch to be able to pass the IDF_PATH without using an evironment variable
* insert literals after the section start which belongs to the current procedure
* Remove debug ECHO lines
* Fix detection of -dFPC_SOFT_FPUX80, as OPT is reset after
being copied over to LOCALOPT.
+ Add FULL_TARGETS that list all targets concerned by fullcyle and associated targets.
* reset idfpath when globals are initialized (needed for the textmode IDE)
* cleanup ARM remainders
* locals can have 0 as offset, force a reference in this case
+ initial implementation of setjmp/longjmp
* Xtensa: needs no mul helper, all variants have the MULL instruction
* ait_varloc instructions are handled and removed by Trgobj.translate_registers() and never left for an assembler.
* fix for Mantis
0037616: apply patch by Kai Burghardt to complain about the correct type used by setjmp/longjmp
* TThread.Terminate does not have any platform specific behavior (it should only set FTerminated to true and call TerminatedSet), thus move it to the platform independant part
Notes:
- Netware had a ThreadSwitch in there, but that is not really required
- some platform were missing the setting of FTerminated to True, thus they'll now do that as well
+ Xtensa: make use of muluh/mulsh instructions
* Xtensa: make use of divide extension if available
+ Xtensa: implemented TCPUAddNode.second_cmp64bit properly
* Xtensa: fixed tcg64fxtensa.a_op64_reg_reg_reg for unsigned operations
* ait_comment,ait_regalloc,ait_tempalloc,ait_varloc instructions produce only comments in the external assembler output. Moved handling of these instructions to TExternalAssembler.WriteComments().
This eliminates code duplication and improves maintainability.
* Xtensa: more fixes to tcg64fxtensa.a_op64_const_reg_reg and tcg64fxtensa.a_op64_reg_reg_reg
* Xtensa: disable simple random again, committed by accident
* Use TExternalAssembler.WriteComments() also by nasm and intel assembler writers.
* 8086: Use CX as a scratch register instead of BX.
* Xtensa: optimize some shifts by constants
* 8086: If a far procvar is called, it must be in a memory location. This fixes a hack to emulate CALL reg1:reg2.
* 8086: Fixed using far procvars in a near code memory model and vice versa.
* 8086: Do not destroy contents of the BX parameter when calling a procvar by ref with a base.
* 8086: Fixed register allocation failure after
0046559.
* 8086: Reverted
0046557. It must be implemented differently.
* 8086: Proper implementation of: If a far procvar is called, it must be in a memory location. This fixes a hack to emulate CALL reg1:reg2.
* never create a regular temp for inline parameters that can be modified by
the caller (mantis
0037465)a
o in theory, the regular checks for doing so should never trigger, but due
to compiler-generated nodes (such as calls to fpc_ansistr_unique), they
could. Internal address nodes can deal with taking the address of the
function result in this case.
* non-zero exit code on failure
+ Xtensa: use extui for and with constants
* Xtensa: tcpunotnode.second_boolean fixed
* emit the correct declaration for procdefs used to force a procname in LLVM
o fixes lazarus startup on macOS/AArch64 when compiled with the LLVM cg
* add Xcode-11.0 as LLVM target version versin
* Xtensa: fixed TCPUAddNode.second_cmpsmallset
* Xtensa FreeRTOS: unified haltproc
Fix EXTDEBUG code: tai_comment requires use of strpnew function with constant string
Replace outdated cgop2string function by tcgsize2str function from cgbase unit to fix EXTDEBUG cycle on powerpc64le-linux
Move z80 specific -Sf options from rtl.cfg to system.cfg, as -Sf options are only accepted when compiliing system unit
* Xtensa-FreeRTOS: use setjmp/longjmp provided by the Xtensa libraries, we
have to link against them anyways
* fix test for targets with little memory
* Xtensa: force correct location into a register in tcpunotnode.second_boolean
* reverted 46417: if a assembler subroutine needs an entry instruction, it should be added explicitly
* Xtensa: several issues with parameter passing of the windowed api fixed
Move dbugsrv.pp example program from fcl-base/fpmake.pp to fcl-process/fpmake.pp where the source really is
* Xtensa: some issues with large parameters fixed
+ created xtensa-freertos object files using gcc xtensa-esp32-elf-gcc (crosstool-NG esp-2019r2) 8.2.0 with:
make TEST_CCOMPILER=xtensa-esp32-elf-gcc create_c_objects TEST_FPC=fpc TEST_ABI=windowed TEST_OS_TARGET=freertos TEST_CPU_TARGET=xtensa TEST_SUBARCH=lx6 TEST_CFLAGS=-mlongcalls
* Xtensa: record alignment is upto 8 bytes done
* Xtensa: fix single<>single
+ Xtensa: implemented tcpuparamanager.ret_in_param according to API
* fixed passing of variant parameters
+ common include file for tcal*.pp tests to define cpusmall
+ Xtensa: reused constant pool entries if possible
* Xtensa: various stack handling fixes
* better calculation of estimated stack frame size
* Xtensa: rewrote parameter handling
* Xtensa: aggregate types up to 16 bytes are returned in registers
* Xtensa: fix operand size and location handling in TCPUAddNode.second_cmp
* stack size estimation again improved
+ dummy implementation for FreeRTOS threading support
* enable initialization of exceptions and threading on FreeRTOS
* Xtensa: set expectloc of not nodes correctly
* unified settings for CPU "size"
* replace tcaldefs.inc by cpudefs.inc
* fix for Mantis
0037650: apply adjusted patch by Ryan Joseph do not range check the length of ShortStrings if their length parameter is based on a generic constant
+ added test
* Xtensa: arrays are always passed as by reference but still returned in up to 4 registers
* fix tw3930 after
0037927
o "unique" class (and interface) type aliases should actually not exist at
all except for overload resolution. All the rest (VMT, UUID, RTTI, ...)
should be taken from the aliased class/interface
o there is one Delphi-incompatibily left after this change, but it shouldn't
matter: tw8180 does not compile if you change the declaration to
"tcl=class(TInterfacedObject,XStr,iinterface)", while Kylix does compile
that. It doesn't really matter though, because in Kylix this actually
adds iinterface twice as implemented interface, so there is no point
in accepting this.
* prevent quadratic complexity in the size of the inheritance chain when
comparing objectdefs for equality
* Improved output of spilling statistics:
- Do not use count_uses, since weight already represents a usage count of a register.
- Do not count spills of registers with weight less than 100.
* Use the initial location of stack parameters as a spilling location if spilling is needed. This leads to the following optimizations:
- no spill temp is allocated;
- no load of a stack parameter to a spill temp;
- if a stack parameter is used only once do not preload it to a register. The parameter can be accessed directly in the stack if the target CPU supports this.
* Fixed
0046776: With -O3 do not "coalesce" spilled nodes if the initial location is set.
* Xtensa: tcpuunaryminusnode.second_float fixed for double
* Xtensa: tcgcpu.g_concatcopy uses OC_NE so the branch requires one instruction less
* Xtensa: tcgcpu.g_concatcopy makes use of loop extensions if available
* Xtensa-freeRTOS: fix linking against libc
* more ABI compliant parameter passing
* Xtensa: handle references with offset only properly
+ C objects for for xtensa-freertos with call0 abi, build with:
make create_c_objects TEST_CCOMPILER=xtensa-lx106-elf-gcc TEST_ABI=call0 TEST_FPC=fpc TEST_CPU_TARGET=xtensa TEST_OS_TARGET=freertos "TEST_CFLAGS=-O3 -mlongcalls"
using xtensa-lx106-elf-gcc (crosstool-NG crosstool-ng-1.22.0-100-ge567ec7) 5.2.0
* Fixed the stack parameters optimization (
0046776) for big endian CPUs.
* improve call0 calling conventions
* Do not use stack parameter location for spilling if its size is less than the register size for all CPU targets except x86.
* Fixed
0046801 for the case of int64 params with a single paralocation.
* RiscV32: corrected tcpuparamanager.getcgtempparaloc, resolves
0037709
* cleanup
* linux: fix some formatting in ostypes.inc, no functional change
* linux: use ugetrlimit syscall on m68k for rlimits retrieval. this fixes fpgetrlimit() call, and stack checking on Linux/m68k (tstack.pp test), at least on anything newer than kernel 2.4+ (2001)
* Xtensa: taicpu.spilling_get_operation_type improved
* Xtensa: trgcpu.do_spill_op fixed
* cleanup
* Xtensa: stack size calculation for the call0 abi fixed
* Include stack location of spilled variables in the assembler output.
* Moved spilling of registers which have the initial memory location and are used only once to a stage after coalescing is done. This produces a better code.
* a classrefdef might also be created with a forwarddef, so handle that correctly
+ Xtensa: make use of ABS.S
+ extended test for abs(...) with single tests
* Reverted
0046836, since it does not work as expected for yet unknown reason.
+ introduce tcgobj.a_loadfpu_reg_intreg
+ make use of it in tcgtypeconvnode.second_nothing
+ Xtensa: implementation of a_tcgcpu.a_loadfpu_intreg_reg and tcgcpu.a_loadfpu_reg_intreg
* RiscV32 correctly set operands of div/mod operations, resolves
0037743
* patch by J. Gareth Moreton: introduce RemoveInstruction and make as much as possible use of RemoveCurrentP, resolves
0037399
* Do_IsDevice treats pipes and sockets the same way as character devices
* fix for broken wince compilation after
0046863
Add gcc specific options -mabi=32/-mabi=64 for mips CPU
Update revision.inc after commit
0046877
Do not set __USE_LARGEFILE64 macro for sparc CPU, as it does not seem to be used for regular linux kernels
Add handling of extra parameters, using eval if equal sign is found.
+ Add TMP_DIR variable and use it.
* Only remove temp files if verbose is not set.
* write a proper error message if types are read/written which are not supported in iso mode, resolves
0037763
* m68k: fix index register usage in memory references, when the index is 8 or 16 bit wide and unsigned
* fix for Mantis
0037221: apply adjusted patch by Ondrej Pokorny to allow the use of Copy() on open array parameters (the result will be a dynamic array)
+ added test
* fix for Mantis
0036909: apply patch by Ryan Joseph so that array constructors can be used for static arrays as well.
+ added test
* small formatting adjustments for the sake of consistency
* restore ability to cycle with 3.0.4 (at least until 3.2.2 is released) after
0046890
* make use of AllocMem in fpc_dynarray_setlength
* correctly handle static arrays with a lower index <> 0
+ added test
+ allow in ISO mode that { ... } and (* ... *) comments are paired, resolves at least partly
0037428
* don't print range check warnings when evaluating inlined explicit typecasts
* don't perform "(x=y) or (z=u)" -> "(x xor y) or (z xor u)" optimization
if z or u may raise exceptions (mantis
0037780)
* added missing "end." (fixup for
0046904)
* do not set nonlocal for inter-procedural labels, this is not needed, they use
the jmpbuf to reach the target
Disable ucomplex and matrix units for z80-embedded target
* MovzAnd2Movz* optimization improved
+ MovzAnd2And optimization introduced
* extended AndMovzToAnd to support more variants
* compilation on i386 fixed
* fix for Mantis
0037779: use init RTTI instead of full RTTI when copying an array
+ added test
Disable af_smartlink_sections option for Z80 vasm and z80asm assemblers, as it leads to errors
+ modified patch by J. Gareth Moreton: Aarch64: LDR/STR pairing optimisation, resolves
0037580
Fix problems in xtensa fpc_setjmp/fpc_longjmp for linux
* better error message in case of illegal nodes for string constants, resolves
0034054
msxdos target uses same __fpc_envp symbol as msdos
Change list of compiled units for msxdos
Use sdasz80 instead of sdcc-sdasz80 to assemble prt0.asm, as sdasz80 is used by ppcz80
Add missing svn:ignore in some directories
Set FBuildEngine.Verbose also for -d option
Avoid range check error in a_op_const_reg_reg method when compiled with -CriotR
* another error message changed into a better one
z80-zxspectrum: delete and remove the prt0.asm file. it's not used any more, as it doesn't contain the interrupt code required for stable operation of the target, and this removes sdasz80 dependency from the RTL build process, if another assembler is used by the compiler
* do not copy unused paravarsyms
* x86: ImulMov2Imul optimization
* x86: apply OptPass1VOP also to vsqrts*
* xtensa-freertos: patch by Alfred for better tool search, resolves
0037308
* Xtensa: set is_jmp flag so branch optimization works
* xtensa-freertos: run python helpers only on non unix by directly calling python
+ xtensa: make use of float.s instruction
+ xtensa: make use of nsau to implement Bsr*
* patch (with little modification) by J. Gareth Moreton: refactor ARM/Aarch64 peephole optimizer, first part of
0037526
patch by J. Gareth Moreton: GetNextInstructionUsingReg drops out earlier, second part of
0037526
z80: cleaned up some tabs vs. spaces indentation mess in the vasm writer. no functional change.
z80: re-enabled af_smartlink_sections for vasm which is required for the vasm + vlink combo, partially reverting
0046916
z80: added handling of sections provided by the startup code to the vlink linker script. this fixes executable building, but the resulting executables still don't work at this point
* test for mantis
0034543 (already fixed)
* regenerated after adding unixtype dependencies
+ evaluate typeinfo(
)=/<>typeinfo() at compile time, resolves 0030260
* use fld/fst on i386 to copy doubles
Add conversion from "$" to "." for i386-watcom target and avoid iteration if no char modification is wanted in ApplyAsmSymbolRestrictions function
Use ApplyAsmSymbolRestrictions function and limit label sie to 247 for watcom assembler
Rename pvmt internal type to lower_pvmt for i386-watcom as watcom assembler is not case sensitive
Fix compilation for watcom RTL
* Fix NaN for watcom assembler (C000h is considered as a label, use 0xC000 instead)
* Also use ApplyAsmSymbolRestrictions for label names (required for units using embedded '.'
* Add ':' after a label if there is hp^.next is not assigned
Add character, fpwidestring, unicodedata and unicodenumtable units to watcom RTL
Various Watcom changes to enable compilation of packages and utils
+ x86: FstpFld2Fst optimization (re-enabled for safe cases)
* inlinable frame handling dummies for avr
* inline frame handler if possible
Fix NDS RTL compilation for default armv4 CPU, which does not have CLZ instruction
* make framecount and framebufsize dependent on the pointer size
+ optimize comparisons of constant pointers
* set default processor for i386 to Pentium2
* AVR: MovMov2Mov 2 optimization
z80-zxspectrum: fix the the linking order in the bss section, so the startup code doesn't crash when linked with vlink
Treat metadata as data in agppcmpw.pas
+ support all XSAVE instructions, resolves
0037864
Refactor setting of NoNativeBinaries:
Added NO_NATIVE_COMPILER_CPU_LIST and NO_NATIVE_COMPILER_OS_LIST
Set NoNativeBinaries if target CPU is different from source CPU
and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
Set NoNativeBinaries if target OS is different from source OS
and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
Add FORCE_NATIVE_BINARIES variable to be able to overrule
default behavior of NoNativeBinaries=1
* replace some longint by ObjpasInt
+ use pxor/vpxor to load 0.0
+ more pxor/vpxor optimizations
* inline more aggressively, if the ie for the initial change re-appears, it must be fixed differently
* enable the compiler to optimize away parts of System.PushExceptObject, if System.get_frame is not implemented, i.e. returning nil
* don't do illegal type conversions on GetNextInstructionUsingReg results
* test for new split option
* avx-512 has 32 mm registers
* load 0.0 by (V)XORPS/D instead of (V)PXOR in mm registers
* use (V)XORPS/D for unary minus
* use V* instructions if possible
* fix i386 compilation
* test needs delphi mode apparently
* mm registers 16-31 are also volatile during a call
+ make use of avx-512 instructions vcvtuis2s* if possible
* improved (V)MOVA*(V)MOVA*2(V)MOVA* 2 optimization
* proper change information for avx-512 vcvt* instructions
* generate simplified code for unary minus when sse/avx is used
* copy only the instruction table related inc files during make insdat
* is_signed does not check the ordtype but the ranges, so it cannot be used to
check for valid types for cvtsi2sd/s
* patch by Marģers to unify internal error numbers, resolves
0037888
powerpc: added support for 64bit explicit locations in legacy MorphOS syscalls. improved error handling of various corner cases or explicit paraloc handling
* turn the recently added 3357 warning into an error, to avoid another compiler IE later
* when setting up the symbol for the SEH data don't check whether it is global, instead check whether it's a function
* reset the stored symbol for SEH data once a new section is encountered
* use the name of the symbol instead of the name of the section as the later is always lowercased
* (slightly) modified (formatting, warning) patch by Jan Bruns to speed up overloading search, resolves
0036666
* naturally align threadvar lists/tables
o required for (future) Darwin arm64e target, and a good idea elsewhere too
(on constrained targets, it won't make a difference because the alignment
of pointers won't be > sizeof(longint))
* AArch64: added SIMD instructions (only plain ARMv8-A for now)
o added AArch64 regset parsing support in assembler reader, means that "{"
no longer starts comments there (like in the ARM assembler reader)
o added AArch64 indexed SIMD register support and removed old cg hacks
that worked around its absence
+ Add new LastCommonAsmOp constant to arm and aarch64 CPU targets.
* Uses this new constant to define TCommonAsmOps set type.
+ Use this constant in armgen/aoptarm MatchInstruction function,
to avoid a range check error when compiling with -CriotR with optimization.
* fix try_make_mul32to64() if it's called with a constant node on the
left (mantis
0037878)
o can happen if use_generic_mul32to64 returns false
* patch by J. Gareth Moreton to improve LEA/SHL -> LEA optimisation, resolves
0037954
* (slight modified) patch by J. Gareth Moreton to reduce number of assembler optimizer passes, resolves
0037959
* explicitly convert array indicies to pointer sized integers, so cse
can handle the conversion
* better complexity calculation of tvecnodes
* simplify tcgunaryminusnode.second_integer
+ remove type conversions also for unary operations if possible
* try_make_mul32to64: restore original node order if transformation failed
o this gets called by taddnode.pass_1, which caches the left/right
node types/resultdefs
* LLVM: ensure that the parameter types are processed of procdefs that are
declared when they get first called
o fixes compilation of several tests/test/tobjc* tests after
0046675
+ x86: MovxMov2Mov optimization
* patch by J. Gareth Moreton: minor refactor of reduced iterations of pass 1 of the assembler optimizer, resolves
0037972
Use // comments as curly brackets not recognized as comment start inside aarch64 assembly blocks
* simplify rules for softfpu units
* regenerate Makefiles after adding the softfpu units
* fix buildrtl units on Amiga-likes
* explicit build rules are not required for the softfpu units that are build with a buildrtl
* adjust softfpu unit so that it can be really used as a standalone unit instead of mainly as part of the System unit
* the define to check for inclusion in the System unit is FPC_IS_SYSTEM, *not* FPC_IN_SYSTEM
* colored message output as requested in
0037331, so far linux only
Also look for function name of 'result' is not found in load_result_node
+ Added a test for: When {$mode delphi} and {$modeswitch nestedprocvars} it is allowed to assign a nested routine which does not use parentfp to a regular procvar. And then call this procvar without any side effects.
* patch by Jan Bruns to solve an issue with the new overloading selection code, resolves
0037969
+ inline subroutines with formal parameters as well
* directly copy the result of set set into the left side of an assignment
Fix typo in script comment
Add explicit longint typecast to avoid range check errors with unwindrec longword variable
Display xtensa specific options for ppcxtensa -h
* delphi has excessprecision turned on by default
* excess precision should not be applied to comp or currency
i386-go32v2 also does not support progbits, as other COFF targets
Disable use of cmov instructions in alignment patterns for some i386 targets (it prevents use of some emulators)
- remove unused trimbspace
+ added ansistring variants for some helpers
+ initial implementation of a FullName field in file records to overcome length limitions of the name field
* use AnsiString for file names to overcome length limitations
m68k: add missing FINT and FINTRZ instructions to spilling_get_operation_type()
Fix compilation of RTL when USE_FILEREC_FULLNAME is not defined
* reverted accidental change
m68k: change the stack push order in the register calling convention to left-to-right. This should fix parameter handling in nested procedures (tnest5)
* bump ppu version after
0047279. it changes the ABI (m68k only), so units are incompatible even if the format didn't change
Add m68k specific option to gcc call to be sure to generate an error if the gcc does not target m68k CPU
+ patch by Anton Kavalenka to support coloured output on windows, resolves
0038025
Put GetFullName functions inside $ifdef FPC_WIDESTRING_EQUAL_UNICODESTRING
* protect GetFullName with FPC_HAS_FEATURE_UNICODESTRINGS instead of _WIDESTRINGS
Unix LocalToEpoch: fix typo
* sysutils depends on initc
* added "const" to some string parameters
* give an error when trying to define a macro/compiler variable with
an empty name
* changed TIDString and tsymentry.realname to TSymStr
o for TIDString: prevents shortstring -> ansistring conversions with
-dsymansistr when looking up symbols
o for realname: consistency with name
* remove the BaseUnix dependency added by mistake
m68k: initial commit to add the Sinclair QL as a compiler target
+ RTL skeleton for the Sinclair QL
* m68k: enabled vasm assembler support for the Sinclair QL, and added linking
* using ymm registers for copying data is always useful, regardless of alignment
* fix tcgx86.a_loadmm_reg_ref and tcgx86.a_loadmm_ref_reg for 64 OS_M512
* allow var alignment up to 64 bytes
+ i386 supports also avx-512
* i386 can use only 8 mm registers with avx-512
* also use avx copying for mod 4=0 memory blocks
* android: In some android versions time zone names are available only after first call of localtime().
* patch by J. Gareth Moreton: MOV/LDR/STR/MOV optimisations for ARM/AArch64, resolves
0037638
+ completed Ch_* information for VMOVD*
+ take care of vzeroupper in exit code optimizations
+ test for mantis
0036381 (seems already fixed)
+ tx86addnode.second_opvector makes use of AVX instructions
* moved UseAVX from cgx86 to cpubase
+ UseAVX512
sinclairql: when linking with vlink, generate an unrelocated binary with appended relocation info, so the startup code can relocate it
sinclairql: implemented some OS trap wrappers, to be used by the RTL
sinclairql: implemented startup code, including binary relocation and stack allocation
sinclairql: initial heap allocation code, and minor system unit bits
* fix for Mantis
0038051: make Chr() a real intrinsics so that it can be used in type declarations as well
+ added test
* increase PPU version so that the change of Chr() to a full intrinsic will not lead to problems
* fixed type of size parameter passed to fpc_getmem() when translating
new(pointer) (mantis
0038054)
m68k: fix references like (An) to parse properly in the assembler reader
sinclairql: added support to fpcmake
* make sure things still build with 3.0 after
0047353
sinclairql: make sure the default CPU target is 68000 for the QL. also, some cleanups
sinclairql: disabled a bunch of things in RTL until they're implemented
sinclairql: added to fpmkunit
Adapt to change of chr function in commit 47353, to change chr() a real intrinsics
Move explicit typecast to after check to avoid RTE when compiled with -CR
* use VPXORD in avx-512 mode as VPXOR does not work for the upper 16 registers
* compilation on i386 fixed
sinclairql: disable most packages for the QL
sinclairql: also disable fcl-stl which was missed in
0047370
Regenerated automatically after commit
0047358
sinclairql: now the target short name is also sinclairql as proposed by Pierre, so it's unified everywhere
* regenerated msgidx/msgtxt after
0047376
* fixed the packages build after
0047376
* Arm Thumb does not support complex references including SP, resolves
0038056
Add sysutils, typinfo, and math to explicit units list for macosclassic target OS
Remove setting of USE_FAKE_SYSUTILS macro for MacOSClassic, as sysutils is now compiled for that OS
Use MPW linker variant also for m68k-macosclassic target
Avoid uninitialized variable warning with -O4 option
qlunits: package skeleton to support the Sinclair QL
* fix copy-paste mistake from Mantis (due to replacement of '#' with links...)
* Fix bug ID
0038008: allow UTF8 to unicode conversion to react on/ignore invalid input
Merge: 06f5e293df 897322868b
-- Zusammenführen von
0047033 bis
0047401 in ».«:
C compiler/i386/i386nop.inc
U compiler/i386/i386tab.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386att.inc
C compiler/i8086/i8086nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086att.inc
U compiler/x86/x86ins.dat
C compiler/x86/rax86.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/cpubase.pas
U compiler/x86/agx86att.pas
U compiler/x86/itcpugas.pas
U compiler/x86/rax86att.pas
C compiler/x86_64/x8664nop.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664att.inc
U compiler/utils/mkx86ins.pp
U tests/utils/avx/asmtestgenerator.pas
U tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0047033 bis
0047401 in ».«:
U .
Konfliktübersicht:
Textkonflikte: 4
Konfliktübersicht:
Textkonflikte: 4
* fixes for nasm writer, resolves
0038074
+ test
sinclairql: reduce default stack size to 8K
sinclairql: add a note about .bss sections and the binary size, no functional change
m68k: fixed parsing of absolute addresses in the assembler reader
m68k: fixed parsing of constants to absolute addresses
sinclairql: add a few more QDOS function wrappers which are useful at early stage
* simplified and fixed code of (v1=const1) and (v2=const2) optimization, resolves
0038066
sinclairql: the newline on this system is LF, not CRLF
sinclairql: following Frank Wille's advices, reworked the linker script to omit .bss section from the binary. this reduces a simple 'hello, world' size by ~5K. needs matching startup code.
sinclairql: startup code fixes. set the top of the new stack as stack pointer, not the bottom of it. initialize the .bss section following the new linker script. better protection against re-relocation.
sinclairql: fixed the relocation marker comment in the startup code. no functional change
Revert commit
0047257, Disable use of cmov instructions in alignment patterns for some i386 targets (it prevents use of some emulators)
Replace it by a new set of i386 targets, for which the default cpu is set to i80486 instead of pentium2
to avoid (for default configuration) use of CMOVxx or PREFETCHyyy instructions, not supported by some emulators.
Update after commit 47376
Register sinclairql target directory
* better writing of ordinal const. nodes
* correctly simplify tree transforms of (a+c1+c2) if a is a pointer, resolves
0037671
* Give access to CPU specific fields of tsettings record
in GENERIC_CPU mode, to be used by ppudump utility.
generic/cpuinfo.pas: Add tinstructionset, used for ARM cpu.
globals.pas: Put all CPU specific fields of tsettings record
inside a variant part when GENERIC_CPU is defined.
Also import llvm unit when GENERIC_CPU is defined.
+ utils/Makefile.fpc: Add -Fu../llvm option to compile ppudump,
as it now also needs llvm specific code decause of globals unit change.
Add some types and records to rtl/linux/t_linux.h2paschk and set macro _LARGEFILE64_SOURCE for __i386__ C code
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
* do not run the test, it is only about a compilation issue
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
tosunits: it's actually not ami-extra
* regenerated all Makefiles after Sinclair QL support was added
sinclairql: more work on the QL port. very basic stdio (console writeln) works.
qlunits: updated QDOS unit, added a QLfloat unit to convert longints and doubles to 48bit QLfloats, added a rotating cube example
Regenerate all Makefile's, and update utils/fpcm/fpcmake.inc and utils/fpcm/revision.inc after commit 47483
Do not set USE_FAKE_SYSUTILS for MacOS anymore
Add separate cs_assemble_on_target tglobalswitch entry
+ options.pas: Add new option -sT, to do only the linking on target, by
opposition to the old -st option, which does
both assembling and linking on target.
msg/errore.msg: Add new -sT help message
modify -st help message, to explicitly say that both assembling and linking
scripts are prepared for target system.
* msgidx.txt, msgtxt.inc: Regenerated
In FindObjectFile check the assembly file if cs_assemble_on_target is in globlaswitches
Replace cs_link_on_target by cs_assemble_on_target in assemble unit
sinclairql: make sure the Sinclair QL defaults to vlink
+ optimization type converted (modulo) divisions as well by removing up/down converting but,
insert a test and separate code path for -1 if needed
* fits_in_mm_register takes care of avx(512) support
* fix spilling of avx(512) registers
* get_scalar_mm_op fixed for M256
+ implement prefetch intrinsic for aarch64
* set reasonable defaults for arm eabi
* patch by J. Gareth Moreton: fixes crash on ARM with -CriotR, resolves
0038116
+ Aarch64: call OptPass1FData for FMA instructions as well
+ Aarch64: implemented FMovFMov2FMov, not yet used
m68k: fix DB/DW/DD handling in inline assembler, update BuildConstant() method to current standards. issue reported/initial patch by Marcel Kilgus in QLForum.co.uk
* remove obsolete comment from rautils/ConcatConstant, issue reported/initial patch by Marcel Kilgus in QLForum.co.uk
Add missing CPULLVM versions for fpc_abs_real and fpc_sqr_real in x86_64/math.inc
Fix LLVM compilation by casting untyped real constants to double type, as LLVM does not support extended type constant apparently
Correct computation of operatingsystem_parameter_envp, which wrongly pointed to the NIL pointer separating argv from environment variables
Revert wrong change, llvm supports extended constants
Use pascal code for LLVM fpc_sqr_real, because fmultp instruction is not accepted by llvm
sinclairql: use .exe as extension for executables instead of .bin, patch by Marcel Kilgus at qlforum.co.uk
Also accept s80bit real constants when FPC_SOFT_FPUX80 macro is defined
sinclairql: QDOS interface wrapper function improvements, patch by Marcel Kilgus in qlforum.co.uk, merged with minor tweaks
sinclairql: map file generation support with vlink, inspired by a patch posted by Marcel Kilgus in qlforum.co.uk
* backported vlink map file generation to other targets using vlink: Amiga, Atari and ZXSpectrum
sinclairql: initial implementation of RTL file I/O functions, patch by Marcel Kilgus in qlforum.co.uk
sinclairql: system unit changes and improvements, patch by Marcel Kilgus in qlforum.co.uk, merged with minor tweaks
+ Xtensa: make use of the LSX/SSX instructions
* Xtensa: cleanup of getreferencestring
+ added coloured compiler output support for OS/2 and DOS targets, platform-specific parts refactored to a standalone unit to remove the heap of ifdefs in unit comphook
sinclairql: added platform specific options to allow specifying executable metadata format
sinclairql: fix exitCode parameter accidentally overwritten in mt_frjob. also save d2 register.
sinclairql: drop support for the BASIC loader, write Q-emuLator or XTcc compatible metadata to the executable instead. based on a patch by Marcel Kilgus in qlforum.co.uk
sinclairql: changed startup code to be able to run directly as job without a BASIC loader. based on a patch by Marcel Kilgus in qlforum.co.uk
qlunits: make qlcube example still build with the current RTL
sinclairql: mark the qhdr metadata format as default in the help text
Add missing llvm directory for ppu unit compilation
add new testmethods (memref-operands)
add new testmethods (memref-operands)
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* when getting an llvm temporary recorddef, recurse into arrays rather than
treating them as opaque defs. This is required to ensure that the temporary
recorddef for all x86-64 function results are the same on the caller and
callee side, as we allocate new arrays when generating them
* pass lp64d to GNU AS for abi_riscv_hf to get the right ABI set
* .def must be set on linux else it might be that the created executable is
deleted after compilation
Allow easier disabling of $inline on, by using -dDISABLE_INLINE
Improve CRC_checksum testing code with -dDEBUG_UNIT_CRC_CHANGES -dTest_Double_checksum -dTest_Double_checksum_write
* rtl: implement TRandomGenerator for thread-safe random
Add {$i fpcdefs.inc} to units that do not have that include
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* revert
0047598: implement TRandomGenerator
bugfix internal assembler-reader x86 opsize local var
bugfix internal assembler-reader x86 opsize local var
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* Try all OS/CPU combinations
Fix compilation with DEBUG_PPU macro set
* do not include fpcdefs in the cepiktimer unit
+ factor out PostProcessELFExecutable
+ write executable section size on linux
* take care of po_noreturn in more cases
* Avoid using volatile if NO_THREADING is defined
* Fix for Mantis
0038122: when a deref node is passed as a Self parameter for a type helper (which is a var parameter) we need to pass the non-derefentiated value so that the data it points to can be modified by the helper's method (this is Delphi compatible)
+ added tests
* Improve Test_Double_checksum with Test_Double_checksum_write CRC testing code.
Pass the three checksum arrays from ppufile to module owner,
to be able to check that the checksums computed at the time pf ppu writing
are compatible with the ones computed at interface level.
+ #QLvember work: stack frame optimization for m68k
* cwstring: try to load the iconv library with .6 suffix as well
* cwstring: open iconv with the transliterate flag instead of setting it later with iconvctl because it may be unavailable
* check if an invisible parameter for the result occupies parameter space
* revert
0047631: cwstring: open iconv with the transliterate flag instead of setting it later with iconvctl because it may be unavailable
* cwstring: open iconv with the transliterate flag if iconvctl is not available
* fix test for targets not having a real wide string
* fix test for x86_64 targets using the SysV abi
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
working on new testmethods memref operands
working on new testmethods memref operands
* allow an AT&T suffix for movabs
+ -Xa option: generate code which allows to use more than 2 GB of static data on 64 Bit targets
+ implemented support for x86-64
* more than 2 GB static data requires to use the --no-relax option on linux
+ range check enumeration array indicies, range checking is after all a safety mean
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
Add internalerror when V_Error level is used in Test_double_checksum code, only with TEST_CRC_ERROR macro set
Apply patch proposed by J. Gareth Moreton in:
bug report
000036882: [Feature] Class and record definition XML dump extension
These patches extend the node dump feature (enabled with DEBUG_NODE_XML)
so it also dumps class and record definitions to the XML file. They are contained within
tags.
Currently only fields and constants are dumped to the XML file. Methods, constant and variable definitions may be added later.
* meanwhile all linux targets support the checkpointer directive
* dir_push might not flush pending switch changes but has to read the pending
record if needed
* test needs -Cg to trigger the warning
working on internal assembler-reader x86 opsize local var
working on internal assembler-reader x86 opsize local var
Fix i8086 compiler failure due to move of printnodeindention variable into verbose unit in commit
0047658
* Second patch xml-node-dump-defs.patch from J. Gareth Moreton from bug report 36882.
With same changes to ensure that xmllint find no errors in generated xml files.
+ add endsym to ConcatConstSymbol
Fix z80 compiler failure after change to ConcatConstSymbol in commit
0047668
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* fix in
0047632 should be enabled for all targets as it is a stack tainting
parameter
bugfix internal assembler-reader x86 opsize local va
bugfix internal assembler-reader x86 opsize local va
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* don't do x*x -> optimziation for xtensa as it causes a recursive call in sqr(...)
Raise internalerror inside RemoveCurentP is called with p=hp1, because it leads to using a class instance after it has been freed
Avoid internalerror in RemoveCurrentP for arm compiler
* cleanup merge overlefts
+ min/max intrinsics for internal use by the compiler
+ replace appropriate if statements by min/max intrinsics
+ support min/max intrinsic on xtensa
+ project file for PowerPC64LE
+ read 64-Bit ELF executable info correctly
* test for min/max intrinsics
* x86 change information updated
* (modified) patch by Christo Crause: ESP8266 doesn't support min/max instructions, resolves
0038175
* patch Christo Crause: Use LDS for 8 bit references, resolves
0038173
+ min/max support for x86
* quick fix for llvm compilation
* limit min/max optimization to fastmath for now, as the NaN handling is not working yet
working on internal assembler-reader x86 opsize local var
working on internal assembler-reader x86 opsize local var
bugfixing operandsize from 32-bit to (correct) 64-bit
bugfixing operandsize from 32-bit to (correct) 64-bit
* Adapted from patch node-dump-pass-1.patch submitted by J. Gareth Moreton from bug report 38156.
This patch extends the DEBUG_NODE_XML debug feature by also outputting,
to the *-node-dump.xml files, the node tree as it appears after the first pass,
since it often contains many more internal nodes like temporary allocations that may need
to be evaluated for debugging and development purposes, or node-level optimisation opportunities.
+ added explanation for min/max intrinsics
* prepared x86 implementation for proper NaN handling
Fix bug introduced in commit
0047709, by only calling node_complexity if first pass was already done (bug report 38183)
* handle min/max properly if it is applied to NaNs
* test extended
Fix pos field closing in XML node output after commit 47720
+ m68k: JSR, RTS to JMP optimization
m68k: in g_concatcopy, check the actual alignment of references being copied rather than always excluding word and dword sized direct copies on a 68000
cleanup bugfix internal assembler-reader x86 opsize local/global var
cleanup bugfix internal assembler-reader x86 opsize local/global var
amiga: fixed the recently added link map generation to work properly. needs recent vlink to work
* fix regression introduced with
0047625 for Mantis
0038122: when checking for a dereferentiation of the Self parameter subscript and vec nodes need to be kept
+ added test
* made optimization JSR, RTS to JMP more bullet proof, added comment
* m68k: MOVE, TST, Jxx/Sxx to MOVE, Jxx optimization
* Try to read command line exec name on linux, using argv[0], in order to be able
to use the symbolic link name instead of the real executable name.
This allows to use symbolic links to gppc386, named gppc1
to be able to launch ppc1 under gdb, as it is already possible
under OpenBSD (which returns the command line name via paramstr(0),
or under Windows if is used (generated by mklink).
+ Generate errors if compiler executable is not found, or if gdb binary
is not found.
+ Added a test for proper setting of fc_no_direct_exit in flowcontrol.
* allow absolute variables with an address to be used as syscall base
* m68k: proper values for first_*_reg
+ m68k: LEA, MOVE(M) to MOVE(M) predecremented optimization and MOVE(M), LEA to MOVE(M) postincremented optimization
* call node_complexity correctly in order_parameters when sorting parameters
add new option to avxtestgenerator to list opcodes-memrefsize-state
add new option to avxtestgenerator to list opcodes-memrefsize-state
* patch by Zoran Vučenović: fixes TDoubleRec.SetFrac, resolves
0038202
+ test
+ optimize if x>a then x:=a; into min(a,x);, similiar for max
* test extended
* min/max optimization on x86 can be applied now without fastmath as NaN is handled properly now
* x86: apply VOpVmov2VOp optimization to vmins*/vmaxs*
Fix ash_savefregp_x handling, as revealed by range check error
- remove could which prevented that rte is triggered even if we are inside
an exception block but *without* using sysutils. The remove code
was once added to have primitive exception handling even if
no sysutils is used. But if this is desired, an appropriate handler
to ErrorProc should be assigned. Resolves
0038201
* improved change information
Fix compilation failure for avr compiler with -dDEBUG_NODE_XML, to fix bug report 38222
cleanup and add comments to div. vcvt.. opcodes
cleanup and add comments to div. vcvt.. opcodes
* do an unsigned division if one operand is unsigned an the other
one a constant in its range, resolves
0038180
* apply doremoveinttypeconvs to unary minus and not on 8 and 16 bit targets as well
* x86-64: correctly translate and with large constants in mod optimizations, resolves
0038164
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* change def parameter of single_type() from var to out (part of patch by Blaise.ru)
* apply slightly adjusted patch by Blaise.ru which moves parsing of result types to a separate functions thus ensuring that File types can't be used for procedure variables (just like they already couldn't be used as a result type for normal functions)
+ added test
working on internal assembler-reader x86 opsize local/global var
working on internal assembler-reader x86 opsize local/global var
* Aarch64: fix 32 bit div operations with constant denominators, resolves
0038225
* fpc_ln_real raises an exception for invalid operands if they exception is not masked
working on new testmethods and bug-fixing size of (memref-operands | global and local variable - append correct gas-suffix on any vcvt.. opcodes
working on new testmethods and bug-fixing size of (memref-operands | global and local variable - append correct gas-suffix on any vcvt.. opcodes
+ patch by J. Gareth Moreton: some new x86 assembler optimizations, resolves
0038130
* patch by Christo Crause to take care of the fact that the esp8266 read function is non-blocking, resolves
0038243
+ RTMSupport function
+ if available use RTM to support InterlockedCompareExchange128 on i386
* apply patch by Blaise.ru to enable the correct generation of names for classes/interfaces inside local symtables; these will be required for reference function types which are in fact interfaces and classes, this does not mean that ordinary classes can be declared inside functions
Note: no test as the functionality is not yet used
* fix the m68k cross-builds by disabling part of
0047824
external gas-assembler - handling special opcodes with multiple memref-size e.g. vfpclassps/pd - if operand-opsize < S_XMM =>> use memref-min-size
external gas-assembler - handling special opcodes with multiple memref-size e.g. vfpclassps/pd - if operand-opsize < S_XMM =>> use memref-min-size
Appply fix from Gareth Moreton in bug report 38247
* implemented UseAVX512 properly
+ make use of VREDUCE* for frac(...) if AVX512QD is a available
* Ch_ information for vreduce* fixed
* min/max optimization needs to check both operands of the if condition, even if no else-statement is passed, resolves
0038249
Fix compilation of i8086 compiler after commit
0047840
* lines with 255 chars a little bit long, reformated them
m68k: the LEA+MOVEM to MOVEM optimization is not feasible on a ColdFire
+ Xtensa: support large stack frames for the call0 abi
m68k: new CPU capability - the LINK instruction supports LONG displacements (68020+)
+ support got modifier on labels
* i386: disable InterlockedCompareExchange128 implementation if PIC is enabled
* fixed llvm shadow symtable construction in case fields are reordered
(-Ooorderfields) and hence their offsets are no longer monotonically rising
* also fixed padding for variant bitpacked records in llvm shadow symtable
* generate more efficient code for trunc(currency), trunc(comp), and
round(comp) on platforms where currency and comp are handled using the FPU
o also fixes trunc(comp) and trunc(currency) compilation for x86 on LLVM
with -Oofastmath
* add missing removal of excess fpu precision typecasts for trunc/round
- revert
0047208
* properly fix the internalerror it hid: only replace the local symbols
migrated to the parentfpstruct right before generating debug information,
so that internally generated self/result loads during optimisation passes
don't get confused by the replacement absolutevarsyms (those are normally
never encountered during optimisation, as regular absolutevarsyms are
replaced during parsing)
* use new TSym.EscapedRealName property when creating new symbols with the
same name as existing symbols
* factored out the creation of loadnodes for special variables/parameters
* darwin/AArch64: always clear fpu exception flags regardless of the
triggered signal, as the kernel currently triggers SIGILL rather
than SIGFPE for FPU exceptions
* fixed round(currency) so it takes the rounding mode into account on
platforms where currency is "type int64"
* inline trunc(currency), trunc(comp) and round(comp) on platforms where
currency and comp are "type int64"
+ $codealign directive accepts setting maxcrecord
avx512: external gas assembler not supported gather/scatter-opcodes without mask-register =>> not generate testcode
avx512: external gas assembler not supported gather/scatter-opcodes without mask-register =>> not generate testcode
avxtestgenerator: add new commandline param '-m', create only these testfile(s)
avxtestgenerator: add new commandline param '-m', create only these testfile(s)
external gas assembler: special handling for correct suffix in vfpclass-opcodes
external gas assembler: special handling for correct suffix in vfpclass-opcodes
* fix comment typo mentioned by Bart
internal assembler-reader x86 opsize local/global var - cleanup
internal assembler-reader x86 opsize local/global var - cleanup
working on internal assembler-reader x86 opsize local/global var
working on internal assembler-reader x86 opsize local/global var
* fixed error in load_fpu_location triggered by round() (fixes webtbs/tw32671
on i386 after
0047854)
+ implement align directive for records, resolves
0028927
* correctly handle inlined exits in dfa, resolves
0038259
internal assembler-reader x86 opsize local/global var - cleanup
internal assembler-reader x86 opsize local/global var - cleanup
* while not official supported, bootstrapping with 3.0.4 fixed
* Fixed missing slash in fppkg.cfg when installed in the root
* do not check inlined exit nodes for unset results, resolves
0038259
* first part of fixing
0038267: do not bail out early during constant folding
if the constant is 1 or -1
* refactored constant folding code
* fpc_AnsiStr_Concat: if one of the strings is empty and CP_NONE is passed, the code page
of the other string is taken, this is also like fpc_AnsiStr_Concat_multi works if length(sarr)=2
* properly fold string+string const+string const., resolves
0038267
internal assembler-reader x86 (local/global var) - validate asm-opcode-attsuffix and memrefsize
internal assembler-reader x86 (local/global var) - validate asm-opcode-attsuffix and memrefsize
+ fold also (string const+(string const+string var))
* string tree folding code moved into level 2 opt. block
* instead of blindly consuming whatever comes next trigger an explicit error if the parsed expression does not match for "INDEX ordexpr" or "NAME strexpr"
+ added tests
* always add a generic dummy if it is a procsym
* ensure that the dummy symbol is registered if it's added due to a routine
* use a case statement instead of nested if-then statements
* also handle call nodes when determining the generic symbol for inline specializations
* when only a symbol name is provided to generate_specialization_phase1 allow a symbol table to be provided as well
* correctly handle the case should the generic dummy symbol be a procsym instead of a typesym
* Delphi does not allow a generic method to be overloaded by a non generic type of the same name (unlike for generic types and non generic routines); this is probably done to simplify the implementation of implicit specializations of generic methods so we do this as well. For this we change the dummy symbol for generic routines from a typesym to a procsym
+ added tests
Note: what Delphi /does/ allow however is to overload a generic routine with a generic type... go figure. :/ We currently don't allow that
* fix compilation on targets that use Stabs debug information: ignore generic dummy symbols with no procdefs for generating stabs data
* Set softfloat_rounding_mode indise SetRoundMode function for all CPUs.
* SetRoundMode returns previous rounding mode value for all CPUs.
Check also that SetRoundMode returns correctly previous rounding mode
Add testing for single float type in trndmode.pp
* handle rawbytestrings in Win32Ansi2UnicodeMove properly, resolves
0038299
Fix spelling error of revision 48023
+ added newly used opcodes to avx_opcode_only_op0_may_be_memref
-- Rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
U ppcx64.lpi
-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
G ppcx64.lpi
-- Entfernung der Zusammenführungsinformationen von »ppcx64.lpi«:
U ppcx64.lpi
-- Rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
U ppcx64.lpi
-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
G ppcx64.lpi
-- Entfernung der Zusammenführungsinformationen von »ppcx64.lpi«:
U ppcx64.lpi
* use str(...) instead of typinfo unit
* use str(...) instead of typinfo unit
+ patch by J. Gareth Moreton: Advanced MOVZX optimisations, resolves
0038294
* fix for Mantis
0038310: ignore procsyms that have no procdefs for checking overloads, or more precisely to stop checking for overloads; these are generic dummy symbols
+ added (simplified) tests
* weight currency->float conversions the same regardless if
the currency type is handled by the integer unit or the x87 fpu,
resolves
0038309
* have the generic dummy symbols for procsyms keep track of their overloaded generic procsyms so that they can be easily found (will be needed for implicit specializations)
* make TProxyStream.Check an abstract method; as it is right now one had to override it anyway because it always raised an exception
* llvm: only set custom parameter alignments for byval parameters, the rest
is handled automatically by llvm (and since llvm 11.0 you get an error if
you specify an alignment for them anyway)
+ linux implementation of System.GetCPUCount
Add two new button to simplify inspecting evolutiontestsuite difference in time
* throw a proper error if a contructur has a type parameter in delphi mode, resolves
0037217
+ AddLea2Lea optimization
* improved LeaLea2Lea
* patch by J. Gareth Moreton to resolve bug introduced in the first patch, resolves
0038294
* if the Linux target is compiled with FPC_USE_LIBC the initialization of TLS is not required (according to one comment by Florian), so disable all related code in that case (as for example the syscall numbers are not available then)
+ add declaration of FpSchedGetAffinity when the Linux target is compiled with FPC_USE_LIBC
* simplified code for JccAdd2SetccAdd optimization
* patch by J. Gareth Moreton to fix MovzxCmp2CmpMovzx, resolves
0038339
* clear up message that a global generic references a static symbol a bit
* regenerate msg*.inc files
Add check for bug fix in bug report 38339
* add parameter cleanup nodes to the call cleanup block (mantis
0038316)
* do not extend 8 bit return values to 32 bit when loading them into eax,
this is not required by the api, neither does e.g. clang it
avxtestgenerator add attsuffix in 'opcode-memrefsize-state - list' (command-line option '-l')
avxtestgenerator add attsuffix in 'opcode-memrefsize-state - list' (command-line option '-l')
cleanup + add internal error if all asmr_e_not_supported_combination_attsuffix_memrefsize_type are reported
cleanup + add internal error if all asmr_e_not_supported_combination_attsuffix_memrefsize_type are reported
* avoid widening of shl operations, this is not necessary for them either
Try to avoid use of native libgcc directory when cross-compiling.
Add FSourceCPU, FSourceOS, FCompilerDate FFullCompilerVersion fields to TCustomDefaults class.
Set these new fields by also parsing FPC -iDWSPSO output.
Use these fields to try to correctly guess if native gcc should be used to
try to find libgcc directory, or only $BINUTILSPREFIX prepended gcc.
+ support R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX
Function GetDefaultLibGCCDir adapted to case of Defaults not assigned (required for fpcmkcfg utility) reported by Andrew Kurushin
* patch by J. Gareth Moreton: refactor OptPass2Jcc, resolves
0038343
* simplify tx8664shlshrnode.pass_generate_code, it should not mess with the result type, this
is a matter of the type check pass
* x86: some fixes to enable 8 and 16 bit operations
* arm*: fix SxtbAndImm2Sxtb (now SxtbAndImm2Uxtb) optimization as proposed by Pierre and Gareth
* similiar fix to
0048167 for OptPass1SXTH
+ remove try ... finally statements if the finally block is empty
Fix clearing of single type register variable in initialize_regvars method for ARM cpu (with -Ooregvar)
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* patch by J. Gareth Moreton: Unitialized result variable fix on non-x86 debug builds, resolves
0038371
Also set __stkptr inside cprt0.as startup assembly source
Also set __stkptr inside cprt0.as and dllprt0.as startup assembly sources
Avoid inlining of real constant for m68k if type is not best precision
Change parameter type of Build* procedure from out to var, as the StringList is created in calling main
This avoid a warning during compliaztion and a crash when compiled with -gt* option.
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* arm/aarch64: patch by J. Gareth Moreton: fix register allocation information for Mov2None 2, should resolve
0038055
Reset paratargetdbg to dbg_none when handling -g- option, to really suppress debug information generation
powerpc-amiga: added some exec functions which will be required for some athreads rework
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Add sleep inside loop to find package that can be compiled, if none is ready in ProcessThreadResult
Add some colors for comparison between two run results
Only set FNotifyMainThreadEvent at start of Execute method and after finishing the compilation of a package
Avoid range check errors
(cherry picked from commit 1351ccb3bfe6adad6be0246acb7645203df8b3b0)
# Conflicts:
# .gitattributes
* patch by J. Gareth Moreton: aarch64 EXTDEBUG fixes and extensions, resolves
0038383
* give a proper error if macros are too deeply nested
* Changed the registry test. TRegistry.DeleteKey must delete all sub-keys. It is Delphi compatible despite the incorrect statement in the online Delphi docs.
* Removed/ifdefed lots of unused variables.
* Corrected visibility of overridden methods.
* Commented out some unused (yet?) local variables.
* Fixed a wrong code caused by a typo. It has been revealed by a note about an unused var.
* let theapthread wait unneededly less so the total run time is shorter
* Fixed
0044145. To test if a constant is declared it is needed to use {$if declared()} instead of {$if defined()}.
* Commented out the unneeded/unfinished code.
* Removed/ifdefed the assigned and unused variables.
* Removed more assigned but unused vars.
* Corrected method's visibility.
+ modified patch by Christo Crause: if the target support, the switch -Xu can be used to generate the executable as an uf2 file
* Removed in_x86mm_last (the duplicate no and unused) from the tinlinenumber enum.
* Fixed value of the LF_PAD13 enum element.
* do not output error numbers for options
Add cs_generate_uf2 entry into ppudump
* missing programs added to rules, so make clean works better
+ write message number to docs
+ enclose arguments in text angles
* rgobj: ungetiftemp can't be used here since it frees only temps of the tt_normal type.
* compiler utils cannot depend on StrUtils
* use generic VFP type instead of VFP list prone to changes
* properly mangle interface wrapper names to avoid duplicate label errors, resolves
0038385
m68k: revert
0048224, the fix proposed in that patch was just hiding an underlying issue
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* Fixed wrong buffers in the XML registry test.
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Introduce USE_REAL_INSTRUCTIONS to handle expressions not accepted by old assemblers
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* fix type conversion for array indicies if the ordinal ranges of the involved types do not overlap, resolves
0038413
* handle generic with ord call of sub-range and enumeration data excluding 0 correctly, resolves
0038412
* do not execute xend twice which was introduced in
0048430
* removed accidently committed printnode
+ initial attempt at defining an enhanced video cell record for the Unicode support in the video unit
+ added the EnhancedVideoBuf global variable to the video unit
+ introduced TVideoDriver.InitEnhancedDriver
+ introduced OldEnhancedVideoBuf
+ add a test which ensures that a "const TVarData" parameter is passed as a reference.
This is required for Delphi compatibility as implementers of IVarInvokable or
inheritors of TInvokableVariantType need to modify the variant data by using
a pointer to the TVarData because it's passed as const and thus not modifyable
by itself.
This behavior is documented in so far as the C++ builder documentation shows
that the same parameter is implemented as "const&".
* use UnicodeString instead of WideString in TEnhancedVideoCell
+ added simple test for the video unit
+ introduced initialization of the video unit in enhanced (Unicode) mode
+ added unicode video unit test
+ support both legacy and enhanced video buffers in Video.ClearScreen
+ added lazarus projects for the video unit tests for Windows
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* test for already fixed issue
0032139
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* the size of the CIE_pointer in an FDE is always 32 bit
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* x86_64-linux: assembler helpers syscalls do not need a stackframe
* allow sub/add nodes in constant pointer expressions, resolves
0034027
* test for already fixed issue
0024434
* create \index entries in the messages.inc for an index of message texts and numbers in the user manual
bugfix
000037785 cvtsi2sd,cvtsi2ss for platform i386
bugfix
000037785 cvtsi2sd,cvtsi2ss for platform i386
* fixed off by one errors in the new video unit routines
+ enabled all debug code generation options in the video unit test .lpi files
+ added operator = for comparison of TEnhancedVideoCell records
* switched the windows video driver to use the enhanced (unicode) video buffer
* use CP_OEMCP to convert characters in LegacyChar2ExtendedGraphemeCluster
- removed useunicodefunctions from the windows video unit
- removed the cp850 code page mapping from the windows video unit (it is no longer used)
- removed unused variables and types from Video.SysUpdateScreen
* LineBuf converted to dynarray (to avoid buffer overflow for too big consoles) and made global to avoid reallocating it on the heap on each screen update
* all integers replaced with smallint, in order to be able to introduce objfpc mode
* drivers.pas moved to drivers.inc
+ added drivers.pas that includes drivers.inc
+ add drivers.inc to the include file dependencies of the drivers unit
+ introduced unit udrivers, which calls InitEnhancedVideo instead of InitVideo (i.e. enables unicode mode in the video unit)
* views.pas renamed views.inc
+ added views.pas that includes views.inc
+ add include file views.inc to fpmake
+ introduced unit uviews, which is going to be the unicode enabled version of the views unit
* FPC_VERSION => FPC_FULLVERSION
* switched the fv units to objfpc mode
* partial unicode conversion of the views unit
+ unicode version of MoveCStr
+ unicode version of MoveStr
+ unicode version of CStrLen
+ unicode version of MoveChar
+ unicode version of MoveBuf
* unicode fixes in TFrame.Draw
* TTitleStr redefined as UnicodeString in the unicode version of the views unit
* unicode conversion of TScrollBar.Init
* unicode version of TListViewer.GetText
* unicode fixes in TListViewer.Draw
* unicode version of SpecialChars
+ throw a warning in ISO mode if a constant string is assigned to a char and the sizes do not match, resolves
0038439
* unicode versions of TView.TextWidth and CTextWidth
- removed the posidx, because it seems to be unused
* TWindow.Title changed to UnicodeString
* outline.pas renamed outline.inc
+ added outline.pas that includes outline.inc
+ added outline.inc include file to fpmake.pp
+ unicode version of unit outline
* menus.pas renamed menus.inc
+ added menus.pas that includes menus.inc
+ added include file menus.inc to the menus unit dependencies in fpmake.pp
+ unicode version of the menus unit
* histlist.pas renamed histlist.inc
+ added histlist.pas that include histlist.inc
+ added histlist.inc as dependency for histlist.pas in fpmake.pp
+ unicode version of the histlist unit
* app, dialogs, msgbox and validate unites renamed .inc
+ added .pas files that include their respective .inc files for the units app, dialogs, msgbox and validate
+ added .inc dependencies in fpmake.pp for units app, dialogs, msgbox and validate
+ added unicode versions of the app, dialogs, msgbox and validate units (unicode conversion not completed yet)
* updated the uses clauses of the unicode versions of the app, dialogs, msgbox
and validate units to use only unicode units in their uses clause
+ introduced the FVString type
* use FVString in the interface part of the validate unit
* fvcommon.pas renamed fvcommon.inc
+ fvcommon.pas that includes fvcommon.inc
+ fvcommon.inc include dependency
* fvstring replaced with sw_string in the drivers/udrivers unit
* use ufvcommon in unit uvalidate
* replaced fvstring with sw_string in validate.inc
* use ufvcommon in uviews
* use ufvcommon in uhistlist
* use ufvcommon in unit uapp
* use ufvcommon in udialogs
- reduced number of ifdefs by using sw_string in unit views/uviews
+ use Sw_String in unit menus/umenus to reduce the number of ifdefs
+ use Sw_String in unit histlist/uhistlist to reduce the number of ifdefs
* some interface unit compilation fixes in the udialogs unit
+ introduced type Sw_PString
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* more dialogs unit unicode conversion
* umsgbox unit interface unicode conversion
+ use unit (u)fvcommon in (u)msgbox
+ introduced Sw_ExtendedGraphemeCluster
* unicode fixes in the implementation of the TBackGround object
* unicode fixes in the implementation part of the uapp unit
* unicode conversion of the msgbox unit implementation, as well as the FormatStr function
* unicode fix in TDialog.ChangeTitle
* unicode fix in TDialog.NewLabel
* unicode fix in TInputLine.Init
* more unicode fixes in the udialogs unit
* unicode fixes in TInputLine.DataSize
* unicode fixes in TInputLine.Valid
+ more unicode fixes in the dialogs unit
* do not initialize unncessary register allocators
* another FPC_VERSION => FPC_FULLVERSIOn fix
* switch back to 32 Bit mode if no thumb code is generated
* use a TUnicodeStringCollection in TCluster
+ unicode fixes in TCluster.DrawMultiBox
+ added simple test for the TRawByteStringCollection object type
+ more unicode fixes; the unicode units uapp, udialogs, umsgbox and uvalidate now compile
+ unicode fix in TDesktop.InitBackground
+ initial attempt to switch the unix video unit to enhanced (unicode) mode. Only
UTF-8 is supported for now, and it's not yet implemented for Linux VCSA.
* Fixed expectloc of local variables passed as a formal parameter. This issue is caught by cycling the compiler with -dEXTDEBUG. Yet the compiler can't cycle with EXTDEBUG due to other issues with wrong expectloc.
* more helpful message if an unknown field is accessed in the assembler reader, resolves
0038475
- armv5 never existed (without extension), removed
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* do not mess with FPA registers if they are not available
* arm-linux: sighnd.inc must check for CPUTHUMB and CPUTHUMB2
* factored out tbasecgarm.init_mmregister_allocator
+ throw an error if hardware floating point operations are used in thumb(-1) mode, this is not supported
* arm: taicpu uses set instead of boolean to store instruction states
+ track if an instruction is a thumb instruction in taicpu
* forgotten part of last commit
* arm thumb1: several fixes for the internal assembler writer
* initialize current_settings as early as possible so cs_debugswitch is set correctly if needed
* ARM: NR_RETURN_ADDRESS_REG is R14
* arm thumb: generate proper cfi
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* initial implementation of CFI support for arm (non-thumb)
* generate advance_loc records only if there was code/data since the last advance_loc entry
+ (safe) heuristics to use DW_CFA_advance_loc1 in CFI
+ generate initial cfi for aarch64
* more cfi support for aarch64
* fixed the parse-collations script/bat file
* fixed the file name in the cldrparser help screen
* updated readme with URLs of the Unicode 9.0 and CLDR 30 data files (to the best of my knowledge)
+ added tool for parsing GraphemeBreakProperty.txt and converting it to code
+ added the gbpparser tool to fpmake.pp
* (modified) patch by Michael Ring to enable the FPU on Cortex-M4F if available
+ added unit GraphemeBreakProperty, containing the grapheme break property character data from Unicode 9.0
+ added modified LGPL license header to the new graphemebreakproperty.pp unit
+ added and implemented a TUnicodeStringExtendedGraphemeClustersEnumerator class
in the graphemebreakproperty unit - an enumerator that splits a UTF-16 string
into extended grapheme clusters (i.e. user-perceived characters), conforming
to the Unicode 9.0 algorithm:
https://www.unicode.org/reports/tr29/tr29-29.html
+ added rtl-unicode as dependency for the fv unit
+ implemented StrWidth and CStrLen, using the new extended grapheme cluster string enumerator
+ use the enhanced grapheme cluster enumerator in UDrivers.MoveCStr and MoveStr
+ some fv unicode fixes for supporting complex (multi-char) enhanced grapheme clusters
m68k: extend the the register to full size, when multiplied by an immediate in memory references. Patch based on the work of Pierre Muller.
MorphOS: TProcess implementation supporting async mode and pipes
* patch by Michael Ring to fix errors introduced by
0048722
- disable optimizations to ease debugging
* fixed reference count bug in the unicode version of TView.do_writeViewRec1
* updated unicode example string
- reduced the number of ifdefs in TStatusLine.DrawSelect
- removed ifdefs from TStatusLine.HandleEvent
- removed an ifdef from DisposeMenu
* use SW_PString in TMenuItem to avoid an ifdef
* use Sw_PString in TStatusItem to avoid an ifdef
- removed one ifdef from TMenuView.Load
- cleanup ifdefs from TMenuView.Execute
- removed ifdefs from TMenuView.GetHelpCtx
- more ifdefs removed by the use of Sw_NewStr
* patch by Michael Ring: remove lm4f120 from armv7m as it is armv7em
- excluded embedded,zxspectrum,msxdos,amstradcpc from the targets that compile GraphemeBreakProperty
+ added an eawparser tool - tool for parsing the EastAsianWidth.txt unicode
property table and converting it to code
+ added unit EastAsianWidth, which contains the EastAsianWidth unicode data property
* patch by Alfred to fix cutils.CompareVersionStrings, resolves
0038514
+ array defs. of open arrays are now marked by ado_OpenArray, so (internally!) zero sized array can be declared with 0..-1
* string constants have a size of 0, resolves
0038504
* correctly set the defowner of the exception symtable to the surrounding routine as suggested by Blaise.ru
+ introduced video.StringDisplayWidth
+ add modeswitch for anonymous function and function references
* allow in-operator to be used on type parameters, resolves
0038497
* Darwin targets that don't support link order sym files can't smart link
vectorized sections
+ use Video.StringDisplayWidth in UDrivers.StrWidth
+ introduced Video.ExtendedGraphemeClusterDisplayWidth
+ use Video.ExtendedGraphemeClusterDisplayWidth in UDriver.CStrLen in order to support wide characters
- removed no longer used local variable
+ use Video.ExtendedGraphemeClusterDisplayWidth to support double width characters in MoveStr and MoveCStr
+ double width character support in the unix video unit
* attempt to fix bitpacked records with qwords in them (tw36156) when cross-compiling to big endian targets from x86. essentially the x86 shifting workarounds in the code already weren't covering all corner cases.
+ implement TView.TextWidth and TView.CTextWidth via StrWidth and CStrLen
+ unicode fixes in TMenuBox.Draw
+ Unicode aware implementation of TStaticText.Draw
+ unicode fixes for the window title
* reset LastCharWasDoubleWidth in the beginning of every line
+ bug fix in the rendering of double width characters
+ another double width rendering bugfix
+ added scrollbar and listbox to the unicode example
+ use different languages in the list box
+ unicode fixes in TCluster.DrawMultiBox
+ added horizontal scrollbar to the demo
+ enable PInputLine in the unicode demo
+ TInputLine unicode keyboard text input fixed
* fixed handling of non-BMP characters in Video.ExtendedGraphemeClusterDisplayWidth
bugfix
000037785 cvtsi2ss and cvtsi2sd in x86_64 { att}
bugfix
000037785 cvtsi2ss and cvtsi2sd in x86_64 { att}
* correctly allocate edx for mulx, resolves
0038533
Apply patch proposed by J. Gareth Moreton in bug report
000038527
The patch reworks the LeaLea2Lea optimisation and hopefully fixes the bug (admittedly by adding a brand new optimisation!).
* fix compilation for CPUs without thumb
Fix tw28713 for big endian CPUs
+ wide and combining character support when determining the cursor position in TInputLine
+ unicode combining and wide character support in TInputLine.Draw
m68k: removed some helper function which was added, but in the end it never saw any use
m68k: adjusted some max alignment values for m68k-linux based on i386-linux, because the ELF loader on m68k should be able to provide the same alignments for globals
* Remove obsolete -OG2p3 option for extcycle
+ Add extoptcycle to cycle compiler with both -dEXTDEBUG and -dDEBUG_ALL_OPT
Patch by Gareth Moreton
* Fix lea optimizations which lead to more failures with -O3 and -O4 options.
- LeaLea2Lea now checks to see if the index register is in use.
- For both the base and index registers, RegUsedBetween is changed to
RegModifiedBetween, since just reading the register is harmless for the
optimisation (it finds additional optimisations in the RTL as a result).
- Because I saw the mis-optimisation with MOVZX that occurred (even
though it was due to the mis-optimisation of LEA instructions), I wrote
some extra code in OptPass2Movx as a safety measure to ensure this
doesn't happen (although no additional instances of it happening have
been noted so far - best be safe than sorry).
+ added b.cc/b.cs support to AArch64 assembler reader (mantis
0038485)
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Amiga, AROS, MorphOS: Prevent crash when access socket without TCP/IP Stack running
* applied patch by Pierre to fix make cycle -Cr
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
+ SETcc/Mov -> SETcc optimization
m68k-linux: revert maxCrecordalign to 2, as an experiment to fix some linking-against-C regressions since the alignment changes
+ wide and combining character support in TInputLine.HandleEvent.MousePos. This
means cursor positioning and text selection with the mouse now works properly
with these special unicode characters
* fixed double width character at the end of TInputLine covering the right
scroll arrow
+ introduced UDrivers.EgcWidth
+ optimization: use EgcWidth instead of StrWidth wherever possible
Extend list of CPUs defining slowcpu conditional in tmt1 and tw8177 sources
* fixed compilation of the video unit on Windows
+ added extra unit paths to rtl-unicode
* convert unicode to the cp437 dingbats range (#0..#31,#127) in ExtendedGraphemeCluster2LegacyChar
+ use a table convert_lowascii_to_Unicode to convert unicode to cp437 lowascii and vice versa
+ also convert characters in the range #128..#255 in ExtendedGraphemeCluster2LegacyChar
- removed commented out code
+ handle enhanced video buffer resizing
+ added graphemebreakproperty and eastasianwidth to the video unit uses clauses of all the remaining operating systems
+ added lpi file for compiling testuapp for windows
* timeddlg.pas renamed timeddlg.inc
+ added timeddlg.pas that includes timeddlg.inc
* for setjmp based exception handling, get the type of the exception reason from the setjmp result
+ added unicode version of the timeddlg unit
* inplong.pas renamed inplong.inc
+ added inplong.pas that includes inplong.inc
* fixed JVM stack height calculation after calls returning an
implicit pointer tpe
* the new constant string arraydefs are also implicit pointers types for JVM
* support Objective-C classes and protocols with -gw3 (mantis
0036250)
* fix LLVM after
0048828
* global gotos really use the return type of fpc_setjmp to test where we come from
+ apply excess precision also to unary minus nodes
* made excess precision really working
+ optimize (a and b) or (c and not(b)) into c xor ((c xor a) and b)
+ test
* sar*/ro* do not call location_force_reg if not needed
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* fixed compilation under Linux
+ added unit uinplong - unicode version of inplong
* tabs.pas renamed tabs.inc
+ added tabs.pas that includes tabs.inc
+ added utabs - unicode version of the tabs unit
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Fixed free_fun function signature in zlib
fix! 2d00cab5
* do not omit location_force_reg on second operand of sar/ro* if
it is used to adapt the size of the operand
* patch by J. Gareth Moreton: MOV/SHR reference optimisation, resolves
0038560
* unicode conversion of the non-ASCII characters in statuses.pas
* replaced non-ascii characters to #XXX equivalents
* converted non-ascii characters in stddlg.pas to unicode and #XXX equivalents in the non-unicode version
* converted some non-ascii characters to unicode
* converted non-ascii characters to #XXX equivalents
* replaced high ascii characters with #XXX equivalents and provided unicode equivalents
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* patch by J. Gareth Moreton: SubMov2LeaSub optimisation improvement, resolves
0038555
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* patch by J. Gareth Moreton: take care of -Os for SubMov2*, part of
0038579
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
+ new RiscV32 SUBARCH rv32i
Add new make rule named full_targets
* do not generate mul instructions if the mul extension is not available
* do not apply the (a and b) or (c and not(b)) into c xor ((c xor a) and b) optimziation if short boolean evaluation is used, should resolve
0038576
* improved test
* improved last commit, better handling of boolean expressions
* last commit fixed, hopefully final fix
* fix test so it really uses random values for the boolean, thanks Jonas for the hint!
AmigaOS4: renamed reserved name "class" as field name
* Improve DEBUG_PPU code
* Move flog file closing from closefile method to destroy destructor.
* Fix write_data output into flog
Update to objects compiled using GNU gcc 5.5.0 for sparc-solaris
* RiscV32: properly read references with record offsets and base register
+ RiscV32: sanity check in assembler writer
+ RiscV32: setjmp/longjmp implementation, based on the RiscV64 one
* unified RiscV32 and RiscV64 GAS readers
+ initial (and so far experimental) implementation of -ix to output -i in xml format for further automated processing
morphos: new functions and structures from current SDK 3.16
+ support for .dc.a directive
* read multiple section flags
o RiscV64 glibc startup code fixed:
* there is no _init/_fini, call libc_csu_* instead
* fix loading of global_pointer
+ added functions for getting/setting the current code page, when using the
legacy (non-Unicode) video buffer
+ added checks for certain code pages that should not be allowed to be set in Video.ActivateCodePage
+ introduced legacy code page functions to the video driver itself (they can
optionally be implemented for operating systems with non-unicode consoles)
* wire up the code page functions to call the driver functions in case of a legacy driver
+ implemented GetSupportedCodePageCount/GetSupportedCodePage for unicode consoles
* use the current legacy console code page in Enhanced2Legacy
* hide the (currently broken, to be fixed) unix internal/external code page
stuff to the implementation part of the unit
* converted internal_codepage and external_codepage to the TSystemCodePage type.
Removed the unused codepage enum constants and sets.
* fixed bug in decide_codepages, which was checking the wrong variable for is_vga_code_page
- get rid of internal_codepage. Set CurrentLegacy2EnhancedTranslationCodePage instead.
* converted tabs to spaces
* converted comments to utf-8, so the file is readable in modern text editors
* return RawByteString in the transform function result
* use FPC's integrated codepage conversion for non-Unicode unix consoles
+ RiscV: set threadvarblocksize
* sanity check if threadvarblocksize is really set
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* mips and xtensa compilation fixed
Add special gcc options for riscv32/riscv64 gcc calls
Update revision after commit
0048929
* RiscV: basic CFI stuff fixed
* RiscV: corrected setup of gp
* re-build c objects with a fixed C compiler regarding floating point parameter passing: riscv64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 with -O3
Update Makefile's after commits 48929/48930
Aros: Layers unit updated with AROS specific extensions
AROS: AGraphics, removal of AROS defines, the unit is only for AROS
Amiga: removal of includes not in use anymore
AmigaOS4: added missing varargs function
+ RiscV: initial implementation of gprof support
* cleanup
* RiscV: if shared libraries are involved, we have to link always against the crt*S.o variants
+ RiscV: initial support of pic generation
* riscv64-linux: generate PIC for all units as it is required for shared libraries
Merge: 62ea31f255 6ac633e594
* merged the wasm branch. Adds support for the wasm32 (WebAssembly 32-bit)
target.
* compilation on Windows fixed
Rough fix for riscv32 failure
* RiscV: unified itcpugas.pas
* RiscV32: fpc_longjmp needs nostackframe directive
* RiscV: unified procedure directives of fpc_*jmp
* RiscV: integer type conversions fixed
- cosmetics: superfluous newlines removed
+ compiled C object files, generated by riscv32-unknown-linux-gnu-gcc (GCC) 10.2.0 with -O3
* the TFPList.List property made protected in order to discourage using it
directly, as this circumvents range checking
Use uvalue field to get unsigned and avoid range check or overflow errors
Avoid invalid typecast error when using -CR option
+ introduced TFPList.IndexOfItem and TFPObjectList.IndexOfItem, which are like
IndexOf, but can also search backwards. The same method already exists in
FPC's classes unit.
* when parsing unions, set the uniondef reference to nil in
current_module.deflist after freeing the object to prevent dangling pointers
and use after free
fpts2junit: remove ../ at start for the classname
amiga: examples fixed and updated
+ patch by J. Gareth Moreton: AddMov2LeaAdd and AddMov2Lea optimizations, resolves
0038579
Amiga, AROS, MorphOS, OS4: Unified ExecBase for all Amiga Platforms
+ X86: JccMovJmpMov2MovSetcc optimization
Avoid copying of objpas.pp into local rtl/macos directory
* instead of registering all and then deleting non-propgetter/setter procdefs in
pdecvar.read_property_dec, don't register them by default, and then only
register them, if they are propgetter/setter. This prevents dangling pointers
in current_module.deflist and potential use-after-free bugs.
* overflow checked mul helpers do not need to check all bits either
+ RiscV: initial OpAddi02Op implementation
Use 4 char-long ShortName for ihxutil utils package
* RiscV64: type conversion to 8 bit improved
* instead of using discardresult, wrap the uniquestring functions in procedures,
that are declared as inline
* remove nf_write from the counter node when converting for loops into while loops if the counter is only read
Change short name of qlunits package to 'qlun' to respect 4 char limitation
qlunits: fix the return value of longint_to_qlfp
* Dwarf: write variant fields only if the require features are present, resolves
0038651
* Add SAMD51P19A controller type. Unit generated by Michael Ring and slightly modified.
rtl: remove defines for v2.x compiler from the common part of the RTL. It's no longer suppported to build with that
* Add deprecation message
* support building with FPC 3.2.2
amiga: check if P is nil while processing params. this should never happen, except sometimes in real world it still happens. so lets be defensive about it
* patch by J. Gareth Moreton: Nothing (NOP) node optimisation, resolves
0038194
Use utils as shortname also
Add missing go32v2 zips and corresponding sources
* copy and compare the typesym inside type nodes as well
* fix for Mantis
0038642: for enumerations with jumps Delphi behaves as follows:
- GetTypeKind returns tkEnumeration (FPC previously generated a compile error here)
- GetTypeInfo on a generic parameters returns Nil for such types (FPC previously generated a compile error here)
- GetTypeInfo otherwise generates a compile error (as before)
* the offset parameter of reference_reset* must be asizeint rather than
longint (mantis
0038636)
* allow also 8 byte string constants in assembler, resolves
0028640
* fixed assembling via pipe on Darwin
Replace p2fp by p2fm as short version for pas2fpm utils package and add some missing -3.3.1 to long source zip names
Remove double source entry for utils lexyacc package
Use utils also for short version for OS/2 and emx
* test needs objfpc mode else i is 16 bit only
* added test, issue is fixed by
0048758 already
Fix short name for utils-fpcres for OS/2 and EMX
* fixed memory leak, introduced accidentally in
0048998
* cpubase.cgsize2subreg should handle all valid sizes, resolves
0038557
+ Xtensa: tcpuinlinenode.second_prefetch
+ some more change information entries added
Avoid keeping optimized out node in callcleanupblock.statements or callinitblock.statements
Use value $00000F00 instead of $F0000000 for IF_FPMASK, and adapt all floating point constants, to avoid IF_VFPv4 having the same value as IF_PASS2
* x86-64: we can spill replace 32 bit operations if the operation does not modify a register
* thumb2: Make fillchar smaller, faster and more reliable. Some gas versions remove the "mov r0,r0" making the calculated branch break
+ enable colored output on darwin, resolves
0038693
* thumb2: Optimize fillchar a bit more with a wider inner loop chunk size
* fix for Mantis
0037426: don't allow an instance function of a type helper to be used on the type instead of a concrete value
+ added test
* Windows on ARM64 adheres to the usual Aarch64 ABI, thus references need to be copied on the caller side as well
+ Aarch64: cpu_capabilities support
+ write controller unit wiht -ix as well
* Aarch64: the M1 is an ARM v8.4-a CPU
* Aarch64: cpu capabilites defines properly named
* Aarch64: enable defining cpu capabilites
* Aarch64: support LSE instructions
+ Aarch64: use LSE if available for atomic intrinsics
* CortexM4: Add some missing system registers
* fixes to deadstore optimization
* do not remove register deallocations/allocation pairs if the register is written
Update after commit 49123
* Xtensa: fix crash in TCpuAsmOptimizer.RegLoadedWithNewValue
Add sinclairql to NO_NATIVE_COMPILER_OS_LIST
Add basic support for setting argc and argv for sinclairql OS
* allow procvars to not be registered right away
* set proctypeoption for procvars
* extend procvar_dec so that procvars don't have to be registered
+ Aarch64: create better code for not()
* don't override specified assembler on the command line when leaving
assembler files in case that specified assembler is already an
external one
* don't generate high-level CFI statements when the selected assembler
does not support them, even if the target normally uses them
o fixes assembling with -Aas-darwin for i386/arm/x86-64 (on OS
versions that used those)
* Darwin/BSD: fixed StackBottom calculation
* handle case where the first instruction with line information is looked up
o this should be handled better. The common way is looking up address - 1,
but that doesn't seem to work here.
sinclairql: fix and simplify the startup code changes in
0049134. accessing global variables is not possible before relocation
sinclairql: further tweaks to the startup code. enable optimizations. mark functions as noreturn to save a few bytes
osheap: new very small heap manager which only acts as a thin layer above an OS provided heap API. mainly aimed for small and embedded systems
sinclairql: fixed parameter trashing in several QDOS function assembler wrappers
sinclairql: implemented Error2InOutRes, patch by Norman Dunbar
sinclairql: implemented io_delet and mt_rclck QDOS functions, patch by Norman Dunbar
sinclairql: various file and directory handling improvements, based on patch by Norman Dunbar
sinclairql: instead of tinyheap, made the QL port to use the new OS heap by default, also implemented Randomize, based on patch by Norman Dunbar
* allow also CSUBSETREG in tx86inlinenode.second_IncludeExclude, resolves
0038733
Disable most utils for SinclairQL for now
* PowerPC: initial (and primitive) implemenation of TCpuAsmOptimizer.RegLoadedWithNewValue
Refactor code to avoid problems with -CR option
+ FreeBSD/AArch64 support (patch by Mikaël Urankar, mantis
0038441)
* regenerated with FreeBSD/AArch64 support
* use popcnt instead of countbits.
* change countbits to popcnt in case it is used by others.
suggestion by Bi0t1n, mantis
000038728
* on second thought, and a byte typecast so that an expanded intrinsics doesn't loop over unnecessary bits.
sinclairql: first version of working argc/argv generation. implemented ParamCount and ParamStr()
sinclairql: various seeking, FS_POSAB/FS_POSRE and ERR_EF related fixes
qlunits: updated to match the latest RTL qdosfuncs.inc
sinclairql: implemented do_rename(), based on the patch of Norman Dunbar
sinclairql: new files to contain SMS only functions, iof_rename implemented, based on a patch by Norman Dunbar
sinclairql: do_mkdir implemented, patch by Norman Dunbar
sinclairql: add the used includes to the system unit deps
* fixed win32 testsuite regressions after
0049084
sinclairql: enable commandargs and exitcode features
* use up to 16 bytes alignment for the WASI target
+ common assembler optimizer base class for powerpc and powerpc64
* factored out TPPCAsmOptimizer.RegLoadedWithNewValue
* never ignore BINUTILSPREFIX environment variable in fpmake
+ search also $(BINUTILSPREFIX)-gnu-gcc for a usable gcc to get the libgcc directory
- obsolete defines removed
- forgotten file, obsolete define removed, belongs to last commit
* Delphi-mode calling without parenthesis
Also avoid invalid typecast for RegLoadedWithNewValue method for mips, sparcgen and xtensa
m68k: cleaned up some ancient mess from cpunode.pas, no significant functional change, apart from unit inclusion order
m68k: on the Sinclair QL insert the main program's name into the object, so the RTL later can set it as default job name
sinclairql: have a max. 48 char buffer for job name. set the job name to the program name by default on system unit init
sinclairql: also have a function which returns a pointer directly to the QLstring job name
sinclairql: add right spelling for iof_mkdr, add the QDOS equivalent alias
qlunits: updates, new API and utility functions, improved README
Disable sinclairql target OS for most utils packages
Add strings unit to buildrtl meta-unit, and update Makefile.fpc accordingly
sinclairql: turn the anyKey string const into a pchar, this reduces the final binary size by 200-odd bytes
Explicitly disable range and overflow checking to avoid troubles with pointer arithmetics
+ optimized multiplication for "symmetric" bit patterns on arm
rtl: make STACK_MARGIN a variable instead of a const. this allows adjusting margin size on system unit init, based on the actual stack length of the executable. useful for small systems running with little stack. allow overwriting SysBackTraceStr with a platform-specific implementation
sinclairql: implemented StackTop, this results in working stacktraces and working stack checking. Implemented a custom 5% stack safety margin and a system specific SysBackTraceStr()
atari: implemented stacktop for working stacktraces, implemented stacksize dependent stackmargin, and a system specific backtracestr. however, offs display still doesn't work properly, due to a linker issue (reported)
* insert explicit type cast for the count parameter of move/fillchar wrapping C functions,
avoids a warning in combination with -O3 and negative count values
m68k: always use ELF objects with vasm for improved cross-compatibility with other tools and compilers
sinclairql: added startup code support for the 'packed' relocation table format in vlink. disabled for now.
+ Aarch64: completed LSE support for all interlocked operations
* { ... } is no a longer valid comment in aarch64 assembler
+ compile the sysconst unit for wasm32-wasi
+ started working on the SysUtils unit for the WASI platform
* avoid leaving a dangling pointer in pparautl.proc_add_definition to prevent
use after free in different parts of the compiler
Add fForceUseForwardSlash to TLinkRes class, used for vlink linker on hosts using backslashes
* fix for Mantis
0038771: the owner of the procdef might be Nil in case of a specialization (that virtual can't be used on generics is caught later on)
+ added test
Add systems_openbsd to suppported_targets_x_smallr and modify GenerateExecutable in t_bsd unit accordingly
* moved a bunch of constants from dbgdwarf to dbgdwarfconst
* if left is a smaller type, then an extension operation for shr can be removed
sinclairql: hopefully fix off-by-one processing in the packed relocs code
m68k: added support to references like (a0,d0.w) in inline assembly, also fixed a bug, where sometimes the index register would have been randomly set as smaller than .l size, when the size wasn't specified
sinclairql: support the upcoming QL binary linking feature of vlink (still in development). it's behind an undocumented -WL switch now. also, reduce the amount of used dataspace by the size of the relocation table in the current linking mode
* patch by J. Gareth Moreton: AArch64 OptPass1Shift register tracking fault fix, resolves
0038691
sinclairql: added an entirely stub (for now) sysutils unit. added a classes unit. enabled building the whole rtl
* Mustache templates implementation
* moved warning about suspicious comp assignment to type check pass, catches also
assignments of constants
Remove unused, obsolete -dBROWSERLOG option
* NDS: fix condition when to default to apptype arm9
* improved system unit dependencies
Fix gotpcrel relocation for TESTQ x86_64 instruction
+ Aarch64: use frintz for int(...) instead of creating a helper call
+ Aarch64: directly inline code for frac(...)
* prevention of dangling pointers and use after free after free_unregistered_localsymtable_elements
* makefile regenerated with latest fpcmake
* fix bootstrapping on aarch64-linux with 3.2.x
* decrease macro nesting counter early when expanding empty macro
to avoid errors about too depth macro nesting, resolves
0038802
* Use FGeneralCriticalSection for LogIndent and LogUnindent.
Add FIndentCount integer field.
Add FWorkerPrefix string field.
Use try/finally block to keep track of LogLevel
* patch by Christo Crause to fix
0038789: writing of linker commands should not depent in -s
Add -march=XXX option for aarch64 external assemblers
Add .force_thumb pseudo-directive support forarm reader
Avoid invalid typecast if hp is not an instruction
m68k: fixed a comment. no functional change
Avoid range check error inside genitem_thumb2 by changing local variable i type
Make sure nf_usercode_entry get transferred inside firstpass procedure
Set string length before calling move to avoid problems with global data analysis on systems using C library
* fix compilation of arm compiler on 32 bit hosts
Avoid warning with -O4 option
* avoid overflow during register allocation
Add several missing -AXXX options
Use as-clang as idtxt for as_aarch64_clang_gas_info
* patch by J. Gareth Moreton: AArch64 "magic division"
(replace division by constant with multiplication), part of
0038806
+ patch by J. Gareth Moreton: improved tests for constant divisions including benchmark,
second part of
0038806
Also check *.pas and *.inc files inside sub-directories in msgused.pl
Add -TFreeBSD target OS option to -h output for aarch64 compiler ppc64
m68k: D2 is considered volatile on macosclassic
m68k-sinclairql: apply the same hack as for amiga and atari to avoid vlink section attribute warning
m68k: sinclair ql now requires vlink 0.16h or newer.
Avoid range/overflow error after commit
0049290
* fix finally block getting unconditionally removed if try-block is empty
(hasnocode(nil) always returns true). Regression from
0048174
sinclairql: implemented a selection of I/O functions, patch by Norman Dunbar
sinclairql: sysdeps must include qdosh.inc too
sinclairql: include qdosh.inc directly. this will allow easier sharing of qdosfuncs.inc with the qlunits package
qlunits: some refactors and updates. added system vars offsets to qdos unit, and a new example
qlunits: really add the a new example missed from the previous commit
* support arbitrary record regvars on AArch64: it has fairly complete support
for inserting/extracting bitfields (although the compiler doesn't use those
instructions yet in all possible cases, it seems)
* patch by J. Gareth Moreton: AArch64: Improved speed and efficiency with constant generation, resolves
0038837
* combine the Boolean parameters of read_proc and read_proc_dec into a set
* have read_body return the created procdef
* use tparse_proc_flags for parse_proc_head as well
* use tproc_parse_flags in parse_proc_dec_finish as well
sinclairql: enable most of rtl-objpas and rtl-extra on the QL
* fix for Mantis
0037252: apply patch by Bi0T1N to implement TThread.NameThreadForDebugging for Mac OS X 10.6 and newer (older versions don't provide the required functions)
+ initial support for anonymous functions, for now as essentially nested functions
Based on work by Blaise.ru
+ added a test for Get/SetTextAutoFlush feature
* fix test compilation with Delphi
* fix for Mantis
0038381: apply patch by Bi0T1N to add two Delphi compatible overloads for TValue.Make
Destroy tfornode class loopiteration field if assigned
Fix message about unsupported OS_TARGET for LLVM
pastojs: fixed classmethod pointer
* fix for wrong nested comments resulting in wrong results under *nix, etc., with redirected output
* fix for wrongly chosen conditional define name
* LLVM does not have an intrinsic for int/frac, so don't replace frac with
a call to runerror(207) there
* (modified) patch by J. Gareth Moreton to unify ldr/str optimizations on Aarch64/ARM, part of
0038841
Avoid using UXT and SXT instructions on arm version below 6
* patch by J. Gareth Moreton, second part of
0038841
* Convert array of jsvalue to array of const where appropriate
* fpcr and fpsr are 64 bit on aarch64
+ ARM: basic vasm support
+ initial support for ARMv2
* check for unassigned valuestr when writing ntbs eabi attributes
pastojs: nested external class constructor
Try to fix handle of large stack size in xtensa gen_proc_entry/gen_proc_exit
* AVR: made avr_des intrinsic more usefull
sinclairql: enable weak linking support for the Sinclair QL
sinclairql: introduce a way to override the system unit's console opening/closing and exit message via weakexternals
sinclairql: for setting the exit message of the default console, use a helper function instead.
* patch by J. Gareth Moreton: x86 MOVZX/CMP optimisation, resolves
0038882
pastojs: fixed float / 0.0 results at compiletime in inf instead of divbyzero, issue
0038815
* fix building on i386 after
0049366
* RiscV: unified cpu initialization and FPU exception handling, resolves
0038893
* first part of AVR assembler optimizer reword
* AVR: second part of assembler optimizer rework
sinclairql: make sure the end of bss (hence the bss size) is also aligned to two bytes
sinclairql: return true as default for do_isdevice to work around weird console flushing issues.
* patch by J. Gareth Moreton: Memory CMP optimisation, resolves
0038907
* patch by J. Gareth Moreton: TEST chain shortcutting, resolves
0038908
* patch by J. Gareth Moreton: Additional SETcc optimisations, resolves
0038767
qlunits: merged a modified version of a patch by Norman Dunbar, defines system variables as a record
qlunits: fixed comments in qdos_sysvars.inc to avoid compiler directives warnings
qlunits: fix SMS unit build, declare all const/vars/types before functions, and minor tweaks
qlunits: make sure everything is two byte aligned
qlunits: add a test program to test sysvar offsets
sinclairql: make sure smsfuncs.inc is in sync with the one in packages
qlunits: remove word alignment test from sysvar test, as there are byte-sized vars, which are not aligned
qlunits: added channel definition structures based on C equivalents, added test code
* more fixes to support vasm on arm
* do not crash on empty eabi attribute strings
* more fixes for VASM for ARM
* Windows: Prevent removal of the TLS directory by the linker when RTL is compiled with -O4 or when inlining is enabled.
* patch by J. Gareth Moreton: x86 JccMovJmpMov2MovSetcc improvement, resolves
0038761
* as 3.2.0 is now the oldest compiler we support we can now use {$push} {$pop} to reset the $minenumsize in the RTTI header
* keep track of symbols that are accessed from a nested/anonymous function that belong to a surrounding scope
* check whether an anonymous function can be assigned to a global, method or nested function variable
* the MovOpMov2Op optimization needs to take care of the second operand, should resolve
0038359
* check used registers properly for SETcc/TEST/Jcc -> Jcc, resolves
0038940
* prevent a range check error in TFPList.IndexOfItem when searching backwards in
an empty list and the compiler is compiled with range checking turned on
Fix compilation with 3.2.2 release for arm and i386 CPUs
* Aarch64: apply OptPass1Data to CSEL as well
+ enabled compilation of unit SysUtils for the WASI target. Note that WASI
snapshot building fails, when compiler is built with -CR, because of a
use-after-free bug in the compiler, related to generics. A fix for this bug
is currently being worked on.
* set self to nil in current_module.deflist for registered defs in the
tstoreddef.destroy destructor, instead of doing it after each call to
x.owner.deletedef(x)
* patch from Alfred for setting source_cpu_string for the wasm32 platform
Fix duplicate source_cpu_string after last patch, by using cpuwasm32 instead of wasm32 conditional
* improvements to the prevention of dangling pointers in tmodule.deflist,
introduced in
0049417. Now it no longer depends on current_module, so it
handles the case when current_module changes between the time the tdef was
registered and the time it was freed. It also supports freeing the tmodule
before the defs, so the freeing order of the object is once again flexible.
* fixed typecast in tmodule.destroy after
0049426, since registered_in_module is introduced in tdef, not in tstoreddef
- removed the (deflist[i] is tdef) check from the tmodule destructor, since
only tdef descendants are added to the deflist and casting deflist entries to
tdef directly appears to be safe and is done in other parts of the compiler
+ enabled compilation of unit sortbase for the WASI target
+ enabled compilation of unit math for the WASI target
+ enable compilation of unit rtlconsts for the WASI target
+ enabled compilation of unit types for the WASI target
+ enabled compilation of unit typinfo for the WASI target
+ enabled compilation of unit fgl for the WASI target
+ enabled compilation of unit macpas for the WASI target
+ enabled compilation of unit iso7185 for the WASI target
+ enabled compilation of unit getopts for the WASI target
+ enabled compilation of unit charset for the WASI target
+ enabled compilation of unit cpall for the WASI target
+ enabled compilation of unit character for the WASI target
+ enabled compilation of units unicodedata and unicodenumtable for the WASI target
* fixed the dependencies of unit character
+ enabled compilation of unit fpwidestring for the WASI target
+ added classes unit for the WASI target (not yet enabled in the makefiles)
* change fma cpu flag into an fpu flag
+ added tthread.inc rtl include file for WASI
+ enabled compilation of unit classes for the WASI target
+ enabled compilation of unit uuchar for the WASI platform
+ compile the unit dos (OS-specific functions are dummies for now) for the WASI target
+ enabled compilation of unit extpas for the WASI target
+ compile the unicode collations and extra code pages for the WASI target
+ enabled some rtl-extra units on the WASI target (matrix, ucomplex, objects)
+ enabled several rtl-objpas units for the WASI target
+ enabled compilation of fcl-base for the WASI target
+ enabled the hash package for the WASI target
+ enabled the fcl-xml package for the WASI target
+ enabled the fcl-sound package for the WASI target
+ enabled the regexpr package for the WASI target
+ enabled package fcl-stl for the WASI target
+ enabled package fcl-registry for the WASI target
Fix check that third parameter of ADDI hp1 instruction is a constant
Add A_CALL to the list of instructions considered as a calljmp, even though it is a pseudo-instruction, fixes a long list of -O3 and -O4 testsuite failures
* aarch64-darwin supports unaligned memory access, confirmed by testing with clang 12
pastojs: low/high(astring)
Add -march option to clang call for llvm target
Return -1 if size of file is smaller tham header size in tppufile.readheader method
Fix compilation for x86_64 llvm variant
* for variant dispatch calls, use the parameter name in source case, not upper case
+ add a test for Variant dispatch and the generated call description format (this is for the previous three fixes)
- remove unused copy of tw17904 (wrong extension)
* improved AndUtxh2And optimization
* Test from werner pamler for issue
0038968
* fix test so that it will work correctly on non-Windows as well
* ARM: split TCpuThumb2AsmOptimizer.PeepHoleOptPass1Cpu
* patch by J. Gareth Moreton: refactoring to standardise the "Peephole Optimization: " prefix on peephole debug messages, part of
0038975
+ patch by J. Gareth Moreton: New label debugging feature, resolves
0038980
Add --NOLLVM and use LLVM by default of compiler is llvm variant
Exchange REQUIREDVERSION and REQUIREDVERSION2 values to get 3.2.2 version in reuired release version message
* patch by Alfred to use new linker names for Android NDK >=22, resolves
0038987
* patch by J. Gareth Moreton: ARM - str/str -> stm optimisation, second part of
0038975
Re-generate Makefile after wrong commit
0049495, fixes bug report 39001
+ skeleton of an embedded thread manager
* set no result in NoBeginThread, it never returns
* optimization "Merging stores: STR/STR -> STM" cannot be carried out when generating thumb code
* HaltProc does not return
* use smaller alignment when generating thumb code
* do not generate exit code for arm (thumb and thumb-2) if a routine is marked as noreturn
+ Merge Add/Sub optimization
Fix compilation of tiso8601 test by adding -Mobjfpc option
+ ARM: PushPop optimziation
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
+ LICENSE and README.md added, taken from git test conversion as committed by Michael
Amiga, MorphOS, AROS: unified function results to LongBool in amigados unit, correct type for GFXBase
AROS: some fixes for AVL_ functions, added missing NewCreateTaskA
* ARM (thumb): do not save registers in routines marked as noreturn
* ARM: fix for Merge Add/Sub optimization
* enumerate preopened dirs on startup and store them in a list, accessible via global vars in the system unit
+ initial implementation of GetDir() for WASI
+ keep also the fds for the current dirs
+ initial implementation of resolving relative paths
+ implemented MkDir for the WASI target
+ implemented RmDir for the WASI target
+ implemented Erase() for the WASI target
+ implemented do_truncate for the WASI target
+ implemented Do_FilePos for the WASI target
+ implemented Do_FileSize for the WASI target
+ implemented Do_Seek and Do_Seekend for the WASI target
+ implemented Do_Rename for the WASI target
Only set llvm to true if LLVM custom option variable is set, but not to false if not (as true might be the default value)
+ also resolve absolute paths in ConvertToFdRelativePath
+ initial WASI implementation of DOS.GetFTime. Not working yet, due to a
compiler bug, related to the import of fd_filestat_get from the wasiapi unit.
* also set doserror to 5 for access denied in dos.getfattr
+ request the FD_FILESTAT_GET capability when opening files
* fixed date calculation in WasiDateToDT
+ workaround for newer wasmtime versions that don't report the fd type of
stdin/stdout/stderr. Always assume handles 0..2 are a device, so that
standard input and output are flushed.
+ request fd_seek and fd_tell rights when opening a file
+ request the rights to set size (truncate) and set times, when a file is opened for writing
+ request fd_allocate rights when opening a file for writing
* changed the formatting of the setting of fs_rights_base in Do_Open. No functional changes.
+ request FD_DATASYNC and FD_SYNC rights when a file is opened for writing
+ always request FD_FDSTAT_SET_FLAGS rights
+ always request FD_ADVISE rights, when opening a file
+ always request pollfd_readwrite rights, when opening a file
+ implemented environment variables support in the DOS unit for the WASI target
* set EXEEXT to .wasm for the WASI target in fpcmake
* set the exeext for WASI properly in dotest.pp
+ started working on DOS.FindFirst
+ stack pages need to be touched on aarch64-win64 as well
Amiga video unit: fixed not initialized TInputEvent field
* win64: factored out cpu specific code
Amiga video unit: fixed not initialized TInputEvent field, 2nd try, now the deadkeys actually work as they should
* r/esp cannot be used as index register
* throw an error if esp/rsp are used as index register
* allow char constant to be used for const string parameters in generic specializations, resolves
0039030
+ added baud rate constants for arm as proposed by Piotr Kardasz in
0039101
* BitSizeOf Documentation sub (issue
0039110)
* patch by Alfred to fix cross building to darwin, resolves
0039109
+ initial working implementation of FindFirst/FindNext
* use -1 instead of 0 for indicating empty DirFD
* patch by J. Gareth Moreton to fix faulty conditional jump logic, resolves
0038985
* DeepMovOpt requires that the target reg of the mov is not modified before hp2
+ SHXXMov2SHXX optimization
* patch by J. Gareth Moreton: improve MovAndTest2Test optimization, resolves
0039156
+ CPU.BMI1Support and CPU.BMI2Support
* patch by J. Gareth Moreton: x86: MovMovSar2MovCltd bug fix, resolves
0039180
* fix for Mantis
0026760: apply patch by Ondrej Pokorny to ensure that units referenced by an "in"-clause are recompiled when they have been changed
+ added test (though due to the nature of the bug it needs to be interactive)
* patch by J. Gareth Moreton: x86: RegLoadedWIthNewValue overhaul and bug fix, resolves
0039187
+ added Xext.h header translation
* patch by J. Gareth Moreton: CMP chain shortcutting, resolves
0039141
* use prettier parameter names in the XShm unit
* fixed filename extension of the xext.pp source file in fpmake.pp
+ added link test for the mitmisc unit
+ added link test for the xext unit
+ AVX512*Support functions
* call cpuid with eax=7 only if it is supported by the CPU
+ added header translation of the shape X11 extension
* might_have_sideeffects in gen_c_style_operator as proposed by runewalsh, resolves
0039206
* patch by Christo Crause: Xtensa [patch] Use syscall 0 to spill registers on ESP32, resolves
0039221
* patch by J. Gareth Moreton: x86: Lea2Nop for stack pointer, resolves
gitlab 0039225
* further fix for Mants
gitlab 0026760: applied patch by Ondrej Pokorny to fix recompilation of units referenced with an "in" clause if no file extension is provided
+ added (interactive) test
* patch by J. Gareth Moreton: x86: Minor bitwise optimisations, resolves
gitlab 0039299
* Xtensa: unified DataMov2Data optimization
* Xtensa: optimize constant multiplications
* avr4 has mul instructions
* revert last commit, avr4 has no call/jmp
* remove mhs_exceptions in might_have_sideeffects call for C operators: it improves code
and shouldn't hurt as this is no regression in comparison with current 3.2.x
* x86-64: removed some fwait instructions from fpc_frac_real, they shouldn't be necessary
* Restored disappeared test
+ add modeswitch for anonymous functions
* ensure that nested functions of main program, main program finalization and unit initialization/finalization are generated
* consider Self parameters of nested functions as captured as well
* allow to ignore Self parameters; for this the parameter skipping needs to be repeated to correctly catch all cases
* implement assignment of anonymous functions to procedure or method variables if they either capture nothing or (in case of method variables) at most the Self variable
* x86-64: fpc_frac_real further improved: memory loads of extendeds are expensive
+ add function to check whether a def is an invokable function reference
- x86_64: some more fwaits removed
+ added unit xevi (header translation of X11/extensions/XEVI.h)
+ added unit xlbx (header translation of X11/extensions/XLbx.h)
+ added unit xag (header translation of X11/extensions/Xag.h)
+ added unit xcup (header translation of X11/extensions/Xcup.h)
+ added unit xdbe (header translation of X11/extensions/Xdbe.h)
+ added packrecords C directive to the xevi unit, because it contains records
+ added unit xmd (header translation of X11/Xmd.h)
+ added unit dpms (header conversion of X11/extensions/dpms.h)
+ added unit multibuf (header translation of X11/extensions/multibuf.h)
+ added unit security (header translation of X11/extensions/security.h)
+ added unit sync (header translation of X11/extensions/sync.h)
+ added unit xtestext1 (header translation of X11/extensions/xtestext1.h)
+ added dependency on unit xmd for unit dpms
The TStream.ReadBuffer and TStream.WriteBuffer methods have changed the Count parameter type to NativeInt.
Changed the implementation of ReadBuffer, WriteBuffer so that the size of the blocks when calling Read and Write does not exceed High(Longint).
Notes:
- Thanks to this change, for example, a file larger than 2GB can be loaded into TMemoryStream.
- The fact that the Count parameter has the NativeInt type is compatible with the latest versions of Delphi.
fpts2junit: prevent double entries in junit xml (in test log are double entries, one for compiles, one for runs)
Amiga: Workbench 1.x compatibilty via the AMIGA_V1_2_ONLY define
* Prevent double release of a temp.
* It is still needed to release the temp allocated for the result of an assembler function if the result is not referenced. This fixes some EXTDEBUG warnings.
Amiga: Implemented GetVar for 1.x
amiga: FPC_DOKEYCONVERSION env var if key conversation Ansi to IBM should be done for every key
* Gitlab client + example
* Some additional filters
amiga: removed some debugging settings
* optimize tests for a single bit "(a and one_bit_mask_const) = <> one_bit_mask_const" into "(a and one_bit_mask_const) <> = 0" to enable further CPU specific optimizations.
* x86: Added the "test $-1,%reg" condition to the MovAndTest2Test optimization.
* patch by J. Gareth Moreton: AND/CMP optimisation, resolves
gitlab 0039287
* extended routines int/frac/trunc shouldn't mess with precision or exception flags, should fix
gitlab 0039275
* Before
gitlab 0035961 (back in 2017) some simple assignment optimizations, such as "x:=x+y" to "inc(x,y)", were performed when -O2 in tassignmentnode.simplify. In
gitlab 0035961 these optimizations were moved to a separate pass which is enabled only when -O3 by cs_opt_use_load_modify_store. This separate pass can benefit from other optimization. But worse code is generated with -O2 since then.
This commit restores applying of simple assignment optimizations when -O2.
* Add DB testsuite config file to ignore list
httpserver keep-alive first attempt
httpserver keep-alive first attempt
Read out KeepAlive only if enabled
Read out KeepAlive only if enabled
Rename KeepAliveSupport->KeepAliveEnabled
Rename KeepAliveSupport->KeepAliveEnabled
add threadedhttpserver demo
add threadedhttpserver demo
Remove the KeepAlive* properties from TFPCustomHttpServer, rename KeepAliveEnabled to EnableKeepAlive
Remove the KeepAlive* properties from TFPCustomHttpServer, rename KeepAliveEnabled to EnableKeepAlive
Info about active connections
Info about active connections
Use InterlockedExchangeAdd to get ConnectionCount
Fix TFPHTTPConnectionThread.Execute repeat loop
Fix TFPHTTPConnectionThread.Execute repeat loop
don't keep alive connections that failed
don't keep alive connections that failed
compiler/msg/errord*.msg: Update of German error messages
fphttpclient keepalive: failed socket operations raise exceptions - try to reconnect also in this case
Move GetStatusCode from fphttpserver.pp to httpprotocol.pp in order to use it outside fphttpserver
* Support for sleb128 and uleb128 constants in the NASM writer.
* Added sleb128tostr() and uleb128tostr() methods to TExternalAssembler.
* Use these methods in assembler writers instead of code duplication.
* Added support for the old Turbo Pascal INLINE(data/data/...) statement.
It is available only in the TP mode.
* TP compatibility: For retro CPUs always copy the function result to
the register(s) on function exit if assembler blocks are present.
*http client: rewind RequestBody in SendRequest
TFPHTTPConnection: clear FBuffer when read from it in ReadRequestContent
fphttpclient: new DoDataWrite/OnDataSent event
+ Added a test for the TP-style INLINE() statement.
* In TP-style INLINE, allowed the > modifier for global vars and relaxed range checks.
TFPCustomHTTPClient: do not reconnect when terminated
* sizeof(array) and length(array) must return sizeUint in case the array
size does not fit in sizeint. This fixes a range check error during
compilation on small CPU targets where allowed array size is 64K, but
sizeint is 32K max.
pastojs: emulate compile time assign integer constant of different type
pastojs: emulate compile time assign integer constant of different type
* properly check if -unpushed should be appended in revision.inc
Add support for hash generation for git repository (local modifier not implemented)
* Some command-line options
* always use $(GIT) to call git
fcl-json: fixed testjson.lpi
fcl-json: fixed testjson.lpi
* Request ID and connection ID for logging purposes
* Add interceptor (middleware) functionality to router + Demo
* Make sure size is set after return
Allow custom definition of GIT.
* fix change information for popcnt
* Allow to compile also non-windows,linux
Add several pattern from tests sub-directory to ignore list
(cherry picked from commit a837c8d47a93f1f1c73a6c45b837f49d9d040c30)
* change information for round* fixed
* change information for round* fixed
* Remove spurious var, prevents fpdoc from handling record
* Remove spurious var, prevents fpdoc from handling record
* Remove unneeded diagnostic output
* Remove unneeded diagnostic output
* Negative time value waits forever
* check if git executable really exists
Add some more patterns to .gitignore
Add test for bug report 38973 (already fixed in trunk/main)
+ Add support for -Adefault.
* Move help message for option -sT to the correct group of messages.
* Use shorter message to indicate switch to external asm.
* Adapted -sX messages because -sT doesn't force external assembler writer.
+ Add support for -Adefault.
* Move help message for option -sT to the correct group of messages.
* Use shorter message to indicate switch to external asm.
* Adapted -sX messages because -sT doesn't force external assembler writer.
+ Aarch64: FMovFMov2FMov 2 optimization
+ Aarch64: FMovFMov2FMov 2 optimization
* reverted wrongly committed file
* reverted wrongly committed file
Initial .gitlab-ci.yml file
Added make command to .gitlab-ci.yml
* Cleaned up .gitlab-ci.yml
* Added regression testing
* build and test must be one job
+ build fpts2junit
+ generate testresult.xml artifact
* build fpts2junit after testing so all directories are present
* fix test for targets with FPC_COMP_IS_INT64 defined
* 64-bit ID for 64-bit platforms
* factored out the fullcycle job as proposed by Marcus
* fix for
gitlab 0039310 by fixing various small issues in tabstractrecordsymtable.has_single_field:
- initialize the returned def to a safe default
- correctly reset the found symbol for each loop
- reset the result when descending into a record
+ added test
* destroy FList in the destructor of TFPHTTPServerConnectionListHandler
* Use FreeAndNil to clear field
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* http client: KeepConnectionReconnectLimit to prevent a dead-lock when a server is not available
* TSocketHandler.Select: set LastError
* check for LastError coming from CanRead()
* More clear variable names
* don't execute DoBeforeDataRead unless OnIdle is set
+ move often used floating point constants into registers
* generate a def. file only if really necessary
Ignore all BuildUnit_{package_name}.pp generated file
Ignore all BuildUnit_{package_name}.pp generated file
* we cannot do SSA during partial writes to arrays which span multiple registers, resolves
gitlab 0039325
* we cannot do SSA during partial writes to arrays which span multiple registers, resolves
gitlab 0039325
* Update handler functionality
* Better SetfieldByName/GetFieldByName
* Add http client pool from Ondrej Pokorny
* Fix for non-compilation on non-supported platforms
* Fix for non-compilation on non-supported platforms: linux -> unix
* Fopefully last fix for non-select platforms
fphttpclient: remove OnIdle and add protected methods so that the feature can be added in a descendant
fcl-web: example missing semicolon and gitignore linux bin
pastojs: fixed typecast jsvalue to external class instance not checking if Object
* Use FPC server by default
* Remove module, move module before default
* SetStatus convenience call
* Uppercase argument for GetHTTPStatusText
* Allow to move routes, make route management thread-safe
* Improved solution for issue
gitlab 0038435, json helpers for http request/response
* location management API
* Enable location management API
* Bring compileserver functionality up-to-date with simpleserver
* Parse linklib directive
* New keywords for ECMA2021
* Pass all directives through OnDirective
* const and let statements
* pass the final name of the compiler executable when compiling the compiler to avoid
moving the executable afterwards, this allows proper stack dumps with line numnbers
on OSes with external debugging information (darwin)
* move more node tree optimizations to tcgprocinfo.OptimizeNodeTree
* patch by J. Gareth Moreton: x86: SETcc/TEST/SETcc -> SETcc/SETcc optimisation, resolves
gitlab 0039271
* tw39323 needs to turn on range check to test what it is supposed to test
Add 'treated as Error:' to compiler messages
* Avoid some wrong error messages after initial error
On x86_64-openbsd, cycling with -O3 option fails due to
a wrong warning about uninitialized zeros variable in
compilation of ogbase unit
ogbase.pas(2310,41) Warning: Local variable "zeros" does not seem to be initialized
ogbase.pas(2318,39) Error: Can't evaluate constant expression
The second message is due to the fact that simplify is not
called inside nadd unit if errorcount is non-zero.
By replacing errorcount<>0 by not codegenerror,
this message disappears.
pas2js: git ignore linux binaries
Use pascal hunk for diff output for pascal source files
* Added trgobj.remove_ai(), call it instead of code duplication.
No functional changes.
* initialize Result variable of THTTPSysHandler.WaitForRequest
+ implement support for terminating a HTTPSys web service handler that's blocking inside WaitForRequest
* move freeing of the event log to a separate, virtual method so that this can be changed depending on the needs of TCustomWebApplication.CreateEventLog (e.g. when using a TCustomWebApplication descendant together with a TDaemonApplication)
Try to avoid infinite loop for revision target on svn repo
* regenerated makefiles with the latest fpcmake from trunk
* Patch by J. Gareth "Kit" Moreton (issue
gitlab 0039343). x86 peephole
optimization of conditions which are always true or false.
Add symbol_order*.fpc files to .gitignore
* x86: ShlOp2Op optimization
* fix memory leak in TFPPooledConnectionHandler
pastojs: added TPas2jsMapper.SaveJSToStream
pastojs: added hook GetFileSrcAttr to skip generating srcmap of some files
* to avoid that -Xg causes a failure during comparing ppc3.exe and ppc386.exe on windows, during the last compiler compilation step, the
same executable name is used
pas2js: httpcompiler: fixed reading values fomr config file
* Use a register alias while handling reg deallocs in trgobj.instr_spill_register()
to be in sync with commit b96057ad.
* make ShlOp2Op optimization more fool proof
* Prevent spilling of spill-helper registers which contain the value of a
previously spilled register. These helper registers must never be spilled.
This fixes failures of the register allocator in rare corner cases.
* Additional module platform
(cherry picked from commit 664de8653dc56b13cddac2cd7024697756ae422d)
* Add linklib, add some formatting
* Updated json tests to run properly when the default code is non-UTF8.
* Explicitly specify CP1252 for registry tests which depends on this CP.
* Weak externals from DLL are nor supported on Windows.
* Disabled running of the sharemem test since fpcmemdll.dll is never built.
* Prevent a crash of the tw2423 test on some versions of Windows.
* Modified the test to run properly on non-UTF8 systems.
* Explicitly specify DefaultRTLFileSystemCodePage for the test in order
to be independent from the current system code page.
* Do not run the tzlib1 test. It is not intended for this.
+ for loop optimizations can be controller by a switch (-Oo(no)forloop)
* (modified) patch by J. Gareth Moreton: ARM/AArch64 Some short-range LDR/STR optimisations, last part of
gitlab 0038841
+ keep addresses of thread vars in registers if possible and likely an advantage
* x86: only add mm capable consts to register candidate list, this is better
than checking when they are assigned
* fix code for ARM FPA, just in case ...
* Export SetPas2JSGetFileSrcAttrCallBack
Revert "* Export SetPas2JSGetFileSrcAttrCallBack"
This reverts commit
gitlab 000053cec8809421efc739d7f2e5610fa7c966e61a.
pas2js: fixed typeinfo procvar resulttype nil
pas2js: added SetPas2JSGetFileSrcAttrCallBack
pas2js: compile httpcompiler with fpc 3.2.2
* x86: Do not replace inc/dec with add/sub 1 because this code path is
executed only for the C_Z,C_NZ,C_E,C_NE conditions, so inc/dec can be
used.
* Fixed lack of the calculation code for the strength reduction optimization.
* Make some properties public
* Allow to specify IP address
* Allow to specify address
* Fixed a typo in the condition, though it seems this code path is not used now.
* Fixed the strength reduction optimization for loops containing 'continue'.
The compiler now cycles properly with -O3 -OoSTRENGTH.
* mark temps as deallocated
(cherry picked from commit 50452e5707b1d5f8590042ed55fc5f47bce33962)
* Fixed missing assignments with the strength reduction optimization.
* x86: Fixed attributes of the LEAVE instruction - it reads EBP.
This fixes crashes with -O3s in some cases due to an incorrect peephole
optimization.
Added correction to AllocRegBetween
+ added target flags for the different WebAssembly exception modes that I'm
planning to implement
* increased size of ttargetswitchinfo.define to fit the string added in my
previous commit
* fixed compilation of ppudump
+ added usage info to the compiler help screen for the WebAssembly
target-specific exception handling modes
+ added validation to ensure no more than one WebAssembly exception support
mode is enabled
+ set the NOEXCEPTIONS mode by default for the WebAssembly targets
+ support writing the new tai_tagtype directive in the asm output
Compile with -Oodfa to get better warnings
* Reverted the accidentally committed debug code in 4a7a113a.
+ added except_native.inc include file (empty for now, but will provide RTL
support for the native wasm exceptions in the future)
x86: MOV constant optimisation
* + .gitconfig with configuration for better diffing, needs a
git config --local include.path ../.gitconfig
to be activated
* is_calljmp really means calls and jmp
* is_calljmpuncondret includes ret
* handle - more cleverly if SSE is used
pastojs: fixed compile tests
pastojs: error on linklib options
pastojs: fixed invalidate directory cache
pastojs: fixed assign external const to int
* fix alignment issues with - when using SSE
+ started the wasmbase unit (similar to elfbase and omfbase)
+ implemented TWasmObjData.sectionname
+ write the wasm binary module header and version
* fixed TWasmObjData.sectionname_gas
+ enabled the WASM32_INTERNALASM define when compiling with the lazarus project file
+ write some debug info to the console in the wasm obj writer
+ added TWasmObjSection class
+ introduced TWasmObjSection.IsCode and .IsData
+ count the number of segments and assign segment indices to the wasm sections
+ start writing the wasm sections. The DataCount section is the first section to be implemented.
* simplify real expressions involving unary minus
+ test
+ create the data section and the first entry of the import section
+ add the __stack_pointer global import
+ added the indirect function table to the imports section
+ debug print the obj symbols to the console
* fixed crash when writing a binary wasm module with a .bss section
+ print more symbol properties to the console
+ added the TWasmRelocationType enum
+ added the TWasmLinkingSubsectionType enum
+ more unary minus optimizations
* test extended
pas2js: nil typeinfo Module, Attr and params
+ more unary minus optimizations
* test extended
Expanding division to 64-bit and tests
pas2js: fixed rtl.tTypeMemberProperty
* some fixes for expectloc
+ added function name to functype hashlist in the wasm objdata class
pastojs: clone multi dim static array
+ apply unary minus optimizations also to /
* test extended
o manually applied merge request 46 by J. Gareth "Kit" Moreton:
+ x86_64: XMM-based block move optimisation
* set expectloc properly for x87 on x86
* fixed the writing of the external functions in the import table
* store the funcname to functype index in a TFPHashObjectList, instead of
TFPHashList with the index converted to pointer, which was a hack and didn't
allow adding more fields, which we would need to do for e.g. import_module
and import_name
+ added method TWasmObjData.AddOrCreateObjSymbolExtraData
+ handle the import_module and import_name directives in the internal
assembler and store them as obj symbol extra data
+ handle tai_local in the internal asm writer and store the locals in the
wasm obj extra symbol data object
obcpas: fix categories implementing protocols
Allocate the ImplementedInterfaces array for them and save to/load from ppu
Solves
gitlab 0039375
+ generate and write the functions table in the wasm binary module,
produced by the internal obj writer
+ write the code section (still, without the actual function code, but with
the correct locals)
* replaced TWasmObjData(Data) with FData in TWasmObjOutput.writeData
+ write the actual function code in the code section
+ partial implementation of emitting RELOC_FUNCTION_INDEX_LEB relocations
+ add relocation objects for the RELOC_FUNCTION_INDEX_LEB relocation to
the relocation list. They are not written to the object file, yet.
+ added enums for the wasm symbol type and constnats for the bitflags
+ write the linking section (empty for now)
Revert " * patch by J. Gareth Moreton: Nothing (NOP) node optimisation, resolves
gitlab 0038194"
This reverts commit c2ff85ac5ba307d7cc10cae7ee17d479c83c9119.
That change duplicates the logic of tstatementnode.simplify in
tblocknode.simpify in a very complex way, and in case of issue
gitlab 0039336 results
in adding a non-tstatementnode in a tblocknode, which is illegal. If
tstatementnode.simplify cannot catch all cases, then that one should
preferably be improved instead (and if not possible, we can look into
catching those edge cases in tblocknode.simplify rather than duplicating
everything).
Resolves issue
gitlab 0039336
* Aarch64: taicpu.spilling_get_operation_type with new instructions extended
+ write the externals to the symbol table
+ write the non-external functions to the symbol table as well
+ also write the data symbols to the symbol table
+ write the segment info (names and alignment) to the linking custom section
Add initial Description templates
this adds a description template for issues as well as for
merge requests that target the compiler
+ write the relocation tables for the code and data sections (empty for now)
+ fully implemented the RELOC_FUNCTION_INDEX_LEB relocations
+ introduced TObjData.SymbolPairDefine, to allow custom handling of symbol
pairs in the internal object writer
+ support tai_symbolpair in the wasm internal obj writer, so that the
PASCALMAIN alias of main can be created
+ support generating R_WASM_TABLE_INDEX_I32 relocations
+ support writing RELOC_FUNCTION_INDEX_LEB relocations to non-external functions
+ support writing imports from a different module in the wasm binary object writer
+ support writing R_WASM_MEMORY_ADDR_I32 relocations
+ add threadvar symbols to the symbol table
* generate an internal error if an attempt is made to emit a
R_WASM_MEMORY_ADDR_LEB relocation, that points to code, instead of
data
+ re-added accidently removed internal error
* made the constructor of TObjSymbol virtual, so it can be overriden
* fixed bug in the code, generated for the RELOC_FUNCTION_INDEX_LEB
relocation
+ fixed the addend in the relocations that point to data
Bug fix to XMM block move optimisation
Add two more templates to show the possibilities
Changed get_volatile_registers_mm to not return XMM16 to XMM31 when not under AVX512
- removed unused constructor of tai_impexp, as well as unused member variable extmodule
* tai_impexp renamed tai_export_name
* ait_importexport renamed ait_export_name
* simplified and integrated the WriteImportExport procedure into the case
statement. Use similar statements to write the asm code for the export_name,
like we use for the import_name directive.
+ generate the export section in the wasm internal obj writer
- removed debug writelns from the wasm internal object writer
+ generate funcdef for external procs, that don't have an import dll
+ enable the WebAssembly internal assembler and object writer
* use objsym.size to determine the code size of the function (instead of
writing until the end of the section) in the wasm internal object writer.
This removes the extra padding of 'unreachable' instructions at the end of
each function (which are zeroes, added for alignment - they are harmless,
but are unnecessary and cause a slight increase of the size of the
resulting binaries), after the final 'return' instruction of the function.
* use an incrementing counter variable to determine the numbers for the code
and data section, so they can be used in the relocation section, without
hardcoding them as constants. This will automatically adjust the numbers
when we add more sections, or when we make writing some of the sections
optional.
* omit writing the export section if there are no exported functions from
the module. This reduces object file size slightly for modules without
exports.
+ support the 'try' instruction in the wasm internal assembler
+ implemented the 'delegate' and the 'rethrow' instructions in the wasm internal assembler
* emit a tai_tagtype for __FPC_exception instead of hardcoding the asm output
directly when wasm native exceptions are enabled
* introduced the tai_globaltype asm directive, use that to declare the stack
pointer global symbol
+ introduced the AT_WASM_GLOBAL asm symbol type
* track wasm global types in the internal object writer
+ proper support for WASM globals in the internal object writer - emit
relocations, generate a Global section, if they are declared in the object
file, etc.
* combined TWasmObjSymbol.ImportIndex and .FuncIndex into just .FuncIndex,
because there's no point in having them separate, and the name ImportIndex
is misleading, as there are multiple import indices (they are separate for
functions, globals, tables, memories, etc.)
* the data section is now only written by the internal wasm object writer, when
there are data segments in the module
+ also support immutable wasm globals in the wasm assembler writer (both internal and external)
+ introduced the FPC_EXCEPTION_TAG_SYM string constant
+ introduced the AT_WASM_EXCEPTION_TAG asm symbol type, use that for specifying
the parameter to the 'throw' and 'catch' instructions
+ added support for exception tags and for the 'throw' and 'catch' instructions
in the wasm internal assembler and object writer
* fill exceptstate variables and update flowcontrol in
twasmexceptionstatehandler_nativeexceptions.new_exception
- removed the TODO comment, generated in the asm output by
twasmexceptionstatehandler_nativeexceptions.free_exception
+ support in_wasm32_throw_fpcexception in twasminlinenode.pass_typecheck_cpu
* emit a weak symbol for the exception tag, since that's what the LLVM linker
wants to treat them as shared between .o files
* updated ppudump with the new asm symbol types and binding types
* fixes to the try..finally code generation in wasm native exceptions mode
+ RTL support for raising exceptions in native wasm exceptions mode
* don't include except.inc if wasm32 native exception is turned on, instead
replace it with except_native.inc
- get rid of fpc_PushExceptAddr and fpc_PopAddrStack entirely, when compiling in
wasm native exceptions mode - these helper routines aren't necessary in this
mode
* longjmp in fpc_reraise changed to a throw instruction intrinsic in wasm native exceptions mode
* decblock moved after end_try, instead of after catch
* Parse cookies also when setting variable based on name
+ initial implementation of try..except..end in wasm native exceptions mode.
The 'on' statements are not implemented yet.
+ override the 'on' node for WebAssembly
* x86_64-linux doesn't need .data.rel.ro either
+ implemented the 'on' node for WebAssembly in native exceptions mode
+ generate functype directives for all functions in all used units, regardless
of whether they have paraloc info created. This fixes linking of WebAssembly
programs that declare their own classes, because that causes the compiler to
generate a VMT, containing references to virtual methods, and these don't
necessarily have paraloc info (if they're not called from within the program)
* the fpc_Catches result test code was inverted
+ implemented sqrt via the f32.sqrt and f64.sqrt instructions
* fixed opcode generation for the f32.const in the WebAssembly internal asm
+ implemented abs(real) for WebAssembly via the f32.abs and f64.abs instructions
+ implemented int(real) for WebAssembly via the f32.trunc and f64.trunc instructions
* fixed output of 32-bit floating point constants in the llvm-mc asm output
+ implemented trunc(real) for WebAssembly via the i64.trunc_f32_s and i64.trunc_f64_s instructions
+ implemented round(real) for WebAssembly via the fXX.nearest and i64.trunc_fXX_s instructions
x86_64: Fix to tw8573 overflow bug under -Cg option
* properly search in GetMMRegisterBetween and GetIntRegisterBetween for usable
volatile registers (low() .. high(
and not only the included ones)
* fixed code generation for 'boolean64 and/or boolean64' for WebAssembly
* fixed WebAssembly code generation for 'if boolean64 then ... else ...'
* int64/boolean64 fix in twasmtypeconvnode.second_int_to_bool
* fixed 'not(boolean64)' for WebAssembly
* fixed second_int_to_bool for cbool types for WebAssembly
* another WebAssembly cbool fix in twasmtypeconvnode.second_int_to_bool
* fixed WebAssembly cbool support for OP_NOT
* bug fix in test taddbool.pp - it was testing longbool conversion to boolean
twice, and not testing wordbool conversion to boolean at all
* fixed WebAssembly code generation for not(cbool64)
+ implemented GetDate, GetTime and WeekDay in the WASI dos unit. They return
UTC time (I don't know how to obtain the local time zone from within WASI).
* modified (cosmetics) patch by Rika: replace DJB2 with MurmurHash3, resolves
gitlab 0039377
+ Aarch64: AndCmpB.E/NE2Tbnz/Tbz optimization
+ Aarch64: Ldr
Mov2Ldr optimization
x86: Missed logic with CMP and MOV optimisations
+ added the memory.copy and memory.fill WebAssembly instructions
+ added inline numbers for a memory.copy and a memory.fill intrinsic
+ implemented FillChar for WebAssembly via the memory.fill instruction
+ implemented move() for WebAssembly via the memory.copy instruction
* fixed OS_S8 to OS_16 conversion for WebAssembly. This fixes test/cg/tcnvint6
+ enabled compilation of the fpintres unit for the WASI target and enabled tf_has_winlike_resources for the target
+ added system_wasm32_embedded to systems_embedded
+ use the aasmdef unit in wasm32/cpunode.pas
- don't set casmdata in wasm32/aasmcpu.pas, so that the aasmdef unit can override it
* always return error in SysUtils.FindFirst and .FindNext on the WASI platform,
in order to prevent infinite loops in tests
* fixed WebAssembly method pointer assignment
+ workaround for WebAssembly treating the stack parameter of the store and load
instructions as unsigned. This caused an 'out of bounds memory access' trap
when accessing arrays with negative offset index, e.g. in test/cg/tvec.pp
+ enabled compilation of unit heaptrc for the WASI target
+ added WASI .o files for the tests for linking with C
+ implemented the <= operator for smallsets for WebAssembly
Fix bitpacking 62/63 bit fields on 64 bit targets
As reported on the lazarus forum:
* https://forum.lazarus.freepascal.org/index.php?topic=56341.new
* https://forum.lazarus.freepascal.org/index.php/topic,56339.msg418608/topicseen.html
Also optimized nextpowerof2 in the compiler
+ support equality comparison of smallsets on the Z80
+ support the <= and >= operators for smallsets on the Z80
* define DEBUG_AOPTCPU if EXTDEBUG is used
Fixed bug where hp1 object was used after being freed
Typed constants: no internalerror on failure
Don't check whether the expression queue is empty in the destructor in case
there was an error. Also improved error messages (constant expression instead
of variable expression expected).
Resolves
gitlab 0039393
+ x86: MovOp2Op optimization
+ introduced WebAssembly branchful exceptions
+ increase string type to avoid const string truncation
+ fixed compilation of ppudump
- removed msg2inc. Stupid git added it without my consent.
AArch64 popt: don't replace registers with X/WZR
Most arithmetic/logica instructions don't support X/WZR as operand (since
you should use movk with the calculated constant in that case)
Resolves
gitlab 0039372
Avoid range check error in TCpuAsmOptimizer.OptPostAnd method
* bail out early in MatchInstruction
* cloned the WebAssembly native exceptions code generation and rtl support into
the branchful exceptions (which will be modified later, but we're using this
as their starting point, because we can get a snapshot built, without compiler
internal errors)
* instead of using the 'throw' intrinsic, set a boolean flag, in the branchful
exceptions support code
- don't generate any WebAssembly native exception handling instructions, nor
relocations, when compiling in branchful exceptions mode. This produces a
currently not working, but accepted by wasmtime binary (otherwise, it
complains it doesn't support exceptions and refuses to try to run it).
+ introduced raiseBr, similar to exitBr, but will point to the current
innermost exception handler, if there is such a handler in the current
procedure, otherwise it will be the same as exitBr.
+ added comment that states that raiseBr is only used in branchful exceptions mode
+ insert exception flag check and branch after each function call, when
compiling in WebAssembly branchful exceptions mode
+ implemented try..finally in branchful exceptions mode
+ initial implementation of try..except in branchful exceptions mode
+ implemented the 'on' node code generation (try except 'on' ...) for the
branchful exceptions mode
+ call g_checkexceptions after calls to fpc_reraise and fpc_raise_nested in
branchful exceptions mode
- removed commented out code from the WASI startup code
+ added unhandled exception handling code for the branchful exceptions mode
* x86: Refactored CMOV optimisations and permitted the use of constants in some cases.
+ return a small, fake backtrace for WebAssembly, so that in case of a runtime
error, the message 'Runtime error XXX at $EEEEEEEE' appears.
* use 'br_if' instead of 'if br end_if' sequence in the code, generated by
thlcgwasm.g_checkexceptions
+ support exception object cleanup, when 'exit', 'break' or 'continue' is used
in the except 'on' statements, in branchful WebAssembly exceptions mode
+ exception cleanup when break, continue or exit is used inside a
try .. except 'on' block, in WebAssembly native exceptions mode
Expanded MM block move to include YMM registers under AVX
+ proper exception cleanup for try except blocks that use exit, break or
continue in WebAssembly branchful exceptions mode
+ proper exception object cleanup when using break, continue or exit in try
except blocks in WebAssembly native exceptions mode
- removed duplicated assignment
* twasmexceptionstatehandler_nativeexceptions.handle_nested_exception and
twasmexceptionstatehandler_bfexceptions.handle_nested_exception should not be
called, so now they cause an internal error
+ default exception handling in WebAssembly native exceptions mode
* thlcgwasm.g_checkexceptions renamed .g_maybe_checkforexceptions, added also as
an empty virtual method in thlcgobj and modified the WebAssembly
implementation, so that it can be called from any exceptions mode (so it
emits no code in exception modes that don't require it, instead of generating
an internal error). This will allow .g_maybe_checkforexceptions to be called
from the generic parts of the code generator, after calls to systemprocs that
could raise an exceptions.
+ added call to g_maybe_checkforexceptions after generating call to fpc_iocheck
+ implemented GetMsCount in the DOS unit for WASI
* replace MT random generator by Xoshiro128**, resolves
gitlab 0038237
+ implemented SysUtils.GetTickCount64 for WASI
+ implemented SysUtils.Sleep for WASI
+ implemented SysUtils.GetEnvironmentVariable, GetEnvironmentVariableCount and
GetEnvironmentString for WASI
* preopened dirs structure in the system unit modified to be a pointer to an
array of records
* partially applied patch by J. Gareth "Kit" Moreton to inline parts of cclasses, resolves
gitlab 0039344
* use source register as second register in VCVTSD2SS and VCVTSS2SD, this should break
dependency chains better and resolves partially
gitlab 0039360
Disable utils for wasi target, because paszlib cannot be compiled due to use of goto labels
* Optimized evaluation of the condition.
* Strength reduction optimization: - Use a temp for complex loop start values to prevent double evaluation.
- For slow CPUs perform the optimization for all sizes of array elements.
* generate VMOVAPS for (V)Cvtss2CvtSd(V)Cvtsd2ss optimization, resolves
gitlab 0039360
+ added the current WebAssembly exceptions mode to the .ppu module flags and
perform a check to ensure all units are compiled in the same exceptions mode
as the main program
* another location to use source register as second register in VCVTSD2SS and VCVTSS2SD
to break dependency chains, hopefully final fix for
gitlab 0039360
+ support of SHA extension in the internal assembler
+ CPU units: check for SHA support
Better handling of zeroing upper parts of registers
Better handling of zeroing upper parts of registers
* preopen fd names and current dir changed to use ansistring, as well as the
parameters and result of ConvertToFdRelativePath. This will allow easier
implementation of ChDir.
xor optimisation now doesn't check to see if the REX prefix will actually be removed, as it's beneficial for speed reasons to only use the 32-bit register when zeroing the whole thing
* fixed handling of relative paths that are not directly relative to a preopened
dir in ConvertToFdRelativePath. This is a preparation for ChDir support.
o based on a patch by Rika, resolves
gitlab 0039401:
* use Base64 (62=_, 63=$) encoded FNV hash (instead of CR-32) to shorted identifiers
* renamed fpccrc to fpchash
+ test
* fix x86 compilation after my last commit
* fix also IDE building after fpccrc to fpchash renaming
+ implemented ChDir() for WASI
- removed the DebugWriteXXX functions from the WASI system unit, since console
output is now quite stable and can be used for debugging
* moved the preopened dir and current dir handling types and variables to the
implementation part of the system unit, so their implementation is not exposed
and can be changed in the future (e.g. for thread safety when WebAssembly
gets multithreading support, etc.)
* by default, DEBUG_AOPTCPU is only enabled if the compiler is compiled with -dEXTDEBUG
+ being able to define change information for xmm0
* corrected change information for SHA256RNDS2
* keep the drive string separate in the preopen and the current dir records on
the WASI platform
* replaced ['/','\'] with AllowDirectorySeparators in the WASI directory
parsing code
* replaced '/' with DirectorySeparator in the WASI directory parsing code
* another instance of ['/','\'] replaced with AllowDirectorySeparators
* use AllowDirectorySeparators, instead of checking for '/' and '\'
* use rawbytestring instead of ansistring for the WASI file name handling
+ implemented SysUtils.FileClose for WASI
+ implemented SysUtils.FileOpen for WASI
+ implemented SysUtils.FileCreate for WASI
- removed the zero constants from the implementation of SysUtils.FileOpen for WASI
+ implemented SysUtils.FileRead for WASI
* fixed WASI bug in do_read, where the result of the __wasi_fd_read syscall function was ignored
+ implemented SysUtils.FileWrite for WASI
+ implemented SysUtils.FileSeek for WASI
+ implemented SysUtils.RenameFile for WASI
- don't call ToSingleByteFileSystemEncodedFileName in SysUtils.FileOpen and
.FileCreate, because ConvertToFdRelativePath already calls it
+ implemented SysUtils.DeleteFile for WASI
+ implemented SysUtils.FileGetDate for WASI
+ implemented SysUtils.FileAge for WASI
+ implemented SysUtils.FileSetDate for WASI
+ also implemented FileSetDate(FileName) for WASI, via the __wasi_path_filestat_set_times API call
* patch by Dean Mustakino to avoid generation of debug info for generics, resolves
gitlab 0038827
+ test
* fixed off-by-one error when initializing current_drive in the WASI system unit
* fixed range check error in HasDriveLetter when path is 1 character long
+ implemented SysUtils.FileExists for WASI
* don't set InOutRes in ConvertToFdRelativePath, but return it instead. This
fixes issues in places where this function is used in a way that should not
set IOResult.
+ implemented SysUtils.DirectoryExists for WASI
+ implemented SysUtils.FileGetSymLinkTarget for WASI
* always return an error in SysUtils.FileSetAttr on WASI - this function is not supported by the WASI API
+ implemented SysUtils.FileGetAttr for WASI
+ dummy implementation of dos.SetFAttr for WASI, based on the Unix version
+ implemented DOS.GetFAttr for WASI
+ added platform-specific helper function dos.DTToWasiDate, similar to
DTToUnixDate on Unix
+ implemented dos.SetFTime for WASI
* fix for the WASI datetime to epoch conversion
* add no internal flag when folding constants in taddnode.simplify, resolves
gitlab 0039308
+ implemented SysUtils.GetLocalTime for WASI
* fixed padding in the filerec to match textrec even on platforms where
sizeof(pointer)<>sizeof(codepointer), like in the medium and compact i8086
memory models
+ added test for SysUtils.GetLocalTime
+ init the ansistring upper and lower case tables in the WASI SysUtils unit initialization
+ pass 64-bit structures by address in WebAssembly for compatibility with LLVM's C ABI
* Removed unused tlocation.registers[].
* itcpugas unit for Z80 providing gas_regname to fix compilation with -dDEBUG_NODE_XML
* C ABI fixes for the passing of records in WebAssembly
* fixed formatting in defToWasmBasic
+ added support for the handling of singleton record and array types in
defToWasmBasic
* fixed passing of singleton record parameters, containing a float in WebAssembly
+ support cdecl and stdcall on the WebAssembly target. They are essentially the
same, the only difference is that cdecl creates an unmangled alias
* replaced the 'if br end_if' sequence with the 'br_if' instruction, when
generating WebAssembly code for try..finally blocks (in all exception modes)
+ added a wrapper function around __wasi_path_readlink that calls it iteratively
with doubling buffer sizes, starting with 64 bytes, until it reaches 16384
bytes, and reads the link into a rawbytestring. Use that function in all
places in the WASI rtl that need to read a symlink.
+ extend assembler optimization MovxMov2Mov to MovxOp2Op
* merge request 75 by J. Gareth "Kit" Moreton manually applied:
This merge request makes a number of improvements to the DeepMOVOpt method and supporting functions:
* ReplaceRegisterInInstruction now replaces registers in references that are written to
(since the registers themselves won't change)
* RegModifiedByInstruction will no longer return True for a register that appears in a reference
that's written to (for the same reason as above) - special operations like MOVSS
(the 0-operand version) aren't affected.
* DeepMOVOpt returning True will now always set the Result of OptPass1MOV to True even though p
wasn't directly modified, since this often caused missed optimisations.
* Some of the speed-ups in the patch from
gitlab 0032916 have also been applied in order to make
the general DeepMOVOpt run faster, notably it tries to avoid calling UpdateUsedRegs where possible.
* manually merged merge request 69 by J. Gareth "Kit" Moreton:
x86: CMP/MOV refactoring and expansion
This merge request refactors the SwapMovCmp routine, and calls to it, to be more self-contained,
having the preliminary checks built-in to ensure that moving the MOV instruction is
actually a sound idea, while also making it more general-purpose so it can handle instructions
that are not MOV operations. This feature is primarily for future expansion,
but also cleans up the code for the x86 peephole optimizer.
* patch by Sergey Larin: Reducing and aligning the size of TAnsiRec, TUnicodeRec for CPU64, resolves
gitlab 0038018:
For CPU64, the size of record TAnsiRec and TUnicodeRec is 16 bytes instead of 24.
Which is very good also because of the alignment. when allocating memory, the address
of the first character of the string will be aligned on the 16-byte boundary.
At the same time, the useless Dummy field, which is needed in CPU64 for exactly alignment, has been removed.
For CPU32 (and CPU16), the record size has not changed, so procedures such as
fpc_AnsiStr_Decr_Ref, implemented in assembler (see i386, arm), remained working correctly.
* tests adapted
* x86-64: do not jump in inc/declocked to return but return directly
fcl-js: fixed stackoverflow when freeing long binary list
Disable utils/fpcmkcfg package for wasi OS as it requires packages/fpmkunit package
+ support reading of .p2align with op code and/or max. bytes in the gas assembler reader
+ test
Disable utils packages for wasi OS if required package is not supported or if labels are used (which is not supported for wasm32 target CPU)
* ConvertToFdRelativePath removed from the interface part of the WASI system
unit (to avoid cluttering the WASI system unit interface with platform
dependent routines) and added to a new unit, called wasiutil
* added the fpc_wasi_path_readlink_ansistring helper function to unit wasiutil
* the FNMatch private helper function moved from unit DOS to unit WasiUtil, and
changed to have rawbytestring parameters, so it can be used from SysUtils as
well.
- removed unused, commented out fields from the RtlInfoType record
- removed the RtlInfoType record, because it is only used only once in a local
variable. Use an anonymous record instead.
* moved the FindFirst/FindNext/FindClose code from unit DOS to WasiUtil, using
RawByteString. This will allow to reuse the same implementation in SysUtils.
+ implemented FindFirst, FindNext and FindClose in SysUtils for the WASI platform
+ implemented DOS.FSearch for WASI
- removed TWasiSearchRec.Mode, because it was unused
* when compiling with the main branch compiler, p2align with 3 parameters can be used now
+ introduced the use of asm labels for WebAssembly. Resolve them in
tcpuprocinfo.postprocess_code. Use them when generating code for the
'continue' label jumps.
* the libc unit might be deprecated, but it's no reason for wrong declarations, in this case values that should be declared as octal but were declared as decimal with the same literal text
+ use WebAssembly asm labels for the code generation of 'break' statements as well
* fixed some more warnings
* use WebAssembly asm labels for generating code for the 'exit' statement
pastojs: added test linklib
* leave unresolved branches in the asm output, when the compiler is compiled with -dEXTDEBUG
* if a label cannot be associated with the previous block instruction, try
matching it with the next instruction
pastojs: test unit linklib
+ wrap block nodes with exit in a_block..a_end_block instructions. This fixes
'exit' in inlined procedures on the WebAssembly target.
pastojs: library: create and call main
fcl-pasrc: error if exports section inside inside procedure
* fixed range check error in the DOS unit
* moved the 'end_block' WebAssembly instruction before the 'exit' label right
before the procedure finalization code. This fixes compilation errors in
procedures with implicit finalization code (e.g. for ansistring local vars,
etc).
* match the label to the wider block, if it is adjacent to both the brevious
and the next instruction
internalerror if the section we're about to keep has no exesection assigned
pastojs: library: export name
fcl-js: fixed TJSWriter.WriteExportStatement spacing
* use WebAssembly asm labels for the raise branch instruction in branchful
exceptions mode
fcl-passrc: test export unitname.name
pastojs: library: export unitname.name as alias
* pass a randseed which is known to be problematic
* check paramstr argument for negative values, resolves
gitlab 0039410
* extended test to cover last commit
pastojs: fixed clear com interface reference in class field on destroy
Fix compilation of nds and wii OS rtl
+ added sanity check when resolving labels to ensure we don't get any jumps with
negative nesting depth
pastojs: library: export var
* moved the default procedure CurrRaiseLabel to the end of the procedure, not
at the exit label. This fixes problems when using units with finalization
code that contain classes with class destructors in branchful WebAssembly
exceptions mode.
* Add test for case of pointer and size
Bug fix to MovMov2Mov 6 optimisation exposed by 4012c3dbd47f661805bb7a831c6c687807ede3b4 (and miscellaneous code refactors)
* WebAssembly code generation for 'case' nodes changed to use labels
- removed thlcgwasm.incblock, .decblock and br_blocks, as branching is now done
entirely with labels
+ TDFABuilder.redodfainfo
pastojs: library: forbid unit exports
* keep track of the block stack, when resolving labels and check whether the
blocks match (i.e. block..end_block, if..end_if, loop..end_loop, try..end_try)
+ added 'else' tracking for the if..end_if blocks
* TX86AsmOptimizer.OptPass1MOVXX takes care of volatility
* improved TX86AsmOptimizer.OptPass1MOVXX
pastojs: fixed class property getter static
+ print full file path if -vb is passed even if no line number is known, resolves
gitlab 0039419
Improved ADD and SUB optimisations for LEA instructions
* Better coalescing with real registers. This improves setting of parameters
in registers.
* Removed superfluous condition in trgobj.enable_moves().
* Fixed flags checking in trgobj.adjacent_ok().
* Added assembler comments about coalescing when DEBUG_SPILLCOALESCE is defined.
Fixed some range check problems
* correctly read the region label in $region directives, resolves
gitlab 0039395
* Restore previous default behaviour for OnDirective, put under option
Fixed OptPass2Lea not honouring symbols
+ write code and data size for Mach-O files if possible
* cleanup of 2.7.0 defines
fcl-res: Mach-O fat binary support
Only for TMachOResourceReader. We always compile/generate a single architecture
binary, and then the programmer can combine those with lipo. So the writer does
not need fat binary support for common usage.
Resolves
gitlab 0039124
+ fold real constants c1,c2 for v+c1+c2 or c1+(c2+v) (+ being either + or *) as well if fastmath is enabled
Fixed variant discriminator types
Record variant discriminators: check types
* AArch64: TCpuAsmOptimizer.RegLoadedWithNewValue: check if p.ops=0
* Corrected calculation of spilling efficiency.
optcse: fix wrong typecast
* Write interference graphs to the unit output directory.
* Removed unused and confusing tnode.parent and tnode.concattolist().
* Removed obsolete OLDREGVARS ifdefs.
* Corrected setting of the flag.
* tcgaarch64.g_concatcopy calls tcgaarch64.g_concatcopy_move only if the current subroutine has pi_do_call set
* fixed copy loop in tcgaarch64.g_concatcopy if ldp/stp is used: fixed increment calculation and fixed tail length calculation
fpdoc: gitignore linux binary
fcl-passrc: parse goto statement
fcl-passrc: parse if then goto
* improved heurisics when thread var addresses or float constants are put in registers
* corrected accidently made changs in 01a449c8, resolves
gitlab 0039424
* Fix cvar;export; parsing
* fixed the ptccrt key codes for the ctrl+numpad keys
+ ARM: started on vfpv5 support
+ fp-armv8 fpu type added
* tcgsizep2size now supports all tcgsize values
* Fixed node coalescing with real registers.
+ be able to add single cpu capabilites by the command line
+ AArch64: SHA2 capability
+ more Aarch64 cpu capability flags added
* fix (V)Cvtss2CvtSd(V)Cvtsd2ss2* optmizations for non-avx code, resolves
gitlab 0039416
* my last commit hopefully fixed
+ Aarch64: read register sets with ranges properly
+ tests
* when converting a*a into sqr(a), set the result type correctly
* removefloatupcasts takes care of cs_excessprecision, resolves
gitlab 0039012
Explicitly disable overflow for offset propagation optimization
* patch by Rika to pass some strings by reference, resolves
gitlab 0039338
* patch by Don Siders: Fixes spelling, grammar errors in source and compiler messages, resolves
gitlab 0039434
llvm: version 12.0 support
Add some delay and a maximum attempt number in GenerateTempDir to avoid getting oversized execution log files
x86: new optimisation to change add/sub 128,(dest) to sub/add -128,(dest) to reduce binary size
Add -WP option so that IDF version can be passed in - stored in globals.idf_version. The version is checked in t_freertos.pas and for esp-idf version 4.3.x an extra link file is added, also running ldgen.py is skipped as that seems unused.
* inputfilepath might not be empty
+ draft for esp-idf version specific rtl unit which contains the necessery linklib statements
* Objects can also be abstract in FPC
* correct idf version check
* "Class of" allowed for fields
* better code and data size info for FreeRTOS
The linklib list for esp-idf v4.2 is also needed for v4.3
Place IDF related files in executable output folder.
* Test for po_arrayrangeexpr
Remove unused $OUTPUT substtution and empty check of outputexedir.
* Add missing definitions
- Bug fix to new ADD/SUB optimisation where conditions are concerned
- Register allocation fixes for overflow checks
Bug fixes to magic division and vectorcall code that trigger -CriotR checks
Added two new overflow tests
* cleanup of VER3_0 defines
Converted tabs to spaces in toverflow.inc for consistency
pastojs: fixed call type helper on type helper read from pcu
* Export statement allows index and name
* Test for po_keepclassforward
+ Aaarch64: support adr instructions with local labels in the assembler reader
+ throw an error if an illegal instruction extension is passed as command line option
+ more AArch64 extensions
+ initial files for intrinsics support on AArch64
* Fixed build with NO_THREADING on Windows.
* compile fpc with -Cg on powerpc64-linux
* x86-64 can handle overflows in 64 bit multiplications directly, part of resolving
gitlab 0039450
Use filter instead of findstring make function when a whole word needs to match
Regenerated fpcmake.inc after previous commit: Use filter instead of findstring make function when a whole word needs to match
All Makefile's regenerated
Avoid having uninitialized UseBinutilsPrefix local variable in GetDefaultLibGCCDir function
Commit revision.inc change after 7d1b7eda0e
* fix conditional statement as pointed out by Sergey Larin
* last commit was not correct, fixed
FreeBSD CSU fixes
* Assembler blocks in non-pure assembler functions must always declare all
changed registers
* argc is read as *(long*) in C -> changed plongint to pptrint
* fixed ident section
Keep esp32 and esp8266 version specific tweaks separate.
Extract linker script generation as separate method. Check if esp linker scripts can be found in library paths, if not then generate scritps.
* Added Tmoveins.id to be used for sorting and searching in Tmovelist, to
produce the consistent order of elements.
This fixes occasional differences in the register allocation caused by
the address space randomization. When ASLR is in effect, the previous
approach to sort elements by their memory addresses can't guarantee the
consistent elements order for each compilation of the same source code.
* Use longint for Tmoveins.id instead of word to prevent overflow in extreme cases.
Add output path to kconfig source file location parameters.
Always call DoExec to generate linker scripts. Even if cs_link_nolink is set, the ldgen scipt needs to be called in the generated ppas script.
Change declaration of DynLinkStr local variable of MakeExecutable method to ansitring to avoid short string overflows
Fixes to ADD/SUB 128 optimisation that didn't check flags properly, and also handling ADC/SBB properly
* typescript parsing & conversion, initial commit
+ - can be used to remove options from a cpu capability switch
Fixed Unreachable code warning when building on a 32-bit platform with DEBUG_NODE_XML
* fixes excluding of cpu capabilities
Add gdb4fpc.ini, generated by gppcCPUSUFFIX utility and utils/fpcm/fpcmake to .gitignore list
New MovxMovxOp2OpMovx optimisation
* cwstring: Added ICU versions for new versions of Android.
+ add type helpers for the remaining Boolean types (QWordBool and Boolean{8,16,32,64})
* generate no exit code at all on x86-64 if the subroutine is compiled with po_noreturn
Bolder OptPass2Movx optimisations, including a simplification fix
New Movz ###,%ecx, shift/rotate %cl,... optimisation
* compilation of x86_64-win64 fixed
+ add a test for converting a 64-bit Boolean (either QWordBool or Boolean64) to a 32-bit signed integer (this problematic case was discovered after e65b822a on PowerPC
Adding aaarch64-embedded target
This adds support for aarch64-embedded, specifically for the Raspberry Pi 3.
Uses UART0 at 115200 baud 8N1 for console IO.
Also add short format version of build unit BUnit.pp to ignore list
MovZX->MovSX optimisation
Improved handling of signed sequences in OptPass2Movx
* TypeScript Improvements, 97% of DefinitelyTyped declarations now parsed
Massive overhaul to OptPass2Movx to favour operand shrinkage
New MovxAndTest2Test optimisation to mirror the regular MovAndTest2Test optimisation
* comment corrected
- option -date=iso is not needed when retrieving the hash
Added missing MOVSXD check to PostPeepHoleOptsCpu
* files moved as strutils is now in rtl-objpas
+ store references to global variables in registers if benefical (currrently used for aarch64 only)
* Increased the bounds of TBooleanArray to prevent a range check error while linking Lazarus.
* Prevent a range check error in case of big unsigned values.
* Fixed random AVs when targeting the AVX FPU.
x86: New TEST optimisations
* updated ptcpas and ptcgraph to the latest 0.99.16 release candidate
+ enabled compilation of the package ptc for macOS
+ enabled compilation of unit ptcgraph for macOS
Safety checks on TEST removals and better FLAG tracking
* fix m68k IE after e9acd759, patch by Yuriy Sydorov
New optimisation that merges small constants written to the stack
Graph package fixes
Fix aarch64-freebsd compilation failure
by restricting graph unit to i8086/i386/x86_64 CPUs.
Remove unneeded i386-linux special case.
* ptcpas update: support the F13..F35 function keys on platforms that recognize them
Fixed bug in new TEST optimisation where a FLAGS check always returned "in use"
* make tgobj.pas less verbose in extdebug mode, use separate define DEBUG_FREETEMP for the really
verbose stuff
AmigaOS4, MorphOS: added missing RemBob macro
LLVM: add Read/WritePort* implementations
Fixes Unix graph compilation on x86 with LLVM
Re-enable compilation of graph unit for aarch64-win64
Removed incorrect logic in TEST optimisation
+ in_min/max_single/double support for aarch64
* ARMv7A / A64: Constant writes to memory merged to larger forms where possible
+ in_min/max_dword/longint support for aarch64
* Publish handler resulttype, add OnContextExecute
* Slightly better identifier position
* RPC Client code generator (also in pas2js)
* Add RPCMethodName property
* Fix registry search for method name
* ptcpas keyboard handling improvements for macOS and X11
* Fix from Henrique Werlang, use safename when writing pascal code (pas2js issue 39196)
* Patch from Henrique Werlan, correctly fetch RTTI info for external classes (pas2js issue 38943)
* Create API description as Pascal
* compilation with i386 fixed
Overflow bug fixes to MovZX/SX optimisations when CMP instructions are encountered.
Fixed MovxOp2Op failing on i386 due to lack of register check
* TX86AsmOptimizer.OptPass1MOVXX should search only over other instructions if it works with registers only
* patch by Rika: improve ctuils.newalign/align, part of
gitlab 0039496
x86: New double CMP optimisation to remove a branch
i386: Correction to GetIntRegisterBetween to ensure we only get 8-bit registers that we can actually encode
x86: Additions to OptPass2Movx to better synergise with new CMP optimisation under -O2
* x86_64 Win64 callback implementation: fix building the argument array if the result is passed as a parameter
* TMethodImplementation.HandleCallback: fix building the argument array if the result is passed in a parameter
+ add Handle property to access the TypeInfo pointer of the TRttiType
* move initialization of TValue to a separate method to avoid duplicate implementations
+ add Rtti types for static and dynamic arrays
+ added tests
+ add TValue.FromArray to create a TValue type for a static or dynamic array from an array of TValues
+ added test
* i386 callback implementation: only skip the result argument if it was detected as one from the parameters
* i386 invoke implementation: check the correct argument in the second pass
Refactoring of OptPass2Movx to remove goto
Fixed bug in MovxMovx2Movx optimisation that would specify a 64-bit destination instead of 32-bit one
* rtl-console: always compile Amiga KVM units in OBJFPC mode. This makes it easier to compile these units outside of this package
* rtl-console: slight refactor of how Amiga SysUpdateScreen() addresses the videobuf. this results in slightly more optimal code with less complex addressing, which helps low-end processors
* rtl-console: on Amiga, remove the initial testing of the buffer for changes. it just slowed things down with frequent partial updates, especially on low-end processors with limited or no data cache
* rtl-console: on Amiga added a custom screen update call, to do partial screen updates. doing a full update can be very slow on low-end systems (checking the entire screen buffer every time), so software tuned for these can now request partial updates, when the updated already is already known
* TObject.InitInstance got very big so inlining has no advantage anymore, resolves
gitlab 0039494
* patch by Rika: another improvement of cutils.newalignment, part of
gitlab 0039496
Procedure-saved registers are now recorded for peephole optimizers to use
JccAdd2SetccAdd modified to make use of GetIntRegisterBetween
* rtl-console: generalized the partial screen update feature which was added to Amiga. the function was renamed to UpdateScreenArea(). it's still an empty call on other platforms, that falls back to UpdateScreen() but the infrastructure is now there to support it.
* rtl-console: fix ; in the previous commit
* libffi: fix abi declarations for x86_64
rtl/osheap: fixed a dumb reversed condition in osheap/SysAllocMem()
* use an anonymous symbol for the record operator table as its typing is different for each incarnation anyway
* Amiga-likes: set some sensible heapsize defaults, for OSHeap support
rtl/amiga: add support for OSHeap, now default in legacy mode, optional define otherwise
amunits: in agraphics legacy support, use ExecFreeMem (OS call) instead of FreeMem (RTL call) to free the Bitmap which was created using ExecAllocMem
rtl-console/amicommon: set the window's UserPort to nil before closing, as recommended
amunits: added missing WA_Activate handling to the OpenWindow taglist handling legacy support code
amunits: added missing WA_Borderless handling to the OpenWindow taglist handling legacy support code
rtl-console: use videoDefaultFlags variable on Amiga for WA_Flags. disable smartrefresh in full screen, also respect the FPC_VIDEO_SIMPLEREFRESH env var
* Fix memleak and compiler hints