<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/55945>55945</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Concept short circuit doesn't work if requires clause is after function parameters when checking concepts
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          andoalon
      </td>
    </tr>
</table>

<pre>
    The compiler behaves differently depending on whether the same requires clause for a function template is written between the template parameters and the function signature or after the function signature. In the former case it performs short-circuit evaluation (and agrees with gcc) whereas in the latter case it doesn't, leading to infinite recursion in my case.

However, short-circuit **doesn't misbehave in all cases**, since I didn't manage to hit the issue in a simpler case I tested (see below my case), so it doesn't seem to be related only to short-circuit evaluation, but concept evaluation as well.

The issue involves a struct `Thing` with a constructor template with a single argument, constrained by `std::copy_constructible<T>`, that could possibly be a better match than the copy constructor (when `T = Thing`). I expected that changing the contraint to `!std::is_same_v<T, Thing> && std::copy_constructible<T>` would solve the issue, but that worked or not depending on the location in which I wrote the `requires` clause.

Possibly related to #44304

My case (reproduction): [Compiler Explorer](https://gcc.godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIABykrgAyeAyYAHI%2BAEaYxCAArBqkAA6oCoRODB7evgGp6ZkCoeFRLLHxSbaY9o4CQgRMxAQ5Pn6BdpgOWQ1NBCWRMXGJyQqNza15HeP9YYPlw0kAlLaoXsTI7BzmAMxhyN5YANQmO25oDJspBAqn2CYaAIK7%2B4eYJ2cEAJ4pmAD6BGITEItx29yeD0eY2IXgcRwAKggwsBISYAOxWJ5HbEIpFGCBLD4AESOWCoTC8tAIp0xjxxuOREAuYwZRnMADZCacSWSKVSaaisTiAPTCo4RADy8OwICOTGQaGI%2BCMRyIRwAskIAGpuOW0WhHVBUVUITAsOXEd40cKkSH00VHaJeAgmpgEMAcBRHFLEVDRJjRWhfI4MAQAWjGhnQTXQgrpIrFAHUSABrL0QTCqX4OTDoJZ2hMEM0pAxFj5ub6/ZhsBF3OP2sVE1CYL2S%2BFHADuqaOGazXSLeYL2NFRZYJbd71ObjG6BAKFQKS%2Bf2ZgNhjkD73hdaFw%2BFloAjl48Jb02AwDO5wpWP8mKC3PDSKyUWD8xCd0cHU2W%2BKpZ3u73swHV9413UdxzLKdK0Ya9azBI4DyPE8ewvedF2XARoTXPANynLcXyHE4ITMPYqDJI4ACVsAARTkABJSihD%2BR4ADFpXIv5pXVZRgkeaUCIdZNiDTHtM0A3NgPpMDS0nT4fmgms8PBED4MwQ9j2/CAzxQvAFD%2BK82D%2BAA3XDH0RZE7hOMx2Q5I4ULQNCVxhbocLORSJJxMz8RXWsrI/AAqAg/OFYDdhqJR%2BMbZtW1/LshJ7OQImwAANZRsHvbAiXc3cjg8BhtC8S46gYWyEBIAgw2QY9kCPF10CikNUGpd8HSUM1VVQI4ECYFIqyORVLQcIMQAizqCAIFIFBAUVGAAOmQHrLSoOJGE2ObUBYYUO2FeaUmFAwjC8JhgEwbaMMBYFBFuYjcvywqslud8pIncsoOrTdt2UzzgCZM6fPZfzAuCgiEPU09zwIWcQB0vTryMkynwsjkbLshcl0crCXPvO4QuI1w8CoAj0SsNEiVREmBTfZ4nkM1A8HQVUWwICAwhdJgQoxAiKTVAg8WAYknwgNmKap5SHTMr0BHeaJLSYNNHw7U1iuQU1kBTZEjnxkaTHZDQvu1jQjhYDAwpOHWUYcs6nPXeh9cfWJRC8cLmrFHn3jQMc6DiVViDwb81WVroUxG/GTXeNIFAyQMvgq1GY4YTCHBIDWvSYI5DLEOmRvs4N0cTshOyRZWjnoJh0C9f2VbVtlnY1m4%2Bsti6bkfV3FpIN3K/V/XzbRy2MZtnW5WAC7bRrhW8CLkuy/ajWGGtQh3gG9YMgEQmEisNeWCYL5Yj%2BArHdzEwElJo%2B5WdDqeeRP4jQBXn%2Ba%2BiAL6MfMdlpdFSaeDgVloTgEl4PwOC0KQVAnA3DWGsLZNYGxJzER4KQAgmhP4rBTCAHYaIZrsikOydkkguAJH8OyNEXB/Bon0JwSQf8EFAM4LwSayR4EAM/qQOAsAYCIHnB7egZAKA/Q4cMA4hhgBSA0MkGgVI4iTQgNESh0QwhNC%2BJwWB7s2CCAlAwIaDDSBYE3kYcQGj8ADUcIZFslDMxdGdFsWBLMaiUNoNhIExAvgeCwAo3ggI8AsBcSsKgBhgAKC1L7DsEoqwuJkIIEQYh2BSFCfIJQahKG6C4PoARKAwGWH0NhSakAVgLiKpNDgEYIbclMJYawZgDZhglDsI4YZExiANDUzM50aE1H7FkFwDB3CeDaHoEIcwygVD0OHIo2Qul5ESUMoqAx%2BnDESZ0bo9QZiTD8LMlp8yGC9GaFMoY8RZmLNGcs2wMwtkLB2SsBQkDNh6EBJgCxjDv4cF/qQf%2BgDgEcFUPgsM2C%2Br7T5lIGaGh/k9lASUtJRxcCECTrsRJOV1opE9sQSyOwuBLFcQgpYSCQBmDQZIHY7IACcaJJBon8HivFuCCWkI4OQ0gHiqjPN4K8mhIA6FoqYawiASA1jjWdOQFw%2BAiA%2B1nIk/gYTRDiCiSKmJKh1AaISaQDsQIUieMpY8%2BlVCOASmdCkZ0hpjTvPZJ8yQ3yBFHD%2BQCg2EAPC8IRVClFcC0UrFNKXYYBJKXUtpckNVjLbDMvtQw9FpBkFmASDNPFkh/C4p2AkPFZTCUaHZJSnYFCNHevoVoFYzC2EXH4MQbRmxeU8LhZwzJUB3ZFriLRWc/CjBCOSDk%2B6nACmxh2ESYpVhLBlMYYW%2BFlaQCCLMIk%2BtGFG0ziKakiwnaM1lp7bOQyO0jJcDxX8HYZg/iqGwUA64DaODCgvG20pBthS/FzTpDIRiwxdunZw3t1bBGSGEZu3JI7Cktv3R28pRJKI0XotgRiLE2IcWwFxHi0pL2wpnX2rgA7H3bqbWOkFE6P1frogxJirFsDsU4txXi2AwPWt7XOnqC6l0rrXRuod8dOC7ohikhDZSPzHpYKevA56PxEhAMhn9f70OYaA9h0DU7wPXqrT8gEMIGAphg8O/Jo7X3jsnUwq9FbZy%2BOYBNUqBApOUZky%2B1t8n02KaE8pkAhGUjEb%2BNJMYZHpAUbydRqt%2BmPwSjMAxuITGI4scwBewT%2BGRMCLEwVSTtnn3Nr03RpD1EUO/rQwBrDIHcMBtzBCwVegfk3vHek6IJaA33NVZQ15uUc15veP4zAHYvYQHBQKxFyLTUaGFFwQBabEGBpQeyGaOL8VojMGYSQMaEj3rRAm%2B51KvXUJ9Sy/1X9OBmGTS88bzWA1GOIMvPwkggA%3D%3D)

```cpp
#include <concepts>
#include <type_traits>

struct Thing
{
    Thing() = default;
    Thing(const Thing&) = default;

#ifdef REQUIRES_AFTER_TEMPLATE
    // Works (expected)
    template <typename T>
    requires (!std::is_same_v<T, Thing> && std::copy_constructible<T>)
    Thing(const T& /*t*/)
#else
    // Does NOT work (UNEXPECTED)
    // Conjunction short-circuit does not
    // seem to happen correctly:
    // https://en.cppreference.com/w/cpp/language/constraints#Conjunctions
    template <typename T>
    Thing(const T& /*t*/)
    requires (!std::is_same_v<T, Thing> && std::copy_constructible<T>)
#endif
    {}
};


void test(int a)
{
    auto thing = Thing(a);

    // This one breaks, when checking if
    // `Thing` models `std::copy_constructible`, because
    // the compiler tries to check
    // if the possibly-copy-constructor is a valid
    // copy constructor, which leads to checking
    // its constraints, therefore checking `std::copy_constructible` again,
    // which leads to infinite recursion
    [[maybe_unused]] auto thing_of_thing = Thing(thing);
}
```


Simple case, no issues: [Compiler Explorer)](https://gcc.godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIMwBspK4AMngMmAByPgBGmMT%2BZqQADqgKhE4MHt6%2B/kGp6Y4CYRHRLHEJZkl2mA6ZQgRMxATZPn6Btpj2RQwNTQQlUbHxibaNza25HQrjA%2BFD5SNVAJS2qF7EyOwc5gDM4cjeWADUJrtuaAxbyQQKZ9gmGgCCewdHmKfnBACeyZgA%2BgRiExCHddg9no8ngRMCxkgYYZ83D8/sw2McACr3KEzYheBzHbBwn5QkwAdisZIAImcrJDnjC4QiPmdkb9GKwPljwVDLjNMKpksRjjFUJ4RcRMEwANYKf54KjyhgzQyOJgw9CfKmE4nfVnc7AgEAANzEXkwtNJz1x%2BIImIQ4WApIpUOObvtjogyy1xywVCYXloBEtz3dp0hZn2VD9xwAStgAIpyACS8aE/yeADEMdhY/8cwBZZQhJ4513ugD0FeOAHUSLLjhABX8HJh0Mty27GfD1Syvuy0VzsaH3ZKAI5ePCShSNsBgGboI14OUKTn/Y360geoz3U6BcwBCVS2XyxXhFWCPC99D6%2B4dkdujEOowQPl2rGBY4VgBUBG/FfvF5Iy6JROy/as62IBsm0FWoNUAsNu2ZJEUQ5dEDTAp9PTfTEDy/X9/wQ0dMAnKdMBnCA5wXJcVzXDdzgxLcsJ3cE9wCPCYklGU5QVJULzVDVb3BQC9lcBUwPJSkaUhakQxeeknmNVA8E1GEZggcI7SYESXQfcDjgsLjoObOC2yIt0qwDIhjgIZ9gH%2BAB3QgECVO0zm1ZjgAgbS5MwuybLsyTyRpXY6Xkp4wxMABWKwYpYJhvjif4vAYLwlBvKKaUy44rNQALHUc5zAX89zty82zHQ7ULnWkp4OFWWhOCi3g/A4LRSFQTg3GsaxjgUdZNhZSMeFIAhNHq1ZpRAXYyQAOgCKQAgCSQuCigAOAIyS4NayX0ThJBa8aOs4XgFBADRRvG1Y4FgGBEBQVA4ToeJyEoNAnvoBJDkMYApA0C6aCDeIzogGIjpicImm%2BTgRvethBAAeQYWhoba3gsHioxxDR0h8ElOpjXIo6BVqLwYRh3hNK6I7aDwTioY8LAKdG4g8BYCnVioAxgAUAA1PBMAchHUWZ/hBBEMR2CkGRBEUFR1Bx3QuH0H6UB6yx9Dps7IFWVAbkyM6OAAWgXdzTEsawzA0Y4jYR3YbZrMRaAdgUgSYU6ujgzIXAYdxPDaPRQnmMoKj0AoMgESY/GV8OekGEORmVmo6gEPoJn93Ik89lPelmePhgSJPZijvQVWafPFkL1Z%2Bo2LY9CBTBth4BqmsOnHOo4VQNqN5bjm%2BoxjikWaNGHxtuotjXCXwIhhT2ZXjg8D74j3XYuGWXgxrR5ZJv8ObJF2AIAE4yUkMk1sPw/VuPvaOAO0h2aii7WvajvTvOy6t9IG77vWAhkjJ16TZp4kBUnoMWwhRDiGluAuWagjpK1IA5YEyQOY32aqQZ%2BvAO4IzJv/O0qAqDHC7gEHukg%2B4GAHkPEe1sICL2SM9Wew114fy0NvUgCApRYASF6G%2Bd8H5PyOq/Ww79N6sJ3mYKKs1D6SDWgfXYUVD5WxPhoIIjUOC7Dbi/E6LD6pfzuhAJAlx%2BDEExlsQB716GfW1lACxDDkyLn7r9SQ/0Or6wEIbE2BAby7CpObKwlgra6NfI9Sx8R7EgF%2BmYZWesegeNNj4vxltWFf1sZ9cJxpkDJGSOuLgh9/i7DMP8VQy1XGxM4BWaiiSAnWwrH8Exy50iEyNkE1JYSHEUKcS4mJBtOCeO8b49WFgrY2ypPGJMqZsDpizDmPMhZiylmwC0kJdjFyROiW45UvT4kDInkM62RtRmJhTGmDM2Zcz5mwEWEsOYllL2IOkzJ2TjS5PyYU4p0hunuPKZUwZwzanxBYA0vATSvxUhAGM45kzTkzIuVchZtzQn3PaT9QEeIGDSlKT0422yql7IRSsiJChmDJAUAgVABBMVfOxV4s2vzknBLuQ8rJOS8nMhmEUkpnzNkcAqV4tWuy/kIzMF%2BOpgKFCNMwM066rSkUoA6ailKGKuVxJpQkulIyIUTKmWc2Zlz5k3LYW2QgIDFzKw6eE3FmsYjWLYWo9BmDjocA8AwYxpiPj80FsvCAuBjWMNXt6LgGgKyBo3ldHeB9Zr7yPmSKokhFFRWcWSVR%2B1NFYO0WdC6oiJo3zMKmx1oat6rEJsQdIzhJBAA%3D%3D%3D)

```cpp
#include <concepts>
#include <type_traits>

template <typename T>
struct Empty
{};

template <typename T>
constexpr bool breaks_if_instantiated = Empty<T>::value;

struct Thing
{
    Thing() = default;
    
#ifdef REQUIRES_AFTER_TEMPLATE
    // Works (expected)
    template <typename T>
    requires (!std::is_same_v<T, Thing> && breaks_if_instantiated<T>)
    Thing(const T& /*t*/)
#else
    // Works (expected)
    template <typename T>
    Thing(const T& /*t*/)
    requires (!std::is_same_v<T, Thing> && breaks_if_instantiated<T>)
#endif
    {}
};


void test(int a)
{
    // Breaks (expected)
    //auto thing_with_int = Thing(a);

    Thing thing{};

    [[maybe_unused]] auto thing_with_thing = Thing(thing);
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVelmzm7rS9q_JvnGdXRiwjS9yIebBgJkNNykmMw9mMOBf_wm8kqzsnFNnf-9wqt6UY3tJrVb3o1ZL_ZigiZavZhrvwqZqszLudkGc-s-430XZ_R53cT2Uyy6K27iOsjrZNfVuSuMhhYLwbdf7Vbzr4seYdXBIWPpjH-_uTbfzd_exDocMyg9x1Zb-EO-yfjd12TDENZxkmGL4uer40d_6HVQ3xF2_8-to6_uhpM-S2h_GLt6tyu_Dx_y_9_-5E95qoRUVlAp9aFE27Nq4W1v6XZ823fCPMOvCETbHT78c_U3FF5RYp_WTLoa-TNmQ7pIw_IKeV4-72O932VszNHb4pDlq4r7-gp6GLyi1K2N_w2looPQ9q7NhxSccu36dAiqolm3gn18Q-gsC3u98M8XPuFvH_2rdFxTA148JdlXWv5dn1eSX5aaqf0tto7M6jHcCXLvoY4Bf-0m8WpNCdavxWd-P7-FQGgL_3REBrkM_xNEKQx_HcIXKZvpuLQRhU9_84u8OylWr7mD1cV3CCMYHDBfY9K9QXtUE4wDDDVra_oI_BHiKy_IXZMxPFj-bco1LaPfQjSEE54iYKcQafr5Xy1-1vjthkPwIq48-iE1Sxju_S8YKRvVqyFvcz2poeLCsCvsh-oIB-Aqbdvn2Q10WlPEXjDK_YAwUWocOqb86MZbRrm36HgosKwz-GtlrcFT-EKar1DtkVnW_WAdRhlFVb07svmD07rsrEGoYwrt4buNwBfQ9EdSTbGG16ao3o4cV523E_ofZWf9t3ZLfnpu10M63WoyBEx7ha_e3HNxNm2P9CvjPoPm-dJtFU9MV63J3u7oZfs0P2xZpwveiZmu-yCAUAtz7zfBWB6f4njPW2d5p45d1v37H9Htcra6iGI5jCP5ZTn7H5wpnF7ddE43hO8rO0MXdlwNJfU9rzNyWTQc32YGGwukwtP0KBMrCF9zmfyZNFDTl8GfTJVsj9oLdqntJUsCSj-igUTNwp6tLylRF6hF5Aexeo0LgXxkKyK-JHGRwAtrEDrJGLkBPztKguQxYoB-IdgPUTJAkkBqyNgGwAN9OQH4C1jWNQUz2tABaQLlAG92xKM8eMCdayiPAsdYAJLznBEAuRZeAJQaLC3jhC3pAScD47kwB0JGPAoBjQzW6SpOn-Jlw7dErqCZm9cuFn43Ad88NTmmJLs9AO1zrIxm1iepoe4WkHF2-ceKiPZSXvz_w8fXsutdyQgpQXvzm1pvCiXxVQJ7TRTm4QNEqFT00tNi3JHjUKOX6QJBOm0F47IpoyAARbytAH0lOMBlhmNHzEtNI7KLCLQn1CUhJMvWkYLhAnR3xwAeM0LIcRV5oHDCG6lCNSREDEFpkzud5VHUGjO7k6bUMaI_yQ8MxJNvw_aw3M3A1qQbXAb0Q6iRQqslpPveGh5L1RYDT9YUAuHZUHcRJeZu0bEswQa_emAhHQqkweASxeV-MQVK1CSODkNR59sLYtC7mupPeBVwGGnByLq0186YlXSt0LOAtA5DdBdFM6nHDVZNuRA9NZUZGWjCz-WEM4IZjvbQnWUy9or3N7Cn3ghqbaSwP6PHhq5z_uhmXGLYrrO65YhCd9mqQc0cYKqwmvYXvqJcoaV7QJyyNfHZ6aygbkJc4IQYICiZaPUytcyUqicKutCEtlkMTMxUhIW-hzjZAaj1sPGH9xNtnfI9Z0fy6SJGEuP7Zf5ECTi9XhoinZxyx6A3ojXm7AmWpL-Ft4RlcMOWr-6BFAQeU3QOgmwUgRSNL6U25jgOabW_C89DebE9Piti3KCHylIw2-UFGAKYk11amDaQ28XuVVD1xJRkalyftnKMQJwq8Zg3uh7c6iUDfXwDAbjSP6B5zSlV5RrWDgFsXTaHsOQ2a8KLqhijO8ovQb07fwWVnAXiAdQerrEtH6UPUNz1y4A3OHjZf-lQ8qZpQTQAont7zzwBktxAL84Qg04EiDPyYuM7CkAJIJlRzzwV1ZfcIlRWKxbURwRuWvLdtTcAZymWFx6Lq9kULBVkD2etBAYEVWBJYNgeAWml8dzEaVeQYVA0s0nUtFWUhNBULppwixDRhpsCXZdJlSXZ08_C5TI--HCOiFeqwb9TOjAbUer0SypOP96t3f4GRSjLmaiHn1yQ4oUYiT7Nb5GKppz4vAuhfWCJhR92uTxXXRmE_ERSMFMToFSazdaYizbuH14W8BwSv2ZYDNw2Y0khMtGYGmWTaICEc4Bb1lCiV5LcHgzflDiH52Bcvhqso_HSy9tmoWfuCND0mr-fCN3mP1p7jPtfy1KXB1Kq8Y7lhf6yvtzg9h3dH1CkivFQdy9dYrsnhkc5sO6OngNg7dtdYMwdXhzNvsSKwYNHkZ_LYcy7umhRPCrTzNFzhQF8YtdKfPa4godmn6qJ7Tl43YopQ5ztqB_ZQ1u6-wrcl74fsGBR3G2NbQcEkqN2G_2-vQF9Q2Rtq5-AA6hToXeoQ1KUYF9jr5w7HDVqKJdzZlRNGq5isV2IHbtyDm78jsuOjFzMxpdhsfx-ciH7EsX7Fc4281Vubv71n4HKU73JUthFr-DGd2GVjJkyJXyeVQiTNBjXAaIfrL57icrP4YnRc0mASSq94R5oU4F1f8ODFsVCXqCiSEYg8oS4KcyOhqWRTI-JkaHeCYYGMXybDX3ScATLse2gq6IFLCXwNT4PEA9J60Gl4KAM8TRPSAIhccIkt4JmpJQpjpIg2pQq1mS1ODnnqUYoCJZgEn6YN0mWwwg01LicAbYWCx_YlLc8RF7G9Q15kP7OURkkFZgbPJKYm0GBJIhCgJ0OjlxIyTYBE7S8numeaxzSKhSAwmpuipMFSd0HU_FTijhR-bYAugYlzeERJDb8AdnLJpFahE8YVgrCURdefvIT20qSkewF3PWbOgEJbL_mA-MyeP7EFO9EkRsW0zzeMEE5LYtOIygsNqo3lgYFbt3mAeXOzphnDQ4LmrHmZSRMXuWyJhaPOnM_KjUvoXnVRuLBHJ3kaiguJGj2pFbSSHhlSTKg5p594yG5Y3zd9CTQzZK1r0svoG8juZB5KgfO5FIoV5xIY1iDqc0gxlNn1uqja-6Zlzr1mLOo0khc21JLWNSiNrGjNE3j3JAAq9EURLjXBZ092pCinEHBVQxI-e-RXBZeIKhXAkW0eEJoMGGCf506kah9nBMjA9rmvhWK95rimTmdUZkiVKKV74AuGr9G9JlhZLLcuscmWNqUCo4qowkPSNjefV08kFg1b4Jn1zskalaAMuFKEoNtUyYYUYnWsIt1clxSlmzW0YaHY-SWg5eegTWe2JQu2AgatXNlihYLCWxQUV9YzKcvnPdGoXZZS-PjZ2A3rviiUufG4rAV6NccWcUm96SVaJOaxXXbRnXDVkJOUatDFZs6xBlQ1pyhjuK2dXshSdl3n44j0NYq6yMJbcOBYDnllkl9kU-3L-7I9Baq2qEguhvR8I3jXWw-O7MFNFjjitK_SVPLkUKQlhxSexCz7Mlta0LNpjsbam7BhH5CcwTHeiInCiSqGJ6ajRKuLkoDcmiHRswuDCqEzsTOfIe0Fndr6hsJL3InHgkfgqAXLHK_7e9cks5h1bE_3Fj7Mtwwe6FdnON3U-kEdS6TrbvrYRESkUqcmzYqU9ozri29dKX6Cw_E6MymQ0_p8PyEqvIydU4S2TtP19uhMAt5nBA60aUKo0AOxOd2wvK-t6XFmA2_ZcFFdUrEeJGhVyyveTfuBqBFU8hmiLUDKWTkTbO2KKLse3wIrWCL9MWxt1XUychnMo2ByAt6HExlP5tbD6TJ1YSbbMIe6xpQOwfSW3jPWakmnTWRHC3wok8OLpCY7Tu4F9uTj4iiIPsAwxfa0_WG0wv3hGV_xF8yGT1fjSU2a2eViWj7HspNG-gHDka0WL5yvXgi7yWXONTTZZ3Ks00H1TtF76XmzxLOxpvj97aySFWcaBBG8HLDnVEF-XqciSda9gtEfb-fPVcZaZG2vsG0_WlAMltrwoIalB0Z9FLP9Wj39k-5haeNva8n2WWJ7_6hk30Xau_1Evr_s4L93O0qsHMRaI0bx3R_L4Qv2T2S2Uu77X8d_NeKneXfYtdMZzRJ0xvgGWJPRv5mMfL0Ak_mp_V0f7RxY7fVrkfW9LP0B0Cr0o9L-8LVeSSHzh6uryA-KaPPmf7Ze_WzKX9BYNWwugGFjSNifC4ticdnHv3lKN9BIRTW3Ane11oLnLSzxTIb-ZaIPcaqp8x8U1C-Ux8qSrLXxb0O-kyap30KoYDXfdRDSclnd_Kvsr2VqXP8JA7CLN1oujP8MGxjfa6pn17hEYbqrk9FP4rXhO7MBQw7FPlnZ_38t29-G8z-1xuuy1VF2_4QU3DAn-vvmof8a6dv7s8mijd6Clq28if9T3-ft5o9wWYbVuE-MDEps0r-q_bREUKrfNXW8C7rYL_rVv43YCdM4LFZVvxj7HvOZuaqaCAbiv-Oe3qRTEIcrU_KbvuEzfzt0GVwD6MlmwW-y2X0T_05a_WOd7B-fmalspdiefplFv439K4v1dnZld1ba8-ekP7LZ53mHfvdLVK4cGgzke9PFP8H6tzDs_ASOh6N_m-AvhvzOvn4acSDhq_KXIP421hDRaGWFDvSnCPjW3L_9HgrD-_NTOPwIve9HxO_RZ2w06wePSsGc8KbT-n_JUEH9_0dJKnki-1bCgVwncgXI5ZqQXCW_bwPeQwP0I5FSBpf54bi1rRdjrj26OOXqvH7hGdErSrQCR-9NVZneSlUNbY7q2qSYmlZaAT9nga-8fPTAa13-vuCy9MFQbCAa6IM9MfA6HR4SWsbDPHZgxSJ2w-iDOVg0TfLOScUlFBVPEV9J95oEVLx4yVsNvLExM8VHUXKuG6KGJlBzkbiuR2A0TGlsP6FyCKgOk5iXm8bkiw_IqT5oxQSirPcEIFRhJ9J1TuFadq2iIjhz0nQt88mmL7kiS23R63nOWiKuh7rMTEBxpfsBl_IlTV7wKiom05m6SxWD13e7Dk8gYQBQXsytmAZFfO3fpYsgVIKGO6AVWktVg-eQN8my7Odlsin3VjYkM7ywqEVSr0Zt-jxPwBgSILQLoAzCh8mUXWJAM3KUuvA7AW9snqelIn7YY2NCI2ysruTW5ZKngITXYlhey8OCnrg7vTeW57gg9qv3ecyTgHCIr5SRGkpPJlzQCHtctSQTbk_WxY5IEjcvzDqScALKNtDbMt9S1qGu1PlMv9cfj4pozBm1mbRriXYc6eJ2QlrkygWw9yd7EJajqKtbad4fUYHsK4R1GsUCvTKinshY2iFiaBO056t5h2f0Knk7r6eihkQyqKVIJmsKHKabGNqvGx29kvkS9iIWMucJWuIWJWcdNFu0Li-btgMMVjfnMiSt6SoahW-lfqHNcVzUFQwvgtnDy36ShMLJcBnjpt1DOk_6S96ogUqhizAgj4kW0jwRYJjx7xKMxLSEoWwVeVV7L09AEhgHeRqX4NIv5qK3N_d4K1p8mmVAOtLktq6YPvPsjj-Be5lK8ilJvrXgeKdo4MJb4eEFbsT5NSwE-uK1k3WpHThcZR0nVakMW_MCwC-6wWpmgnG9P-eJFXlK6hlyzAogVfjH3mt1cHMXDagJtTIOlKGNVJYAFQiLgSv-coPnk0j6hK_2-C1hSUDr-pPbuzibcCRDajbAzSYWF6ZRQP1sSJEuZBcmB4Q6-hQdC68m4YS8zUKhel_BzUR_xkNKAhBrrpM2gY8lPZ8180zrSEowpdrmN6E5kvbjMrl6iqWKdBROPj2ZGazGL0CKODwhSJeq7awBcwKzE9hfSRmEKW85HvQ6JUlG1lGq4HSSsVh9T86YNvIIf7TI4zKf6bY_Caxjg6BY5KMKgJPcopfJ9P70AoiL566OuYHXyboPosRKDNc6jnnyEm7AjeYr7V91ra7kRsoR0MgJLDdXwsom1LjgGFWv7Ko5Jsy1EeszJhTEubzGZRVf08QQr16WPzXb8e-wBL7svQ2SBr24Z4o0YXGJk4-qV2tebXBbUx7KIcjfsDVznhWOr3D8PIzNkN-o2ySkqYl6tzwh6BOeYzd35JxbMnf6wROfhBqILAoEwOCLVcjFvr-u90N7vD59FahIivpZdnKefv40n-pyHM4Cdzo9HZAWubg_ml6LF6RVN7IzpTqdceUIRsdP8lbaC-DgMoumuhjqP7S3D0-g4sJLfK58K_IAD5qnTgnDj0Xy3t4c4IsrE-97gbqghnx24mm_x-8LojythAKt7gKDPXKbcETwh-uiPqAuZzqdlSPcpZUrSf2ePhq0k9xvrmXTB2e-po0g5BYshukgg9LM8UIf2_trTIEIyneKpBlmLnuNPO2P3N3Zl_Bko-liudSn7mxocBCidseJEQIGbtFgOVGtGkhTmXT-UbkLZ2Mm9BOTsO8C1_WcuI-TWFFy_DmXg8Pe9713DsW5LWiRM9QRHsBr0slOtHwlbG3Z37hZxkkHgm2A2pk6nmDm5YBkzKIUzF50DZ6xpNDAK5EcVCpWiQA_O2zSuejSXjlRfng93WYvurrKqZctZTVRSCFGObvoaubgB-tp4gUt1IV8RPVBr8TU5CpaRr3wdagmxmF61S3LCyqoxUtEzdyA0LoWDs8EeN-5Sp41edPLr2fSBcgTmMZztlLAyfiheJnFSxjtMPWGl1ZjV988a0wscLRRSiaCo-jyKE-CbvSZSKUVLcKNmNiAJGX7rs423qPPV1GTl1EjOlE1iFpOK8Yq2vqlFCF42PjgbExrIbzkN7xqm0gspciTjByPnVFYDTj6WSlx0mjPYqsVYyksgmVKlROiXvk6FNjFdVAtEWj2JU3HmMHYqndzB7Y2Z7Ki8yYEBJjcuc2uOYGw_ZMCI5k7snIbjpeES6SFbLAy4mPy7HWn5VoZUlOkLKs7oWPY7x8M9grrqogTUccmExvsJUvVvG_84dgxYq9FwgvmR_ALY_AfpA3-TeX2wSowVTssP8uc32qjf6Nlu3nDer_bBU1TfpQ337L7twy2-_WQbb_Lrrfj90Qfldp2dV9_1I__Mt3_ANfxf469-Oeg_a8QF_9tJ_8ztf7fQ-R_tcz_AIzcLPmXiL2lPhWE62Mk31a1f4Mb2Lrf4_7p1vu7Reg253-pDP0j-opFZ-zs_zFkQxl_pT6et9lIqt1nkur9KM9Gd2X3357lWtmA7WmrH09afXpK61ei43s6-2Psyq9_qV2hH2PwQViV5fP7xz_arskh9uvZ-a6JUfZwOOOHP9KvMXIIzjAVI4djiB7vezxC0CN-jwgEvd995PxH6QdwJ3xdcUTROp6-P6WCQhD_yL6iCIoiR4TYH1BY2fx5P2CH_fEe4IR_xE_h4QuOxBU8Z_5c7VgL6j-6r5tJwZj0sLPM-qH_2en36xNmcbxNB_XDRYJIfvXrqPHLpv5jm_vrZvv_A2h5bZ0">