Security Research
CVE-2023-49103 + CVE-2023-49105 ownCloud Info Leak + Privilege Escalation to RCE Chain: How PHPinfo Exposure Became the Attacker's Key
Thinking
2023-11-15
7 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Web Security
ownCloud exposes the full PHPinfo page on a few endpoints such as /settings/phpinfo (CVSS 10), and at the same time the WebDAV URL signature defaults to an empty string when the user has not configured a signing key, allowing the attacker to forge a request for any username (CVSS 9.8) — the two CVEs combine into a complete attack chain: PHPinfo exposure gives away ImageMagick / GraphQL information → WebDAV signature forgery lets the attacker impersonate any user → old ImageMagick vulnerability triggers RCE.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd89376c1517f6371ad5bb4a1f7d952c1692a33c5f93bca147cde2a7c64a6232802af3849a478313587448bb4cdf164bdd6fc01168dc8f0ac6114d47a839f3cabfd908679b92a3aee626ee8371324661560833e74eab453aeb488af5ef9435dc5a23a27be8434b2975137b7c83556b02c6605f0173d62f568fedce373be0bfa61f0899698eb7ce7eba58a2e58defe16eb8cdc8cd4a4dc7b16da30e3b30a6147ca4d719871e5da43c532f105863413cbaf1c6ddf245f697991c67a983be370d7edc47ad896a826e5297d153b0bab205e154d27476538de122891e70e787b1273892ce22ed8b06e54dd107f022a5a81a669867af2da2b3a7cff7ecf0f7d8f194f752561840dfcaf8035cbafdc444c2e13b212ab5c038b863f2c6a468406d7bf4e73a0b8ddcd748c8361ea0e5971b440170cf816bd5a7ea2127b6f14cdb33434db598c4375b0fadf3bc917718793a6f2b9cc2b40713f56cdfe1ef54651d733c27f08dc1ea52d57cfc133ac8d355448d2b63954c7230ddfb471efec6f0365e0159e3cbc7ccba99a606cf31934b2d578750d58a162139b9e7c4a4a9d9457f6cd06256849eb131dc1bcfb55aa30199bfd37d988a1f647c408bd5dfcd9855505bab1fff3ac0a349d69203d854a60ac49b7aa3747a1374abd183d878beb3f8614665f46b4dc45f062efe011805309c9c54a52c2a2c6b441d633a6918b4d68836c5ec5639ac7f36e17c88f6ffa60f86ca63973ee65f373d5aba47a3dbe5f041eeb459171b448471724729e05c77438ba75d91942ffa603cbe7de3e8b4664439473384247a120b3ce795bfb94b2a98dfb2e8e9c4d95a409fab615614e14235c2cd62635cf129fdbae480599c5198d9eaa5ae0c8902eb737cce1d19ef37b72692ea96e63a5857555ffe7bf8bd9d4acba4c12da7b053515222975548376981c4960c09361e53c61500390c452318ffd0f590496611449c763f83d79747c59c3c7b8bcf9c4dcfb7e36c45ad5d37e1262c32bf74508f2aa796f3e4b0e1401481b1c77c3cf9f94575c5dc85153c218d5f1c6c99fce5a94a743df663cb63dfa5f4e82ccffe680119c06a454c9dbd1a53f997cc1f6b30a983346c7b66a2f610c4d462b916567033079b5cc2fa5644ddf282d70e1eddc9032f3f3d16eaca95756c87a4c1537b1b1ce9821d177b0328323f6407005e284e068e2b99907724dbbb8b08f450e5176c88102e8940d8b6bec2df0e5c75c8b0b91293906e4644dc0a1862ed5da62f253d5e456d34d8e1125bdc72f06c3c2a5e4293fdef165a59c0558b4219c774b4298eeb9bcac45353148c33dcb59e72274e38bab5cb18721fec2671b60cc20d932057eb5e6e301699c54b2ef29621f094d3b2cefdd44aad6c1ff20e97cba52b5aecba00295d7e752a8edd832562910418f1a52210e5e9fc17ba3cfe383beef007319c2538288929177fb348328acd6b4892287c07560df0995c01d639d64869f895691afbb20de323e784bea03493daa33e1d0b687be6e84f9b93ec466f4b553163f96fb9a17a50f55b587482958518e3b9ef3e9aaa20aef049f86eeff74a815a8d47649b84b150ccfbce1d5c998f34f5aae6b48e57e6027495fd7ea320f6c8cdc5575caf1a59adba7f1e9b19ad2c9f8056bc52b417f4387542c9cb123a112f427a73f0652ea204f7739a34dbe1237e34f39dc1b9526814367abc574564af8921f1b64c0cc2fccdb6fb999acf9fbb569e97b1605bafb87795f6265e31c73d92cb4944ff1e9a457be80bf2e061d433131e49d8fac857af721b0915785843ceae16222bbf4c261d6b72bbf6a843332c3721db49d93e12b10aa5b60b16575cfd6992d5c75583c6306bcb85db9e2f0def6c9b90df8ff5e60e25d92c98c04c40ab849067f5111e76f7136e529f55ee2c8c097c689e7223ae82c4ae45dec445031af1ee92b6a98665993b957a14c28c0e77c61b7fe47089f3de7b725a2bef572a5c43323cd2b4ca774d516f02204b6283c911437a598f8bdb2799286157329954339cfa6b018803530a26b9636b6168a6cdc8c545286ff4302cba8f1d145e464c15e065037ccf47d11ef7a24ca1245e0a8bd748d4313582c081c3bb07e9b99de11dff5c65e70a296a80186d3cb3554dc792e0cd1270cea89be6e2b0d246bb7f94c089a99371ce2fe7cfa0a95db5397063cf0928848e47486f736cdb02a12b17a5a03278be8b87b455463e0fc97099f12d76692a3c6095f72e70bfe435e7a253c92b6d1b381cf30bbfbc76f8439434f6f5e862e12495a9214a777e06c2876e2082a9f178ced6a51e76bfbb86bc41487de411a580d48044f1edf2089c75dfdaf9fe3a0d27bf9d1e1a53650d98fac5a28e6298826d9961b985d445d725f83d084ec518acd9327102d3868328fd5a422a3a799962a1692c168f305b011cf553c86d6e12fe8ef30df31a0b3dfb01692c36e9f6176189383f95611c7680b0d7aada354a954bcd18f84484989711fd1fd73546355de211fddebd2ac7b94575cacaac7914fce43fd2809ecc475f16f2068f5367d53f0e0e23226eefd0ea9a38e2bc7a7cd0fd2b9885181bf49d60cc0407e0b7af444589d099f2efa217952d7d0b67117af6d361cb29b662bc464ff77d87ab2b9fd2d2ddeb0b21b2cb5b6188e70f6775268220263170a9ff123169e7bd82bbd22a10ce069d910afe5bae5af34b5b700912a54d7ea2b35ac0e30956f3d48654fba8c513bef30305707fb7044fe65fdf03a2cf0e355ed5adb4b0a7d24717987b2b5d8e2128e75f625222a9a0697f11d2394ef46fb6af04e058db24d709c1931dce703ede704666be18b4f4a244d7870b1d822644e4dfa152eb729955cd6ca97578d5544d95f951b7fce8573b60833d7a842d0281c02083b87f9fb3706b268ea1df736e14fb09b4b42b52d7ca4f57320a5809b9ae8da9031d584ac05976b93d845ed74766aec2abd83b61e0b06ad00532025a7d57490b454dc8cfa104bdca14d59a76cb26ef53b419f6d969f1969dda7766741d48a549291fd8bfc84f2ecd872acd6acac09817b5a1208f5b84bc73188fcb8d2f7396199f706203832f536a7463f2d1d23f39122a006e1e8106b05d7b2f7ee4d5368e04a09df995451b8c9e434a5a590ec1e2975874deed7f128e0d300b4f86c0c0bb552a2516a10a7e1d880e6586b6bd380080f652f332ba721f305ea26eaf76507c23c7f76262d76b3f29259f510b8cc28b1ec73df670b0f0ed6c29cc1f1311e2c31a03f5c099827e2a0d1ac010a9e6407698c66699566113b5196a69415c731e2d7347f254089bb01b05b1e5e2c5bbd2e2b8141570713c398ef1ff572d0ee127f0a2ee579d2f2e3a8a29054e6462f1c0f981c758990ab7e0fb4cfdc3dd60c4744fe183410c89cfc27165f80eb282b2f47df30158f1568664e6788c2c29c53533d7d6b0a2792f75957c91859102881089878d612a5a72ab1918f753b343798d8d2193323366529dc8417c08cfc8b9984f2e4c5ca5c6cd0deee5c7feb99b2aec5fb081d97a2d9d0aa1df17fc9691daf54fb2e55087b72d57d8b8d0a4959f8f615e822721b966b1e2e3102c15b1b62400fbb7cc9a757a219393c0b3315d3265fc1501037e7dfd609431c0cf9af83b412663ece277333635ca035b792718a331f2b7b6c7b4dde43d8457e1eed709261988a0809a9748e0a0b1bcce69d93edeffcd3199bd6810ee6dc06a53eae62f9d7d970b682c4d7c4ffaaca6632e9b006c3f5bcee23554bfc271688fc9836ffb2d88def5af648f62d119dca14f89c87759187c777713e809911fbb603f02fa35decd9a8098a16d69d327c13a30dafdce56fc5f0aa58aef206ad6eb196101db321267f9251669536a8872cec3d315819b8953de47c3ee2652b678f856c1e3a24fef6d246551858610217ed1efbe48c89e8de0d7e4bf10520ffdf5a307814c93b3c2d243ba1c1a4f9c801a93a835c1dcfd603982a1d7c95db5b2afa88fcd03dcc2941a6cc455efa618d3b724da598e0eb0f025401f35c2ae81e05e4701dde8976f3a855066a9041718ab48d8c286c27b64067e6e04c789df729f91fd4c59d20437178a0b5843dd10e5ed3d6241625f5c753e33fe2e455b30da19a3487fd27a37f3bf8cc05944eaa0c6a969cc8706ae2318926dcb054d00882b21fc2cfc567d559111f1df6fe9bb4ac4347405697d3d2d413f44e784f016d6c6ebcecbec08ca95c159cf8bc74c0c2bd98eb02a478e05961470aa6b8ec559108e4adbf370ef9f90848ae6aa54c8167a8afb488f1de5d2d78104ef687087d5e2b7112e82b61279ea144e6f0d8259ff2ed1c0c295496db8dad948219aacb8aa683df8ffa008c2a77a24372dccf23a1af9571084c30e5a41d84a48288c28ddb9aab03f421057108b5644bc54a1c0dd9759183b000139a63760ebfc29f5dd618703b625adb0b29dec65e49f889fab90e8e75ee88af1db807ce7383c81b0b9a7b79bc960e050da914fb5e172692832ebecf64e0bd2612a9fdbc3c7ff36b54abcecc74c9c485b1ce1224cde9cffcb4e160617af7758a149cce08a7c7db7c4deeb30ada9ab586fd0a94a59c9394e9b4cfdcb27d487b26ae9d60f257c7ea846766f5baf8e8e4e93fa13c8e0865174eada1874ac289ab3e302ebb671e3c8699dbbc4319282d8813f4692350fb3fbb755f5c3dc18f3e0e18e80b0cf943765e6cb1cb01b281dcdaf2192c723dba512b04652ef4e7b1a39754f77227825e0f3872d75e3702fc403432f153483f3d16390a50eff1e5d7b9caa04b6834bb638da0f593850a2c4fddc954e4cf857faa24bb14c69d985c3d7225aa19eda7cc7c25a3c4740431cb293f9ac1036410116fd80294555c0f0f180bc60ca340edfafcd5a5819f9c50d882780053a5c069533832019e1519d4aee493be12bf9aba2ccfe634eb3d401fd1e0ec79b7da0135a9fc2a873b2192510d32c89d29b4282da606c9aaea750934a896333b5e52e364027db1b9c12185967d18a273d97a1eda0490f9772edba0c9835ed9824bb0ced2f8cb3c02242b4480589a356a66ff6f182f8911d56cbbb35bff90155d27e95f7c4391dcd8e7a6123d2d807e29a76045f516e546f7b3e6b12afd8d19bf721ecf50f13e04d592766c4cdcd0fd4f16fb7d13321e0b723a9d8a95956c3cf050568bc9b88a5faba94a210d1abd9290455aa78e7c6baf8067e8d3fcdb92ec64156cb5fb626b91a7d3acb75be39f4cba4d1a466c3c8a1daf1756ce1a933d4f9c3a2e8f787e096e8fd56f5d161d6557b81f5594c570441da7f878f4e95764f72462879284c9d3833e2fa7c5350042f85ddc497038a6d007ef38940058653ccb0d46ee7201409a8ec6336f6a7fe786b7f99a65904efd75c3318fabf45a7a71495df796d745851540a556f0cfbbc9bb6983a69cd1558ad25e9e2a08cf3b33e040aae20283f7a8db6c9fa00c7124b86334bb5c0197a2031f1d0c779bbd2e9a58241358cb60505c97868ec2e82d79100d3a946ca153de44ebea9ffb3d64b5361e79fe4c00f5a2de9d053668230654312a5289f78e58e5fce7e93aa650c53a8337b49dd92493fe424d7c87f23293347f10784d7432d02599dc437dacc6dbd9243c43c40623c8af03348d8cac26401bdaffd253c2c35e2f514af6cc12cf47c88539ae31653002346761b189d10f743ef805427db9db0eae163cd12ba39262d024ea0fb2ef969e56a47c85f7f40670e18e474ecc1a5dda5a6a3a778e7b2564c64d3510cca690c780aac64b6ccc68ccf5f742103d5961b25628962216f67f47ce84dd0814ef542b3fd0bf230f6387cc46b7e4d29474fff53d2d045a186a5e48da6530370997824ac018d33b04cdceadf15975f431ec2f9f1d949458d766fe49ad3356e09ca9a24fbd73a9ff68c80698ce71cb10a32bcd771488eb3aebc35ff640c12c4a7de64a20cec484ed0e8f1cb6214f48f94be4475723924f0f937a58dd07100e36b9bd99212e75ce6deb6c52dcb1676287433cbed48921017a73895b37080b532a5fda0fa819b94ff6fba58d9fda2fcde5f894d360d153053649d82cbe930996585b46b0b72aef6f17c6f6cbfc754b609f0aaecc3b3e70ed1ca10a57644b7f81f212c6d36d66790b811f440f4526f5e8af2101a789bb2cf7dd896d88e0df33411e5a6411687e83195ca1d3f575dc6c17fbbd48012f6d5051379aed1bae4ca05210bcb2017472f9344270519b126e0d0c4f75e1237d58cefd9b4719542cb874848c9c417abf1a1d205edd0df180f709fcf7f94aa7b0f479da970691fe68c33380a55c11ca0643699648f595fe871023cd2459f60ed162dbcf83aaf1da70bc2467a351d16e5faafcc7c72333a9a9bef088260e785822b43075ac52fb72385dc35d9acbb883a8ad70a8806b62ca2cfd6ec6f98d3dc0ed89e551ad8882590aa3930d3a7b6b383e315b2985049dd6b7354008ffcf1bbda69c4cc125c34ad044ed7dae81691ce51bc7925d4bcce86c3a07b582095dcb494701060a3eebdf1fde9a666377ef8189ceca8c222f87142acc3654879a9ca3257c3b76ff96f9022ec8d924634260116e43905e63f2e2322aaf74b8bcb541ed60fbecaa4290c3bb60f2bd132371d3494d597ff67129dc238b6234e3bcd08174853f74019ef98ad0fb83ea4ee18e9b30906fb65dc6b6284e617021ec0a22386987d0e59374f47edfd338a1d17498c3f619a6e4f83547be24ecea2f44e92dfd032cdb4f557d1c52e0eafa3cbf260b00bd6bd4dfa595b04c93439faeb69c0a43d8fca835e3a7fbbed9cf16ddb74d9c30edc13bff16bd294346e1ade4fc0669b2c267555efdd0332406107b8aa94a683710f561c31d27b60e8486bbbf98f4a060934897fe16a072589ae9b50b7998a4e48cb7440e461fb7d0c12d3e606f9b986397ad674592ae0e0e5307760e579bc62830c7406d71d1d02096477c7b9ceaff6fb0b6aa97e12f76ce461d8a2c7d658091cbf0778ad9bcf7056293878396e7d617cf08ae4909f348e28f09855bbcc4d092fc93b35030f1b653f94ea9235ee9a672f386b31be77c97342498523b82c7d9afd5d86e13ace6515d48b7c924e9c1b1314d6dd1b199031011971b714608507d666fd46f2b4ff5255332509d79f91e7c4e4de17d58fcb85c6d109c2612eb16599676e408416809c0d8968dfb0875ffc66fa3143b718aede9d28a79a0d1f459507ef2b767ab062e9ae64c0884e037fabf8dc34e313efe2dee25271b114b554b8b051a166871c019b63a7c156042563f1d9d6ff579b1256ac03d72711c0967c99748d83be7a349ce9a3b194f1315846e1c4df303a4af7aa2b3ccc4decac76a9865bdc8a1acc4bad83a8be4b36ec2808fbcba5a74193c40a58c0949d6e9215ddd7a4b3cd39622e914245df913f3b51eebdd391d0a70cd2048c59593920b6e7de9660705c9aa03f6e89c79b31933d832c0ba41e6247cc51876405ca54a4c437a87df038014d73980c360bea8739c122e1d98da411351dfab9aa272cf7d620a7baaf8a66cf3b0531af83b61a0b0c1e1c993f594894cdca4096dce640b1d0a42c9a69b63ce29383f2a3fed11618aa1c1c152de31a4e9aa8236284dd6a5028200ac2a91a53d0d440c9a4b68f3e938d7787d9752a4a642565f7cf276193f0fac44798d34a3b6c326ba78b7df9f767cb7b8a0cf9f176b2fce89d87172c4f9005548b0ed98faecc0959ac502a558e1b35fefa66e1ad8b08bae53c74ed712d021e01f6a6f349714860314d3d5315a56203e2b14391a58828df7c1dda388f8190adbc47f1797113cfc88d8cbdbf47ee31f18cf6dc0c294b3f7ba6c9893dd2c3fa4fab9c3681b6d0e9560304cb14673f0fe5b6ab85eae56867ee89573bea21bc5ffefbc2693f40f72f268c398e698f74d76031d6e4ed68cb0c0e04108840c6ad2f206ad890c70ae6e569c8730ab253b244c1c4025f0a25ec52a871804ba069a39cd09cbcd2da6d3c6497a9a26ba2c5f7e17e46583cb1b1eb52f044deca3a9ac0898daa91f6d9f221f456795a92e5a8cf35564821d623b6edd0aad9da28ab445232e74544ca0ff98e627afd1a69c02972a1f67585efd49c46d3064c3a533ff240aca657d73334f6eeaa12cd1ee335c55470edae13c6b0f3eadfafa9ff290b5983df8dade55f9121388e7e7bdcb4cebd9434aa21e177b5e1d5a605f9638895e5f331e0e2d23fe7f10ab394655e0d1c4ec0725ae39cdc27eef94619f6c330fc49904002ea71bd152964a1b1ab26cd5f40052f02ff089cbc010bb14df9c8abdd28c889b0d7b486179a5d1a902c9b1662bb0ce4018a8a7964bd859f5ed6040fbd4c094d93a56c1a9987a1dc2ab93a596eb6c66c22e5e264bc1ae2fabce4f453cdc256fc5afc74d5b717ca16545350d14262e2042aa395449f9bb504b9a93e9aa28a9d3513b9b7bff78164df0bd87af1fbf413300de706536e9b0107bc292cec2939f70003be3facc3ea7e88eaf7f46e5d9eb75c954060c66f5cb82ac57b016d5a0f9693df5d8a555a783c49312abb9bfeabad2f5c9ca46c3a68afa80d7fc5678a2a781c9ecc836ceb3fb01c0afa8585439e33fa2f08a390f1c672464db5ffe36c55fcd8a1ae302104325ab10318a173094e26dcf1286d142f8bb1b97af014425d0359f7a6dc643425d272628162b440db3e7aef8696dde14d9a5c7c5cabed259c7c7b4e53f2b92ec1b7a7057fe1d1d6e8b6272b652f19d7fddc173435b0e0b194bdaa68991cf6d0eafdfdfe72a345f0572d427db6a8d4814fe754a1e6cbc426db19300e84bb7b696d996fa6c17b6dbff19e9a148db7eab7a19502b0a07d3c05a045f3e8351162606f20cbec051fc6fd70a01ed9fa5474086302eacdf5a54ee16b3b9063cf50eaa5cdab44903d3311c25c8272d068e7b7c078881357cb514728c76a0b64dded8587cf8f38a9d08a45bf27ebe1b545ffefe7f6a4a7c87b088cf8c2f19da6bb367687bdcb5c233f152217bfb30000afcf82c74f32796b700f10cecc9990ca59ddb355d3a71143eb44d7964b13112d4f0960ae973dcf867b2ad5f0125f657e67899fc24df0c91ea11ca10eb8ff3662b98260b9603e3b663bc85d07091fbed9492c1876bb53adb4e20657516fc37463bfb345fd181acfcd563dd32fc2a42396ba2612b83363cf1f464a0741d772e2e0bcb09b47893edad48bb73ad0a2632030cbd31bb94738e1f30f28ab0eaa84ca246ad10ae1008795d47a36759a0fca63e3a1f4e8a93e658e3a9eb7d7a6633858ec607d8732d9821eccdf37ec6b8073ca16525a5e216275d4c1ab877a4a9af3506cab39319d939b458d562ad55ae32116f390b43f71fd8e738d47febf2d65134f7f03843acda7fa4db8ca1727f17028ddd0ce26ff25fa81f7734114fb52fc25dc7c6859599c81b73e65ed560d824e370ebf39caefb43a1c072b767a67294d8498727c76aa9fcb030b31ca6c38f87904eccbf54ffd818740746895ca4584a686d10c16249307a3a457dd9b76b384ffebe83174ddbaa41767a14a1ff011c1f478f8224d501a58aa989810bb29e574311babb5c196c8beac0edc5c25a0eec99c65892175531ecac49ccda7885610267dd42a2f1890a7300b6f8f44bf66cf9776043b8d273ecbf4dd6d7cecb2b1a7d63187a3a2fa025e247f3980ede7df569a38f01ea3050f69eaa75b05a5926d23595afb7f62495e58e4e441f5687b8b0a782dbe6a35dbda5f96d89d57d8a48d615e95d78ddca5996b8ad8847b4eefebb96684db0876e27a183c34d5b937aa53b96b772f21b46b736336c229073e1d1da8b4d81f4e8b189b4b5fcacd67435f2a2439d72be515ddda5ac93185e4cbc9f7952d524aeb34133cd390f1fb89284cface7a86c8f795ef39677b4b74474638e530e1d22e70e97d138e7ee1a21276a2b4da89d885a304a2308757617fb173edc0287a35906478d23c516e23201774929d05083841fac49429dffe12afcf56e0c857c90a68346eb41e3bd2b87f0cdf071f64448e0067011694c5ab98cb5cc545c886e25db204e6342b990410a97a4e44f6047523e746c91986e6f2bae12576f36fcf1afc80330141b215c5f36bcb6b68d36c3e519881afb5b3346a3db2cd0797d348267bb60c06f985de65d7d40fc32d5a6c6e0d8161f5a58cc42a5bca3505ce5dfc18d7bb9b7561b7911e70d8ff51d9d7ca733dc9c0cc3563a56df1f2118c337d1a67fb304ad5364af3eb7d20f99de4e7fc07d785221690111062e145461127db2d87a2c840836e5ef30077cd3cb1e749c29af5e2f0da75155f2ada58a4bd251c457dc1264f3c9f2cd9f2bfc460921eba8532c15d4c8bf06da693027abe505d311f7c37063cf34ff9a098d6d0b071479c6f6c782da71e2f16d512a3cd4d8835d7ad3112b8879c48e792a7627203ebb319083808c1865f8f1705378415915bd767cdcf3fe46e0e84d7c2a87d54162efd18fd2841223d22c12365916b6e401a5b64855fc43d1163fab856758ea2b57b98329ad789efd96777f83c642070c992166448eb8e99754c0d3a15d79d71a380abd749dbaa07dc61cc12c8ff179204b811c73dc488f2f3f97e62e96f0c20a70f27796ca383a468158a778b8175323277c78dbd645c0386b2e34ac27311dc06c78e161b44941c00879103b25ad97e4e640ea6f469344f604650517620f400ae27c108023418bc23bc069f07a1d05867a2c3aaa943da2519c1b5a185fc08bc3966face7565ea865909b679ec42e60e38a7cba03b5fda946319f5d02a2a5200ca6179f56d646f3c577109467e6b2dba04542f2135a7cf78dbe2726103cd0271c1fd651e2a7e896420a04db5bdea45b123208d1b6fe4b1b800f0d40ecc183bd931ef4369c38d34bf50c17bb7546e7ef52ccdc8145ef9e462732f2b184bce72a5c4840b3be4d3b74061518ba95a2c5c4ed76b5b48f39af45f9daff067bf5d62a2fb4ed3ebb6cba993a3ff2146283dc8844092ea66842e6c47e5086121d88e4f2e1f3ec715a790a10847ded7a2d35b074088690e1af9dc64254bd84457682ef2b0ddd0b5301c4f7184b8dc1940d7548e11d20e613a996001ec55df326877f30b880a750c3da6241aada4d1bc17643172a80bdf259b7e1c6c9da43096c59273cd558723e80a2ff863b69591c9a1e48113e6026eeb8087b7673216cb20942faf1a67f0aa12fec077d14316913d2236bb5213dc490ccffd8324e8322ed0e5bfc7de39c5b97ad48d1404991d7caca81d5578ebd1f5bdf5e8e332cfb108aea272969a611718daabf5eeab32560ca5b8fda7a99c0ebe1ae265658c78f165693403f09e1a0ad912166a59af3177e63bf1284f3d261bcbf139d1a64536c6474cc3d2de7ff0e32691f4e77c9a3fd9475976c852b8ab8dc837379cfeae1961805c85ff69afe2dfc27fcd0c08e2f841dbabdf4165f422e807d0beb2bbbca523e4cedb1e0104653bfa994087b414f56a4210fc821598bebb35913bc2b254eecbe5385f9b40a5f98c1dd65f39fe5b732c05a09d664532ac8d3c98934c82cede774451938af607e27a61fecc3cfc75acb1583a667dfc98240f5e4dbbce3f4459149f6a4756c2512ada976206f92a52265b10d4862e43267744412ea9045a104e866828041a664402fc174f7d6e1d742f014889143c15c06342c2ac18984bc833116c68f9792bd8a78e116b2a88931485c2ed08bf2c7db995d84d5febf4883cf064320f42a8a1834c62914adeb16600e4fc924a06430cade221c6b8dbd9b15b35aa513ef16787942dc0e31bd4d0024b14eee2b71322e81812798ff3e53c689d5e72f2dea162fc404c0271d2dfcc53f3444970b0057fdb125dd3895d9e83884b390ba49a1415434dd7636ca3bda44a282d81c114b65588d92b6ab127ba35ba5916ac1dff04783a16abed04784da4cda4c7ca050a79394f027017cb883f237824022d5074b48363bb3c71be103ecb6b3b7a1cfe5255df5df4a2b57f4531f3f5f43bdde71976c593277c1828ab82b1f9f13f9a94b6d60280b5ad2a8e28877eb3d7b7f94e30d075e586ce32dc2483e539e2420a41435aca3deeac4dd80f17509502fd6e8f895222f9b2fb9f3165eaca17d8b4bf2425d6e98a3b7dcdc5bdf7bffff61dba38006f43e41bd96dd4cbfcbc89703465251f84ae97525c40af6497bb4987d42655b043b24a9691b80e4fec4397aed33d5b9c9b23f9cabc904ef98ab72b979b91afffb5df3c35a31535db4d6d7f6b472c6a2d923531c23b20017416a5825465644ca0641c20fc5c39496a7ddee0bfc0814dfc1a4f653f7d3d44611b4806273a1ac25f4be03606dcde60bd9ca54959f18e377c463781059c5dda74557ff9c477665d17f9e01864ee0037583d20507024e65fd47807a1250efb1c894b020edcae0defb6fbffa3dba0a81bd9698c9907d073718a21b44504c482948066c044ba3d716605b49966fd7cde536ea097bffc1e2f10e3cf511a7940bdc36dc0dff9854bda3ba87b2c7a31a0a7d993d52482610ad7c3189f7290894a73a9443522ce66dc586a5c8542ccc28e31c96936dfc80ff1f49a16819d2649ec20a22f286867511621e7354d8031246064f25d0f30dd4a33ccdccffbdbfc19ca96d0517da22e9a9177f835f3c738857943cf64846fcf8582a09a8751b06be726de4e14a7b1ef7aaff26b4b548f564847808ca91ef1d6ede9a1b620b738e1a1e3232a9bf7808dec8b7177af04c84507689208ebf45d0e8810af0fb8073cbfc0b1d8b95fe6602696fa65f9216cd66cb42d160c955acff4390a3be640560ab1c3d51c79c9f0f69f4dfabafbe5027772e7b94a78a6303d05f45ed4de8b474c1483db25db6b16fe4cdeaa404bbef566cf50fc21fb5bef34bec066530e5fac2361e31b258299246f6d6bb15d71a5254c88e630c3425a8fa847288779193b64a08eb2727402f49566f6ea2b5f36236ccbe5e2fa1b0057f56870faa22bc5776077b58ed73f38083c431168ec60c69ea03ea61c2dcef0af4f043c32298363e94ac448c9e08b3e6390bad0add48b9274f22097593effaa8cf9fd7092e66c5cd884b1376b233526b3fea70761b877811de99a144992cb1a5dceea4398f24db525d7c45b8017e56dfbcbae0869e130ad51f0b07dec412f0f7bbd5ac4400449b1800c8eb72e4c73c645c81a4e422d235586d3666839a285fa0907c76aba5173232c6d9e848002e76f463abc11a0519559fa378f4ba0a330a5149cba20a78fecb81eb09d4dc6ed0753db659a0c9e712de4788b17144ad5d865db5795b0f5900f3c2d78c9d048c5cb10f8968ef5a08ed9f5a88402b684ae0f4e09463ed61688670c7fd3a786f9750f96aa1b2c3dff555653bc60a697908bc69c0eeba3f4647a109ec9d6847d7ada93ee4d5c231df20147448f079a7884abd11bc9085cf9e52372429ebb51ed4451cf1ded5011ebaeb8cf515688c5c3825775aeb0a71e08aba390a12ad47376d2beb8a4749b4afb6abe88037c90fe9e25332852df1022c0ffbae0bdcf4127aa5b8f744c619682dc9286cc82db8b1d29a727625dd535a8b6a766f4b90b987bff344b44ebcf35aea8b65cd2e6a6344ad8d9acc33e8ccafd83bf961ff6e118c18284bb33fc8d0bb571533253b82c3f4bea1201c67d5e1b8dd8a8f9d547bfa94ea213e6e5550a22219c89bc726afe92fc9250142d9d44d9bc21518c687c35dbb13434338c0ba07f3368034b4aea40f9e00bbf975fc6cef2927fa879d3133cafd68dfaf479ff88b781ed96cb1b62d9e51a98ee99c3b7002112964ce2d539c4eed62c78f56376619deff1cab81ed87d7044b73192f54b3facb6cab0efc3a2ff5ef9de7f58ffa8adac91ea0f79a572d53cf1536e48c96d9aabe76956ebd8013747d548dfd8889314d42679bd157d176005977bc6e35cd10715eebce2d431d644187cc630c42ec34c5725ce7e5b2cca2c1f38bb938613ca8c24692ae0c194abfb46d6d9e1b5b3f51d83d3633e7c0e63670cdf56ee464543967d096a064f5fb06130f461115ec168e7161e5c5b8b946840f8bbfd5ea147966221a5951b8c7342aef2d81b255f234f190653f5f7e6918412e76501858f7c724404f56f82ac994734dc903c003e5ebbc95f6554b77dfeb99061b93a0089e9707aa6d204fe6a004dd359e554ea7c57341b983726e1dc27d08b76fac4c5066a900f8c17521cd94b067088a51f9c2b442e46c61107f155e7238f7fa8f340989a4be369c586db858c14a110b2486cc87eb6dbd27f39e3f38b05908596b301df8cc9c0636c3d6d6eff89dad4f30ffed696d5c05a026aa44a562e1eefeb5e68131b19ba7287eca2f72347d9843e8ea40bf7e43987badf3f7a8194eac95177d9ed65aea889a99de32b6888874ed6d2fc7fc443658b95251ed9d2cf8cb74f87034678c08ba4c3b262d78fe61201cd349ce7d6a5260d5ac9b1a00d3102bf4be8ccb158cf37bd7777a762b0fec2b8f6e6fc249b18034a7e59601476f5e233cd9566bf9e1e7aeb6ae8e65582486b422d8878c13888400e4459535920f72b358768dff39a8673e9c41e6594b19983bed0c7976ee993096417ea1ff3d56a79489f4ca76b1e65b2af2fed97d2d24052150d6d7efd8a7c693781cc79764038cbc191e885fc8da37865eac23810a1db322372fc69d7243ca03773f12bf1482618dc89e6caa901650d380553e119211bc0255d84852510b0f5ba67e13028e990a6091d051d1f4fa9a54ea2ecc8fd3487707bd5740c35e5b4a71124bd89a5d7aaf440e6a9e3378509206ce8d1cd98ee9c3845111eec3037fc10b9f363eaba2eedbeec889534ef3e9398a65af0241c5de985701b7b0b0ba4aa1200a2381aa8c99f6340d9bd537d3fa0716c84db2d8c86a90492cbb460f277d649a8479d2e100a9c1ed23451a6589b0006caf5728baf8b136ab2437ef14c521f230662e9f9d5f2e887b7838f06ff3cebb17bddfde3fab6c78909619b3f3f12ed8cd68e6bc17486ebbc7de4a87547bbf422cdf1d31a288f3d5fdf0362375becdd10b3e36e5491e6929f69f677a25c59ad2a120b7346713d264ac5316ac6e0384d0da2ed7ed2d356b205884f2a60c52c6c1cbe4b4c664602ae901af6b0fa3f551b7fc8314b85cb2007fb5567fb8a4efcb0e5f3b24db19c607df9beb43bae1b5f2b2b65e9c7d7cf82d91df565a1346636c8340a94e551be829f1c99e11392e09dd38e89b5b4a4439e66e42c7c6243cb8b70e534fe3b631c2db4cbee71393cc2447e63582633b0b9fd478087a9296ab40c8cefbec699b75d787de7176b33308ff6e4113939a42fc9530c11ae4739fb042944de9b22f70d17df35024d71fb1e036e3daa65e8753a78c690a7de54203eb9b9db79b7b5c588b55d3f7a79cf9734993056151e4d3e74ce532eeec9ff3fc11effcde66f99bd1c29dc826f99b0178fc9a13c2a2df0be96dd3689d5e0c2ffc985d9f85392b8551eb9102dd944277f5e533ac569e01f6df4bb10d8ba265b69010b2d7f96458a2bef0e2479dcf6906297ec5c872787aec4b995d4ae6c0a35aacd7911fe2395bafec5c2c956208fd7ef6c238b4c39d72ff2352b3ed292c5389e5467609b2dc39124f873bff0f8b86f1b36d89963bf7922df90aaa0620452a520ec1dd1f82cdc1d4663dba1581ab0df8590fa7ea3120306c9256d469cbe0f50375f51073f8d11d5b891ab1cecc59ec44c599f6848ea310e7ce4ba76b9fcb77f652c02771484c10b7892452babdbd3527c3eaa189fb27957f56a77db9a61403d97a8415b85976cb7c71b09ad931fd1b5a08d9747e0b8107b6401448db1273d05d21b85cb82033e6376b5c35fe8877723b3e63e78dbf333a96f4bd41457212754e34c28d5d22dc895a4f8df4d27025792f405212772f2c03d338039982020e8d1c145b4d1639ac32dccb1194954c66d0ff978e2c716af28a5cab77e8ca55da70544eeb587308b5efa48bd1b6a75741620afe211404fa31ca6a07835c28d809f8c137512a4047d50be7d8ff898742520f11a4c15174228c032f2acc12e5cbfdd66ba579f96cf509adc30efafe56859a3c724d9e0dfe39e436d9ee206cfdb5dab69276594b1e9f6ba230d6a8fd3c751bf92d8e5820f85153e5e4e8886d97a5406fef2aa60e9ba3cd51c7ef90a4326325dce6222dc271ebd887641600c438e8fc6167581e23021069e3a3754c8d9eb87729a4c44fdd300a45166211966aa7f647804d711feaa11c19875b09ce3324a303beabbf930e98b1c10c5e96360227c5dd64fa92e731e7b513b4c34d715d4e76c12465de99475e45821d83f015918fe0d79b97e88b9eed6d4f830ef55dce6e9f63b