安全研究
CVE-2024-9264 Grafana DuckDB SQLi 到 RCE:认证后的数据库穿透
Thinking
2024-10-15
3 分钟阅读
研究档案
#漏洞分析#代码审计#Web安全
Grafana 11.0.0-11.2.1 的 SQL 查询接口允许认证用户注入 DuckDB 命令,读取任意文件,特定配置下直接 RCE。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e475412988dfbc923768ccd8c2e78cabe69247dcea90c1f7dd4632eafb37f7588ace465f5c0a7db492d23d47cb3c5d91fc047563013e6025dfeae57a80890b32446ba0b675a61eb6387a4bfeb3547d403796864833e0bacc8d4bdad89fb026e9c620caf50c5ae6f71c447d4f325f446d7baf5e7f2a2fe7fd5f2ea2ce18ee03cb12958c9e3c2227a6e4b024b33ad05c8243db772a7485323296b8f7d421c10dda916f846b8437037b27102c7abc408bf8c15a4848e981154143ebf95eb8a7b9c1ed89e1d269ab9ba1a204dd41bfe0bb52bf8bc4d59a774276fdb24bd2be08dbb1a12a31af2b46d5a49a2e14044cf1614bc42ea3ce24cbe1063bee29854b529e4b6acc8b6a8adadc8bac9a7c297ac13d2d8f5094cadaf45de256cfd9aa35802ae369e720001efa3afff1823b6f9375d05bf8d3705aae79a4fc4b0ac4543ef465d28bba653b57bf602c9b94e5d23ced7e602b29ea4282525124276f0c2963044d637ef86a5723a612d087e9d97ddad7ecf40a43d20e35fb8a4d86a62dc53224e92fb061ebd89a169560d5bb8d7c2d1b8d8a6018e218817664bd803e0a3342b3ff2e68bb5b484486076c16c54cae6fe67955f8ae65aca5090eb9653958c05742a42d690ebda98575b62ca51f520c1fe4ade9e12941ff68a1d327daa6cbdff952d2e74b277a5e9a1050731a13908c4194960fd0d1c5c739c9853a5317c366b1719763c6b13f2dd9562c9ac4533b0783ce169dead98b500998b78857bdb2c86948df45caacdb5cb45fcb61c6b4b0ddd3c294a4a92376545c93d8262f03bea2b31913cd7dcac34c0e2bbb67c83b5dae206d1befa2da7af2233552fb7d4a3c4a51b59ac99c70c552283dd556015ee29a7e5a1dd57cf6f98d6f2ea39bd75b06a99bc33c5cb0dbc0fdb29432d1b95eaae9c9147c74e6e448266d1d401e18757135c3e981101616ba480df5a172a5a069f510a23530a344cab82f38f4d74101ad629349fc69318c4987e768f99c76a8dfbac2f0eaf431dfd6e3f32fc3811dc65f287a1e2afe55215dffb987720e8fd1a7acc938e166a7a45b6cee7683ee7de46586ca9649638bbf1a7f42387ed762b058423134cdef15b1ceec3984d6d2fad9135323139a9ea01c08b62be554c7a29169401eae64347d2e8c1c987f61662c0e2acce9327536ee4c711614ce1b09297e7f7414f306819771841228185d31313873faf9878279e3d65edf757e9157450b0c98f55c7e28be760dbbbfc1b0b30fb6a0591939a65eb93950ddc50f8aaf696cbf1df532dcfd401a8618ac5abc2f19ee5ed1a5b1b90cf51af970a887ba6105b6a37a0616d518531982060a6ad81bc711a3b413014f13561cc449202d76101fe4a2a0c32ebd95c2ee3d823e880d2a4d3b2c34cb66810e91e92c6e3204beff61729463d7b65c0a3da2531c55651bfe23743f6bcec1ea96fec706df4f01a2094343a34cd28162bb009319c942e70df7dfcd4a69d177cf8f3107095457aa7ea3d52befc59aa60a6ccb3a62c93d5a038071b6e79d5d868b6b7d0714e257a0a52d81d8e814b60d1637314fd3047dd4b61466db8ab32a1fe49b938bfb40dd016d10f7b9685e7178be52193e25d119f3a2a41397ba13090b41424df27d83f5d364f93b34980a55c27a0ff59cb59bc4116d254b231ea51e2c4d4014489ffbe998dfa8024ccf42bcb1ee72e9e4f18fcffed0adefbd779e8dcc8b14586c18c6d4dac3e3aa99e68330f236f1c176c3056d105521be8980f1a77defb39086ca17cc1985446ad47c64473ec56a6a966cd67155f4bc4e78110b3634a521b7d55688faf0c326ef34d29177b6ab9a4cd04602c6469941ed92d09e75eb2b30402574eaf7387cfcc529e853d28c19ac0926c15ae6f9d9f98c26379aa8b09e31a1ebbc96243cf23bd4e491ea5523c0b9f03ab7ec3047a709e732aa39ec0b313c4c416151ae5e8daeda29b629579982e5a999b056e8b51ff4787063956fa9b9c2bcd4b2f4a4d353386a5883112082909324c6f99c915566f54ccd39caf70ca341466c45e3deb841faf45db277254d60500141c1d3e0c689deed53ec74fb6b832361f494f5b6982defb2ec95eca4737b451beaef50a50f35cddca2722495363a56f6e4ba730ed1f68ca246cac72d2e1fa77d39438552614958618e59effeda28d04e8fe5c3a046428e434f66b165b3fdb44b781885891c40f7ca8d2a493ef47e82ac2f9fdaf2663a7d6e8e706036d0fc11ef5d0647425773b6c90fe6320f1f32facbe2b8c78285a6a5fa709b5ba74a3529231efb6e02cbe5dc6b42318322d4383c9657b8fa4f26dd888fa506bb9a3c1e3390b35e95fead4918d14f8bcb707d22a440f453bcad168f5945f47316843d7ae80afc223c68368cd7f9384c557c76ce660050e9e73fe9a7a7c4c9cd2c639fa5c5a7e3c7b8c33ec175821c7710e525abb02d73535467c3914843dd78bc82fc5cfc2b9055a397d9b2a3f956359e32a488280c13f4fb629823cc74bc81079c13bb71ea8fd87996f8134541724b2ec0e79e1fee9eec60467c228430225cfb7d965f767d2aa23f6abc6aef9806a0a2255980a3b8f9df5fc219caf761b767387c25f59a1b284564d86ded4a9bc67e678632e0c600977bf58d026855daf34bc8c3fec0c24de4052302662d6d52324e4e86523c0ae8aa74d86b4c4ace1d715242fe7a697f353fcee43dd7703f516d12dd775a5adb6f3e72093d82549b1042dccdb2e4f05b2012824b3bed4302c3ffb5dbbca289e55e04944c4e89800513e4d7b0ae7f81c89a31ea13220ef1e7b5a76243184faec6295ab2328979706ec75fa6fa42ef8df943186ba33b6cd9b6294563a64a50844ffe2c0a2a30d4a26bb41ae0655c66ea45d70d801cd0f1adf7c0263fffef76cc2fc778f5bc0d02c87f607d6e0356b75cbf3837e730bb350bbb62b488cb3655c7245d0c144295a4398b2f4c5378219c1149753914267ac916160f7f20f44e308e1a883b2fbb9acc7c2ed6f2565c1551793076ce067c4788f66885906fa265e150d82e1d4fe7cf7496f1dd9ac8d5e6b8c10f13dfb6f0313df1362e47451819145510a1a31aaa84f5cbf520e0845de82f898ed600327bcf1644c1cdbd15eeb3bf898a2f03f5dcf448b464f7a2e869476538695a43c6481b3c30a378bf4aa9a16cbdbc1875d034e4cf9a9d8fc2bb48d9473caf164747ed7e4e3cf60b043e62f5e7949ac77ff3fc0da860f68dba64fe1e590f113adaa58255f8f7ddaba4292cff0a8e80189f3d5761cfdc82f310e67d1426b15c31bffbd3222b202fc1e93d2b266cdc30e5051740c302f45cf6228d1940712bcbafcd8a6c4aade90caa4f88d8a281b03d8decc32b402a0e1738d213e379b380b5e7633b496e8d38508c449a7f3b807bf888a3e872d53a1de1b59899d9c3123b351cce3daf25e7bcfa3ad1d9e2bd97fa8284c55c1824a3e1f7cf59b05f068ee81f028df31c3b3b63a12104b9b037eb561e77237bad81bc552320e2a9db42914821c24345ff1e68e82342c2f8c350cb8e1a29f6ec34cabc9984a1fb4599b8a5deb9096c7e848f173f63ae51a79f2c6d5ea85fdf56f61a42360ba69bbf3ac9fddc4796de9c707555162a54968cf8283b1374b3b76f94f0c116476e970dd34dccd93a7632e2530633996bceccc0cf484e5dc8ecf54662b584d6c6374c95bc00e7dd73b241f9ca08a9e97e61745f68ad2449eb1223105ea547aa0ee63f33deebe2777db29e972edfcd18af4fc6d2f4792a84dc1abcaa880e52c58a1e21329a9fca63b3dde42512936a364b345fe16219a4a409ba786e78d3f32fe01da348e2e99d200a6296316537a2198a416c032b2ee417a1ba27a87e8300a6baab82d837f64418900363ff940073407f043b841183a977b130ebf04cb31666760b071fb59dbebe1c804a1a3a4dd5e15e2a0b67e0007c00c06002855583efc811185e4a91ae56ddf81e0ed74aa405f7b8b800e91ae798f5412b1f26e685e20bcb7dff4c48f04a37306089ab717ffef8101d1af13a55b19d75673d7bc766ec1e0aae1580129feaa148abf53a58be213130eae6e828482946d49093b3a47c8d99e21d082f01d509180f9df1cb9ecd503d86608c0e7bfc8d588b7512ab361ceb3fd51fd2a564fcf7c7ce5b2c350c3ab636a2e29c11506bc5eacf43ac801ec848a15f6ae5d5cb0042622f31aa2f45cc0fa581197facce6e0e992dbf9ae2f0133f35f1424401f1dcd325b059603e4d2124d0deeaec8241dceec1c7f9c77e4754bd2f756ce47425a9091838598e6f244a75d3b17399847d10b5921668c73cfb949164f31f366a4ad1dfc0bf5016fb57eaf70c800405e78d5a05189fa5321cdbaafefe3d35b7a50f3420a2a4136e8563dc730b7183a97c9026b71994c44268657d2bea0baf4eb70c7aaad5653f77197945972b79af4ddc4cb68b4d53267b51f5abc1c8f57d52679641a1c836d672f1c71528aaf0cc591f590b051e72d3d8ab8f5e22a7a18eb3280544fb9355db9e1ccfb612c09c9fa2cbdb7665a190858e935d13d04459946da8cf724d69c4a5322e1105f84c47fe6be5ec460110a89ad3d0a378c23b9bba2536084f118168d7e11d85da1807494dfd66de5d3765c717ddccb9be6da525e47b45ed07741080addbd16488c9f39f85a3a25c0a58a21fed06dbbb4df209fdd9b873d03893f003e0e5a4ce0cd830df2e8b18b8ca9cf83032cfada04b9483912b5890ec6cd3ad6e81aac0b0df74c7d1e3a791b386b6228fbe090316da03e3ec6190623562496f1c86185f140ac420ef87a3c926271ca63da58a09dbab265025859389e9278a61fe377b65a619595daed7853b18f8a24dd8c003f47400b05bfdae9e35639033538b7ce6a525ec7e5fb88ea68d72348c5b5dc5f531733656a17dd1b84d7daa15abf6ee08840b71d8501c4b402a53654c4aff0660eb0c502f97d05d6d862ac170fdec2e95e81337d518f6793c38d14dd98701fdbe3eb509e1f952423a8e32a254037d31fc57d6640349eba32549ca6ffc536845df40140cfd618f4943dba45a4ba0f5248b7ac3c94c11d4e9b20a009d6efea90194a8aa62bdce6041b971da0de867e49dfc9233763858b68c8837403440d0b0622397f7304f09cb681f326fbf2024a904b44732ceacedc159ad87fbace5b43a5f4779ffb950b76dec04c4674b0958af1c6b6d5961c91ee98150514ab16b285baf91b798c63d7d02ac7085bc748b06ebb117422c511fb77f3ddf2ddb86cdbc4ff9fb2616cf9a570c6e1a6f0a9f487bfd5cdf144c5f958981c22939c554c3e4974d57feabd78b035612a5f34683e58863629f8b5770b0808308dd7c4d90799645671f39f1d5cd45782bb923dcf721a01e7a24063e3ebfd60724fd5af4312efcf51304cbfa8042852fb82d97b613d5952104a476f03febd8bb7da2270c113482bd646a1ae81f5bd241943b430676a7a8da184fa00d00b46886671afc0067e7425e095c57fb7cfbdb7d0c69571f82638ff776fe928c7dc9d1cc5fa40d91e74bb0793a9f9d7f578156af09ca5d7064763fd9944699037755557f1a53f8ca19a52c13a85a22c0c5eb9267e43d8901b6be86cd781723f642a4efa0e84d74333081a888d3bdb817cbf9317cd737140158af53245d484850068b1baee38363a619ec32e84248277b656b27fc3a8084172600b6f5f5bcb689462d5a706279ec5f5e2f458e1319608672e596481ff39f06fe37017c25a7c6a781204ef3af095f6ccf6e9e2f534badd225a72960e54ff4229650da46cb6ddd695d30c6027129494042b6dae6f303b6efe6ef809c48b5ebc4ebcfc608a0a80102485257e6c1a2212bf06938606e19ffdba98eb623445ab2c65b25c9537c84efacb8b1a9b4c0f43a0d9ef8949528d2d2ce0cdc9192200ca9067b38375c0fd82d32382b273831237b5997d3f9fb9838e43bd58303f96ad976abf4df6524895a1f9d76412fd9188d0047c7c1369a3c33eb38df23d0bff7ccfca8913fa41fbd4bbc276b3530b69297287e14bc65307c26dd1bd20afa76fc792edadc8ae80e764bb0acdecaee2c40b87040f00560e7b4fa3b4f4c355c866cefd4f3552f1e4b12b2e2ce28d16ef55a4f99ce882e040d2dd408c615dacab3902054755d77a9b9809f25afe527f58d8e5160f70c2fecf6bcd8a8d9c17bf250aa0e75d17d4f8258489072d1209cdcb32b6c58606ec9b171423e8c4fdea9f0f371cc92b1b47318801210419e266b8cbc4ed0a0f31d7dfa4dcbf6a984e8d8a4106cdd80afbf7bb9c01bf572ce94171dd8e7a8fb67b0f479dab7d7103a2c92a2b0643db01e72d36dc6b905c44f6620330914b9f62a40530abb93ca301b944ca5c73700d59eae0aa857173762a9790bb079660f88bd84333555cc724b52383dd2ed7b6e8c728acd74fd0529232a1cac0a23b99d89a17cf9d5001c3ca38c9fa2c32ccaba0fc9def04bf845050ce396f450591f8e6f2da7cc588531a33ae0f43d1cef0108792108a7d25d4abdf80d1aa7f537cbf89e783665671b9e2a0b2f1bdca296533b941d5ebb29634e4394d603bc54278b0803054c68f7ef26f9d2df898875a24274749bb2d54bf7e376f7dfbee15d7841407834ff9a1e762cf9b140149af26270e7ade82849c2254c8e162a12d407fce115e4c1df7440eb393a84bba27b2f502adb90f01b538d27e6e8ef372280ccea261d19e4a1646311148ade6319e460d53df3f2798215fd94e62ae70a996f85495d99c6def85d570d0db3c7bf6ee98a73fdf59d6b745fe445c04c9343fe8bf49c2ab60e0a7c219737fa6be99b972cd69c4c44d4daf0d9251eea8652e149a10a15bcf0d7e5a3687d26942642e27f99aaffdaf3730052b77f43222f32f71b2a2ba112d6871db7fa86d14388eea8e5abd98cf331a932a11bf0dfb384215d5ec42fea99cfbbf1211046ab5a2b06f2b21f323d33ad70c2711c5083a5e437e16f09aeae1a4aa736ae03a57fc68fe749cb4d7997a2476bf4333f9dcd82c0e517d3b6d216a682f612106d59d258e36e5835cadd60b506d95227a485165203f89e08f3afef1732e626b1bfe37897c4242c05bfe7d4c96fc4cdfb528a5265691d879d7498b54044099cf0e10fc331a0a17b75c34d1079e26b647f0b2a217466e370ac285998383b7d147ce97cd8fc1d02ed3742bc916804e6d40e760e59112993298e9c348b93fbb6706da5fabe8bd18e6a7055a21d453ba79337adb2df8b96488d327794ef9afd268ae1c96e9c3f650308810ed778b8717a566824e64d22df3c1180b6c70b9c5ccee40cc5834fc0c93664780927c8d7798cdbc4814b1afb1b692bd5a0c13b3818c306305a3b53a22c016b7eb71bb854892825ca305f9cafca00a79c93119f6d8a9e2578f984b44c294d46e9615c780b0a4de787060a53203dfc2223d58f4e994d2cda759911b9a4b086534ffeddc837f31418ffe2571828e55dd616fdb251bf017735dd95b8f60038f5fe6de3be47d9f5703523c9b593608f09c3ec967a09c8bf742381be0a8ef7029ddbd26b7eebcd102cf78477fae96b35562581e5d996d1c14c1d4b314968baf14f9d067fc5b5f8f6cb986cce6a3f79f3f388b3e560428f2711cd8e17730c58f333832201b8ae70045fd58b332e6f78b369e950fd4963b6b1e2d6b22b4c1276cd6ebfd8c41c1d740212d3078b29467bae27bc734824affe739af8f91c9c25a2265ba45149058c984bfb41a4dae6a25549c1d2cf5e92be7bf9859e2b53976ea717a383e29eebcb9467e483b6d113e5d15a67a0aefbe2cf6eadc6dd16114de74838594f1e024bd3c221c8e8ccdc5a7e93db925f1baedda0940007a29a68ac67082c6ef58ac866281b691e85e017a9214346b5dacf8ecd2f6fe6b7ab5f70269af3bbc17b3ba81613042f96876aa1abb27c159c1682dd1e8ac768176014051de4f80e4632c778394d109eee77cc82956e9149144d2ca0f3e0c30fa0bc934d24be13df7d09388d381da39742197faeb5c83f7d7b42342083dfbb4fc18f30b9bf936d1cc95a0b792e7c8a611c5092179a9fdb9a8047b6a168e7eebaab5f0ca8e35a94f372ced41558f0ae8b56f21c54e2ad1eaba7bc748daaa838d3f9a41027b076aa005c4e204c26d79e4fbc208cd0fffb728be2de0c54095f5a0c0caa1a9fd32114c85da9cf29141802d6cdd3f6dd9b4cbfe9329af2baf39bcf1dfbb7cd322db95b1bb74e0a3cd58aebf0ae6c7200c275c0e821e22ec919e6da6ab7d01ebda6cba14e31e5aad23ac546a1ce4b1ea739917054b7b4bbe189db01c0cf45db496ee8c069ecce29ef2cf52c85d079062856b62cd49b648ccc33c36b581cd1b87530eaf4c441ed8a476108f88a59f3edd7c1029bfdd466ba3e26cb84ca7a8f5a2bf58de820db7138f3ff7a102dc2142514cdb5f34e62723a3ce6e9f9bb504bdfc6cd6c1d8d87154a3baa6f3cf7ec209a353f1f1ed070637b7076729de5572ee654fbe6c7db24e57f77ee0c9b62ce6e8edf46c26b4a141971202b91119db30df7f52280859d3c1d243cd105301450c6347fad5bfece87d5495a9727d2fbef85978d278ba317216d998d727d916d562438e85c60c9921bf6958f6a5c6fb1f5b02edbee9465bfc9ee3fd1d2e416619be5359f27416586e82f36a02432fe7fefe33be711a1e4609a3ef91627566e2233dd324a042c3353992c891d4fa679a5c7c5cf6c7259c7c791842fc9939ceb3f25458b1aeb9bbe56e642b220784b888626770e2eae198beaa388a07f483b4beffb30cf704b31c68107de5fd97c20ab407e5e4cec63b94077f44c1eb2a0c23d83be3927b2cf1a89ecf4795cfc0ea8bd542f08a573d7ead21a9a17b572d602a789ba35648c0f70fb20ec9e6132e41395fb894e9e212b073139060cc53ead185ee44ae5854418e19d67a9159fcafc965924a55d0564c2f93400c6b8ea3c48fd9ea75a9a0e278b73deee6f043e3f5bf95c18de23b48c1acd3f099c9b03824abb4c84b5b7254765ef0fd0047beda98d6077b75632e567b8d8fdcc39959d2e042c2b41d55b63dd8c60343586309464aae9a3d0f728665cea8481436207de2f8a90ab5a45fe655ef45ecf02375f0cb78b83e7a610e4bc80942444fbecd412c092fef5eb0a9b72c12093b863a30f6fc5cb20310da98562fdd2fb7f766c4ba6f5fe576369e14495f120a8267ffcabfbf953ef7aa0716190ae05b6887b6ac22e13f816361a6b1583cad17f9c09c6367c206ff248f88d36b3468c14d8024f8b0ede8ae6372eb7791e7474f9b7d52f574718622d99a1acac338f676863fce1b1247556c676ad0c7ee803a0897ff5126b52b78dcce965c965260985cee2216a5c1f0016d90f866d21cb8e4752d4d186952d920cda6f710dbaf7317f2326b5a0a13b07bdb89f8ae36061e6d9910b723abe78bdc085851714522cab7854522c967e75f0677a680ee442529236664d69a7c787ba09f984b056c85327ae57b47cdd6f75eeaedc2053cc37238d673775540f56970db0af18651c98f79fd8baab6b51571ddacdd74c409a88b02c24f3a92c822180d5670b99dde10f525a4296956f0f485cec83149f95da2b12f2c3df342892b7f5520ec02640c2e77a997f4bade63a1c866de30622fcec47d904769bb4734d8303a8ff198e7a3123b7a5913c943204214839298b0a528eac7cf906bc870866781f28e674cbb8d70780c230f02b7f89eabdab23ba86ff360789944317e2c9df51d339b500c73df265136afb716056b97cddd7291dfc3f9a4322e63be246a87be5d8b91f8f31a6ac8c501b9323fad9a56e88fb2b60c91c2e1c049ccb5d3112abe4f0af99e4316a4690a796c6b1ec11d95390070ae63c4602c35b6d3bebcb366dbc0f92f4b77355cafae180ab55f0f364167f6f2fcb190a5e2e76cc72db9573bc07ed57e8a6267b94d92f4f387cd9abd63e064df162fb84d837f26eaede07ce6ca0969677760232742c241b582a48f2aa9983394e80fe6dc4defc945881b203572bf0a2dcfe67519c8030b1b0f8e4c6b4655d3ef94d9dd40c35cbbb1e3579218e62867811c10a5470046f7137239ae4497029ab5e3b2fc7b2dd960860ee680330713b470e5ce5ab94750be5c70168befc8fffd244e501002de3e19d22458863b4f97b2acc4556dc719c3d1b7a48f3b8e78692145f395ef3a02c65df70a83b2a1454196ac7f4dfcf01b95a9c64a08e8e2fd1342dd72b1af17843f70186af678019d2958c6cd5a0cd893cba99132a2ff4909d3420460a215010c3c8a6d87e4cc52836c5fa04a789c2baecd188a84e0e0a48b77564c7fd55befff7b475d60db3c317cdb7eaedfb5ed4a54b87014cb199be33135ae4df76c199c7d15235d2b725e60b20dc7e30a3e3876fcb659d68debc16092ddf3855990d643806e999f78935c6cc879e094ec555944d683215dadf64844aa79b7c2f621fd64ee2983c1fe39e27777e28c7247ade0cbe15fe10cecfdd4d2837bebfb22e69f9182decc4c9001655ce50e1ac7906189b47ddd06b08741113c3138ec3069215c80df01543387bcf7d193c46749b5f23eeff33a23841f25991aa810961d35952adf35e46fb616717e1a0ff99427a0d9c122d5c4bcd842ce827d11b86484873cb5e1dd53544feea5e5062344ca2e839874b15341e395f2748ada4111c56a923587c582e7fed2200706e0bfadd6a1ad27a01c0dfdd88dbaca378650f859884d7c503835332ae170dc340c9af4efc46dcd5fb3940f59d3b0a5af0319b558c20e9b2f1cf70518b5ca3a4ba4ea2f54ddffddf657283c78998c3cabf0dd1d4cfcb4e63ff2997b6b2db2c316b3a1e3a9e30590be0410ab446cf2609ded4db9d897f60d20f3d75187e87f6c5020e7c147df133796a004ebfc244fff63bb52f04bdbaeba63845354cfbd541888dacdef80f425ec69270dd6d125024964151ec6fb0a146742b8191905a3df7e904f2a159c30a48b6622814b257e5d7b2d704c8d640b0c8d9b12d9a82ac46c7307bc4f1b7880eb4ce9e6d843cc403254fecb2e24221e8d87ef66f4ddf4793e86a9910ad5b1b7af6e7ee3d2b5250e0154c12919d9cb20e86de2258884d71ebbda22b1518398a551c770ccbdf9a941cd8f4f03536bcef4a2a823c32fea4e9c97bf7124ed41014bf949b743a310b1a704c7335a41485f0c13e22a858e390a6e2cf4c0e04dfe6ba334cdd61f7d900b2fe405acb87edbb2e164808713d8c42679159e4ccdd0d0d6a5c39839dfac3b5072d99031c9fb5f0b95bc986911307a0400246bfcdae46531bd7316809f892a7a773af75159aedbdde1abbb9e0ffb4ee96077df66a3236f3102b5c11111d80558395ebe3836a474e734122e3c0fcaeb7ccfd80d73da5040c681d47cffb036c4b3f77ec450fe495662d91aa8bae69d7c65ffb432d6a60396763a954e623666fe1d958e04541cd4a1d945369f6ee84ec7b2b6bb3d4fd0b7da8348014d607ea196439ab519e5605f17f0830fb0b29f35f06f969445e4c8f6764bc8cd69401fc4089cec20fffdfb846872e2a1c9febb4db99fcc6a225682b7d93c737ebc30fdb4104e8619f45d68d08caaeb05429fdcb46bde897a645403d1a299ac4693d44f62a08463dfd9d0d1881a5aacf582e5b0a4ea75fec8ecae0494cacccfb4d6eb2853cf95ee98a2b58eb34f93ddd242f9935043c411b704a0f097e52ab72be393a355e9e31b9370d04300dedd54f54c5c5f9b9e7a2c74b51faebbe2c8767a70de9c3e874575ebdb2a6b73afc1b9e3290998c6eb935e5ba5f759bcaf05960c29dd4213fb4158d0cbf9166e44d5e11ef59baa7f7505fde242d6a55c73058404c2afe5f2354f4dbb29d1d38131d99456b2a04559a01e7859c9dbc24974c491f3c15195a1246d550ac7b43563f86edd5c15bbf25f688739b16f06aa5557e4b6a7f9732afa8ad85e003f6c015c9e80a984c7fed3306daec6a3b0e1dd1156b4897ae46e2534c6c8850f0d535ca1d39928d7246425b8abbd27307dc8176195f2713686b9a8866d13763f67e0094f4a5fec432942d601da6aa22f0b382abeb73fb47e7950a82df10a1ec972bef099fc81b5923461e515caadab51c91d910f44eaaa3c64764993a32478d270247abed847154ae7c75257512b3e2012db4bfe90a3aa6fcd28a43c22767b709cc1b5a6950c8794522300a56384e637d2942906ae4ea31cbcd3bee172f2cd79f02d1710ea9d7ec62f5e