diff --git a/docs/README.md b/docs/README.md index 17b7231f..3c71b433 100644 --- a/docs/README.md +++ b/docs/README.md @@ -95,4 +95,4 @@ To update this documentation, run the following command:

-Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
Last modified date: Sat Oct 28 11:03:31 2023 +0300
Page content update date: Wed Nov 01 2023
Made with Bumble Documentation Generator
\ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
Last modified date: Sat Oct 28 11:03:31 2023 +0300
Page content update date: Thu Nov 02 2023
Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/shared_c.cache b/docs/shared_c.cache index e7b90da8..b74f4c36 100644 --- a/docs/shared_c.cache +++ b/docs/shared_c.cache @@ -1 +1 @@ -eJzsvXmPG0mSJ7ofZVHAYLv3AdN+H2o8POioC1vVpZU00388LRp+mKc4nZlMkEx1aeb1d38ePFJMJhmMIIOhyHDrQ8nTI2j+czf7mZmbuRdS8hf/NX/B5Yvvpncwc4vJ9Hb+t+vp1d/+tIDw6U8zcPEG/vUm/uviH5Or7/7sXtDq80y8+O7u093razeff3+7mCy+vJ5eX0Oovv7dn397ofN4r+5v/DW8mYYf4fbj6+kMPr51sznMPq6+8PHrN36ZXv22ufjHh0fzrSFXV6Vk+y6rmyEv/uuf//xnvn/74rs0uYb53yLcwW2E2zDJTw79hvybJy9Ivk9F9t3nu2qEWb7T19PbBfy++PhmM+iXjz/kq3x9+t0Lsbwxtbr8z/njs1t3/cvk9u/f/Tnfln7x3X/9ywJu7q7dorq5yexf/rn/pvIg5sV3obrg7SJfJA/0Dq7g9+/+/Jc/r375jVuETz/n665fy1Pwyc0/La/DXnzHCDXJQBCQNE/cBE65NhaMEt4mF7778z8nL2gPv5nt+83vvn/55tfvm/zc+QuZR/jTH/7rX/74h//+//zxD3NY5Ad//EPGzDX88Q//73//v//P/5X//I/v/s8f//Cv//OPf/gf/993+f1/+ecf//TdHkFNXpinoooyOaKTSDLLKEgLKnrmhDCKa0mEXoqKVaLaC+M6Ub2ZzDJkp7Mv2/JilbxMvvB/O3uw/5bFuStxug9l1RuadnLJbdFJIyIlIHkImgfQVtqopMrPWSIixSy6f64+uXc7uXF3g91LqFHL28nSDNfTW3j4spKCK02sEdba6o6UPfmOXj8aeb2UzP55OmHA/3Y/d1fwenp/u6iwT/OsGd7Z4On+dvmZv7gbWAKPL7eAjMZXX966xaf5EnSys+u52dV8DZNqu354sFzQf5rPwgpttjvxTfcBpk8MVi+LjMDJonoZlkNnTUac58REY2UwXiuhJNWExkAY9zpwubzH01H58+OrbeFzuXWdI+BDQ+9Dqr3AZWD9ylK6WUSVfPmOoF7+XG2F8+k1fHwZY37x1fU0/D3P182Nu43V7VWYkzVfy0+X13+Xtfqv8GG9FW8NUP0+sQuiPMD6i9PZ/OPDdR9eq77IqivvauzHX3y3NCU2F330bV5t2/Tpt9/Opp8nWQn84JabffVRUX10z0/cfHSpdbIdAdWHZfVzasadV7C/3Xqh+pKqvqSefunDzE0W84/vP7kZxLXM8uROwvKN6pv6zys1sQOO9ZTd3W30vNwdffOZ9ajV9E4qWLjr9Svby3zywlZ3+NQ8ejzGKzd/NLPL/ejQzW2+tAHI9hcrTMhdIW6+mAV3NYP5/JWbbT/emjDK1rbS0e+/X3y5nvwnxK3XlgNU6HiyGJZr7rULn2C95JaP8/q6eTudXi+/V0FFmcPf+2UasoBXQ/we4G61D/r/yIL+y3TxQ17z8eH15YByvyT2Dbh8uBpr+cLy+xWypD78/Qdo3VU/H6olfn+zMjzh6yh631LbHmV6PwtQ3UCegqdSMfuW+Orr09s0ubrfqJztZ8tv2sO3f/ibeVvMarjSve5quVFUODT7b//RKF+n5Ofbz+56EvcP+2iGWIVVtR8qjwb/d3d9n3fBDMHPec9+Obv6/OiV5VgVblWDn/t4rI3V+3S8Csbq6To4Mt47SE+HqkF2zVCPnj3aJ1mFbN303vJ+dztP09nNZswP06VVvPX6ctAK7vrpjtN00K8vPL5XvX8HnVWL7uoqf/2nvHNd57/rzSxf4vvZLGug9evLQcz+TemJHq920afWfh6gWgx6L9J2DIHlmlz++7/gy8ODB/X36LdxsqZDLUd9A8ndXy+eDL4cs1oTjYyux2Nu6Neafe0fmx3E9MGxXf7g6tXHP71aHnIvphsM9aCCuTi4ahsM89eZu7t7ZG7wamXs59fNx/t6d2qfgXZ8tF9h8Wm61MZct5L4lmp8n39SNmV/guu71Rrg1RrojiNWI9qmUGtp31d2H2m64I7wm0eoE3RNBbtkTdW41cIwTaZp/7jvJ7dXGxC9BzcLnx4LY2kSNUD5noUmlitkrwJ+/N1qN63A9246XezbAoVsuIceHEA1XPL7Bpj/OJveLy1qoQ+aZYeGeSyQah3oOmGuHH95I1xZ5UtreXq7++oP7rqyuNdPlyNX68HU/cCGI2f770O1B+et2E0qrG1dRC4Nqrqf3+wiS4MR4s+3j0dfMt69SvyU0bNdvXuBaqXoveq81QU+zO4fC18uFUrd0n468PrRA7SkOGhPNhrjw5e7vIjvb5ZjLZdL3eZ4cKzHnLZaNbwOVJk/Vbxj9Wz5lcMm0/orjzjD0uh59MpyEHNMFo8H2bho80b+dKxqYag6VD0eq1oAK+UwnT0ZTJGDxuvewd5BuJ/NJ5+h7g4VPaZnHw+62rCr+3w61NJIqlugO0NtP3s09Yq3m4JHz3Y0lBKHTc3r+6vJ6vH64S9unuF0tXQLTBb5jp6+shxTHv6lT8asvl2FBmCFt69PlyOpw2Zc3UjVw58WN9erp6v3l+Ppw5I7Nt6TsZYLYf9qOjbWu/niyXD2IJlbj/H9Z7hdbGb4t2wouFg3s5ochu72gA/xlZdpGdaqnmUUb6yv5VD02ITuDPUKMmOD1zPIpsrtVf58tSKWI7FjE7B3pIe7Wg+1uquaZdBkrEe/8Ogy2Bnrt9vlr4ONbwbiI1N/OWYNZzgw5o+wWO/aG//oPO9Oqzs8TKNrRtsMU8U7Xn15B/lxteNNQ/XCcljdcmqXw1azWnkQluhbxvXySKYZgLdGqiC8Elt1R8sPvV7FWJcDLv2b+zXlasDfbq+/rE3k3/NuvqT4n9ffNmSf/3b726s/yy+8mczvqjDsauIM3e9Y3f3qo03ZVMgWdctt9WdnlRp+UCd/xW0VfQ+z/IH59uOvFM6Ig0g7NsiHf0zyQvg8mU1vbzaSO4zbtrHkajR1kGe0COJXA+mDS7RuoM17X1/aovXGHGST7cZ8DAXb4k7X+8eDm+uAX8SSgyTp4Jh79iRLD5L9psPsANjuDfnsH3HHl7T8Oj8uq4ct4vArj2Uljs9qgzF3f6g8qO8fxtio+byJB5jPp49tmodXl8Op4zPxdLgfJ4tP9756ff50xAYL5OmIT155LMpqgfD6vWDzYPl5uy/Utv/zX/cvSshxED1M9ZoAbMeWSAVrXi/MjSrcmCKUsONbb7U9rglZFY2r0nRuFz/Mpje/QFpFggk/vr9tj/L6fr6Y3qyePBI1JeKgwXZ0pB2sUiIP6s69Y/0w+f39YvZ+8p/rW1kGP+t3m+2vv53B1a+VAl19+zDPPPTtOzfbMKa1OUGJaXcP//t+uoAbWLjVt+1B2r/32+/gZvq5uji8mrm/r4xCugyW7ncp7R0ki7Ci+h+m/zZbBdlWQdO9RtveASrvzofp62mEZWx9NcaBwGn9GD9lDZ8to9UI/CDN3hlhnTGzgdb66WOYruKpTWZ3/2i7UF2GUxvBfjPem5n7x0Y5LX2hv8Lt/Wosddx0OTzWRtE9QJA2BvJmuGpzyfbx2opdo8i0Ff8m/F7tzVu22mq0wz6Tg6MtHkmrGnUD0GUYdj+HOj7aRl4Pg9GDrq0Dg1UE4MEsfjD86Srm2mTpbwZ6mwndE9/wy6wj5+sR+cFw9+MRf3WZEvye72S+wecyytpkE6i+usecpsuoKtu99urP1xgaXcZJ+e462P7Yo2wKvS+E9Iu7vbqvfB/r0OfO88cLeRX83L2vI0Psrl62Nxtgd5C3n+4OBlRXuR1L593ujB8fZidAlj+wemNbVMvI5xPTucHYX1M8V+PsRWWrcXaEtwx2PiHfDUbMu+jCbQC/GmqvA6PtULv3t9fkPT7omy+37mYSVuHK7ZtU+5z8x8f7mgPyDtL6Bh+n5CzjoU+2nuMjP73FvdHQdgPtSnGvZ6/dkI9X7jIIegJuso2fLe7Fl63fu4p8njvUzi9ehj2f+KqOD/p1djcPp7Mt8kqX8c5scTcf+EkspVqLG8zvvvnzPKuRz8u0t60AEl1GSrNFfcGrZss1LKqUr0fXlcvr7mqEDq97768nYeeiannRFnPX6qL/PplP/OR6CZlHl9WdXLbB5X6dxkmabABVrXbbYkPavcBqjTYFUrUR2BYbQfOr7QXQMiRsz8DtwevtAc4yQpypX9dXq3y8FeF+fT+bZYtqg67tK1e7je38woegugwonzOLm62zIWrkavvZ9TB0dMH9wJFnSrTmivugs9pzWijdptdrAJ5q47EXuPRB+OxNOay54OrPlrNsGTV/EuiuGeFxNPjl/MtteBKdpsvw+ZNUpcajrjj+4Zg1XUbSTx9/k0+7svXjnvtfplq1wOyB8d9/mS/g5pCQ9uag773Ip7utPFOq9pLI+i++X8XZVrR/GVM3jTTVk+Dz0gf96e794t57mO08/RqBpstou200RceukR9uvATT2Z4r6c5+TX74b7eTxZ5rmH1ZV82uUeXeTzNI3rrw98rXvrnYnqvY5rvzk8s8hBzyL8g2SXx7nVfL/le3Lqmbr9TtuOvaxv7t9vUnCH//eb5NS93tK6h8MavxacvJeZSYsMwiqMbK0D3MfJd5AE+y1Zpe47fblzFuDV65TB8PX61T02SdtgkIbe3BWjS2V2uu8HZ9jvTD9Nf48GTz7j5X0jKloJG92vaq1ZOtD62uppoS1xrn6nL0X93dasRliKqJtj3sfVwNuDTZ5q+m8UvlLV8Nbv78z38uz9dX6vUKFhUKIf42W2Vq/AX+oXXgwifKPGS9JIWTznFpY+JRG8GgOpd4oWzd1dFZK04/M1gz+p7TiZe60vKA4pfNkdrWZxNX6L3Eje2e9mVkPwa+W2uFS9zDzgngE+RTh95ArVecckW5sITp/K4nKlkpo42OakRvS/SecUS2MByfIak6RHPuKA1Ea8mksdJZShlx1nJndCIREd16P25/ZrswJJ8goToERx3AO2cIF0x7KaUnxBkZNPj8XKFF0XpPPrF4QGEwPlVMtfZFZI45FcHRSJSR1NhEtBLBJhWktojlllhuVMqiMOA2kkkth3PZVODglGbBBCOcicQbAdzyaBkjiNK2KG1WRaU0nDaTSh1SQUVjHDVSU6ZABEOSZlIIKVhMxFNEalvrtl0Jn8IQ21I6tbwMGGGcW8KC1gaEYZJzKaO22QwggMhtjdwT6kiVBt8TRFSL4UATY5CCJsEwoZIj3HpgmjvJqZOI4ZYYrq9oVhha64VRi8u8gcrEnPY0WBWsFzrlJ1aAIZoSjrhs6zE4q4peYbg9T1i1vMx7svQYOOHBKB+Iz/9oRiIEmWwcCa5FfzZDq8qOheG4nXDqcOuiSFEo45jjSlrjQAsCjHkWLE8sjQS3Pdq6rYuLlobd1gKq9TJYHpiKXHlPHTFVCCIwpnR+ntmbRHuitT1xao3bwmB8spzq0My8VowJlpSMBIyjMlsQFAKRMr8CY7EiekTzyRWXS4PzyYKqw7NVUXvmrXVMJGGpldyEKKxzLmSoY3y4tXXRtgB4YTBuLZ962xiUAuoc8VGrxI2zVLhIDMtQFmgbt0Zvd2XoC4N1d4Krw7t0unIQM6ohBuaN4ymkyJLhRHDr0ProwJbeN21PuyQUBu+T5VSHZpWkMIlRKZki1KmkAxDhlCeUuuQRza3RfF7PjtIwfZ606pBNKAmUGW2UINJFS7Mt7WPgSoB0RjNEdltkn9hHpjRInyimWoZIidO2Cp3YxCn3nnhiALwBL7VVBrHcliG2b2pUGIxPkFBt3nAiIJyQVXtN7RSJVEgrlNNBxRS0QgR3Y2c0ba5VGJrPlFbt6Q7ngsw8kFhGqUzAdYwx2xsqWxyRRcwhaovsyzR8KwzwlxFibVSGu5CE0J6JlIgk0miuYjCSgUkEmWR7P2AXvQkLg30nMqtFuYXoiKY0Gea4Tl4ylwijTHHCWXSI8rYo76prZmlI70putbyTZEtGRxZEtNxqybQKQjFNrQhBcrTaW6O9g56upQG9A5HV+gk1EaCUFSJv4oREqVJ0iZtItKVxNDmp3zx+eUKz4dKQ3pngavd0Ywl3KUZpknZaucCpsFIxUtXWMHhuqy3eu+2FXRjmuxVebQ5sMDZ5iJZ4yQVnjAvpwUHgznmf0IfeGvcdt2svDfkdi6+Wtebn1nvBidJScK1SCJTxkLd/EBIEYr8l9vf3e8mDXeWLbEoUrlP087e/n82ms/lDrdfCkH6esI7kYjFlTSIiSK24j9SCs8ykQINgeix7en/nyZq0aP/alaXkM5InC6p2n5Y6ZuMcRLDSVmDW3EC2WcAbmTSe+21vo9Q1wN5c5Gt7oP8FXx4e/LgpiFWwidKt9Op3cuUU4SZSRanRoLj1gnphrRKBCGSlrZFf10R+/9y9geTurxdPprA83HcpuzrUe6OkA6t1ZBIgb/yECGkUSdpRDXh2oj3q93cCr5u5nX7DiP6LyLD2BJFm3oPgPnCaqHGUAs1MVRhniFcSPfDdRJkOzuDebuKFgb4LkdV6H0EG48EaHakTglSn75OpDuRnAhsZYrw1U90bLGkwYWVWTjtXXLW5vQaWVrr3yTNGJAEiSFRCZ5uGUILnl1vv33tzOxpM1roPZqnVJjqTW2381HLCIyHBcU5tAMeZ1VFGqShhYTQ+xx7RvvekQfNZK3ND70hqtUiXzCZJpBU+Iz0p55TUKmWeqi1LCdlpa5ulnT+tmrNVD6vi0H2GpOoQLUgygvAUg6CJcCWYEUIqT8EbBwLzGS/HNFdPlo/fZyVbdXJbd8orDNpdiKzWp8goVVoaHr2WyiYNDgxlWgQduA5ojbfGeBN/2P6LvL6e3sJX+RQH9e4kV4t4rhLP/BO4z2CXQlML2UqJ+T8adMCT/hfxou+/yM+L6tHqKhOYl4v9i8iwbhUkCSJqYjyRRGvGg2ASVPLaC8lkwHOoF8kd2H+Rh0flOtQ7ll6t/9Fx5ZUHorINn//Nuz+JXHNrggeDFk975DfxLRyZu3nByWGdy6+W0yrGPTMEHOcBlMjPwSvFBM/rQGMPk9bov5CwSlsElxLjkSozJAnIGkNrpUJMyUmtCeWeeksV5k+2XQuiQURl9adcS+ckGdXmQnIWJdM+Wkk9N4mqKJKPIboQhLPIZ1t7cPYWQ3l8keo4QuVGfjedLtaOt3INmPMFVpsLo7WjwTGSt2lhjWZEkIxvIqLSVPix2OtsUKc2ENdnCaq2hm5V6Ih5CMxF560GkpzSLlrLePQK9+vWeG6QrLRvmuY/zqb35fUZPFdctTkAXETtgoiG82xCJ02pTilqxp0JEbDfe2tsNzhb8HWyyrWqT5ZTbf9BqoKRAaIg2rvoIxWCCAhAjMhAx9yt1p7COu7zw+R6sTwTEJfdIj9Wrcqmt7uv/uCuqy5866fF4fwCEqxbAYbSkM1tI4XPgPdUWOIIZVxqZWh0WL+utbewTvk2nL/JNXyojs1MbxduUnl+S10MlxVmrRc90kBBc8+loNbkJ65qZc90jF7yiHZO63VRp7+bTeWyTj7En28LXhCXkeKROkk+Bss8odJQYhwlnkE2l2RkVMBYvDM9roS9hX5OmcO/TBdFL4aLCbJuPXCdZOSRcyUT01JWrnklYgwuOes41k5qzRn2lgNqNY0fZvclU4bOBVirD4iliVCtWBLcA+joBLFCssS19hFPrrb2ANVlhzydvvWjQl2b58iqtuYACEtjZr5UZisnWc0dgLGCU+e1w8ob7WOsdfl+9TP14ctdvsT9TXHo7kRm9bV+GRE0MA/Ca5ASnDOJqWg4FUkRjEy13rvrsroPzljBXvxz5VXbeUlqaplkEL1IEIiXoCwLgXogSVFEd1t08zr329vZtOopu3pWHJDbiKa22wAHw3nGtpKBceCaU2WTD8oqnrGMfsbWO3IdGXrUb3NZj/PRK8Wh+Dxh1fdFEgwgUFCae2sZEKjKYVgjYmTAMPO2U3v68VS9mcygKlwygXnZ8O5EZrW+QMpZ3rElyCSzUS05d4IYwrgw3HuJZy1ao7zOpft4xqrA3upk5HRWOMw7EVqtlaKiNZwFkqFuaSBBkpCpo/fUGR0Mekda+7zrhPV4yt5BuJ/NJ58Bt/XaHjGnCq8O95RazwUwJqlMJjFqgvc2+MAjsGhxf2+9vzefutWg1YZVNtq7EFmtDRMs8CAkd9IJpxgllbOEJGsoTdLh3t4a43U5GjsTtv2sXK9gBxKrryfNk03EapoiKPC6qrfLMx8l2viI5+cuyUUfPSu5BkAnMqv1fjsbDQ06pcCMFNxGyqoj/1WGb5DaI8rb2uj7d6Xr+6vJ6vH64S9uvni7vMWbm8ki70hPXykO7Z3Krhb1SRmSWHTCKM2y6UKoDbo63h9Shj1mJ3ZkvTyZuWqOfpnc/h1WruGvT4vDegcSq61hoXWMgjECkO0WLvI/JjkSMtgtJQIjRK0Rvv+ETd18VQ9/Wtxcr56u3i8P513Jrb53QJJWWrDcR6hOlEbOqaCJQeBeYse7rmz1Y7NWNtK7kFlthVLQxMnoEnVMeUO0ZTwxVnkXJRWYbdge5fsD2cdm7N18UTbQOxJbbSYAKBmFIYYTYhiLIqPepkiD8ZQmg/ZLa6zvTz1azdT3n/OHN1f87baaDXTBbNDemeDqO5eyaIUOoGOKJHmvYtApakGJUiRh59KOYkbb07bpN/jxZVrAbPUsj78cfQLz8pDegchqMS49rZodRSO9c94Hr2Pez1VVREBJjRjv1OuyM2GvIOU3l3ORx8+frwJ+5UH8fInV5y8qTpmSVTkM4NEEXuW+MKOSlA79ih3z0L3z9bAnrSeswG28C5nVxv6rzduADTZDXUbDlIhe6SCpkz46gijvD+XlGitdyKw2/i+kk1WaokvMhBC1l+BTDMry/F+JVb46jYzuzNhvt6t5yJ+8v8nvQFxdYd12sDi0dyq7+tx0r6yJhBJiOCOBJWtj4F65yE2kuLe33tv3nz0/MHM/wmJ9DOwD3Nxd5zmZv5nMCtzdu5FabQ27bKkksFUNO5Jtc8GsM9muyaBXGqTFzJfW+/v+AwWH52wzWW/d4tOrL+8gP65yrqeheqE4yHctvtqTGcKKQEM0WnOuPfHR570+WcGll05hhvolPTHLyatcCu9gvvIVT27/XhzcO5BYbYaXScBVVaSUM+lVFJGrDPjItNMgOFYovUD8aGu+qvlYjVrtR8sPVaU04bbAFuudCa628qgQJmX7JXnrCRGJWxBSeuZI1dVLBcR7S7yL/TVHVtP22+31l/VQv0O4r76+nMniwH2ilOptEw9Ki2hVBFIlLIaMZkjCKhWytYLd1VsjuS5dY/VnOS1vJvM7twifCnSvnCKi2hOgMjjrWQhJGypsfpNKQyJNSWijACOdrTG8v5XU9gSVexCunXBqexCpQL00zDlDHJGSSBKzAe2p8aCxfvkJuK1LqVj9KTm3qq14aruyCOeVrBodAs8gdiQ6IozJlK/ydkSN2G2J3f1lnr4G1bLgY5jlD8y3H/8E1yUGaM4TVq097E1KlgdKXbYcgtYu0SCodoIJxijuyd1EZI5N1Yd/TK6+v/08mU1vb0pkeh1Jrd5qTlJEAJehHjwQkfK/JolM+yxREk/cd4z0pWPp98XHN3BXvXQbvjwUNPvy9TVE+mlSqz2v5jlzQIh1LmgCXmYTJfioWTRcSoPeutZI30uB6uasynMrGeRnC6y+97hj+X+BB5f3bm2lsopIw5lN3lCsgNU+tr43WlY3XZv3vr70g1vuUcVBvVPZ1e7qErgF5qilTELQ2WBnMW/nihhBA0evX2vU783xbDdz5boFO5Zerd8whigrV0u2awynxNNoUxDaEiAWJNozl9rv1ymeH2budp6msxvnN+MXjPsuZVeH+sStjc4opcFDDMBZiD4IC8pYrrEKf3uP495UiYMzV3pS+Lniqs+f0o5orqnijgtmUgLqiYQYUxXWxPyp1gx1b6ZE08kqOUjUoeRqTz5YoZVMHriT0RvuTEiJshS8oJnHog3Tejdv5mLYvLB+Xhy8TxVTbaUgQ4ihoYrjJ2MIlQlEsoQZwxMwg7t3x/b4aoj81uFX0B7vRHa1fQqpINVRNcujTIYIwT1hVHCRJHdWov+lY/9Lg5kr2W7pWHq11noU3sqUhJHAiAiSaUtl/m8goaqMiMhva63Xp3NsKpu9nU0DzOfTx7VZH14tDvJdie1IZbhEfIiCOUWVEonlfxkwz6XNBg+e2+yYmT6dtB8ni0/3vnp9Xjjcu5Nc7UllrgTJ9rtVIJVyhqrK256XQH6RiiAQ8d1a80/n7ckraM13Irta73pURgjPVeBVEpjxkhur8h/QnCiP2WBtUc/r85o2D4pDdGO51HcRFySbIcxo6rSQSSsuiZWEEOakTojWtmgV9fvM5kGh6eYtpVPr9yaCOGJ0tiaUMlJJne0NEr30PIFRWPGnY7/3g1Nr3VC11LSsU8VUuwt7KUPKZjJVVolAPAsZy0QJH4WKAetvtrYZ6hnOpgRNkbVkW8mm1tL1YC1X2oOmMUUanYzJu+SN8tQGPPHeegeud0NVh1KqdOaqcdjLGH+uUt0WP8ymN79AKjD+eJawas/zGJ8NC0t8cCwalTdmAoQxYWWmdBxPrrX31NWrzO2pen0/X0xvVk/KdVacL7DaE8ekKmFPhbXgJQskBWDKM+8oDTw5jLK3xvdeYR2drpKDjF2IrPYkDzFOOq4VgCPWWpMyxJ0MRogQPbLD9n6NI1bj1oT9MPn9/WL2fvKf5W3cJ0qp1s/BkknBU8pc4kwyy4OXPHFg0kG2VBDJbZFcn368PUdvZ3D1a1U4qTwgnySk+lyPVCXyETA2MCqTCoo5Y6hz0igVMNfjgmwxT9Gdm8H7csu2niesWi8IGKo454ZRRyhI4qnhkXunlQsiRcT15fbn/30/XcANLFxxeD5NSLX5SVSKZKSiIakoSRBKEO6AKwUyW9OYhdp6f66Pz25P0Tu4mX6u9hp4NXN/L7Arzlmyqj3hGyxPxFSeammSJo5Xbc1soNl6zjY1no5pjer6CO72TGV68+HLHXyY/tvsujxEnyqnWq8GGMWidTxFSZlSQhmvAhVOeRqFQK9GazTvbV6xd5Y+wO+LD9PX0wivrqehQAv6DFHV1gkEGqKILNvPBnzeqYXRNlilozZWMrSfW2O6uWt1NVE/gYt59PIQfbKgarOepRQaSAiKMxvyNg1EWmsEU5RqYOivax1dabLxrPG1CRasnxYcQexEaLX7duRKgzVW5M3aJKZZpD5wA1p4ThjWLW6N8yYuqv1TVnQksSOx1fqurSUWLDU2GG2YtF5bkURKvmr4kRDrF4mYbybtzcz94826SsZysF/h9r48nHcgsnq7BahNXjiqgDPlY0opKAZB6ESMQIy3xngTn9a+CdtUgikyUNOR1OrrXVKllGGMaAmgfcoGe9X5BggzQADPJV4kErmZsyqv+EdYrLvDFejqPktYtdVzNFMhJScNROmS5YkGCMu2InlPNxxxfUnmmd+vRlmWBdjqJFAcvrsRWq2lEhglQVYlK6lwMj/mjlGlWX5Gg0OcXxjni0eWZTV1JQZ4uhFabV0oDgKcIyHv4RnWMsjguXBa5wf5L8YuW+O8vrLRwSnbmJZFwrwLmdVG6J11XmthQCjGUra/KZFKEukZEUonRHlba7xJDvJmxqrpeGhYV2aj67PlVZtVxasdXEcuBBM8VdVveAjCKK25kBSzqlrv4U0S3zaz9XY2uV2sRv164ZfzXybz8mDeneBqM1QsySA3QlGhA2OCAdNECmm0SoRb3M3b4l008If96ia33/+eN6P5pMAA0AkSqj39a4kDIoM1ITohkzBBkxiJ1TbJQPBUe2t7pEEmXDU/pXeqPFlOtWhOhjoqNUsSaJCRUpWqM2SWMZoo+kpao5nt7jarP9WHC6wkeUQa9V1TnUmSeCIdU9k+1koYpzMoIQoTMQrTGpl8V1jbc1FqtaZmQqnNcyK2as9OLGXOhUCYYwGo8sxS7p3DaiCt7YFdj9Iv7vbqPt/LT+42XucL7TwvN4nvDEnV17cxRFNvQ4Vhl6EswJigLCNRaSEQ0a0RvasFj8xTyel6Z8mq/qSXJ5oDScESSbXQVLFAiSM8Gxigsb56a1TrIzP19tPdzjWrsvirh+Xh+jxp1VYAkVYJVh3x0i5GJfPWnc1mrZROWnnsHNAa2XrXFXp8rl678AlW/1b9NvMHVm+UaldfQoS1Vng2U3iUZJntAdbQZI2gnEcWmfQCT9W03t1PmMBrN5+Xur2fKa7aPI+UonWJBJeCSo54HTOvzLaLFJwwZhDbLbH9JNTVarIKNs67E1ytPZMt9BhC3swZF0KYwK2WRBMNQhmH9Sfb4303ctBg2qa384XbxHjLA/r5EqutCeUYZ5opF1XKNDRxmqinKTippNIWM/daW+znzlfBm3qnsqutK2wijUopoIkToq2niuqYzZqqtykl2Eum9b6+e1Tk+My9+XLrbibhV1h8msZSN/eOxFZ7howH53RK1MWgDJUmxIx3qyIVxnLEevsdvv2kff97gLvlZd5BWl/94bXiUN+9AGtteG9N5qyac22qx8GJqH2gQiSa8mcR/239MbtZyMenr+hN/mx51dfcDp4AAzBBcEKZ18pYqQ1LebNnFs/Ct7Zkzputgq33DiVXe3bYcOGUBs0speBs1JBCNuaZ4YEFjdW5e/BBbs9buUkv3QmuPqaaINsvKrokEuN5Y3eJu4x/IZgNCbO8e/BBvp1N82CLL4VaMB1IrA7hmZgaoiUNlhKrvVR5f3fJSum94D5g5ncPPsjH81WwFdOp7GpRr3gyWgkIVqZohWZcRW8IcwSU4VhNtjXqd8scHJ+5r86EzcPp7K8zd3dXYMPrrsVXb8N7FgOLDLwgMmnveEpU6BgIjVwj9ttin5JjCdhbs7eqFPx6ehsny8ssA+ObQMrumz/P384mn/O0PbxU3MroV7i16yYbSEyoKGMQxAkn86KRwbPkfKYCCX357dfNsSTvc6Z2usg3B7HkldOveGvP+zOnLOhkVVVBUaoIVCbLnVcm+WBw7bRfO7vS6nBy7/31JJS8cHqUbX0GHLjoNDPZZHOSa2YlzUqoyvaUAiJaau1XTQs7u9XM/vtkPvGT6yUFLXfd9CrdWltNJA5E6KoRkmOOQl4vzLIowXGqOMad+185Deb012mcpEmB9L9n6dbqHOWIMZQH46jhxDCTiKJWQWDRSIunftuuHNsi4WZ3FlcRK/QKPFkw/Qi1bp0IEo2wJHHLlNCaZ34TnJYiJKldSqhhWq+TFgHd5lNavBegL7HWrpVAEnNcqxiNckwEFgIzSmdLzCci8eRa67Vyhmfn4KQWzvp7kWltZQpmpEqRROEoo5mtpOhC4lxk3m8NRcurPWdpUWyh2ZT+dnv95YfZ9Ob1/WyWL7YhrYUumf4FXNvvwdvM9Zkx2S4LhjlLk/NCBJ0kBA64flprmc5nF71kvUm1ttq4gsxeqMumGFOOUx1Bc5q8NpoQjSulV+6ySWBClt8pd2kj1toTfMo5m0BTa4lxMUqwIFJm+YJzLSWe8WhvlZHLzGrxVL9HydbWqWGpapsoGPggojEAToNh0ivFdHAY6+/TDquZ1tL5fj9SrY1SWhJ1iJnfexGiIsFrCEkJm/ULJwm7YLTXLS2OwTWdVOT8j5VM/yKuraEDRCWpgk3a2MBNXkKMUEWD1cYEhye0WmubC8wv8v4e5Vpb05tGKhJxzEUbFThukgyayionRmiD53fbrhbZIlVw9ecnuL4rMMXldEHV5hV7UI44VZ3LZSFYwnTyPr+kJWdK4OnFtnjWLabp/fR+FuCXaaiaZHx8Of9yGx69VBzGuxVebawQrKUhCMoSRMYp9zwK5QMhyRrjEfdtcf9EWI2n7vX9fDG9efRauVUZLiXG2miGCIJ5H50RkKiVXCohY8rWv3UqcmTR/a2F5YzduutV+fZYtja4lBhr2bCNAZiwGfZScSujI1YTKoiiJDCGfYRbr4UWXsIDk/j+y3wBN2geXVaWtTE8y73LDIGAjIQro1QiRCbHLXcsaIKrouWqEI3OZH+6Wz8tDumt5VO7p8uQWPSKSrDZnnGKRUg6SME1RBOwDn5rn02jKjMPs/MeFos89rw4FJ8sp9q9mCpGPDOO6OBCUMqYxEPVc1g7BxH34tYWSqOjMNf3V5PV9dcPq65i+Z33i3vv84ceP119pjjAX1KU9ZVFIHIBUaVlXYTIA8mGPGcKtMurAq321jGsRtTr2ETmh/nr91X39Oms7JVxeYHWdnXzxgdiqc+agnDriWWGaCCSmETz/3F9fBOdkR/+2+1kUfbKuKQoa72eQDnxMlmhBE0uCAMQpBZMJZkUxQhA6zXRKNn4yUS+nt7cTfN9vHXh7/nD882MFr4qLirM2uxTwqW2yokkKE+U0yScCyC91kYpj7ZU23XRMKv4yVyuxs5fyRtbmkB8e52nYf+rhS6SHiVb618SLobItIvWSM8jGA0WrKLecR8jdqG7TPxsPZef83c3V/7t9vUnCH//eb7dLdPdvoJqzopbHpcSY21daG68SYYaAUIBC5qFzC+8NS4lQRxWKrgk01hN4voGXqYFzKr5yZfCrrttmUZbUdb2a/SMUR8UT1z5yJnJy0P7qgZukkEAemxbr4lGfvU9E/nb7csYt2bww7Tk5XAZKdZnGrEEIZMJYJlwh6wpkuBEGp50rNIscCW0XQlN4qTv4DbC7OGq+ZOHXyk0ufpicqxdDTxQZS0PUhofScyWUqiO3gTgVEqCVQTaM+0mVSBrpjG/vdzXPkx/jQ9PNu9++Mfk6vvbz5PZ9LZywBe3RnqWbt3KiVrKWBWnSZxYwghnGrTKa4lwa53AmgKt431NTOO2U1s92fpQcQumH6HWnu5xRuUlEo22xGgjjWAssaR1FSGnWDew9Tpp1DTxYQKrPe3jD2tofnwzc/9YTuGv7q64tdCd4GrzQFyiwoAQNP/HKK41t9x4oMklUNhtsjXedZMztwem7UdYnUNf1dyav5rGL6+nsbwjPReRYd0qAB2SAyo4BJaNoigUUYIrpaWiSgGeUW63Cv5SGmAFffHd+y83aXr7ZRVQvq2cP1Vriek1VK/cZOBu/h4pXMxAcKOF1ZnPZqLrgCilPAtCWxaURygiFOugyHUdFF/e3V1Pgjvud9RAI3AivIpOSKm1Ak/yf4xUjkUxlggtRxheiMm9+O773wPcNUFaJlncJ6+p5lQBk8wYpzwn1nkpMdMSkXZU9/46vZ1eT68+buzDl36+mLmweDubBpjP83CNjj0pkRm+Ucw458EpRljGo+RMe6+kUmMpI8gQihfSvXZb994uIThfRQLfTOZ3bhE+VRf8fNRbq7lnNpAkOGM+83InI9eSWs6iCVZi1A+BWL8n2n1G4F4gfn1eQfKfFSp5FlWaXMP8bxHuKpZ9Gyb5yZ8WED796cbd/etN/NdFJt3VJfnqkr+9ULuJhcuf9kDSq+UAvy8+vtmM+KWqOAZfn66BR9fX3hy//mVy+/dKdDzD5L/+ZQE3d9dZnvnOJrN/+eeeO8ojZCGH6mqbnn7v4Ap+X4GA5pu8qX7tz/mi69fywJ/c/NPyInlJKW+Yo5wYEFWJGyV1ktFZSaIALUXlSKiAe/kfzPb94Hffv3zz6/dNfu5qc/nTH/7rX/74h//+//zxD3NY5Ad//EPGzzX88Q//73//v//P/5X//I/v/s8f//Cv//OPf/gf/993+f1/+ecf//TdHkFNXpinoooyOaKTSJLTzFQtqOiZE6JyI0pSxZT+WSmby4tKH8RGXn3xBgYiLx+1DpR6khm+TTSx/K/lNMZIgbDKy7TUCXmo6WZpz/+WzZr1yhP/erdMLVkVJHjy05bLP+8/+aJ368jHarfYTjX57YXe7TnTfAt6eDTfGnJ1Vfroppc3Y5Z3k6cmXOft5+G7SgqWFRqxmq+qIKhdZ1/zG3r9aOQ1SqoknVM32ccD7tFWVdZDR4PvKg7Kl+jOiHz15a1bfFoe/q5mq6Pr7SgJ94JtcbU/zWfhT9XQmx9aqbHlizuu1xVGbXcynu4DVZ84PQZTxznCdAum5itMH6plXRyrXy2bvapknXO3+rNTw6skrMIqIRCxusaqXdriVannn1ddnicuX+ZCYCUv/muEcBMZbpNF9fKKfGQm4GO282RUIjDCdVbkkgciTEosxhDT0jf8JITX/B5/fny1LTCyJTU9Q8CHht4HS3uBy8D6lUq6tvoxejejeHs72zp/9YubL94ub/HmZrLIwz99pbrxZd7AbsmrA0NWX64s6CqcWun3xc316unmANdKDmo3z7PZcLtDVT4ntZvd02yod/PF7miV2/6SlTMmL8Sf+6hAMHkhO/sl+89zT16oP1/6bOzkhf5zr0cLK3b1z6//qcl6dDYaGnRKgRmZWVekmXRBMpSGIDUGU1tnt3S5XxXmlOtUdrX1rrSOUTBGAIQgXOR/THIka2tiKRGYJd8W9Z2p1MIQ35ncatFukrTSguU+ggn5Tc6poIlB4F4SrErSGu1dWHylIb0LmdXm6YImTkaXqGPKG6It44kxE7yXVDDMkmiN8o7ISGlA70hsWK9zoBUR2lLlwvCP9TpHsiawXmfXGZ9Yr3NM6wPrdQ5MZ2C9zm+/JrBeZ4erAut1jmVdYL3OSy2Snut11uSWmOAN5pZgut4QclJqYGpZ9AjTrV1MbMP0odN99XZ/SXutz8WUBFjlAgIWc/YunLMHS+pnK8c6sYRAFFJpx6KxDIiTCnP2muTsZaX/X3sq82zHQHbqflbm46O2kY9wsY6p7Oca2+M9nJVZFtZdPct25PcP97ZO1qtLMdkZ6RWk/ObSrM0j5c9XZ24eUvXq4pl7B3q4p/VI802e3hlDbf88cSyDZmeo325XFvvGmwhxNf9/nbm7u1W2ZJV7p/avywND/gjVkeL/yNP3YXPa6M1kNt+k2endcn/HBtuMUhmQr768g/x48rn6cvXCJrGuzaQuR63m8x3MV6hbnpFaHUdqgNutgSrkPhCG1Yder85NVePZP1+uWnrG8qWLT+dLLDeMyxT0zaOzZgmKVAZnPQshaUOFzW9SaUikKQltFKAroq0rot35kMK8Ce0Pzxwskyg95dSGaKR3zvvgdQzGK+G5UFKPBbeiv3SU8zV3YWDuQGK1AUVhRaAZ4Fpzrj3x0TMSkhVceunUWErCDRPhB8wYRHhbiWETpt5KfGETpq4Cg9+iCZOQTupgkkvMhBC1l+BTDMry/F8s+9x6LXRK1QtbAJ3Krg71JjqSIO/+whMXpGDWmWzMc0aUBmnxeFxr1HfsACoN+B2Lrw77nHplTSSUEJMBH1iyNgbulYvcRIpJ5q3t+248qYVBviOpbdyMoqZy29H6UX3VcpN7S5s1ucezq7tpbsDwJHn00uZ/HSjmaBTguYrJUqzuhtXdLlvdzRyo7sb/dbaW2J8efuu/u9ky+D0fbJW3ZXT3oAuNWCW5IZYy50IgzLEAVHlmKffO4Tn0tipWHuu5t/O83EjHGZKqzRxOKVqXSHApqLw9eh0zjgMlUnDCGLoJWhuNjZLAH18TOzN3Kri16VgloRw0HRsrJ9mTCVkNf8AoaHivZ5uSjocgAiE6JB2cd1EDBBaIddRnhe/RlERT8nKmZBXXuLi8hGmyygYlOqI9Iw6sJlVFwqrkEYtaqsR0tkAz3paiEz1w3MP1yrdER+jfHj4yEAHKbLRrCzRqI0WylSwzY/becWK9qoovLA0k1YLGVDLJum2wJIbXkRgsptW1yYfFtE6z+PoopmU5CHAZ3oFCcFwGGTwXLqsjGfLfseQEfOtiWod7V+7G8f5tdl0e0ruQWW3cMzBKgvRBWCqczI+5Y1Rplp/RDHtEeVuU7w3cHZ+x5VjVLlUkzDsR2oa+k5b0fY9R1hd5l41oxeE7PZ+62+Q5j+ASYTwTqqAEj95k7h45tUohdUfqjtQdqfsoqXvl6G1M3d98uXU3k/Dqehr+PtwoZHWKd/nT6hrXtfp5vfmxG2Ht2P2erRC9kdFJEZkgkmvHjMiqscqJsBaqyjioEFEhokJEhThKhSga+LIH3mxxowBlQxb49OeInhRe18uwoYKTShhpuDA6ukho8EIDNTZv4kmzYAQqOFRwF1dwezeDOnm9mczywp/OvmwLbZlyV3kn9zipWg7237JMd8VO94l9c6Kng0s+WpVGREpA8hA0D6CttFFJlZ+zRESKzQkLkX+roPD6fr6Y3mycZsMlLFTWV4VyCVTCqlBDqLZX4fSh3N6fNmj/U+Wd/dMGaBsBVHWX9lXh+9PbT3cHv1pWvTNPpNeI7MH0020VhHi8vRbbZ9cTRRRiGGv2XbhmH8mGt1BAtDKZ9mfmApzmF7R0Mli+yjbHmn1Ha/aRZc2+veH8A/vcm5n7x6No669we/9Qra/ejD880iY9YVOSrfr1cm87pQODVfTpR1isq7DNH2r1tYsj3y5lVsWPX1U8KszyV78W6+skJr0qK9NJGseqSp/ci/IDQ1VR/VWu03yrYF1Vn29/AbwDw7ydTW4XuyTh5fyXyXzxUJmvSRJ+DTKWPORXd7dhlk8Wc4vxKmAsh4PFp2mcv5rGfNsRVrX6mjXLtZZYsNTYYLRh0nptRRIpeS2iTRqzYo5eaScrpoM9p7ScmA5EVpv5JYHa5IWjCjhTPqaUgmIQhE7ECMR4a4x3ow1Lg3k3UqvP5BVRuyCi4dxbmjSlOqWoGXdVk9yx5K33V79O7q/K8+gi76bTtclQ8NHbU+VU2xJUUqWUYYxoCaB9kkJXtXOBMAMExEjQ3ONR8rOIR2mQPktYtW09NVMhJScNROmS5YkGCDQTfZ8tFIOZ6BfORD9AhgvDdzdCwxMXw8U5nrjo8sQFnp/rD+d4fq49zC99fg60rnZtRgJoYY1mRJDkIxFRaSo8jATlPXLLBsL6ypkKLntzuqDq8KycdV5rYUAoxlLmk5RIJYn0GdlKY/Pw1ng+N15TGqzPlVdtG3BeWSQ6ciGY4Mn4EKvSRUZpzYWkY+nV8g2Llp0cRiwM5t0JrrY3kTMqcRKNtsRoI43IezpLOq+AQCjW8j8f7yeHuUvH+8mCw6KUy1SXAeEdi1Jetihljc/cJVqZ6oLm/1SnUjS33HigaZk2r0aC9x67Vlwi7agw6F9EhvWZLFJoICEozmyQlAGR1mZbR1GqgTlcBW13/U4y4QuDfVfHB1qVbzh+2Kuv06zNyjccu9+zT7eCZCK6zHW8Up5HbgUxPOT/VY2dCAU83YqnW7F8wwDLN6wLt003G+yh061iewNZ/owBn209dnpKUoGnpyaDONtKas62Lu/o4WSrbH6ydf3Fws4ESkMtono451rr1dHKMF3e3sftbbXcM63SKDyXPcEzrRc+0yoSFU7QILwEy4T1gkoVTeYsVHgaKJ5pbXKm1S47FjTJSl5tcS9jrCzVbAPPpje/QFpsDrOKJoHn1Rg/TH5/v5i9n/wnPBgFTcJ5qy+/ncHVr5XBvPHkt7j5/N07N4P3W23tV4dVW1z/f99PM3eAhdvk9cgmJ3BW330HN9PP1YXh1cz9HeYPh1L3HnTYO0QW3Icvd/Bhuj7TWh1GlU1cJ6uvf8jM6cO08gkuKz9ujp/uT4apGeGnTI8mt1crvtLoTGjyYC1X2oOmMUUanYzJu+SN8tQG9LW3zow5a9EW5l08T1i1OQLEOOm4VgCOWGtNYso7GYwQIXqF3Z/b4vpERVIYoE+UUm0fc5ZMCp5S5hJnklkevOSJA5MOjMc4UGskn2TVlAbkk4RUW30iJsKMIWBsYFQmFRRzxlDnMjNVQSKOL2dp7LGwC8PzecKqtaDBUMU5N4w6QkESTw2P3DutXFjWuERcX2p/3mJ9heH5NCHVZpFTKZKRioakoiRBKEG4A64UyGxNYxZ56/35HA9EYXA+S1a1J3+C5YmYysshTdLEZbvZKBtotp6zTY3nNVuj+lSnWGmIPlVOeC6zx0xwPJfZFM4XOZcpwSgWreMpSsqUEsp4FahwytMoBHrpWuP5jJhDaYg+Q1R1mCZAQxSRZT5owGfLQxhtg1U6amMlQz7YzR7dJApWGqJPFtQmP1s0zM8+kq7YW3b23nTkdnd7dm42k4ooImMyQnjlo4428sw1bGYayTuGudmYm4252c84N5v/La7r52Sidh8W97Ph94lrvJMf+XED28lr7/b8ruHaeAGG6+Ah6cxJKDeCpSBMdCEJijs57uS4kw9zJ6/Y3NGdnP3Nf61nOdg9fJnIeohdauG8ktykZQlZ6Uh0WSwmRkaEFRHr23ccRd8qgLr9+Ce4vqvOwJTGMM8SFtZJHupp9x+xTnKndZJXKdemoQ1+UC31ZX1Xy7qB9X3gPs+2u7WkVSUjSRN4yQx44kJWaZ6zGEhIHO1utLvR7h6o3d2kdzP928MvH6zVvfGcyKY1Sg78KNnXnt2sMsneuzx7xzaWWW0YYVVKDU8sWPBWJQjgHJVG4Y6NOzbu2APcsauzkb8d6062R3RvJrO8f05nX7blt3RUVKRsj23ecrD/lsW7OwN0H2KXx7P3H/Jte8lt0UkjIiUgeQiaB9BW2qikys9ZIssk7qVuoAeUHfvXu6VC+tN8lTQ+DS5fbLC6jteXCggBC7gMqtRFXcO199uIe/ys2FoXISjFEMDfsALRA3Yr9fq1AtFq7ALhaLB00ARLr1y49IqJREUntXcmJEMdiYTI6L0SXkTFAUuvHLoMrF9ZO10PdVjaq3I3pmX++qM3NhVY9vuU9w5VEZTVPU5nT8aqfryui4A8HusdhPvZfPIZ6u6vSrTf35F7v3Wx9KVXd/lkJP643EjdZqidwc0Qjcthb691AA6SI4CHYFxyWlO0slRbM+iA6ERb88K2pkxcUCos91RzpaVwxDMWuY8QlCcebc0mtuZSuk+MupqmKo8V8sv5l9uwx+hsVPmNBws8CMmddMIpRglJipJkDaVJOuyJ2Drj5nxLqrR0my5szxXIZU3U9rh3vrdEG34wqHTsJs+P2UbqVTRCCJ+XPPE0JM2UCTIQ57kxGLPFmO1zj9kezmN7WF6DEpx1hjtPoiIJog5cR8tMCJ6TarG6NbcWh3LbD/6ogcUbaV1Ge5SaWiYZRC8SBOIlKMtCoB4qg4ShHdLSDuF7S0OtL/J2Nv2PPPqGHBdmcLQRzdqyEHVZvDULsC+Tots9r6EtES0YGUkg3HICUjObdFQ8VFXwuAXsR4W2xOVtCUxiOi2JyR6zJlbqZDXx+TbipPrkYI0LVu8QjUJRig7RwcSbZN007GDu48OjYqNNUXjmEb7oz+9rt/ROINyGENy0W4lz49z19oSVfEiJ0SSZ9TpyxqiOjIdIJQhNZHAYVmoSVlLLsJJupWhvbqa3u6/+4K7n8PB0k9Bk6kh0w4EzQalKkFVGrptUiNm6xlJEdZGBZtdYetAh/nz7aPAq48nUZWS1Gvwv08XO+FXbKr33lHyr8T/M7h8L/nBLq2Om04+z6f3dqqXV0eSsKKLF7IFBbP/V5ngkt+VPO3NejJYgFjyT3qqok3TEGaGAk0iABxWtff7JB6yX5IOVv4jsprrWpB882WQq8p+fLu3w3Td/nr+dTT7n23iiQSjZBVCX15wuskQgPtEplLRItGh71Xt/PQlPNA0lu6qmq0v++2Q+8ZPrpddlR/3YXfXT4pq/wuLTNDabyUol2V1boJNr7ZvBqiGjPQM2B6/2dObUcuZ2zaezr1VR1qp53ev72Syvw830fr1u1fLRdn7ZA0gxZ85enqW8qzxxEx7Ail2KdNfD3dHl9i54cqYway74FDF0tb/sqpwOLncUNLTaZ+wFrnwAN5Q3Sy+zhhFBA/MgvAYpwbmqB2M0nIqkCIZ124Z1z3acFhbr7cDRvCqlypsEgI/GTHqrpEqPx4OP3Oz5hVSdIUwmw1NkiqRsl0sLRlsjEwkMAoaHMTyMqWbPM9VstXcMNhqcJVwf4DApAnq4tnS12PZwPdiY1ds9BoXP6i40No9XDXqtjFhJYILR4As7WJ2jXC+7JDprKZcsJk6Dp5B4TBmDz97B2t/pLtXCx7K55n4lun2yq4Z3pxSty3a2S0Fl29Lr6FyeSVKVWGXMjIR38954d3cTWBgB705wR4KWNmksV/YcTbpXbg7Fm3SOJ0zwQ5Pu0iZdSsKGlCixknnrNVdE8Sir894yKU/RpGteHKpTk251FKDteOuw8L4hK0E82UyOD7mKHu4bkJ12j5vA0r4heQNLllDlK4RKSgIHa2iGqqCcRxaZ9MKNxJLtMYJ0Fm6Ls1/PFVcdtpNjnGmmXFSJKpbZdaKepuCkkkqvcvBGgG3RG7Y73UMLA3qnsqtt9+4y5K1JRASpFfeRWnCWmRRoEEyjb6L1jn4yySoM4uex0YO+NtDCCakyh4PEwIX8iGVIM6+Vtwnx3A7PfykNldXh4E2915dXVzO4yjdRDzlW2cGOSRDEE2azwQDcEUks4RCsGEvVLoTcpSCXdf2HmfsMs/nKq3KkRByJIWQKxrgQwgRutSSaaBDKOIcMrHUs4VxLqzjF3YHEahHOgifAAEwQnNBKcRsrtWEpKMPsWNrpyv4Q3p3jqTSkdye5ZSYXq4JAt+t3mfVJaOs14xx8As0IWC6oChKI5mPxN/S4k7d3Dm3P1jdJy66CBV8h0Tu4P3YjryPB4EAYwXDaYMq9dLdOxhgW3hOn08x5bSOERA0oYlzyJDnFdIrUKUowTtckTrf8MarFQcj1Nd98uXU3k7ANwU2U7sl5knZIXv30IyEvbSKNSimgiROS9TVVVEcSHPfKUjw01V5NdwSB0mzRjsRWS728NdYlzbk21ePgRNQ+UCESTW6VpI9YP+eAYNsNqjCQny2vOnS7GAzRkoa8bVvtpRJOuWSl9F5wH/hI0D3oAO/hBJTCkN6p7Gr3dJkg7+kquiQS4ywFl7jToIVgNiQ1EtQP2mH8eOaKw3oHEqtDOGjtaHCMhAxqazQjgiQfiYhKU+HRarlECsP+o3+FAfu8M5KH8BwSIUmAy3DWSoWYkpNaE8o99Zaqsdgp/eFZ1JVdXF/kG/qABwHlk2TUqh/Dak6G2o9h9+7OLrgBkVNulbPBZiqdUlZLXAVvFagYWMTeTlhwAwtuDLLghqQHCm7Qf833nSZX96u3nvy2gdXdYLU9niwlTltCjbUpLzvviScGwBvwUls1lkTJHq2MvdP6ehsxj5+VZ2O0l1CdnRyj8FamJIwEVuWvM22pzP8NJCRpJSL43MjMY3XxNt9VtfVnbh5gPp/OlunZT14tDtZdia0W69YSCzbv1sFow6T12opsMSWvRXXYHrHeFut7hfUwaR+yQv/4wxptH9/M3D/yx+5v8hjLwX6F2/vycN6ByOownrdxapMXjirgTPmYUgqKQRA6ESMQ460xXt+O7fCEwTqetjH0y4J5N1KrQ7rXTIXKrWcgSpe5W6IBAgVOfca+QQ9fa6TvbR9yYM7y+8t0pUoFv6o4XJjlr87LA3onQqs9jMdBgHMkZGwHx2WQmWsLp3V+kP9iinNrnO82hqifssXu1vRvs+vyYN6FzOpQrpx1XmthQCjGEgFBiVSSSJ9ZqdJjOf/3rcuqH5ixajreXt9frVpWVV7F4hB+trxqT7fyagfXkQvBBE/Gh8hDEEZpzYVc9XFFdJ9zTKVutt7OJk8rOryc/zKZlwfz7gRXy0IDoyRIH4Slwi0LHTlGlWb5Gc1GDOL9srb5g/5djlWZm0UaLZ0IrTbLRFKllGGMaAmgfZJCUxkcEGYg2zCI87ZWS70b+PGUVXHWPG1rDVwe9zxPWLVlvDxYy5X2oGlMkUYnY/IueaM8tQHzXS+C62Ug/+PLGKvw++2iao/1C6TybJTzhFVbqIsYJx3XCsARa23Vucs7GYwQIXpFENctcS2asKbVVP0w+f39YvZ+8p8F5gWeJqX6uH3KNoYhYGy2tWVSQTFnDHVOGqUCxu0vuEO/ncGdm8H76f0sQJHhnfOEVWt5gKGKc24YdYSCJJ4aHrl3WrkgUkRct92hmxD+1VT97/vpAm5g4YrD82lCqvX4USmSkYqGpKIkQShBuAOuFMhshaDHr/X+3CSivJqid3Az/VztNfBq5v4OBRLDc2RVG6UJlidiKnYoTdLEcWBm2U9JOk8pxiJbo3r3VN/hmcpm4Ycvd/BhWqIr72Q51bJBMIpF63iKkjKlhDJeBSqc8jQKgWywNZqbOFxXs/QBfl98mL6eRnh1PQ0FWtBniKq2uQTQEEVk2X424PNOLYy2wSodtbGSof3cGtNNEja3J+oncDGPXh6iTxZUfSHTZFLItgVziTPJLA9e8pTtDunAeCzVe0E+mKn71a/VcbDisHyakGojhVrHKBgjANmyqKpOE5McCYwQS4mwiOOWOFb7z1ovk3KWj9cPN2dEYHWI5KfFzfXq6er94qDdmdxq0W6qs2MWLPcRTMhvck4FTQwC95Jg/kdrtO/Nvzw6a2UjvQuZbQpbyprqDMePNPOeijRIfvAw+bGbPLtWgwcmaOQk049ECFOsKu/KY9ZuinlNPNZqwFoNl6vVUFVQ2VNywM3z7cz/FKfhb/PF7D4s7mfA/vXudniFBqqGrctfcWCnOfZL+ikCs3d/qbm1s3cVFSjXYK0PeU9hjkUttPOBBu+85Yytp540m/phz7xoPvO9T/zeTfXwnZ0970xzzzUPVtMUAkuEM+qFlowmZ4Mzq3nnpnbe4XeXb3jgs86OzvrTn9HPnJMjc/7ovs6eceF1YKB0EOCJoVwlyoKxjAXnFdB1vJXvWem7un1gM83qKsjQZKijUrMkgQYZKVWp8nLl300THU2mPOuNKbHdWV39qT5cYFmNI9Ko4/BUusziiSfSMRW50EoYl3djClGYOJrc9v6QyXeFtT0XP7iQ/y2vrG0zoaxZOD9gIe1VAL3oyHPJZlNunZVjDE7wbAkLEajV2lCbOTYFHRnYtW60T3Tjzk+/nU+v4ePLu7vBKUlepyR5yJyPQQqaBMOEyuyZWw/ZRnSZQbuxJLv2V3SePY0+b0GjsC2oXhh1KlIwENxoUXUPtTxIB0Qp5VkQ2rKg/EhwKaXtCZnFta2tPHDvv9yk6W013s3d9DaLYxuA15OwmvD60wApKcK1CopD5EkZLkjV9zPzKIBIxlI9gfVlrBWHw4rrf8Xh7WKWLa/5x/cw+zwJlbmUOf/TktVVS4I95tihvXQdLblxd98iNDKWsEAfEZTxhAX6CaOIg/J6BPZvCy7vGVAflMxqwTJgPLEkImVSORVsWCkY/TSGsnc5Z111425jdf5yUn3UXa9f2WYPz4piWAIyMac9DTbLwwud8hMrwBBNR5OxwE1vHGPPGbEW2ClM/54nrNrycaCFE1JFxyExcCE/YhZc1RLe2zSaEuUaTcPLQJNma2DVm3Y6e3l1NYOrfBNHDr9ZQ5NjEgTxhNngJHBHMkcmHIIVY6EjfflryoNctkI+zNxnmM1dvtgD4bC8OeFosHEiIUFCgoRk2ISkSrxsQ0iqtgDrx8+LgGjvqz4yiTjhwSgfiM//aEYiBJnsWA5u9RfjEE/XWA1UCtOw7YRT3zg0JAdUZMuOKWWjUEQJrpSWilbFDkaCW8n6Ys7FWXtV3u7hGMgGkI3AmFWIApWSS0wkEiA6DzRmvRKiF06OBYx9nTspDor5OpOK6m6TDq3bk46t3RNJBpIMJBkDJxkNE6c2y3udoIZEY8A6EonGIDQqEg0kGoPBIhINJBrDgOI+omFapFMdsESQbCDZQLIxbLJRdTpuQjbezqZXM5jPX7nZ9uOHMzED4xy1pxzB8lAdIlPeU0eMlNIHxpTOz1nQcjTZVaQ30rGnIGYz2BSmaE+WU21+i9eKMcGSkpGAWZ7fJRQCkTK/AmOh0P0djdxTO/DpLL1ffLme/CfErdfKg/PJgtoYmaa5kVm/RNDWRFsTbc2B25q6va25d/d4TsZmIdqZsh6tTdTPl9fP6G1Eb2OP3kZ7miG4B7xoCaIliJbgsC1B+bRS3lPBvXbhE6w3nuXjn/NvfzudXg/OAJR1BqBVUXvmrXVZXQpLreQmRGGdcyHbhjASdSn7s//E3lLKNXApTMG2lk+dtacTsUJHa4JXOkhQXgbHk3CUgyFqLKfnKEd774JF1d7OZ2sAPoLeoyoeNVsoJU7bKk/MpmyzeE88MQDegJfaqrGcGu7Pwy32KsbX2yXZHz8rbw9tL6HakkhZ2UvmTTaJKJUJuM7mo4tWWRoii8iZ2yLY7LW1H8/P978HuFs++vn2s7uexEdv5xvKY+X95+FjxYH8MkJE3xH6jnr1HZEmvqM6CxhdRugyQpfRsF1Ghjd2Gf0yDe56vdgftNdv/j/y5vOX6eKHvEnHLXU1MF9S/WmZrCyBE+FVdEJKrRV4kv9jsqhYFKPpeC04KtDLKFD74ruGphpTklsrFCFRStCaBBkIN8EJxjWlYyHdaKpdDmkfPs2m/9jYajVIS9QzHTVzkctEnE48UiOZBapoVqWINERabYGuqlzwYpa/8ogXULK/eVkXZgMyBmQMyBiGzRiOH23Zt/SXD1erfvnC4AhCbbahdLpqRMKohhiYN46nkCJLJpMGbt1Ysg1ZXy0g9h7ZaAabwpTwyXKqswzzU1V123Mk748qceMsFS4Sw0R+wEYTfO4Nzco0mqUGbpPC4N2d4FodfWmyhNAWRVsUbdFh26KaNbZF339yM4hVRZAqoRli/sT9zeqHwTAt0lqXtUpSmMSolEwR6lTSAYhwyhNKXfJjsUhNj60s9GFV1AA8hSnuM6WFaWmYljYgNGNa2rARjGlpA05LW3Xt2N+1+WQVgewL2Reyr2GzL3W0bcfX9T69nwWoXCyL6ewZnzrL4giUGW2UIDJrdBq89jFwJUA6o9lINHuPp87kfq10FDWFKe9TxYRn0PAMGp5B++YYRLI/HNAi2R92MBXJ/oDJPp5BQ1uixzNojdoyNTCE0Z2E7iR0Jw3cnUSauJPqzLSBeZIorS1gVAbzoVoi9xmMku2Y+4SU9z8nJGgrtVMkUiGtUE4HFVPQaiQY7o+9H0irODw/D1b6K3dVHJrPlFYdskvJ+O8P2Zjw3wzTl0j455aATMxpT4PNFpcXOuUnVoAhmpKxtGbpEc3qSMfDlzFOqu/l+Vq9sm2Clgbps4SFvtcXtD8TGp2vz9L5Sk21kXsbPLPUUeXzzm6CsoxEpYWwI1kIPW7wu0TpF3d7dZ/v5ae8PV3nC+08n5e8v58jqzpUG64EEclaBVIpZ6gKURofYn6RiiAQ1S1Rrfcalw/OyLf5rirH4tvZNMB8Pt3zylZYvzCUdyq7OtQrFaiXhjlniCNSEkki4cxT40HziHt5a7fgfmFd319Nbtd/St6+24qn9mS55skmYjVNERT4bHsQxoESoo2Pdiz5kf1hV+0tOr++yKN45+NnJQO6E5nVJk4SH7ymwlrwkgWSAjDlmXeUBp6cQ5S3RfleYT3o1g//mFx9XAUtP76+ny+mN6snRYO8A5HVYZxErjRYY0WwyiSmWaQ+cANaeE7YWKrH9Yjxp16wpxO2RtpmytZPi8Z5R2LbZBSxphlFh6NImEyEyUSYTDTsZKJmlUGaRooHllhUWxmkkJwMThVmZQxSY18wKyObo4S7FKM0STutXOCZhUnFiHSWGjoSbPfoEN4rrMdz9e/u+h4+zNztPE1nN/niqxemy21w6/XigN6t8DDO/aK/HR3D3AMOc7csKNJMsSBpQ9KGpG3YpM02Kihy5v4yMC5Xe0akkMZEtq8qj8UdqtztS7Tq4EEbH6s8a62hykWViyp32CpXm9Yqd8lg38F8ev05y/Ll7Orzo1cGp2FrvaWMu5CE0J6JlIgk0miuYjCSgUlkNHWUxTdOWGmJoMK0dCcyqw3mayJAKSsEZcvOgypFl7iJRFsa7VhQTnuE+f7GFTVT9uhZuWm03QkODybjweSBgvzsENi602LjFuxtVAXSMqRlSMuGTctM+/SVx6t+I5vnTM0sxLwOKU2GOa6Tl8wlwrIFywlncSxZ1lT3Z7Q2UEuNYFSYOu9MbsjRXtAeM66RoyFH++aAR442TJB3xdFOy1NpoC6QpyFPQ542bJ6m9Zk87R2kZ0zRLIku6siCiJZbLZlWQSimqRUhSD4WFd5jWKFpSnENgArT412IDHkZ8rLnAHXkZcjLxg7ybniZtR3Qsl1FgYwMGRkysmEzMsPPZGSHVObAeBmrbVNaiM3K0WYdujpHmxVt1tGDvKtYguzAaN2/fNB0RdMVTdeBm64nBhMalZd4TuZrIWVeeH/mK9Z5eRZ1XiAYmzxES7zkgjPGhfTgIHDnvE+j6QnYXz8TLU6eu68vlMveuhbfg6V7hnu2wSpDaxetXbR2B27t2q6s3b07zcDs3doyL4WofdZXmRdU+wNV+5R2qfb3XAoVPyp+VPzDVvxVI62jij/vXVdZbJsOcvn19Re+n82ms/n69eGp+Vq/FsvPrfeCE6Wl4FqlECjjwWkFQsJY+tnx/vJl97SWbQGewrT6ecKqbYgE0gjuk9dUc6qASWaMU54T67yUaSTAZrQnYBdXp1BknfDr9HaalcEDEl/6+WLmwmLdPzEP1wiLIGxIwQFJKcngo+MGnHRMBmEoiWMJHui+imUXh0Veg8VGCExBMs5IJu6pMq9FdF6DsjLpbD5m03EkCBS4G14IgYw/RWAj5FEvFRHURsG0T8QDWJ24cISr6kTWWNKgJNYLvtTexw4ir2EmnjY0Bm01pTxxG5gPwVhKuPVMce7G0qqir0y84hAo9ux9awvQ5Yu3A6NJGYRGuyh0VTEoUslT4lFLqgMECQhGBGNbMP4wnd24xaI9GIlnXulEWQwio5Dk/wqWUtbOJmguCIIRwVhrFeqvYHwHc1hhsCH4JNOSKzBScg0erHEEXEgRJKEc3Fgsw95cj8Whj9smW+GHmZssjujkaBSXwVknwLvIeGTEWUKC0VLrOJaeJojEPpH41EJsgERuhVYyeci0JHrDnQkpq+cUvKA8uLEgscdDQ81ioJsX1s/Li8OcKKY6LGduTYJwPkkjKdUqMRZpIDwBj4aAHgmW0eV4IUzSvKm+nc+qaGD1/1/gM1y/ePE/v9ZT4A0zd5qFEzFPB/N0ME9n2Hk6qslxtMc70Ss3X2842+k3A8vREXUpOtJppqxJRASpFfeRWnCWmRRoEEyPJRVX9Zii00Ba+3FTmAo+XVB1hqEFXRVGUNFxSAxcyI9YxjTzWnk7mtxyatEyvJBlmNXAz4vq7ens5dXVDK7yTdRjjllDk2MSBPGE2eBkpthEEks4BCvGkg7W1ynG8iBHX3z3YeY+w2zp0Tla+oUkkTc20FqpEFNyUmtCuafeUsVHArb+vDhibzGTxxdZ/Sn3gMxJMlpTadP07Otx1Y80Gmk00uhh02jTpMPyzg7lwidY/fu/4MvDg7UvbTrgY671x1+kjoQ7EMFKWxFrzQ14iOCNTJqMRVP3Wd1ib+Pgk8FUmBLvWHp1RqrTzPu8p/rAaaLGUQqUEyWMM8QrOZaU8P6M1P1V/w/OXUUjSrdZuxDZw0Hupp1pT1xNaNiiYYuG7cANW3WuYfsGkru/XjzZBgZn1tY2QZIuS4VwE6mi1GhQ3HpBvbBWiUDEWA4c9hcxqgoEdIakwpR8p7Kr9fEXQub6M2mRzCGZGxL0kcwNGO5dkjliuiBzh9QIUjmkckjlhk3lqm3+PCq3k6z+zCmdN0o6sFpHJgGylUuIkEaRpB3VwMaSwNIjpbOtrbPjiCpM5V9EhkjxkOI9mwWAFA8pXjlw7zRep7qgeMfUCVI9pHpI9YZN9XT7U13HNpmBMbvaVguFKHZK+ktCQ9X+LVV740b3bUZHRY6KHBX5wBV5k0b3DRb9ulDOc1LiADKYqoiZjjQvOsKY0slwleWmbGRjUeK9lbnNkt7bpb05egrT3+eKa6O7m/b7bjoy6m3U26i3h623K8XUhd7+68zd5WF+cGExnX0ZnAKvPQkWDCyTY71PnjEiCRBBohJaAmTZjaUuMyf9kfAGB5IbwagwTd6Z3GqL7zoNTHNGNcTAvHE8hRRZNllJ3lbdWOzV/qJJcm+W82qefpkGd7318Df/H/layxeKQ/fJcnpIDRTdWaiPVwyaqmiqoqk6cFOVdGqqDtPTVGuoFuJpUv0Zquhp6tnTVFMa0HLCIyHBcU5tAMeZ1VFGqShhYTS1Lnusx6Ga7FnHd8jCMN6R1B5sVta5zYrOVbRY0WJ9BharOqvYVrXuf4XFp2kcnJVaGw+1ktkkibTCZ0WelHNKapWAO21ZSmM5riJ1f1Zqu1TzbeAUprzPkNQmCnp2LaGvg6KORh2NOnrYOvrkDOS1/q0ev19MZ1k1/ATXdzC8s6W1LiVBkhGEpxgETYQrwYwQUnkK3jgQY+nESElfvZrapNMehlBharsLkdX6llTUnnlrHRNJWGolNyEK65wLXquxRPj7C3mKvXbWkyn6OauIt9PpdXGAbi2fLvLnD60NNEPRDEUzdNhmqDmh5sn+fer19fQWvuqfoVmjtf3OPKNUaWl49FoqmzQ4MJRpEXTgOoxFT0venzHapExHMyAVpsI7lFydaZokiKiJ8UQSrRkPgklQyWsvJJNBjgTyvD/+1agwx5GdrNzDoB1Lr7ZXluPKKw9EORD5XwuJRK65NcGDGc1u32Ndq451eHHY71p+degHrR0NjpEAWlijGREk+UhEVJoKj+hvHSVrIKx30+niqfVbGMxPF9RDUsuJBXyamEvorUBvBXorhu2tOKVC6/61v+rlu9q58hYyXL9FfYVWrhIXgQD3GpwUmmZbFniGWNSgAxuJLleqP1P2dPZ9GFKF6fmLyBB9GS9Yf5lf6Mt4Jr6MQthcj4dqkc31xeZOLcfaTnUgr0Neh7xu2LzulO7gzfXnwBhd7SGGUkzZHhkdmrJDMmXP65zc9Eqo9FHpo9IfttK3J9TVaBMEHZjal7Wl4MpISdAWcxKei+LvMyfBghZOSBUdh8TAhfyIWXDMa+VtGksNDtZXgZm/lIZWms2IlQNoOnt5dTWDq3wTR/q6WUOTy+xKEE+YDU4Cd5l1WcIhWDGW4+J9Ea3yIEdffPdh5j7DbF6dvMYIVa9uemT1g2L1GKDCANXQQN5BgOrEGlrNzWL0U6GfCv1UA/dTnVCpo72yGpq7qva8pFCMe2YIOM4DKJGfg1eKZcxB0m4s5iyl/R2YvJC4SlP6lxIjkjs8Svlc1kCP7M7yjHwXRDSce0uTplSnFPMicCZEsCOBfo+Hyfb2qjhEWsrF+MlyQl8F+ioGCOfzfRUnVnBqffPoskCXBboshu2yUO27Kz5RlAPzR9R3UkyEJAH5vrVWKsSUnNSaUO5ptkoVH4niVv2lz4gGHQFLt0FPkhHan2h/Dg/KZ9uf5rQWiTvLA21LtC3Rthy2bVkZfC1ty7wvXVU5Uvt3kIEZmrrO0JScRcm0j1ZSz02iKoqsoUN0IQhnR1Nwo8eq9XsXXhv8FKaqzxcYmqB5M0EbdGjAPscGxaMFfWUqlJfnjUcLDmCuL29UeZBrc7RAOs2UNYmIILXiPtK8u1lmUqBBsNH0L+7RJG2iiF65OaDGPllQmFPyosc2nphT0gzOl8gpKeRkd48nv/Bg91kov8DB7n9u0uRPiADUuSowHIDhAAwHDDscoNqfjnkWYYDa8y+FeElFjzYqekm/pZe0ECcC76/sIDoRvq0ToQy3P7pgh+P1R78V+q2em99qlbt32tERZOzI2JGxPz/GXh0P7oCxz3+cTe/vnhdvV5qryDwE5qLzVgNJTmkXrWU8ejWW9D1KTH9K2pzGRzfwKU1Xnyku5DwvWF+ZAEh6MNWpZ9JTHuTapDqV4nYflJMSve5net1X0XHZGcdemQLItJFpI9MeNtNW6gymPdxSDLUtqbEUA5ZiGEEphkKCOaqvjiQYzcHKdmPKQkbm1Bdzqu70LOaE1UWQMiFl+ubCalhsv0XlutUvyMKLk+W+9Hp6czO93X31B3c9h4enz4tMWZMVNQ3Mg/AapATnTGIqG6VUJEXGEq/sMaXI1gjrKZ7Wjwo2Rs+VV51RqqkKRgaIgmjvoo9UCCIgADEi06/RxCt7Q7euY8Gn7ZaF4f0CEqw9HFqGs6y/FYC+sov5ytZlxlvWeTxlzSBPQ56GPG3YPI2SFlmkDTeBLLEPWbyVlN2kIk/PkrMZSgMRxEjhsxHrqbDEEcq41MrQ6NxIdDrtrx6PqcuZPBtbhWn/ywqzNqSGzgx0ZozWmYFUDqnc86JyrGVK4pnKAVkdsjpkdcNmdbZFwmKz7eCXachCiT/fDpfNydpO15EGCpp7LgW1Jj9xMmrLdIxe8jiWPDDa34FBU5ffdDqoCtP8F5JiLX+jxGlLqLE2ZQ3lPfHEAHgDXmqrMFzX2sLdu8Hl2UiTq/v1aI+eFYfyEyR0hKNBdUIWtJXaKRKpkFYop4OKKWiFCG7rgdjLP2rmJ18/fzVvQ6/cVXFoPlNa6H1A78Og8Nz5oYvoXJDMm0xQKJUJeLayo4tWWRoii3IkKO4xcrKX+T7ecb7/PcDd8tHPt5/d9STu34IePlYczC8jxIeEipbp7afa9uh+Q/cbut8G7n6zF3K//WW6eLYeOAjGx2CZJ1QaSoyjJMtSeycjowLGcnStTw+c6Mp3tIur0iyDiwkS/XDohxsQ0NEPN2wEox8O/XDjRDb64dAPh3449MNd3A/H6AX9cI/Ne3TFoSsOXXEDd8XRrl1xH2b3WIZi0PYAntwYquq/6MkNrpOMPHKuZGJayiiZViLG4JKzjouRoLs/zqbV2W7Rnc2yMLh3L0D0WaDPYlAQP68IBb8EV3u0ZJCjIUdDjjZsjqbJORxt/WiYXcxq6RgQSxOhWmWZcA+goxPECskS19rHOBKF3WOFCVk3rcegU5jmPktWWB+it5bN6GUYlJcBWRayrGfFsqpKzOeRrO2tH/kU8inkUwPnU6YrPvXhy13eou5vBseraB2vciAsjYQyKqWhyWruAIwVnDqvHRtLL9P+Es0VP5kqfEVQYSq7E5ltHKWEdKnDN+OjLkddjrp84LpcdKDLh9uCkmG6CjqSBqvD0ZGEjqRxIfosR5LqyAjFRn5ogKIB+s2F1cwAlS36Q7ydTf8j71CrZ4OzNUWdrRmlppZJBtGLBIF4CcqyEKgHkhQdi63ZY3UCXtegYAcphWnhNqLBCgJYQWBA0O24goDSXMVM8ANz0Xmr82brlHbRWsajV2PZdkV/FL9ua1lfZF+b7nmhSVBnigtPX+Pp6+eF+IuevtYtW5E8snXQG4DeAPQGDNsboFscp34/vZ8FWFZOmM4+vnJzePTK4PwDtbEowsFwnlyWT2A863JOlU1ZXFZxy+Ro+of0GIyqOxx5FDuFae3zhFV7ajpY4EFI7qQTTjFKKn8XSdZQmqQbS7IUlb0BW9W1dHk8V4+elRuV6kBimxhVyxOlR5YOmqRokqJJOnCTtEW28+Pl/mYyyzvXdJZ3iGFbprWnSAuxTNEwHaTqRsP02RSrQrv0m9ilhxHOrGAAgYLS3Nus4AhQwoI1IsZK240E4f2Fb2vPXDTV/aVhvAuZnXpOpdn4yMKQhSELGzgLa9Hy6PGqryT286L65nSGNGzoyhxp2CC1ONIwpGGjBfeFaVi2mVjerSXIJJkHybkTxBDGheHey7HkafVIw+raqTVW/qWBvBOhPRCxll0wGl4AmRgyMWRiw2ZiRp/KxN5BuJ/NJ58BA2PPSK8jIxukPkdGhoxstOC+MCMjKlrDWSCZlFkaSJAkOGe8p87oYMaC8P4Yma4TVmsjoDCwdyu8B4Zmz2FoRy+ETA2ZGjK1YTM1fTJTW+1fldyQnw1dyyM/G6RWR36G/Gy04L4wP6PUei6AMUllMolRE7y3wQcegUWLEbPWCG9OMQ6q/tIg3oHINofGzqJiB0ZHAoYEDAnYwAmYOpmAHdCaA+NftW0yCrFT++NfaKd+w4Pf5iwdvndwVOGowlGFD1yFn3z6+9GzbWU6NCVeW7fYaZ5sIlbTFEGB10IQxiHrcm18tGMpoCl5f1q8+YG4wxAqTY93IbPaSseghRNSRcchMXAhP2IWHPNaeZvGUum4t/LcfykNoTSbCJuU5pdXVzO4yjdx7Hi2ockxCYJ4wmxwErgjkljCIVgxFn7UV23i8iCXyc2HmfsMs7nLF8OgUa+FsJGMfzsyfmYdgEMmAvJx5OPIx4fNx00jl/r1/dVk9Xj98Bc3X7xdKoqbm8ki/66nrwyOl8vafkLORkODTikwIzO8sqC4hZTVeQhS+5Hoc0Z6U+h6v3o6DUqFqfZOZVfb80IBZYqlTNM1yRurETyJDHlYsndNRgL7vmJKxXGmqh/L+y83aXpbjXdzN73N4vj4/ef875vJ/K7SUdUFq+fv7/08zCYeGp/zt0IrmXxm8TJ6w50JKVGWghfZWnJhJNjsL2tJNrOKNi+snxe3+Z4qJuz8hp3fBgTjjju/SekppzZEI71z3gevYzBeCc+FkpoigrtxeK0Mu6XG/LrnvIKU31zORR4/f76iq8UhugOJPTi8GqefnGJzo+MLHV/o+Bq246tZLumT1V+t80oasDpm9PXp4NxdttbdlZQhiUWXl5xmhCSSVbv21NuQQpAwEm3Oe0xDaeiyqQEQqvO2Eqs99CSDs56FkLShwuY3qTQk0pSENgrQYG1Nufbqls0kLf+UG4xtJxx0yfbX4A19sh36ZLVwXkluEgVOvXQkOiKMiZERYUXUIwFnjz7Zvcfav9LYioaEWf7AfPvxT3B9V6DFcJ6w6nCtNFeReQjMReetBpKc0i5ay3j0aixp2T3i2hwX1rvpdLHLkOY/zqb3d+Uh+0xx1cYeOAhwjoRAITgugwyeC6d1fpD/YhytNdXbmz3/sA19+Mfk6uMPa5R9/BEW+VP3N3kIiKvR/212XRzAO5EZxicwPjFkjHcRnziM8MCDczolmg0bZag0IVpPrYpUGMvJWGwU2l+G2q45+Yu7vbrP9/KTu43X+UJvP93tXPP73wPcLS/zDtL66g+vFQf47gVY6xhxLkjmDbGMUpmA6xhjNtGVpSGyOJYqRv3h3+z1WT3OEPg6Xz/ffnbXk/jo7XxDeawFzMpdA5cRYusqCc295hicxuA0BqeHHZyu1Nh5wenq4U+Lm+vV09X7gwtRGwxR93kiA0PUAwtRFxLqw9MXGOkbKjYx0jdMZGOk79ngGiN9GOkbKbYx0neCzYyRvueGcoz0YaRv1JEOjPRhpK9k/GOkb+iRPkpEF6G+fW5/DPhhwA8DfgMP+NEuAn7v5guM9w1c6WO8b8AqHuN9GO8bMDwx3veMvGoY78N43yhxjfE+jPeNFNsY7zvBZsZ433NDOcb7MN436ngHxvsw3lcy/jHeN/x4H+8q3rfj9cdwH4b7MNw38HAfbx7uW5mX6+3tt9tqTxxHK2QGSkZhiOGEGMaicInaFGnmdpQmY8ei9fvqEZtpyn5f0wk4KkzVdye42ga1LNu5weS9lEvuk86MT/ME3kWnBA9j6TGG4b8LoVRkrfF2PnsS8Hu/mN7dVS1rl280jPcpQaUxihnnPDjFCKMKJGfaeyXVaOIitK8K4MWhkdvtYPTtYubCYr4/GF2PRJc3QZuI1TRFUOC1EIRxoIRo46MdCxJ7bKW81yO/vkiz1r3lWQBdyOyB28t23L6FhYHsHtk9svths3ut27L7Bym+TMvfUz3Lu9dy78o7x+B4Pavl9Uhz0LBEmoM0ZxRobElzVmUb7Sn23xElgJYfWn5o+Q3c8mvRVLBZ2tDADL/agE4hiXpc9efJwUy9YWXqIbdBaxK5DXKbcaCxsxAOt0IrmTxwJ6M33JmQEmUpeJFN8dEcROkvhCObmdybF9bPi9P2p4rpxPYKTewHpOlI05GmD5ymmzNp+oNzbr3oMUIzRHWNLAZZzGDAiCxmICxmnaJDOjD9nqgBNP7Q+EPjrxTjbxOZReNvgPoWjT80/gYDRjT+Rmz8bdQAGn9o/KHxN2zjz5yeoPPb7WqHe7NTv+qvM3d3V1UhHJgRWJuq44R0UgeTXGImhKi9BJ9iUJbn/0ozFr3b39lr3SLx5CiUClPincoO03eQ+yD3GQ4YkfsMhPscRmLi1kZnlNLgIQbgLEQfRDbQjc2m+VgqsfSYvrO3nshTgxz1f02N5ObieuD15+XzHDEtkN8jv0d+P3B+T87g9z/C4u1s+h95N/uwkcWbyWx44R1ex+w59cqamIVEDGcksJR1e+BeuchNpGPpMcN0b8pc7Z/WtiAqTKd3JDVk88jmkc0PB4zI5gfC5teMh53JeA5svMh1kOsg1xk417HncZ3Ngn/rFp9efXkH+fHkc/Xl6oXnRXpMdCSBNVJ44oIUzDrjvM/8R2mQdiyWYI+VB7Roab4fQVNhyrxr8SENQhqENGg4YEQaNCgaROn5NKh2B0Y+hHwI+dCw+dAZxdeWG0BVxOEdzFeFt5fieU4UqOrSHmiIRmvOtSc+rz8SkhVceunUWHroDbT42gEAFaa7O5AYEh0kOkh0hgNGJDpDIjpnFqzau+citUFqg9Rm2NSmfb/QrTVfbXOrPalyZiw/9Hr1YwfHcGQdw1HOOq+1MCAUYynDixKZ5SYz0RFKp7Fo3N4IjrS16+9DXh0ff1irzo/VdKzAM39AT2Ea+2x51dmT0STgKhBBOJNeRRG5ynQ+Mu103kjdSNAte2yDd7ypa8NdsjCcdyc4ZPPI5pHNDweMyOYHwuYPI9FyEbULIhrOvaVJU5p3xqhZVVQ9Ap7FbG3l7ndKP7rIu+l0sXq4tV8UhuCT5XRe19tGlgT6qNBHhT6qYfuolGjuo/rt9vrLenP6HcJ99Y21ahyYQ4rWOaREXl/JOJ+89YSIxC0IKfO6I54ZosbS9YTK3nS12OthOQqawjT1iVJa62mj2qnpQwOiTkadjDp54DqZNtfJqz87jHVwCrk2QqS5ZzaQJDhjnlLjZMxLjVrOoglWjqUBqegrB644L4545MW5uZveVhR1rxdne43U+XOCEEp4IynVzglCRQzO52eCCEsBRmMkkr48OsWBsqqO1RqUDf3eSRlmvM6a17v811IvBAgtZQgxJqVHgk6Gfu9ewFnr924NThaC9ppHHVMKPlhuNNWRaMUDsTaOBZyUIDgvpM7F/hDhaXAkwoPSIloVgZDASBCJQxJWqaA5VyOBY3+RGaFq/BgH6EhpCD5BRBs/D2/n59k7Gjp50MmDTp5hO3mkbOvk2VJ4A3Pv1MZbogLKFEuOgyYZQkbwJCgNIJyQSo+ltCXtKwO4OHuwBZN+f+/nYTbxO9bhUrNqfYpmfRgHdSrqVNSpA9epuq1O3dZuQ9Oqta2gMnulXhrmnCGOSEkkiYQzT40HzeNYEg5lXy7AjLj90jqIlsK0cFvx1GbLgl4afzHbhImBC/kRs+CY18rbhH3M0CSsByPNG/3Pi+rt6ezl1dUMrvJNHHFLW0OTYxIE8YTZ4CTwvHESSzgEK8ZyDhHjeZeCHH3x3YeZ+wyzeXVMpR5sVAZnPQshaUOFzW9SaUikKQltMh8eCdj6q+oj9trAh9wjhUGznXA2dNieQoe3VDwSYiTESIiHTYh1k0zCrx3SKziEWf7AfPvxT3B9N8CcQlWbUyicV5KbRIFnnuxIdEQYEyOrKu6NKAmhx7oTe4OaTcFTmEo+T1i13JkSpy2hxtqU9Yr3mc4YAG/AS23VWLgz68+03LtfZSWSJlf369EePSsOzCdIqA7B0mlgmjOqIQbmjeMppMiS4SQrfhcRwW135r1ngF+78Ak+/jIN7nrr4W++6hq0fKE4HJ8sp9r8Mm9SNlOz4eoysQ9au0SDoNoJJhijY3HE94fm/S0Ij6nOqozT97efJ7PpbdUEuDhsdyQ1zKTs0/LATMrLZFLWJCM5F2S2OTJlplQm4DrG6DKkLQ2RxbHUW++rfNWqdfMx2/D73wPcLR/9fPvZXU/io7fzDeWxFjB7+FhxKL+MEDfVh5tmFDdjp+j2Rbcvun2H7fY1pAO37xPbcGD+39qk41JYWX+KHmnZN6VlLRtHt7wCKnVU6qjUx6TU9wjuzWSWt7Pp7MuW9Iam1GtznjNhlyICuKzVgwciUv7XJBE0t0TJsZT7Ff1VbjuinpqCCJX6KVKrrT8jgVtgjtq8C0DQ2YxlUUqjiBE08LEkEPaXvaB52znbvPf1pXIzDDuWXq2HVgqiFGMmY14LmbTiklhJCGFO6jSaTb6/KMPeqOfD3G0eFJqo01I6GFvoMT6GsYWhxxZOcEg0s47QIYEOCXRIDNshoZtUMGkhuGfliwieMweE2Kz0NQGf15wNGWQsGp552lgKhOoefRHnLrzSNPv5AkMPxIv+6gugBwI9EENCPnoghoFs9ECgB2LUAL9sdmPTqm7N7SL0PaDvAX0Pw/Y9VO2wzvI9PLUOf3BLH+Tg3BC1vXMkdyz/L/DgNLfaSmUVkYYzm7yhdiwaX/RI0+rNsXZQKkzTdyo7pGh9HkVDitYPRSskh20wx4UxhW2/7/jyKWzojEBnxPCAfylnRPGRwh53fAwU9h8oXKf7mA68bQdtfnS8oeMNHW8Dd7yZzh1vw+1rxGozgMpIkKD9ZQBhhgRmSAwJ+uh+GwayW7vfVsZqtZ9fwFjFjmBorqK5+s2FddE48TTcV2UxPszc7TxNZzdVx4/VZjVcY5XXtguLIcqq/LnnzHBKPI02BaEtAWJBjsUJRUmP1mrDYGcjLBWm0TuVXZ2l6g0hhoaqTV4yhlRxCJEsYcbwBMy4keC+P0v1yMythshvHX4FUd+J7OpQD1o7GhwjAbSwRjMiSPKRiKg0FR4Q9S1RLxsI6910uniq/wuD+OmC6iDE0EBbIGdDzoacbdicrXJkns7ZIK6W/F9n7u5ugG2rak8VJ25tdEYpDR5iAM5C9EHkVWhsXn9jKVtq+itbKk0rpvEEPaXp7zPFVWeVFuKD6O9cJXognoEHArtddb2jY7erZlv5JbpdoT8N/WmDQXjH/rTVeWJ5rvthxyZCjwN6HNDjMGyPgxEdehy2nQBDcz6YOudDNDovRK6p4o4LZlLKkiMSYkwshDQW3c77Kzqt7Dls+hGQClPtHUquNpGRcwYQifeWBU6yEculk5CsZFo4K0YC+b7cbX8pDaYZpUshV16BI23bIQNKSBUdh8TAhfyIWXDMa+VtGkvbdkTahZBGs3X686J6ezp7eXU1g6t8E/WQ41ZoJZMH7mT0hjsTUqIsBS+yoe3G4m/t0fPUzKDevLB+XpzuPlVM6EVFL+rwwHwJLyp2Uu/6/Ax2Uj96iKbjTuqWi6hdENFw7i1NmlKdUtSssjMijCVV4VvvyIdS58r1+p8spzo0F5J40yOaMe+m37ybdfas6jh8teVKw0gWRrIwkjXsSJY6qSfPEyo+sLBV7dHGQtxcSqOfa2A6+wJ+rkKKyvSYX4U1ZZ5HTZlCGFh/2eHIwL4FAzMn9yPZ0RPItpBtIdsaNttqV11mtWE0zUd+ThSskFMBivRntuKxgKEcCyjeZMWgwUCBfsnDuhjexfDucwvvnlpApo1GQFqGtAxp2cBpWasa9Q1W/5CPdNW2h7RUkMC9sjwvS0OE4J4wKni1Op2VYwkncDWUeEJbMBWm3DuWHh64eUH7CgvjiZvjJ26YNTQ5JkGQvM/a4CRwRySxhEOwIo0Ec3014y0Pcpn7fJi5z3mbO36isBCn62DKaaHPdQg+V/RLoV/qefql2rejaWcOo2cKPVPomRq4Z4q28Uy9zRqhEsLb2TTAfD6dfXzl5vDk1cG5pGpzBWIU3sqUhJHAiAiSaUtl/m8gIUk7lrbgtMcqQ3tPdrZHUWEKvSux1VmrhitBMiuzCqRSzlBVlUD2IeYXqQhjqS/U39GEIzzj6aQ9eaVcC7ZT2dVyNEqctoQaa1M2tbwnnhgAb8BLbdVYXK89ljfYq7izXZUmV/fr0R49Kw7bJ0joIV+At+VlDVUDEjIkZEjIBk7IWlV+fbrwf5wsPt376vX5M+ZkDFQi2SoVzCmqlEgs/5tF5rm0zDk/EoVN+2s7c6R+aRsgFabJO5QcMrMXtK9YLVIzpGbDgT1Ss+Fg+xxq1rqaUXP1gOwM2Rmys4Gzs1bna9tpyYHxM1rHz9BYRWN1OAq9Y2P11FNbba6Dyh6VPSr7YSt7Sdoo+82DwSlyW38eqwj63V/ONtLvi9DvmpoXURkhPFeBg0nCeMlNBq6XoDlRno0EwT02ieN7J2jPRlcYcBvLpbbnvOYqMg+Buei81UCSU9pFaxmPXo0Frj0eF9hbc+RQGvzXy81/nE3v74oD8bniwi4y2EVmSHjuuotMIcW7e9yfsXZ3o335ArW7qSUOiAzWhOiEzMZx0CRGYrVNMhDcj1tjud7R+OEfk6uPv7rJbfXg+9vPk9n0tqpzVh6YT5VT7c5MBHHE6EiEUkYqqQ1XJHrpeQKjCKK525354Rz0uuTEDy7kf7+UB+YTxVTLApMUJjEqJVOEOpV0ACKc8oRSlzx2D22NZX24K+b7T24G8fX05m4G8znEN+vyk5Vfu9AeoudJq7aBvXNBMm+IZbSqAMJ1jNFlSmhpiCyO5jRlb8g2e7efx+7S738PcLd89PPtZ3c9iY/ezjeUx8rb08PHigP8ZYS4DhVr1jZSvHmAUWCMAmMUeOBR4FYpX5sHP8H13QBjwaK2EIIURCnGjKZOC5m04pJYSQhhTuo0ltCENP35b+t58C5YClPKLaWDkQeMPAwKvl33ry8jFQdPwgwIwt2m4hTC/ftDMHL/wXP/1lnij80a9ACgBwA9AMP2ALRrYX8wHjQwVwCt9QUUEmyVg+lhj9HWy0VbMacLc7oGiOWTcrowfxzzx8eaPx6NzrY+11RxxwUzKWXjjEiIMbEQ0lgaiPSH7SOlq470Yy25L1iHkkOfL/p8B4Tsjn2+IRGo2tqBtlK7TBGpkFYop4OKKWiMvLW2R/bn5h2enwfv5Ct3VRyaz5QW5uh+e2Rjjm4bZHeSo1tGok+PVgfm+fST5yO5Y/l/gQenuc0mh7KKSMOZTd7Q0fTq6Q+5R0pn7YkCbd77+lKprupOZVeLeqeBac6ohhiYN46nkCJLhhPBrUNLpLUlsnfmVrr1l2lw11sPf/P/ka9VqA1yqpzq0AyWB6YiV95TR4yU0gfGlM7PWdCSI5rPR/PtfHqdrzObXlUG4is3235c6n59spww8xgzj4cE5K4zj1l+br0XnCgtBdcqhUBZZWMrEBLGUs23xx157wTlwa7yRX5yt/E6/82vr7/9/Ww2nc3XrxeH5vOEhfnIL/orUo35yEPPRzb61HzknYwqTEzGxGRMTB52YrJs1Svww/onV9IaXDZy/cFkL2VICiRVVolAPAtcEaKEj0LFqmj/KPQ4pf1lI/P6/JbHWClMQbeSDWb3vFCY3TMY7Hac3VOId6tHBKN3q2/vFnoB0AswPJRf9lRy6zaV20YNUn+k/kj9h039q9yTFtS/Kri8+iEfX8ZYXT7/sNn05hdIi8H5AlidLyB5sJYr7UHTmCKNTsbkXfJGeWrDWCzSHjtP7o+/NMVOYWr7PGHVFus33hFjiQ+ORaNCUiRvjkxYGThwascC7P5asR3RJttz9fp+vpjerJ6U20f1fIGt7U/LW9ufdQsHDVI0SNEgHbhB2qpIToOtZGBGaW079EJ0N+vPT4q6+5vp7tYZJEfHRv2N+hv198D1t+5Cfz8qfDEwDV6bYqKz7vaaCmvBSxZICsCUZ95RGnhyYyk9o/qrfa/2SqsdgkrT4R2IrDYfBXRVqkNFxyExcCE/YhYc81p5m8aSj0JtTyD/S2kApVlJbPKEX15dzeAq38SRsyXW0OSYBEE8YTY4CdwRSSzhEKxII8GcRMhdCHL0xXcfZu5z3uacP5ZwVwgPRxo+WLh2R8NtVzR8yzxAIo5EHIn4sIm4aneoY2vR/zD5/f1i9n7yn8PzntemdEhinHRcKwBHrLUmZertZDBChOhHU2u+x5QOceQEwwHQFKarT5QSGqCYxDFgVHdmgZr2ScR7VwwanWh0otE5cKOTn2p0vp3B1a/VTTwvm5OzZFLwlDKXOJPM8uAlTxyYdJCV+FgUdY82597GEMcwU5hyPk1IaHGixTlgUHdnccpzLM6HBYMGJxqcaHAO2+A8/fxaXuZ3bgbvp/ezACvJPCfDM8ZEmDEEjA2MyqSCYs4Y6pw0SoWxnEYf5vm1PdgpTFefJyw0RNEQHTC4B3J+7cnCQYMUDVI0SIdtkJ7uAf3f99MsAVi452WIJjBUcc4No45QkMRTwyP3TisXRBpLU5FhekC3MFOYjj5NSGh4ouE5YFAPxAP6sGDQ4ESDEw3OYRucmpxqcL6Dm+nniljCq5n7O8yfl93JqBTJSEWzoo6SBKEE4Q64UiAlMXQs6rpHB+jeaW0IncI09VmyQisUrdABY7s79yc7xwrdXTdojKIxisbosI1RpU41Rt8vZh++3MGH6b/NrgdniOo6Q9RyEOAcCYFCcFwGGTwXLmMrq2zhwkg0dn92aOVCP4qateL8+CMs8qfub/IQEFejLxFUms7uQmZ1dmle4zwRU1VNliZp4jgwo2zIG4DzlI4F5Yz1R7fq274f3hwLg/bJckKahTRrwLjugmbV5AdKQZRizGjqtJBJKy6JlYQQ5qRObCQA72+7FvXb0ObBT3B9V2KzpXbSqUMuaO1o3pZJAC2s0YwIknwkIipNhR9Ll8YeDY0Gwno3nS6eMqzCQHy6oOrwHHhwTqdEXQzKUGlCtJ5aFakwlpOx7MS0Nzzr3dzjX9zt1X2+l02T97ef7nau+bUD1jtI66uX2zOsewFi37we8Y998zpYAxftm1f9itMDH9ssFoMeGPTAoMfAgx721KDHhyzBD9PX0wivrqfhmZ1AlGAUi9bxFCVlSgllvApUOOVpFALLrbUnaqKxR+gJcgpT3+eICv3C6BceMLS7S7+h51ihO8sGDVE0RNEQHbghenLvndVi/ynjI+9Uz8sMJUBDFJEZRg1440EYbYNVOmpjJcPzhx3FC5rgpjBNfbqg0ARFE3TAwO7uHOJZ3SceLRo0QNEARQN02AaoPsETuklKXW8k66fPtIGzkVJoICEozmyQlAGR1hrBFKUa2GjKAffY/rGJo+8ohkrT350Iba3DKTnRj3TkAqjQUaGjQh+2QjcnlFfdv+yfbUdnErnSYI0VwSqTmGYxi40b0MJzwvRIVLrp8XxXk9qhDVBUmlLvSGzY2TnPZ09gL6/NLnZ2PoC5vprtlge5Np2dCyHoPXZ2Rn7+zfn5iVWmj9oKyNCRoSNDHzZD1yfkfGwW/puZ+8ebdSGI5fd/hdv7wbFzg8VXejxchMVXTlDnly6+Eq0lFiw1NhhtmLReZ2IkUvJaRJvG4oPqsfiKapK6c2SfLA3lHYgMqVmveU/Izb4dN6uxWShx2pK8m9uUeYP3xBMD4A14qa0ajZO1N5yLvZbo47O8j54VB+oTJFSHYC2cV5KbRIFTLx2JjghjYmREWBFHY4/0huAj7fReVSw+zPIH5tuPC601dJ6w6nDNrdBKJg/cyegNdyakRFkKXlAeRsMme8R1Mz/O5oX18/IQfaKY6rAsuWP5f1X1Ic2ttlJZRaTJtnXyhtqxlF3pD8u6vsTZHp/k5r2vL/3gwmI6+1IcwDuVHRYbwmJDzwv+Fy02ZE88Y1PrqsHQH4b+MPQ37NCfOaHz175FvwlDrEQ0sOifqj9uAzSbs8JRBZwpH1NKQTEIQidixGj8ED3GRZr0tToOosL0e0dSw+gIRkeGjvTLR0fKyOjocUvHjI72ML90RoflImoXRDSce0uTzrt4SlGzyuccYSxFPnr0NO/1MD2+yNfa7eVu4CfLCUvcY4n75wNzLHH/rPGPXuehe50pObG57zEajJ5n9Dyj53nYnmd9RlmISmaZMb1e/b754BzOvM7hHCRVShnGiJYA2icpNJXBZSAZyAAbiaLvswtqm6oGT7BTmEY/T1joXkb38sABfnn3ckh5m3ZCgrZSO0UiFdIK5XRQMQWtRgL0Hjdw3TK1/IFUvHIFlow+T1qblJ8zT/zvqAakXEi5kHINnHKdUVo3v199Ed5mDbF1ImJw1Ks218drpkJKThqI0mU4JRogLA8gUQWGj0Vx9xgYbmNsHcRQYQq8G6EhFUMqNiagn0TF8BQpniIdrC8NT5EOCNd4irQRovEU6fCxjKdI8RTpUFCP+TzPCv4Xzuc5s8vLAa6LvmX0LaNvecy+5YfDD+st5gqWpx8G5luu7fFiAqMkSB+EpcLJ/DjbvFRplp/R4EbjWx5oWfiDGCpMwXcjNPQto295TEBH3/IQ/BboWx6Ebxk9E+iZGB7eh+6Z2GspoWcCPRPomRi4Z8J04pl4VJZhYI6J/EqNZyJxa6MzSmnwEANwFmLlpgBlbF6FY6kT0Z++l6bZ2ttBzl9n7q5IS/ZMcdXaskZn/cI1VdxxwUxKeUMgEmJMLIQ0FmdEj42V7TmTVXRv5e4kh5lBfe7mmBn0rTKDSqnT1mPMBAu1td+4L12oDSMmGDEZAs4vHjGJUhClGDOaOi1k0opLYiUhhDmp01hquPUXMRH12YqbB4WGSFpKB/vpYT+9IaG32356oHWVZ8RIAC2s0YwIknwkIipNhQdEcFte2EBYX6ucFuz4OF1QGKXGKPXzwvqlotRYF7m3dYB1kc89QnWBusjrLA3SWZbGlnMGkzQwSQOTNAaepCFOT9KodsO31/dXkypXYvkbB5egUXtyRDnrvNbCgFCMVbUFKZFZXNJnDqd0GomG77MgbH0o9jh8CtPoZ8sLox8Y/Rg4xi8f/SDCg9IiZm4GhARGgkgckrBKBc05loVt7UPeewRitfes/3z/OX/lzWR+V5khJYZAThAR9hTDnmKDA/IZPcVW5YzVea6Dp1YNug3QbYBug2G7DQw/3W3wdja5fRKTejn/ZTIfnv9A1vkPGK9yKHXkQjDBk/Eh8hDyMtSaC0npWHR2f0pb1Z9YaIGjwrR4d4JDjwJ6FIYOduxj/tzYGKbHnwDzS6fHY+YaZq5h5tqzwzNmrj0rrF+4voo8z/1WwwXQD4d+OPTDDdsPp0hrP9yvbnL7/e/5J82XG8nAHG66zuEmLUnGG6Go0IExkaWiiRTSaJVIBtNIFLzp79jy/rMwtYApTH2fIKFaGzUyZ7wnMhnitInWBwPGaW0pAx1H40LrC8J/KQ2PlW5Ygu4BcB9f+vli5sKiIQSpEiZqzgxV4IOQMqngfVKKahmcGwtNUn3xpPIgyJ9A8OFRQwdrIcV0enQ9YTGdRo6nSxTTwSPseIR9CEbpyUfYC3Gc9hfWRcfpgB2nNZaxMURTb4NnljqqvABjgrKMRKWFwCTc1lbJ7j61e2J153nJZSzPktU6HFCB84RowCP/Bbr90e2Pbv+Bu/3VSW7/6sH3t58ns+ltlSgyOOd/bbYttcQBkcGaEJ2QSZigSYzEaptkIKM55WX70871ZdwOw6Y0zXyqnNBrgF6DAeG4Y69BIdHYb41gDMZeLBiLB8fx4PhzPzheiO8Wk16fFcovmvRa/YoTvVw7Jjr6utDXhb6uYfu6xJEU19Wf6v3pbHAerfoGgTQZ6qjULEmgQUZKVZLMcssYTdTxkehuZXpT3mx3Xh+jozAtfEQa6J765uQe3VMXc08huUdy/+zJvdTUMskgepEgEC9BWRYC9UCSomOpQd8fhvneOinri7ydTf8jj756Vhx224imNomKRioSccxFGxU4bpIMmkqqOAhtxuKQ+oZVBWrK/q/+FNqW7HRB1eE5RWWE8FwFDiYJ4yU32QDOW7HmRHncg1vvwfVBnM2D4uDbWC51aM27LljvRYamloJrlbK1wHhwWoGQIBCtbXffvSZdHuwqX2SzsaxJdf7297PZdDZfv14chM8TVh2uleYqMg8hA9x5q7P965TOJoZlPHo1ll24vyMKss7cW19kXwme+Y+z6f1decg+U1zYaewF7w3b2GnsTLRfotNY8SkMePzsWa2Bi6YwqAYHdbaDNZiogIkKmKgw8EQF3TxR4QcX8r9fBpevwGvTFaQzSRJPpGMqcqGVME7TRCEKE0fjW5D9KWq+K629GClM8TYTSm0Iooy8mv5wimk1mFYzTPcsptVcJK1mRVJsO5Ky3puRqyBXQa4ybK5S9Quq4ypHao9sVfkbGIGpLSFAiFWSG2Ipcy4EwhwLQFVV7Yd758ZS30f0GB3d7VHSHDiFqeEzJIWFNPuMi2IhzUZwvkAhTU188JoKazMbYoGkACxvzt5RGnhyY6mN3d/urPYKa6cTyNI+2bRJWz4puQpbFyKrPZUQudJgjRUh0/3ENIvZWOMGtPCcMI0Yb4vxvSlHjZoBFo3zjsSG/eWwv9zw0H1Of7lVV3ty3PXV1IBHfxj6w9AfNmx/mD5SZKBNLd6BecREbUi/jIrXsr/cUyx53VvJ65owazY4nZAqOg6JgQv5EbPgmNfK2zSWMCvtq7BGcS2OaDYFfl6swpovr65mcJVv4sjJK2tockyCIJ4wG5wE7ogklnAIVoylHGZfntjyIEdffPdh5j7nbc7lix1xI5URyeqvESYGsnoJZK3IdYPk9+aWANJrpNdIrwdOr1k7ev30eNkrN19vUIMj2JTVMWwVPNEcSAqWSKqFpooFShzh0jHQfiSamqsedbVufTpxGz6l6evzpFUb4AEZjAdrdKRZoRDGlE6Gq7wnKBtZHAm2hewP2g2Omb924ROs/q2IwurVzBwmBWahnCmuOnA7zbzPJoAPnCZqHKVAOamOPBnilRwLuGl/rtH9uRUNZqtcstWFyGpLTyRCkoD8Oa2VCjElJ7UmlHvqLVVjOSml+muqJXbV7Z6LlI7qk2SEFSRe6N5QjBUkBlxBAisJ9bYOsJLQmWug30pChCrPoySSksChCshZIyjnWQcw6QVmkJ/NR49P35Y/rji0nyuu2pM+3hrrkuZcm+pxcCJqH6gQiab8WcR2W2zb1pP1Kyw+TWOp4D5XXrXozlZ7RreKLonEOEvBJe40aCGYDQm7NbR2tuw2LT4+W29nVWBj8aVQfHcgsVqEB0tiCNk4YVwIYQK3WhJNNAhlHJ5u6wPhmVzNF+52gQg/VWK1lfJlSCx6RSVkysmdYhGSDlUZcojZXkGEt7VQGs3Xp7v10/ewWOSx58Xh+mQ51eYQpxSzRUKyIRJUcsTr6JwNlGQ8E8bGkkPc4359FjkqOE2+O8FtEvBE+wS8uiwBTMHDFDxMwRt2Cp7l56bg7cSZ8wdWbwy1lm19Xh6XVgmmPI3axagk9ZZ4opXSSSvvxpKXR1l/QUN9gp46hqnCVP0lRFgbMDSZqolAvE+eMSIJEEGiEloC5N0EncqtjdwGqQ17E3b+OnN3ecxSgd+Z3GpT+hRPRisBwcpM7oRmPBtihjBHQBk+lpS+/tCuRevt6mtMd/NwOlvPYXGg71p8WHkaK08PCN4dN3SXTgPTnFENMTBvHE8hRZYMJ5klOty9z3Yvr+ZnqWV/mQZ3vfXwN1/1f16+UByOT5YTupdf9FWhAt3Lg3AvF5+aR3s8Bom5eUPJzSvk/EF/pgmeP3iW5w8wxwlznL61NXPZHCdtIo1KKaCJE6Ktp4rqmK147vNmP5oTNj0ivP0BkTdfbt3NJBSdjN2V2PDEAZ44GCzI8cTBc0I3njj4JicOlhl9mXV2kdJ3JJcA8/wwzw/z/Iad56fPz/Pb9noNLKcvb9s1OX2F1Nqjpr+oCtbaG0itvULiJ/nnYQBloOC+YAClkEqSPSZjYyXJwVSStFxE7YKIhnNvadKU6pSiZlW33ghjKdbfZ+h7b0bOTqbkQ3+3cgvtnSwnrBmZKVd/qaRYM7L/mpGYEI0J0c87IbqQeht9dZzCehvftN5GIYez+kMzHs46C+S9Hs4q4zBAf9jHwwCnhqR7OQxAaaQiEcdctFGB4ybbMprKzB5BaIP50q0tl11h1Uzb6s9PcF3irn66oPBoIh5NHB6cL3E0sZAuAqK/pjDYRuBcY7zXNgKFHOeS/fW1w/NceJ5ruAth0DnSeJ7rojWrHeNMM+WiSlSxVPV69DQFJ5VUukqqRIS3M3XOna+CnS+dyq4O9dm0IYYG5pxJxpDKxhHJEmYMT8AM7utno/5xfvpqiPzW4VfKjex3Kjs8z4jnGQeL9MueZ2TBE2AAJghOKPNaGSu1YSkow6xGdLe11c+brYLtmA4lhyd4h81O8QTvJXuGuRgM0ZIGS4nVXirhlEtWSu8F92EsqbaDZqeP56vgXb1T2W060XRzbP1rBgIeUccj6nhEfdhH1E2XR9S3N5WBHVbPE/FfNTkjnEXJtI9WUs9NoiqK5GOILgTh7Fii7Jz3Z77uXYGPL5KHvqoO73099VSwRj9fYJjU+oL2GEbHtNZTkd5LWito7WhwjATQwhrNiCB5SyciKk2FH4uDmfd4ir2BtHArP0tQR/JambImERGkVtxHaiGbJiYFGgTTY9nCeY9HzBpI62tJGAT0CYKqtUnyxuyEVNFxSAxcyI9YxnQVLfE2jQXQfWW2/qU0VFL94rufF9Xb09nLq6sZXOWbwHPmeM58UCjFc+bDRjCeM29oA1zinDmePby0SYtnDxuatJ2cPSTCg9Ii5q0ZCAmMBJGycSusUkFzPpYsiP4omtg9a7S6yPX91eR2/ef7z/krbybzuyogUiCSTxFRfSaPVYIpT6N2MSpJvc1WslZKp8zL3FgK9/aY53CBPvKFYfwSIqxbA0ywBCGABOaCCN6kJDiRhicdrSYU10DLNVCFmY9OYJs080LNlovJESsqYEWFwaH9IhUVwPLAVKzqWVNHjJTSh6rEdVXfOmiJeZwdoPl2Pr2GKuPwagbz+Ss3235cqhFzspywFUGPrcuxEUE7UGMn5+cSIMTKH92Y4L1X/iikBhSWgHo2a6DfElCF9OzoMZMPW3acwT8byKl2N3eZeioPRDkQ+V8LiUSuuTXBgwljSUzt0b/e8RGS0lDeufw2fXBJ1wcKv14Ejxbi0UI8Wjjso4WVkTh92CBOOlq4UzxuaGcKGTbAfUFtj3YrNsBtY71ergEutgi9uNt530WwRWgfLUILKbRLOe0N3Vhqt4diRm1K7RbSN5T1V/AA+4Y2SFXFvqED96Xhea6ez3MVkr/RYztyzN8YSv4Gnu7qGtt4uqshqrGz3LPAM+ZBN4PzJfKgC8muo/358DC9DtPrBrwQ+vOFYH7ds8qvw5oil7ZrsKZIM7umi5oihZQ67Q/NWOj01BhOh4VOVxX6TScJdY/iRJhJh5l0mEk37Ew603Em3fbWMrCcOluXUldIg1hB+mNq2CH2dJLWV4fYUio/9xgkxMrPJwZSGgsKKz9j5edLofKEys+F5Fn06OPCPIuh5Fmg/xb9t+Px32L90a45HtYfPZvq9Vx/tJAjKP0RPjyAMrQDKGUkXfS4y2POxZl7fK85F4Vk3/WHf0y+G3Dy3boezAXC11gSBgPZGMj+9sJqGMim5way33y5dTeT8CssPk3jxtAcWAw7v1ITxNYm0qiUApo4ITpbvYrqSILjPiv/0Vi+2aTvj921N9324qgwbd+V2LDQwAveX8oGFhr4BoUGvOHCKQ2aWUrB2aghhbyLM8ND1TViJDA2/XV2OyE5dnvXKRfb3QkOK2tgZY0BAbvjyhpYfeDSSXNYfWA/kC/UW7aMDCasFDNUVGOnn3OxLTEa8pwQ338pAu6tsS5pzrWpHgcnovaBCpFoyp8dyTro0WaxZ5Gl4iB/trww5+MF1tl4NnDvN+cDtHY0OEYCaGGNZkSQ5CMRUWkqPO7uZzPSPRf52p8Jj3GdIKiH3A3eRe7GnvARpm1g2gambQw7bcOenbZxRGsOLYGjNn8DaAROhFfRCSm1VuBJ/o/JImNRjKUIge0rfaO406uZYu1JjqSdKNjadYaqFlUtqtphq1otzlW1w06N5NgyL4Owv9RIbJnXiidfrmVeKa5905/7E537A3LuY0vIi+cn7LsItoTsoyVkIem/rMeOkJj+exrM+0n/LeTYBvaHHBS2sT/k0COumMXecxY7Zv1i1u+grGrsDznc3RlPaDRFNfaHfBZ4xv6QzeCM/SFPz9btD854KONZHsooJG2d9ReUxLz1Z5W3jvXFL23XYH3xZnYN9occIJqxP2R/oZwj/SFVFzmkeDoDU0YxZXQIwmpYVLPTlNHtbWVoyaO1dTU5CxlVDMCErMhp1UvMWKkNy2reMKtHotdVj4r9vHyxkjV7d5LDxpDYGHKACMfGkGcAGhtDXgiV2Bjy27sDMMFiMAkW6LhFx+14HLfYGLLrMBw2hjw7ENdzY8hSDqIMOXiB51D6O4dSyKnZ/tou4JnZAZ2ZLSWzCBOLngvcsQnqs8Y/ZpgOOMN0XUiz8xyNr78ZszUwWwOzNQaercG7zNbYolEDS9YQdbkahZQXsH0F+rC8QBPFjl0hT62S0V/RI/THDdofh9FyjJaPNVqO7Tm+QTIdtuc4S1APXgXZtVfhQSGgUwGdCuhUGLZToXLbn+dUeDurvr/4slGUA/MmUIZ1w19QS/rT3Vg3vI0Cv1zdcKyrfHHKte8iWFe5j7rKXCawLqnosvnEOEvBJe505l+C2ZDUSMCdVVJ/DrRGqbe1ur8wgHcgMSyljKWUhwVqLKU8dO8YllI+imEspXwCgrGU8kDhjKWUn9HujKWUT41dYCnlQeIZSyk3gzOWUj4dzf21j8JE9wEnuhd/4In258zGE0/P6sQTVuS4tF2DFTma2TVYSnmAaMZSyqfGcDovpWy6SKh7HCfCTDrMpMNMumFn0pmOM+m2t5aB5dTZupS6TNAM0ZIGm4WlvVTCKZeslN4L7sNYotaiv4w6fW6aQcHqvVPZYUVlrKg8QIxjReUzAI0VlS+ESqyo/O29AphnMZg8C/Tfov92PP5brKjcNcfDispnU72eKyoXcgSlP8KHB1AGdgCllOwjTD56TqDH5KNnvw4w92iAuUfrejAXCF9//cUYyMZANgayBx7ItucGsr9uMJuH09lfZ+7urjq8MbBYtqmNZSuejFYCgpUpWqEZz+vREOYIKMPHcpikx2qzWrRWXLVoKk3vdyy+Wqs3bxXRC6KozOCPMTnHFPXWJBaMjWkk4O/r6ElxAUCRsfFu6j7Dx1ewWOq5p0D8+ghrCGANgWHBt9saAhj/w/jfeOJ/RHhQWsQMZSAkMBJE4pCEVSpozscS++hxP9516Kwucn1/Nbld//n+c/7Km8n8rqJ5Bdq+p4ioPtuIBMqMNkoQ6aKlwWsfA890Tzqj0avbekfe75hfxljfT+9nAarD79nWW7708wJu3k6n18Xh+FQx1caiE1OgUnKJiUQCROeBxsRSyAzOybFE6vqqFFccV8vXmVS5mvlCGBLuNekBQ8IDDgmvQmKUdhESq/HDYVQMo2IYFRt2VIxWd3hiWGz1i7Iw42TlNqqCXvnpfOE2P/frmz/P384mn7O4Hl4aXMyM18XMvPEsBhYZ+MyrkvaOp0SFjoHQmM2FkVgItL+SVZTw5lGfs7FWmOnQr3BrYxyGEUED8yC8BinBOZNpXTSciqRGk2XWY7sGWyOsJ1O5eVRu5e+z5YXF7Pv0GGMt++Mu49Nq2a9onyBn0b4zdQVyQuSEyAkHzgkZ6Y8TTrOIFhCfKyusxChUlDEI4oSTmRLK4Fly3oaUxmLc9soKd+f1smgrzHToW7zIDJEZDnYxIDNEZjguRJ/HDFm/zHBXWyA3RG6I3HDg3LCqf9YTN7z315PwTImhZE5Z0MkqKoOTKgKVGXvOK5N8MGOxbXslhi0aa50LtcLMhl5li5QQKeFgVwJSQqSE40L0WZSQ214p4WNVgXwQ+SDywaHzwdPLqrTaHf59Mp/4yfWS7T1LRshDXgpOM+ONd5JrZiXNgq36gkkBERNIT2CELcqGnA+2wuyGnqWLrBBZ4WDXArJCZIXjQvR5gcLzTg6eqyyQFyIvRF5YGC9ssC/8Oo2TNBlgMU5am0JalRjKixKMYo45CpkNMstitnJ51v4wEvVP+6s9cD5zaQW2wiyHnqV7SZujxY2gzYE2B9ocQ7c5aGc2x6+w+DSNYytiwJUjxuT1aRw1nBhmElHUKggsGmntWGyN/nzQtkXHitMxVpiJ0Y9Q0eOMHufBLgH0OKPHeVyIPi8PiXfK/poqCWR9yPqQ9Q2d9fEeWN/zLlMgSDTCksQtU0Jr7pQNTksRktQupdH4mHvkfS26Mp+DssKMhL7EitwPud9gFwFyP+R+40L0edxP9sT9sB4Bsj9kf8+N/XVXq+7gzvCcCxGIQBJzXKsYjXJMBBYCM0pnVe8TkWNpMdkn9TujglpjiBVmIPQiUyR9SPoGuwKQ9CHpGxeizyN93daia6gjkPEh40PGN3DGx9iFGd9vt9dffphNb17fz2ZZDJvjac+R/aFZi2bteM1axYxUKZIoHGWUWZaiC4lzoZm1ho4lnbk/s5aSXZvt0ptpYcuhfwEjLURaOKglcF7lAdEDLaxdUUgRkSIiRRw4RaSXpojPvhqd8ZY5xowxwgbDnKXJeSGCThICh7GYzn2GBTu37LAKXW9SxdAg+lAGuwYwNIgccFyIPi802AcHxLJzyPyQ+T1D5tfdYcC3s2qgxZexFYFhCkg01DkmmHKc6gia0+S10YRopH4nUL8zTq21QVlhVkJfYkXyh+RvsIsAyR+Sv3EhekiHAZurCWR/yP6Q/Q2d/cle2N/zLgYTlHM2gabWEuNilGBBpJCk4HmlSj0Spd9rI6rdJXoxoBVmK/QoWWSByAIHuw6QBSILHBeiz2OBujcWiEVhkAciD3xuPLC7/M+aveE5l4WxLCllmGDgg4jGADgNhkmvFNPBjcWifSb5ny1AVpiZ0JNUkfwh+RvsGkDyh+RvXIgeUv5nYy2BzA+ZHzK/gTO/inxdmPlheZjnpvzRtB2qIXBR09ZbEnWImlkvQlQkZIyHpIRNIXGS0kjQ3Z9pmzfe7tk4Foh5HPDuX8RID5EeDmoRnFciRvVCD7FIDFJFpIrPmSrSy1PFZ18mJgFRSWahJW1s4CZb0IxQRYPVxgSnRqL++wwTXsC+w0IxPcoVQ4XoTxnsKsBQIXLBcSH6vFBhP1wQi8UgA0QG+OwYoNInE8DVn5/gOn99cIxO1zE6SmO2RYljLtqowHGTZNBUZv0NQhs5EiVOLenPSN0VV2PgFKbLTxdULemixGlLqLE2ZV3iPfHEAHgDXmqrxtLhskezdO8+lRVHmlzdr0d79Kw4IJ8goToEO8WT0UpAsDJFKzTj2RoyhDkCyvCICG6JYC2abzTra76DtL7m5uF09teZuytxn+5afHXYl04D05xRDTEwbxxPIUWWDCfZ0HWI/dbWCN27N7nwCT7+Mg3ueuvhb/4/8rWWLxQH8pPlVIdmQpXnURJJSeBgDU3WCMp5ZJFJL9xI0Gz6Q3OLGoCba37lX+WB+kxx1bp/eXBOp0RdDMpQaUK0nlqV+aSxfDTBDdGflaJaT9b3vwe429ay+eHDa8WhvXsB1uE/OhdktlCIZZTKBFzHGF20ytKQ9/exeE5kb/g3ez2Vj1nU1/n6+fazu57ER2/nG8pjLWBW7hq4jBDXARRjz4qfbPtwMCCCAREMiAw7IGJOD4i8n97PAlRkKRP/jy/nX27Do5cGFySpTXuTHpQjTqXgEgvBEqaT9/klLTlTYjSZDv3FSHQL1/9xLBWm47sVXm1HbbDZmg2CsgSRVdEUHoXygZBkjfFjAX5/CWxPhNV46l7fzxfTm0evlZsFdCkxomcaPdODA/sZnulV2hs5j7YdUyFI5ZDKIZUbNpWzXVG5ev05MFJH60hdIbYt5WjcPi99fznjdmUO0C7NgbpLomGAhgEaBoUYBhsZrYhJHLa3V9Y2RBVBMO+jMwIStZJLJWRMxgTrVORjqRPEn4NhUI8qNAw6EWOd18tUOwYwFYLyxHOatZIiBkKI3npBxpLlQPtKc/hLaaCVeUt/N3Wf4eMrWCwV4ENm8GOMfvhyBx9bIBPPeeA5j+d9ziPbZYEyo43KG6mLlgavfQxcCZDO6LFkUPYYUdif/LR0jz/aWZYv/ZwN+LfT6XVxMD5VTJgN+aK/wkCYDTn0bMhuHWl1Jjo60tCRho60YTvSKDm9ydiBneD9l3kWzTNInqx1pyUbAzBhI09ScSujI1YTKojK5i9jdCSWAe/voJBp0QSrNbRKsxAuKcs6gxlAy5BI8klrU5nIWuU9RmdT2VOukh3JsmB9LYviHGuKt3GsvfTzxcyFBbp+n2zcffknikPoxVy/mIqLqbjPLRX3MJq5ZCaC0tRzJkETqYhmQTpjAgGQYymq3R+amX3x3evpzd20GvTl/WJ6nUW+KmywFH55Vm4DiWycWuy8dootbWT0bKFnCz1bw/ZsVUVkWju2Pt2tnw7OWZVfqfFWBcu9Cy4RkJFwZZRKhOQ1yC13LGgyEmWs+gtkCd7Ew7KFl8J0c2v51KYUEKskN8RS5lwIhGXQAlWeWZpx7cbiVeotXStL+tj07Dwv99zCGZKqzfNKKdq8IedNOahsDHkdM5ADJVJwwhjmebVFtDqrKNy20i4M4N0Jrg7vSYbEoldUglWRO8UiJB0y2jVEE8ZSM/IbOrfqFex7WCzy2PPi4H2ynGqdW1ZoJZMH7mT0hjsTUqIsBS8yn3VhJGjuL/i7P3nvCW/dvLB+Xh6YTxRTHZY18cFrKqwFL1kgKQDLprV3lAaeHO7MrS2RvcJ6mKQP/5hcrZsurc+Zrp7MS7ZBOhAZ5vG+6PHsG+bxDjePt8aRErnSYI0VwSqTmGaR+sANaOEz7dQjWQc97vW7xZn3bVxr7G22rvXTovf7jsRWm4qmtaPBMRIyuq3RjAiSfCQiqmzteECst7XRGwjr3XS6KN6jcrqgsDNBj2eRsDPBmTi/RGeCVUV2cmK2xoMbBzMwMAMDMzCGnYFRGYGnZ2B8ddQOLBPD1B4bKiMMQoXFQMjAtPVFAiEh5Q3RCQnaSu0UycaotEI5HVRMQWOWb2s0757cOlaM48EF9MpdlYfp86SFpzHwNMbwMH2J0xiFBED6szowAPIsAyDWMCJo3s9BeA1SgnMmMRUNpyKp0TjRemxda2uEteKdecLiZKOKV48KTic9V16YyoGpHEMG+KVTOTCEjSHsQeC8hxC2pYIE7pXlUSZDhOCeMCp45bV3Vo6lyFB/WNe7hzkeT9pqiPzW4VdKhnzH0tsE+8y5wb6NqxKDfhj0w6DfsIN+lNATon7X91eTlVDXD1+5OeR33i/uvc8fevx09ZnBBQZrmzFHBZQplhwHTTLijOBJZNq2jK6o0ZzQ7stBV15Vqnyh919u0vS2Gu/mbnqbxfHx+8/53zeT+V21eKsLVs/f3/t5mE1847OqgSpGPDNZdwQXglLGJB5okFE7B3Es2KQ9lsFulDl12q5XGPAvKcpaP4SwIq+BaLTmXHvisylFQrKCSy+dGktEpUc/xN6413q6lhvXV4Pqt9sfVzb/O5ivCi+tLaWioN+BxB7qY/ETSdgpCwt5GvI05GlD52mntFA8thvkh/nr9zf5Z09nw2ZrAtkasrXnyNY8hcgFRJUiUJkiDyTZyJkC7TJfG03QgPRmmdpGHSrP2fsKg//lBVpbiki4GCLTLlojPY9gNFiwinrHfYxjKd7SH3Nr1sF1m5asr/zb7etPEP7+83xb27vbV1DNWXGr4lJiRC8GejEGDPsuvRintq47XdWgLwN9GejLGLov4xIx5/zw324nC/RiDF35oxfjGXoxiDc+EEt94oFw6/PqNkQDkcQkmv8/Emz26MXoJlC6f9crDPiXFCV6LtBz8ezWA3ounv9aQM/FGPMv9ikZ9FmgzwJ9FkP3WfAufBab9ohvXfh7/vB8sy0M22sh67wWWXiceJk1vRI0E0lhAILUgqkkk6J8LIq/x1oWjTrAnIqtwoyCywqztsYLuvPQnTdQd56lxGlLqLE2ZZvKZ75G8r7tDXiprcJ2Z233bLFXFddUPituIz5BQuh7Q9/bc4M5+t5GsBbQ9/YtfW+yK99bIyMevW/ofUPv28C9b1R24X1b7WX5K/92O0kTiG+vM1Ha/+pz9MShwwEdDoN1OBBeORacyIjkiXKa+Vv+kvRaG6X8WE5B8f5aPlKyqz4utgkWtg56lGzdksmbtpM6mOQSMyFE7SX4FIOyPP9Xoo+u7YrRrTjKah42xwwgrq7w15m7y8MXtyY6lV1tK3fqlTUxW4PEcEYCS9bGquimi9xEOhYjpkdfxn7T9DAzfzubVl0MPmyIw5vJrLzuPB1JrQ7pJjqSwBopPHFBCmadcd5n0CsN0npEetv9XbScs81kvXWLT6++vIP8ePK5+nL1QnGQ71p8G39e5bfpxp/X2sBC3x769tC3N2zfnj29sFGb+NnAHHm1BwELiW0LDG4/MxPhWwS3GXMuBJN3XS65T1qnpHkC76JTgoexmMno1b5U3hF/8d3b+eyJH/v9Ynp35/Lll280dGMrQaUxihnnPDjFCKMKJGfaeyWVGku/MtqXG7s4NHK7HWO5XcxcWMz3x1iO5PxQlS0DSSQlgYM1NFkjKOeRRSa9GEtvMdGbiSAbJYo/vuZXZVacKXCuuDbeAXpejaDmVgb6AtAXgL6AYfsCzqkMtNoJ1jvOy5R/XbXq85Z2gOs/J4eA48abZKgRIBSwoFkgJnlrXEqCuLGEgml/fXLblAxpi6zCLIFLihIdA+gYQMfAcMCIjoHBOwZsStG6RIJLQWWL3uvonA2USMEJY2OxFfpzDKizmG7BhkF3guuoLE876wMdBugwQIfBsB0G1X7ahb/gt9uXMW7tAh+mA3YVqDpXgfaMVWLjiSsfOTOGGu2DIC7JIGA0+bM9luPZTX3uBlSFGQMXkmKdJSyyKkrG+eStJ0QkbkFImVVU1TyXqLGk0ejeVoKwNRmiv91ef1kP9TuE++rra7ZSGNJPlBK6utDVha6u4YARXV2Dd3VhDgzmwDzvHBh046Ibd+go796NW7mVunLj1tFD9OCiBxc9uAP34Jr2HtwHOa6WfP7k4Vd+guu7qubAc/LhMsEShAASmAsieJNSVvrS8KSj1WQsxXKk7M+HyxvosFNgVZgtcDE51jocNFeReQjMReetBpKcqg5HWsajH43Dob/TkE94y56LvJtOF7sb5PzH2fT+rjjQnyuuWprHQYBzJAQKwXEZZPBcuGxmyJD/jiVG0WO5m90d6rHl9SHbRR9/WKPs44+weLNTpOjfZtfFAbwTmdWhHLR2NDhGAmhhjWZEkOQjEVFpKjwgytvu4A2EtW9LKg7apwuqDs+BB+d0StTFoAyVJkTrqVWRCmM5QYukLZ51ozMEj675/e8B7paXeQdpffWH14rDefcCrG1t5FyQzJtM6ymVCbiOMWaDXFkaIovYcKA1P93rL3rcHOXrfP18+9ldT+Kjt/MN5bEWMCt3DVxGiA+5x+Q0p3V7Noxua3Rbo9t62G7rZd2CDv3Wb9c+6Q/TX+PDk827FQH7/vbzZDa9rWjX4JzZrNaZzQNV1uZ1Kk2mfDEQExihKgCnUhI7Fluhv4RkSnYrdV4UbIVZET1Lt87MlpYk441QVOjAmMibkSZSSKNVInkPH8vS6W3l7O9B+NjR9aubZBqUNc+8RBv6BAltDGRBOzeQ2ywltJrRakareehW8wn1fdruD9WTrQ8Nzlqu7+GlpYzJeZE4sYQRzjRole3nrO+tqxbpKFS+7K9Pkm3iGT0bY4WZCf0Itc429oYQQwNzziRjSOWFFimvGGN4AmbGkvvP+6OV+1v8tHFfbh0gKmw9dCq72pOAhXhT0JkyinUxIGdKygZUdEYpDR5iXi8sRB9EpkHGZgKEK6ebLMKntAc76NVkETYXV30WoYjaBREN597SpCnVKUXNuDMhAmK7Nbb3tzs8kDZUrt1zspwemoOdWNHrTG6BzkJ0FqKzcNjOwuqsycm+wsc5y29m7h/LbeBXdzc4f6Cu8wfKbLEmTqLRlhhtpBGMZWFpHXkgdDRNoAXpTbU3Os7cCEeF6fruBFfbFVdKoYGEoDizQVIGRFqbYa+yTQtsLH492mPhg719XQ9M1Ov7+WJ6s3larmHbjdDw5Bee/Bo2zC998gvP7uLZ3eF53To6u4slmrBE0yBQ3mWJJjz12F/EHU89nod7PPX4rPGPpx4Hf+qRyDPjM4f9QBiDwRgMxmCGHYOp9EBHMZgfYbFa+bD4NI3zV9OYDc8IgwvH/P/tnW1z2zi25+9HuTVVU7d7tyrN54fe2tqKnU46tUnHY3t6X2xupUAStHlbElUk5WnPbL77AqQo64GiQAKkbfGfF7GoBxzg8PAH4AA4p3V7dkBiNtillqWzf/w5dE3f9AKqxySmTuycyxBgxDHwfrYEFSY1sSHAIDrEIg0WaV643Q+/SAP3NdzX5+q+nog7T4c777VYO9x5r9r+4c578e682mWhyJ13ZPIAzx48e/DsvWzPnm4IoKBiXJV1h79ev/xE8uKq7GPm86RgjTt8Z40A682y/MnNY860dmBUgAKg8OqhYDealoj5P6v6TN1z2cTPjv3Qspi5Ed+nlsY1aAR+4MY1JozemOBA4EriYwg+nijms+qy+hyIACKAiHNAhEDgNzFEXOcFCAFCgBBnRoi+oSEPgXFBcso+uSlWQcC+tHsJaoAaoMb5UMMdiBrsZX2QKc3ADrAD7Dg7dgw14mAv/75IClAD1AA1zo4aPaNRHVLjMp0v05wBgoR/sC/nNT7ADXAD3Dg3btg9T0kdcqPaJcJ+wgYZcUKjqxkJafO7YAgYAoacDUMMgbHH9irKLw+sLfUGtC8LvmvtJl1lIf2UhqRIs62zTmAEGAFGnAEjdAGP6CEjNsp9G5eN4lfJ4q4cVPCfgw6gA+hwBnTouKNzjw4XNGYflrveGR3Y97lqAQfAAXA4Bzh4CuCwGTus6YCxA/AAPAAP+3jA1AJ4AB7OCA9dD4vt4eHLojpM+645uRUwAUwAE+eACU0SEx9ocZWl/0XD4rZW0bskwzgCgAAgzgIQvjwgajJckeL+4vGastfJA/8xfwOkAClAijMgheRiRkkKvo5xTfNqVwTTGuAAOAAOZwCHfnultuDAd0ttNlVWX7qsWgxGgBFgxBkwwpQ7PVoho2IE91/e0/CPj/l2dHqyuKCcIyAGiAFinAExJM+M7mzILrdacjqwKUhjSgtQA9QANc6AGmbPkLrNxzjeRtEWLm5TAAPAADDOCRi+wFnRbd9F9WeTrwQYAAaAgdePgV6h+Peu96FgvsnWuv9po7XfSZYQVmK+DQcbcAAcXjccLO+ovrYegxelOs0NDI1Q39U0y4tDQ9OMyLWd2HBJGDJ7K1VnjsDV41kMtlSn6d82X3khCrQ133F9qkeuZ1uxz3VJPTMIiKn5gRNppQKt4RXIiz+twDYEP6sadS3UTcuIjNAM2eNMXDs2PRK6oaMRPza0emLb1x22mxOnxfmF/gr9Ffor9Ffor9BfyfdXRscjbJ0zlTTpin8tWdyhs0Jnhc4KnRU6K3kFCtnecQA/r++P+CEJmCV6ru9phh05lufGMfVc0wtty6u7Kkuwqzqed3P/KOXfsxm6KXRT6KbQTaGbQjelppsSXao+3U2tM1PfUfRT6KfQT6GfQj+FfkpZPyV6qvxIP/UuI//Y6ag+08XqsJfS7G9cJ5ervEjn9Y931qks9FXoq9BXTbSvcsT6qhMUeVZVusTWdMs0Ao2YtkWo5ceRrgWuSYIwtAxabw0w1AG3dmBtHdAHc8FcMBfMBXO3mCseoXVn/9V1mhbVy5bdwqAsKAvKgrKgrHBkmSMjW67WD7RYB5PJgVqgFqgFaoHaBieCwPmC9tXFBc3KOKB39ILbUpixnwK5QC6QC+QCuYMgV3BDB5AL5AK5QC6Qa2rjbPUGcUFcEBfEBXF14RwjRxbK2uIUALPALDALzAKzwikhjwxseXDk6nh9vl4tA21BW9AWtAVtG9wIkkfxrrJkcTC8fZt/SnJgF9gFdoFdYLcndptiILaceygDIn4mS2AX2AV2gV1gVx12e4WeBXaBXWAX2AV2rZ6prI5vXagGu7S4T6P8Io0YhyMcPwOBQWAQGAQeYIPubuNx4hfIBXKBXCC3bR9DT+SWrfn6Nop4HVjrsnT+icZNq2nWtpLKnwG0AC1AC9By0DY+ld0Y8qyKtCNTd4ge+Ca1CENsoGu2Z7kB1agWsVf1rtyeIe8rzL5P/rwpspvkn01DWfAVfAVfwddp87Vn4JqKr1cZvfvMawK8Aq/AK/AKvO7iVc5LwPC6JBm9SVdZSI8EugVmgVlgFpidNGblRrF/W6VMRbQgwCvwCrwCr8Dr3ii2ZzCaCq/XdJ4+8OErvcjIH7Qp0iIoC8qCsqDspClbt78fZW+K7PZxSW/T5jBfICwIC8KCsNMmbM+EjxVhb5mKb1N+FOFilobwxQKygCwgC8juQ9aVh+yvzICSxR0QC8QCsUAsELuH2M5RvbYS3Wy//pXOljRrwKzxLXj6FgALwAKwACxrqCME2CP0eFYVmiQMKHVcJ3QM1yTU1SzfNmzNdm3PdExViRzFs4sBsUAsEPtiVAfEjoXYrokW1ttf05AUafb1XZLRkL1gP9n5YE1Y482y/NVP+faHwCvwek54Pc6Ijf2/KMX5xDNJoEWOFtPIDU038g0vDANTi/TAIXQ0uJqnFXcEHM/7oOqRzwwvDnwzduPQC/Uojl3DjzWDuLYbd92n1UhWrsmPBR+9phnQCrQCrUAr0Fqj1ZNB6zUNV1mePFCMXoFYIBaIBWIPEatLIfYmWdzNKNcnwAqwAqwAK8DaYezakhZhl7Nv88dFCMQCsUAsEAvEdt302jx23b7aj74NroKr4Cq4OkWueh2xepWl/0XDorra5+e+/ZCfTYAT4AQ4Xxo4y5xSooHz1k9+1QymzSipMpqk83m62H/3PZnldHO5Dwha5vzb+w0GWuAFePGieTHO2SL9tOJOAORZ9agztbkW1W3f9DU/tIhPXN0xAs13LEfXyZq7vB4DcJeVyE928ptAkkUOBAPBQDAQDAQ3INgSPd3ZCcHl9J9GHxdgL9gL9oK9YG8TezvuQerE3t/SAvgFfoFf4Bf4bcZvxwNMYvi9zVZw+gK7wC6wC+w2YbfrifxD7K5ffcjS1RKEBWFBWBAWhH0irCOwkallC/4BcGck54toeUHqJj99+DG/ypIHpk2MeUFkEBlEBpGbiCww5lVJ5JRpsKARmAwmg8lgMpjcxGSBDFgKmbwKZkkIIAPIADKADCA3AVkuckAnIP+e5EmQzJjKgGQgGUgGkoHkJiQLbJHogOTPtLhPI7iQgeKXQxSgGCh+FSgWOCunBMXwHQPGgDFgDBi3HFxWu553FMZwGoPEIDFIDBIfI7ErELpHmsRfFrPH91k6v1xlGVNF7VkGlUFlUBlUBpUPnBVjUBlreGAxWAwWg8VjOo6vsnRJswOdYBUPMAaMAWPAuB3G1mgwxjoecAwcA8fA8Wh+ihYcYyUPLAaLwWKw+OhKnjkKi7GWBy6/CH2By+Dya+CyMw6XsZoHGoPGoDFo3EpjQ4DGQtEzj2b+BWVBWVAWlJ0yZUUyrLeMeX8pNVBFoKheX6azGQ2PD2rBV/AVfAVfRRS3T4xnVVyshYZhuE7oxoFm6G5oaWYQmHYY20R33DrDsqYaqMAoMAqMAqPTwqguF4+nxug6KBpICpKCpCDpFElqDEBSTPLBVDAVTJ0qU3WBXPKnmfrucUHmSVid+cUQFTgFToHTSeJULh76GqfbHMUAFUQFUUHUqRJVU05UcBQcBUfB0WlxVM0yVH0SACQFSUFSkHSKJFWzDLVLUszywVQwFUydKlM1gaAu20ek1hC9TlOs4wOgACgAOm2A+gKJ0Rv4Wf05cawU6AQ6gU6g80zRKT72ZAqMk7tVRupT+U9Xa3Lqb8Ltdw/siPxsAqAA6OsGqG0e1dcp+39W/bk29UzPM13qhL6r+5ZhRqEbGKYXxRYhTu3eMwRxsFHoFbmjXDlXWRrSPE+zrxckpwfvghFgBBhxFowQ2ea3q9Bb1rav71eL0kX19V1G/sG+tpqzJpZa+EwXK/ABfAAfzoIPhuiUQoAPdL1tjasOiAAigIjzQITALoI2RLDPKWt+Oc244AoIM/bTHIQAIUCIsyCE7ssSotgfQ/w9mwEQAAQAcR6AEDi73QaITymJrmaru2SRX1YNBRwAB8DhLOBgCGStbIPDVZYcxsh5m39KclAClAAlzoQS0l6IYmcdg3sjMMkAIUCIcyGE3nk7xC4huC4ZJdYTDPgnQQaQYdpkKFvz9W0U8Tqw1mXp/BONMasAGUCG8yCD1tMxWZHhffLnTZHdJP+kQAKQACScBRLkBgtXGV2SjN6kqyyk2AgFMoAMZ0MGredCRUWGv61SphlaEBABRAARzoIIes/d0xURruk8feCDBHqRkT8oPI4AA8BwHmAQyUh5HAw3RXb7uKS3KRYoAQVA4VygIBLY9jgUbplmb9PLNKIXszSEXwFcABfOgwsiiQNOceFX1u5kcQcqgAqgwnlQQcrbeJXRu8+8JiACiAAinAURDFM0dGZ5VKp8vX5Zh3hax4D6tZjPqsvqc0ACkAAkzgESjoCPofrDYzLwUG/7DxX5WcdD3uEh50oX8PZuK/09Cdn/j9C9At3rpsAa3OkkJ7/8GdJleQzgmsbrM4Sb99bdo/VmWfaWN485Uxx6R/SOZ9g7NpqWiPk/q/pM3XOj0LFjP7QsZm7E96mlcQ0agR+4cc0K0e2+lzsBlJ/g8HHxQGZJtPMxAwmZU9Zc8AK8AC/OiRe6ZGiCo3FLgAagAWh4zWiwRJ1xSoYS5ptsfVt+2ij0d5IlhAnLt7lhgxvgxuvmhuUd1dfWY/CiVKe5gaER6ruaZnlxaGiaEbm2ExsuCUNmb2MlvrEtEdVp+rfNV16IAm3Nd1yf6pHr2Vbsc11SzwwCYmp+4ERaqUBreAXy4k8rsA3Bz6pGXQt10zIiIzRD9jgT145Nj4Ru6GjEjw2tngYLxOtU4zJDv4V+C/0W+i30W+i35PstYXfMsdzL+/lD0T2he0L3hO4J3RO6JwXTKoFtIMNNq7iuk8Udei30Wui10Guh15JXoJDtHQfw8y5jET8kAbNEz/U9zbAjx/LcOKaea3qhbXn1Mla/lOIKl7HQb6HfQr/1AlSHfgv91vMrUbDf6p5ybqPVvUxz/ycjyyXN0EOhh0IPhR4KPRR6KCU9lNk52s+JHip/ym6GzgqdFTordFborNBZqZlOdQ5kW2u1fmN9jZ4JPRN6JvRM6JnQM6lZoBKNpKx6gUqzv3EtXa7yIp3XJzp3NgVa6L3Qe6H3mmjv5Yj1Xico8qyqdImt6ZZpBBoxbYtQy48jXQtckwRhaBm0w1FX5fvagF/gF/gFfoFfo3OO0s5L3YAtYAvYAraAremMuWoL7oK74C64C+7qnRPmCS9AArKALCALyAKyRs9EY+vWfv1Ai/1R7lOG0m1dWdu6KnUB3oK34C14y3nb+FR2Y8jzbv+ITN0heuCb1CKMtIGu2Z7lBlSjWsRedThaq37ZDOgFeoFeoHfa6B01zwfwC/wCv8Av8NshvvQw+DW+BdzywoyJAngBXoAX4OUNdYTAe4Qez3xMIgwodVwndAzXJNTVLN82bM12bc90zI1rd1TkGm+WpZPiwNqQuAqgff2gPU6Lo4b/rIrziWeSQIscLaaRG5pu5BteGAamFumBQzb7+EXDp6tlBC0dmZVO2E+jhH8JYzMgA8h40cgYZ0qsn1bcCYA8qx51pjbXorrtm77mh2xWTFzdMQLNdyxH18nzDs8qzYG1YC1YC9aKKG6fGM+quFgLDcNgU183DjRDd0NLM4PAtMPYJrrjdjkgpWahHWAFWAHWF6M4gHVYsGqiISxF862Bn+An+PliFAd+DstP4cOkSmb9+ptw+3tYmwFjz4+xtnlUX6fs/3lP6NjUMz3PdKkT+q7uW4YZhW5gmF4UW4Q4NTGMsaayoAVoAVq8bloI58PuGBkIbAAbwIbXzQblUcMOA9kAE8AEMPG6MaH1jnfVHHcFTAATwITXzQSRZDDSToj9B5H8rAMMHcBQ3qixjrniZsnfLEMgirpsGF+cPkbXe95dLw7B4fTxqdPHqr2i7SF8wVwwF8wFcyfNXOGZSI/wvQAsAAvAArCTBiyrYLkDklM1o7PSU5OXjhizVA974qpWz8lyJ8Oywz9mFSm/6/r8iudz27klbz/y+5CnM/r1bRSxNy9mafgHG/bO52QR8V8apRB9XYnHbwsyp6Xldi2KlWJzXW8G1HVJBtPL8n55OSN5Xo2+n0bdTAeV0/WYKHZJM3b/r9kj8pnerq1BoP4ShfZvCY9Oty90LSzN8q8bpW3ea70D3QuTuAf7D/OusOuSULWmhKrft8T+bTD1Q4lXWfqQMFS8JyEr/bGtwkI/l6hdg0HWxW9OU7TWT6wACettUUD+9Qvj9tYbrZbbrSCJGjuHgm4zkhT515t7ktFo/Ux/Su+SsPygtdo9Sutfd/6Fve5zTdflsq2W7b+TIMB+6+ty163m1C/P55PZ+p3tAlo4IFWuhG0cDk925V6QXKQj6VaORH2P3ddaTt1ridS5c1kSdrP/sNey2AN+l9E8vyDZ9msBEvcuUqIVhoDIm+JxlvyTRlvvtTajd5kSVrTfSVSrhCS8p+vl2/L1RzauvkrTWacR4Kmi+tfa8Y6L+pSGjAyV1M3y5pfgv9jPf0uL9+lqEW3eb2uOOhlKn5WmOpQvK/HlGx2fFbEiJVrhHhe56SiX3JhpVDve+dTvdFvkClY4+t0WnK6ykHL9McYIPzx9S1Q492jYH7Bz1Wnucbow5fZ0XNhmI8MFuethT6IF92+R13z3pfZqtDV0GHkSPG/uOnbq8zuZrdgMnHWIDzT7+ja7e9h5pxXlKoqXaJ2AWe2Kr31b4i1UJUKilYejlxNVuKaxeAMVlK58vNEifedKaLquTkb/drqiWmaz2UUep9m8rsZtWpa69X5bW9XKkWjv4bxHtB5PbwjdXdWSlM7bMz7eu7tjEutNnOv5Ht+omWVplq/f7zhv71Cu0pnYQRwSPuU+/HGnmZhgmRK22NhJ7cqsxoPl//+bPm5ebLyhYqaoVpBEixunIq0VeUdjspoVB/Vpba9KMRKt9TtXY29FvFurhxCnenRwtDqEffGX3cBB3UcH3UqXIFBjzy0g/aSHWbZk1WNWAcnrnXICXjtlIiRa2ThtFa/CyRuoSIDCtdLTFfhMi/u021qpeKFjEGTL2XjDLISfTaGzZZ/5RbfSJdomAuvNT9iY6suS1v6IWbqgm8vWJqoTMnAv2FyJj0W5BPHLevODUJsHETfwGK+5OptX6sZ44oIkWiwCwBMVybfLbGmzalES/jwRmjRX5SZZ3NWdwA0lWXgvZOhDSZTwLwt07x2GeL2KkyByo4d0Vxyf2/K+7SnKpZihypc97Gy5a3v6lznsmLtJZv4hS1et+yVkS1a92ncyomr31T6BIiWI3/agvt9N3VDuL0gX++++JzO+RWJ92cp89cIkqN9mOYKVSWb0ls+92RScJLw7ElDCsHIl9NFmfGL1Khc9afRxIaaIYQRKaKDR69unQr+lhagSBpMpwYRG33CnOt1mK0EkKJclQfS2IelhXdavTndRMsWqXqUVEnv7uGQjzNW8+yptx+Il7lXbVPGoeLFeWLZoiV3EbX3DVZbyDT7VVetW4g6lqF6ZWkvZ2QRTLr7svNN9ZUq03IGel12575KMcm9mQnPhZikpXqJ1bf3Mrng+uqjcKWkm3jwl5ateC2+Uf03DVZYnD7TPbVQrZyD/6m49Ko8B17r43VRQukTb2gaGe9K3r8QWn+QLH4UxO1eCPjUlxStfIZ6t7pLq9frlJ5Kz/ueu3J6eFEyth+/0WCHuJ0a5lR5Ugwvkpx5p1V89Xfaw0i6FK19NbBPOX/5azGfVZfV5j9XE7iKUP4unqiDcQhXFS7SueRR1Svx1Xgg3UJEE1fv81mJ/eWD1rdn3ZfEpJVEvpCqTobyv367D5lz227g8Bc2vWMdcL4f16Os7lT4QRfekX9CYfXiZUVIw6ez7fNTRm6JihQ/El0bhG8WupbffNhXFP0vrhIxSRfEDjWT2xH9ZlEZD3zUHoeo9kukqRvm+miPV+ECLtQ+hPt6dswlO+91UI0D1zuGWCtSSr0hxf/F4XQZueOA/5m903zncX9I4ZC1rwrnH96eXHVgZpkMNWY8UPmi/vyWc98pVMVyp5Zcuq5Ahkv2+oAyJNflmR2RVhy+L2eN6L8CfNFzxH5XVal2V71egRAvaxojVn1LGuyRf8oArJwIP9ChNou7N6/7b0sS2QnQqR6K+beO46o/gmLdrSap9yE89Ow+dFGbsC/n269P7A+XKVd2TnpJ7+4+EjVoekixdzE9hSY2AwVrYEBaq9n4+bsWG6t9CUQGq9xJ1CHzVeS9Rl7JVj2nbZNefPb0lsE9cqRjVeze7VUNi72ZvQcPf3/X8YXNQrePhDaViVO8oO1qNDpMy2ZJV7ysXlSzq0FInROLuiXFw74hT94gMp0sc7HnbTAeOv6PieesmZjCeClRDdF+4WkGqPegbsbVb+ypLQ5rn6e4CzObd7h707hIGI85hDT4kxf0q4O/n4s1UJ2Swp/WwEgfvqHhau4mR2EfUPoiuX7RuIhItQmLG2q6s+sXp6V7HggbrtzbEXe9uEQmG1rNECdtofxxrf+SptZVOxQzmIeAz2/WePB5pkAfsXRTvs3T+icbt4wWpcgebXW7L3Y56LLa1Rbps1WuUJ2WLDloVlK7aD9so/X3y502R3ST/bHcJ9itQogXtc5ptgVcZvfvMvaetDehV3igUYPKWJKs3o51YxpArd5T78bdVWtA5LYii+7FVnuqd8o3yruk8feAKoxcZ+aN91VeqWNUnuRrFsmeR716/Tf+etQcI7FukRCsaVx4bRfKzQ7fpZRrRMsZ4a0MkSpVoizjvK6m/UhIli/Zwgb3LVL3rek/malH+oO651pdiPb6S8gebI7fJF+35FUkYeGRT1+BdRv5Ru87KM9mf6WIlPbI5UfpgqznHpdduwZP7BNQIGHjkUFeAT1Y+0GK9dN/eVUmVOxJRPqzjgHMnw9ZyoDKiHC1/tPYVO48Dr8eJjllN+ar3zZ2WXz8Pp5qnoniJp01kYlOL55tmNrsJTm7IkS5a9X6jI6KvsmRxEG3gbf4pyXvsN+ojQ2JWIgDrzyRZ/PIn02h+ahNJ98KGHcFzYR12WvQusn8rjH2VVX9ORw888UMJX+H+6GS7YJGkO0K/l7jv+7jbT2+/dy12/rd/oQpn1CeECg6fpYqVaM3+8Z59sVf3y6MBWjvFfO9WsMT60T6fTwvei6nHvlB9ILKJZgBpCvdaCNTmqbBOey06lqywT+8kWXDuqkyGwl3gAnVgU+eC1AOMTrvAuxeucEW3q3DB/QgqxSj0tJyuxrtHVnoSVrE8BW6mIgkSd7R7DZ7SXlzTeF2WUE4N9bIUzppO10X0pkoXrXBvSTfRPXez9Rcyal+yXYl++SZ6yxi1L7nK0iXNisdB+pL9wkftS3aFD9aXHBcj0dp9H9jpajwRr36ZZiIHHBVL6t9mXTs1q9uqykGQJ15s3avvf/gxv8qShzLbokC8s3HrIaOvUzNHmXqmBRPF870JaWzcmsjobN/dobCmq2CWhIIKG7EaMtrqAIdO1fw9yZMgmZUihfQ1akWeU2MCFfycRkmctGN95Ir015jfYZS/X6Vq+CRH+3HkS+inw6hSvH5d6D5WDSR0JNH9HK2hOM1HES/DpA4eWbH68YPofKvt5SrLmDJqwoqAfOy6SFiV8qp27PVGqsDzsKmeNUnSe6QayDx9+1u+FVWx2wB9tEo8z/PWUscOHB+nAjK21MGXJlpDCZaPXxsJ6xqgsl15PlYVFO7qbali9Ucg0kfvMiX8Zx1k7kZdfZs/LsL+sYal5PRv70G2IuF6VBtyuwfpHUric+igTt1drc1Hwnd/KIkSOujQhR2p0c1jXtB5t8dgULESu+WEHLn3S4FkzJ2LUrhTrl3UTRW5rX0rdN8iJSxRyK9yEIq2PD9/v7wpVkFAs73L0xFvh5QqMfYQ4sSpWrGX9V7gNBPWyPCyn9tG2Mu/L5JiZBtpliqhC6GZ7EGtLtP5MmVYvSLhHzwaQ109cW0MKnfwefNBxarC2E/Y3YkTGl3N2LCi+d3TyhmxEkOPe7bDYq7Xcb8sLu9p+MfHfLtssrigfG++/Linu8RxSLITErwMl82ls/6u8+7BIaVK6EKos28Mj/42irbK5SdFhdQwjEAJDYgM1jbnBDaP5fF3Tk9yBxM59FpkS52u1qXfpp+jzUX9aYdzGiNXZOC1yK715BdbX5Jei5SWP/AuupaTo2XJn0lrKj51MiS8RyKOuuMn9qoqlAsw+UUaPfLz9q1OpCHE9W190yGztx/rc6RplvMDQmX0gPzw4NNUtwd7jWF9LtNFnNyt1lnBn4R/XDyQWRLtfMwqyoSxUYFQ24eRJ2EyBzGydk3mmpJoTuuAU4d2M239TfW5afLQVTeiPChVTw/Y648FnV+laXmuWofBHD1OWymOe05nWy+/BDxTR/nGRoHNh5kPfv/UpqqQ39LifbpaREJKUydDRlGNacwqyTf3JOOL1/NlRvOcRrWLiweD2FUX7K25QpUat/31eF7FxlQNFdq5gupOPMHHVbeRf0HuoMZajc2hJ3c7+k/p3R0/mnydpo0nMEtNNnc9e0dENgWInefvW6SMWbUl0D2Qeb56OPDebcs8zKU+n6eL/XdL9NPo42JnGwweu1K9jdGM+qiXjYug4QYNm815wNYbiqo0ddUVdLbpDJof+h6Zkac5dYUJKU9BDUOaqiEpzPINI5qqEalNpg47mqodKUxcW80SzzDepoK0oBiGf1eZqhPqPO7ialPnYV5QaPK7+kykUOr3Him/eq0ZdAv221oYhhH9l3van5/DfYV4Qo6vMh6orSF5G/T3vXviOCjt+FaKvWF0c24hs9xKcdb5AjATnuhjoTCpznk/IbAUpSmKAJypmpGivEkY1fTQ5tEsTdDm8TWqzj2YXXqE2/MIbXwre0UIxPKVLVniZFD7xOOEZNFEg+qESERnEPMx1m+sr1vvWs8S0dVgTtMVYwrTpKFjOL6ve1ejBwnZoDpRv8uRjHBQ4HfhZHTThB3MQ1GGt2mrcaqPz2Dp9EDu7+rS9U3TNmE/SlMjmngip/sknckZNnUpNPEgTPFBGChX6TSVOfWHSH0q2Gnrc6rPkcK0szCgiRqQ+gy/01Tl1B8hpamFp63KqT5CA+VwhjFN1ZiUp8iGb7oxLlLXFFDTtEhYzoAJmPBkNgZLFUxnNG3FTRVIcpmk8MR9HyGRxDQtE4alPpMCLGmiljRkrgoY1SSNah2q4qeChvc/WW+WZdSgKj/nT1mZyeHNPHpTMFPanGlhDSgbWG4maQ4echiL6xPJC37SiEc9TQp+vvrgnVaLUSlG4uiL4jiITQdfVImQaKXCIH3CR3g7Fi/ROrXR45oaqEiCBNSQkHWjCyRkRUJWJGTtpg8kZBXuTU7HkLyqE2DysIw77k7Rs7DKZEi0szmDQmOszDLjaXWVLO7K4hLamrNcRekSbWsbXO5Jv6Ax+/CSDY25+4x9v46vdLRp8oUPNJJrFL5R7Fp6+21TUfyztE7IKFUUL+HJ7mA4Xxal0dB33eMIKBUjcS8bz9Yeq8YHWqyTPdRhzvJ3SdZ+N9UIkLifzclBjleglnxFivuLx2vKXicP/Mf8jdZbqljSOGQta8K5d03zqgPbjhQkSdYjhQ/a728Jb48dLdHvC8qQGBkj4TwSzm/rQmiZ8ZwTzlvNudXWLp3yj9DZqW7lyKw/IXkLVgqULGQieQuMSNqIkLwFdjTErgqJAfj5Jm9Z7ySslnfNN9laJLtez2p/J1nC43fk28u8xvYyb6mbU3uj9q7FDo/3L1ThvE0imoLwvK23DISNeCnEmW5PcxZhI9ZpOo5zkA8u2Hx5m4LWFgWr4P8T3v3ROfztCw3gripU8tHmKSkfs/1nx960uzuEwUYY7KcRAMJgv/LHeaoYR24E1ZvFLbdhFK3Z3/ig+XKVF+m8VuaOR0HXtwbTejmyVphzSHhHUbfSVe9mEJDemCVHeDdDZwHTnhWezGy8q0a+X4mfoqmccq2bTeTKHW12czStjqLZzZHyMXub5tz7INpE6wMuNkDuX6ZEO85wpUBtvpBuO5r6yBh4BaDLcdy+KwBCMrDScXJmM+Ch2KbJzRDiRuoRdwfoQoMyNeXLzN+QmhQeDjFLQWpS+L1HdxghNSncb1iTwZoM1mTQ1WBNRgxjMo6gaq/mGXifkaJ1iA4SsdYwDRjPkrB/Fr3dFFZKEXsQkB1mO4ndtJ3E2t5OksyYuJ3NJObWXhK/HA6KLLeX5Xx9G0Uf2duL4n2Wzj/RuH1KJFWuxBFjkVXASu775M+bIrtJ/tkKjJ4FSrRAZGRbCbzK6N1nUoStIS36lTfwxpCNvCXJ6I1QzAq5cke5H39bpQVlzzhRdD+2ypO4HyK+/UreNZ2nD1xh9CIjf7SH+JEqVvWQoFEsexZvH5f0Nj2x+NS7SIlWiLh2K5G39M+Cx1+I6MUsDdufEIlSVW9NaZH6Ky3ja3TfmiJSpoxrpb9pmee/RoqB5iQHmlg4wcLJhvRYOHnlj/NUMV7G6veb5svGt+Bp78GxmbIhMFPe2sKw/Xovk033ec2JcrHh/fh4TvKGYVkIe3rUZwxxagoZb5Yl+n7Kt2NO75z82kKQc3yG0Zgq8F2SUZ63M6H5QZrAjlF7uxWvGkiN4vm5n48FN7U0E2+ekvIlut62pftd+dc0XGU5DyTb4zaqlSNxP8XrccPm7jPKtS5+NxWUrvBeCufwfJs/LsL+91JKjsS9bFs229P29pXYRnn5wmWQbPgHSD5M37Qd16vkstkcRG2d8LcKgF1dtTW9SykSnXi3yqKrrhbYrAO7qOpcOQGZ7CjhXz86ayj16DYHlalUv1fSV55pK13sv/uezHK6uWzFhXphElPtNqMTrAxjNnfw8ok/qc7qnVbCsHIl9NGGObF6leCj0ceFmCKGESihgbYRWKcK/ZYWokoYTKZCJ0z3Ot1mK0EkKJeleinyaF3Wrz5k6ar1yKhUsf1bo2tCicaPVIMXyy7zgiyK/Q8/5ldZ8sBsTugOj1sPGX3t3yeV9UxZT80eUkGNjVsTGZ11mAB0rekqmCWhoMJGrIaMtvZhr6qavyd5EiSzUqSQvkatSH+N+R1c9PtVqbYkyrFrHPkS+umwlVm8fl1YNVYNJHQkAdOjNRRn0yjiZZi0PyeTrt+XxeyR75W8XGUZU0bNCxEsjV0XCatSXtWODB+pAs/DJkaAJc0OXBld6T1SDWSePqFEqN2r2G24OVolnud5a6ljB46PUwEZWxI5x9GxhhIsH782EtY1QGW78nysKkj4Rxp3eZ1yZIide5ItWmL1YTDHJxYqvg/sVYWGjy0RVnU+Hqi3vJhKILmD3bed6tBpX2/HkhUueQtIXjttTjdLQeESyw+ywsUMU6kYifvYfRfqu0dWehJWsziBm6lIgsI96KdrsC265x70/kIUDpG6VaLTEKlr0aOyph6SDsKa/cJHZc2u8MFYc1yM6rNwYtF5XlKYZqttH8laZvVHLF9zn+Jk9iwjAAlOjSAAyeZ5UDQ8n6oVTPvpVzoVmrYqp/oIDTTnnKYyp/4QqZ/ST1ufU32OBnGbTFOVU3+EFPqlpq3IqT5ASl2AMKGJmtAQvlYY00SNCYHmDyI26G/CbUNrOCW8swWgOv9pNR5O2jXonatWR3r3whQunO5G/uAxPnhsTYaQkOZ5mn29IDk9eLfTwmlPCRJtRCblQ+mvJpPyeYcwOveIksgF+6pzwSrKTqbo2VOeT/rc8psj0PtLC/SOQOkIlI5A6QiU/roCpb/+BBVO8260cgRYvl6/rCea65nor8V8Vl1Wn7cOXlSJUD13OFkF4RaqKF7CPdXLrYLTLEgLj0XNDpai1IM0TVc6zAghpJGPo3PJCs9CdZKMfBx9SgQcsb7cFWNI4P283exRjzy0iWxwwBa6q2bIKHaewZCmakgK/ZMwokka0ffqlz9d//L23edfjmXrKF8b+56s6k+V4aetySd+2P/emfte2O2C3xOejKc1qoPY7yUeUDGV4dGb5qP3vapltSH22z3J72ujjGLHtwNPc2gYR6ZOfZtQTdd9PXZMPbDd8nvspwnfnrsgs28hCe+Txd23/DEv6PzbA83yUkrys8FvOpsn8j3qZRvyb7P07puCbqOc47Q38svPbltegbWBPf3iU3r3pa7n182rbVdPJVXXthvEK+OVrjimujta8M1oNPqSXWaUFPQ3+g+mTk+LjYhYnuMamhZruh+6gR74YRyGNuUV9QT2ah+paJUbq/rODSVZeL/57C8/W7xiPtPSv6kv/d9WObsvl+mKb7djt1r7H8OJqp6l3+qpU/Mu8jYT2t53XHkneeDyIaoar+dsdWUNrdksSiZ4w9SBZHe1vz35WVOjsfpIQaOJO1Q3HCMmJnU1PdA8y4wtXQ+pRSzbcbUzMXF/JAv/bWrmydcabh7ncbrg5c2X6YKp4+svD+z/d0m+5PtFuEB+fbMK8jBLArqdPK7NNl2LBI5terFOee9FtIholudFkaFZvhW5Z2Kbxmj0lU13PC3LllJWm107rulERkBDg0Qk8F2qxcRxSeT7hhkFjgG77mrXbVnn1kKazsvlmzxU07JsSXW12bZvUosSooWhTkNi2qEdBqZFXJe9YH9D2HbXEbOaxYZJGbgSnbVZuW0HusnmgpFnB4QEQRi4UegFjsVs3bFdHVaucl5Yjh63el4asw/Le8HKZ9/nJ3WmZ+PyGmuz8NAMCXHjWGcDG8fTbS+M/ED3nUi3PN/UzmWMoo9m4UM4UCdl8OoV2OoXISS0jcDTfEPX7ZiabhRFbIju+HoYGZEN++9o/0M50Sf1DAyjxO/rNQWeKitmPUP+LaJL3ncswoRdSLr8v1UBPOZkuZesnTfpy8+O2LbHd3WNHsuDuU+X68dFd6q6f1yvbNQHKvmqyL/+WtD5csbuF2tZkv31+8GqJfu9Vy6o8KO+1c6ia3pH/6yPef30w7/++uMP//6/fvwhpwV78eMP7HbN6I8//N9//5//+d/Zn//4y3/++MOb//bjD//x//7CPv/r9x9/KktljZtzHxg/e/snf+A89i573nYWbeyYaG5sxbapm6HtUycKDGJZnmO6tma57AbxB3V4VblNqipv3n60lWfVVxCx2aSuBxq1TD/WY4P975s647NONYPapb6MEfRlHdXXjrE/r3EFgUH1IHRsTWd9GTXM2IitSDdshzihH1a9oM5rONijb71Zlpc35SLjgTEBBoDBq4eB3WhaIub/rOozdc9lEzw79kPLYuZGfJ9aGtegEfiBG9d48AfEw+nQXuAD+PDa+WAe1dcp+39W/bk29UzPM13KRguu7luGGYVuYJheFFuEOE9JLto2Cr39yBWYpzPKA9GwN8uADjlPiMgm7y9uU5DdtinIDQJN9/xYI1ZAPScItYD95xpaREPG0ehMPAPWaJ4B6/DJq0xlbR7lfpaNqUxsxt9NOW0eLeqGMaG6ZdLQcBw/shzNsUzHcW1Hdxx6Lh4t2/Cw12cgW9Sb9vrsG6SQMZrU0AzT9DUjdF2PWp5hm6ZtR65vu75GsYDWGaL73nHW5d5mJCnyrzf3JOOJ6svbwopPwvKD6aG0h4pat6e5oWkFMZsp0ZiEtkVsQkzbj2Izcj3LOJfdwSMOBPaX7U8NG6dmwF3100rg2HCoE8ckNqxYC2lEAqpHsRGHUcBM+VyGA2MtcE1uMMDkJGwmSoJqJ0G5guQJLCC12ywWi+D/OUv/zxktFjnizp71mUV6zUziM71dtx5un5fbX8Lt8yJ6V7h94PZ5MbYItw/cPq/YfBW7fULdDxw2+HZ002KG7LJPA82JfWbGfkT0czmVON5AwG5xa5wYQE7MlCU0BVcQXEFjuoL8bq6gVuuFUwhOITiFXrhTSDvpFPpQB7DKv27cvh+2g1q9KGeQ0+YMMk2i66HmurZhe75NfF03NOL7JvHcWDubyBT2eMeDDnKKnDaYifWyPTTUunpNmOWalDiuEXqhZxEv0gLPoqZvRr5hnEvgn/Gm4mbD4PwqSx+SaCfgzcSsVlArbZaq65HO5iXEIGyC7VBierEdurqtOya1XO9cpifjWepB4rKWk7TVn6mGAOqtqPYQKVbkktCKPNMMfD12dd2N48g12OghjKh/JvY8ogOpf2r6aZlzXz0hUMSIdEagCASKmLL9I1DESw8Uwc1ZwLfbOjmFTxc+Xfh0X7hP1+7i070uraFeunm5jt3WXX6RG9KAEE8zLcMNbNsONI14dujSgF0753KmwxgrHnZDWkNBq5lYh91XTXDxwsX7+l281HWJHhJDC6lr+Z5raJYWB5FmRY6rW8HZYPf5XLytrp7tjnhixttfUXAKIHrk67L1oZwCk3cOI4rwq3kGhnAOV04xt6tT7MiYHp4xeMbgGXvZnjF+puSEZ6yeAW2lE31RbjCjzQ3GBqnEIE5EiR5pjmeXB19dxwr92Alt91y2KOjjucHM/bX3JhOZWF8spBM4uODgem47FXVwfa/DIwgMBPcMHaM+jPow6nvho77TgU8asPDCxn16a5CTaXSozngJr9GjyveorthZ0oMC0KeiT0Wf+rL7VFvck5Lzjm6x9caL61tbfSrs4fI8onu2qxsOtUJPi13DtizbMqJYC84l9o01nk/FavEfNBjLxPrYjtqBn2VM08WwUMGwsJuj5cDmMTzE8BDDw5c9PORZrk8MD0/FcnthY0Tt539V+wVMIXq1tw4IA8KAsJeMsO//H32Eyo0= \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/tech/1.configuration/classes/Configuration.md b/docs/tech/1.configuration/classes/Configuration.md index c0d9d486..d62e9a5d 100644 --- a/docs/tech/1.configuration/classes/Configuration.md +++ b/docs/tech/1.configuration/classes/Configuration.md @@ -291,7 +291,7 @@ public function getGitClientPath(): string; ```php diff --git a/docs/tech/1.configuration/classes/StrTypeToUrl.md b/docs/tech/1.configuration/classes/StrTypeToUrl.md index cc710cab..cda69c1d 100644 --- a/docs/tech/1.configuration/classes/StrTypeToUrl.md +++ b/docs/tech/1.configuration/classes/StrTypeToUrl.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Configuration files / StrTypeToUrl

- StrTypeToUrl class: + StrTypeToUrl class:

@@ -77,7 +77,7 @@ See: ```php @@ -124,7 +124,7 @@ public function __construct(\BumbleDocGen\Core\Renderer\RendererHelper $renderer ```php @@ -170,22 +170,6 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti Return value: string -Throws: - -
@@ -193,7 +177,7 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti ```php @@ -214,7 +198,7 @@ public static function getName(): string; ```php diff --git a/docs/tech/1.configuration/readme.md b/docs/tech/1.configuration/readme.md index d1628dbf..52896bb9 100644 --- a/docs/tech/1.configuration/readme.md +++ b/docs/tech/1.configuration/readme.md @@ -222,4 +222,4 @@ The inheritance algorithm is as follows: scalar types can be overwritten by each

-Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
Last modified date: Sat Oct 28 11:03:31 2023 +0300
Page content update date: Wed Nov 01 2023
Made with Bumble Documentation Generator
\ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
Last modified date: Sat Oct 28 11:03:31 2023 +0300
Page content update date: Thu Nov 02 2023
Made with Bumble Documentation Generator
\ No newline at end of file diff --git a/docs/tech/2.parser/classes/ClassEntity.md b/docs/tech/2.parser/classes/ClassEntity.md index 31e9e534..6fd37fe0 100644 --- a/docs/tech/2.parser/classes/ClassEntity.md +++ b/docs/tech/2.parser/classes/ClassEntity.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Parser / Entities and entities collections / ClassEntity

- ClassEntity class: + ClassEntity class:

@@ -249,6 +249,9 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn
  • isEnum
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - Checking if class file is in git repository
  • @@ -273,6 +276,9 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -294,11 +300,11 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn ```php -public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration, \BumbleDocGen\LanguageHandler\Php\PhpHandlerSettings $phpHandlerSettings, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Reflection\ReflectorWrapper $reflector, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ClassEntityCollection $classEntityCollection, \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper $parserHelper, \BumbleDocGen\Core\Cache\LocalCache\LocalObjectCache $localObjectCache, \Psr\Log\LoggerInterface $logger, string $className, string|null $relativeFileName); +public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration, \BumbleDocGen\LanguageHandler\Php\PhpHandlerSettings $phpHandlerSettings, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Reflection\ReflectorWrapper $reflector, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ClassEntityCollection $classEntityCollection, \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper $parserHelper, \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser $composerParser, \BumbleDocGen\Core\Cache\LocalCache\LocalObjectCache $localObjectCache, \Psr\Log\LoggerInterface $logger, string $className, string|null $relativeFileName); ``` @@ -338,6 +344,11 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf $parserHelper \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper - + + + $composerParser + \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser + - $localObjectCache @@ -371,7 +382,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -430,7 +441,7 @@ public function cursorToDocAttributeLinkFragment(string $cursor, bool $isForDocu ```php @@ -461,7 +472,7 @@ public function documentCreationAllowed(): bool; ```php @@ -494,7 +505,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -516,6 +527,9 @@ public function entityDataCanBeLoaded(): bool;
  • \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • +
  • + \Exception
  • + @@ -525,7 +539,7 @@ public function entityDataCanBeLoaded(): bool; ```php @@ -578,7 +592,7 @@ public function getCacheKey(): string; ```php @@ -608,7 +622,7 @@ public function getCachedEntityDependencies(): array; ```php @@ -639,7 +653,7 @@ public function getCasesNames(): array; ```php @@ -687,7 +701,7 @@ public function getConstant(string $name): string|array|int|bool|null|float; ```php @@ -746,7 +760,7 @@ public function getConstantEntity(string $constantName, bool $unsafe = true): \B ```php @@ -783,7 +797,7 @@ public function getConstantEntityCollection(): \BumbleDocGen\LanguageHandler\Php ```php @@ -814,7 +828,7 @@ public function getConstants(): array; ```php @@ -845,7 +859,7 @@ public function getConstantsData(): array; ```php @@ -882,7 +896,7 @@ public function getDescription(): string; ```php @@ -915,7 +929,7 @@ public function getDescriptionLinks(): array; ```php @@ -952,7 +966,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -985,7 +999,7 @@ public function getDocComment(): string; ```php @@ -1022,7 +1036,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -1045,7 +1059,7 @@ public function getDocNote(): string; ```php @@ -1076,7 +1090,7 @@ public function getDocRender(): \BumbleDocGen\Core\Renderer\EntityDocRenderer\En ```php @@ -1107,7 +1121,7 @@ public function getEndLine(): int; ```php @@ -1128,7 +1142,7 @@ public function getEntityDependencies(): array; ```php @@ -1151,7 +1165,7 @@ public function getExamples(): array; ```php @@ -1182,7 +1196,7 @@ public function getExtends(): string|null; ```php @@ -1210,7 +1224,7 @@ public function getFileContent(): string; ```php @@ -1231,7 +1245,7 @@ public function getFileName(): string|null; ```php @@ -1278,7 +1292,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -1301,7 +1315,7 @@ public function getFirstExample(): string; ```php @@ -1332,7 +1346,7 @@ public function getFullFileName(): string|null; ```php @@ -1363,7 +1377,7 @@ public function getImplementingReflectionClass(): \Roave\BetterReflection\Reflec ```php @@ -1394,7 +1408,7 @@ public function getInterfaceNames(): array; ```php @@ -1425,7 +1439,7 @@ public function getInterfacesEntities(): array; ```php @@ -1456,7 +1470,7 @@ public function getInterfacesString(): string; ```php @@ -1515,7 +1529,7 @@ public function getMethodEntity(string $methodName, bool $unsafe = true): \Bumbl ```php @@ -1552,7 +1566,7 @@ public function getMethodEntityCollection(): \BumbleDocGen\LanguageHandler\Php\P ```php @@ -1583,7 +1597,7 @@ public function getMethodsData(): array; ```php @@ -1614,7 +1628,7 @@ public function getModifiersString(): string; ```php @@ -1635,7 +1649,7 @@ public function getName(): string; ```php @@ -1666,7 +1680,7 @@ public function getNamespaceName(): string; ```php @@ -1687,7 +1701,7 @@ public function getObjectId(): string; ```php @@ -1718,7 +1732,7 @@ public function getParentClass(): \BumbleDocGen\LanguageHandler\Php\Parser\Entit ```php @@ -1749,7 +1763,7 @@ public function getParentClassName(): string|null; ```php @@ -1780,7 +1794,7 @@ public function getParentClassNames(): array; ```php @@ -1801,7 +1815,7 @@ public function getPhpHandlerSettings(): \BumbleDocGen\LanguageHandler\Php\PhpHa ```php @@ -1839,7 +1853,7 @@ public function getPluginData(string $pluginKey): array|null; ```php @@ -1870,7 +1884,7 @@ public function getPropertiesData(): array; ```php @@ -1929,7 +1943,7 @@ public function getPropertyEntity(string $propertyName, bool $unsafe = true): \B ```php @@ -1966,7 +1980,7 @@ public function getPropertyEntityCollection(): \BumbleDocGen\LanguageHandler\Php ```php @@ -1987,7 +2001,7 @@ public function getReflector(): \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ ```php @@ -2035,7 +2049,7 @@ public function getRelativeFileName(bool $loadIfEmpty = true): string|null; ```php @@ -2056,7 +2070,7 @@ public function getRootEntityCollection(): \BumbleDocGen\LanguageHandler\Php\Par ```php @@ -2077,7 +2091,7 @@ public function getShortName(): string; ```php @@ -2108,7 +2122,7 @@ public function getStartLine(): int; ```php @@ -2141,7 +2155,7 @@ public function getThrows(): array; ```php @@ -2172,7 +2186,7 @@ public function getTraitsNames(): array; ```php @@ -2210,7 +2224,7 @@ public function hasAnnotationKey(string $annotationKey): bool; ```php @@ -2258,7 +2272,7 @@ public function hasConstant(string $constant): bool; ```php @@ -2288,7 +2302,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -2311,7 +2325,7 @@ public function hasExamples(): bool; ```php @@ -2359,7 +2373,7 @@ public function hasMethod(string $method): bool; ```php @@ -2407,7 +2421,7 @@ public function hasParentClass(string $parentClassName): bool; ```php @@ -2455,7 +2469,7 @@ public function hasProperty(string $property): bool; ```php @@ -2478,7 +2492,7 @@ public function hasThrows(): bool; ```php @@ -2509,7 +2523,7 @@ public function hasTraits(): bool; ```php @@ -2557,7 +2571,7 @@ public function implementsInterface(string $interfaceName): bool; ```php @@ -2588,7 +2602,7 @@ public function isAbstract(): bool; ```php @@ -2609,7 +2623,7 @@ public function isClassLoad(): bool; ```php @@ -2632,7 +2646,7 @@ public function isDeprecated(): bool; ```php @@ -2662,7 +2676,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -2695,7 +2709,7 @@ public function isEntityFileCanBeLoad(): bool; ```php @@ -2733,7 +2747,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php @@ -2757,6 +2771,27 @@ public function isEnum(): bool; + +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -2764,7 +2799,7 @@ public function isEnum(): bool; ```php @@ -2795,7 +2830,7 @@ public function isInGit(): bool; ```php @@ -2826,7 +2861,7 @@ public function isInstantiable(): bool; ```php @@ -2857,7 +2892,7 @@ public function isInterface(): bool; ```php @@ -2880,7 +2915,7 @@ public function isInternal(): bool; ```php @@ -2928,7 +2963,7 @@ public function isSubclassOf(string $className): bool; ```php @@ -2959,7 +2994,7 @@ public function isTrait(): bool; ```php @@ -3002,20 +3037,20 @@ public function loadPluginData(string $pluginKey, array $data): void; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -3025,6 +3060,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -3032,7 +3107,7 @@ public function reloadEntityDependenciesCache(): void; ```php @@ -3062,7 +3137,7 @@ public function removeNotUsedEntityDataCache(): void; ```php diff --git a/docs/tech/2.parser/classes/ConstantEntity.md b/docs/tech/2.parser/classes/ConstantEntity.md index 670dd574..136961ae 100644 --- a/docs/tech/2.parser/classes/ConstantEntity.md +++ b/docs/tech/2.parser/classes/ConstantEntity.md @@ -147,6 +147,9 @@ class ConstantEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Bas
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -237,7 +240,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -270,7 +273,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -323,7 +326,7 @@ public function getCacheKey(): string; ```php @@ -384,7 +387,7 @@ public function getDescription(): string; ```php @@ -448,7 +451,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -502,7 +505,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -556,7 +559,7 @@ public function getEndLine(): int; ```php @@ -610,7 +613,7 @@ public function getFileName(): string|null; ```php @@ -657,7 +660,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -805,7 +808,7 @@ public function getNamespaceName(): string; ```php @@ -943,7 +946,7 @@ public function getStartLine(): int; ```php @@ -976,7 +979,7 @@ public function getThrows(): array; ```php @@ -1006,7 +1009,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1029,7 +1032,7 @@ public function hasExamples(): bool; ```php @@ -1052,7 +1055,7 @@ public function hasThrows(): bool; ```php @@ -1075,7 +1078,7 @@ public function isDeprecated(): bool; ```php @@ -1105,7 +1108,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1138,7 +1141,7 @@ public function isEntityFileCanBeLoad(): bool; ```php @@ -1254,20 +1257,20 @@ public function isPublic(): bool; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1277,6 +1280,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1284,7 +1327,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/2.parser/classes/LocatedInCondition.md b/docs/tech/2.parser/classes/LocatedInCondition.md index 928c362e..e71384a0 100644 --- a/docs/tech/2.parser/classes/LocatedInCondition.md +++ b/docs/tech/2.parser/classes/LocatedInCondition.md @@ -132,7 +132,7 @@ public function canAddToCollection(\BumbleDocGen\Core\Parser\Entity\EntityInterf Throws: diff --git a/docs/tech/2.parser/classes/LocatedNotInCondition.md b/docs/tech/2.parser/classes/LocatedNotInCondition.md index 2becdf60..d9e0eef3 100644 --- a/docs/tech/2.parser/classes/LocatedNotInCondition.md +++ b/docs/tech/2.parser/classes/LocatedNotInCondition.md @@ -132,7 +132,7 @@ public function canAddToCollection(\BumbleDocGen\Core\Parser\Entity\EntityInterf Throws: diff --git a/docs/tech/2.parser/classes/MethodEntity.md b/docs/tech/2.parser/classes/MethodEntity.md index e2d35b53..3d2c597b 100644 --- a/docs/tech/2.parser/classes/MethodEntity.md +++ b/docs/tech/2.parser/classes/MethodEntity.md @@ -201,6 +201,9 @@ class MethodEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseE
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -296,7 +299,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -329,7 +332,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -413,7 +416,7 @@ public function getCacheKey(): string; ```php @@ -480,7 +483,7 @@ public function getDescription(): string; ```php @@ -740,7 +743,7 @@ public function getDocCommentRecursive(): string; ```php @@ -794,7 +797,7 @@ public function getEndLine(): int; ```php @@ -848,7 +851,7 @@ public function getFileName(): string|null; ```php @@ -895,7 +898,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -1105,7 +1108,7 @@ public function getNamespaceName(): string; ```php @@ -1462,7 +1465,7 @@ public function getStartLine(): int; ```php @@ -1495,7 +1498,7 @@ public function getThrows(): array; ```php @@ -1525,7 +1528,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1548,7 +1551,7 @@ public function hasExamples(): bool; ```php @@ -1592,7 +1595,7 @@ public function isConstructor(): bool; ```php @@ -1636,7 +1639,7 @@ public function isDynamic(): bool; ```php @@ -1666,7 +1669,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1757,7 +1760,7 @@ public function isInitialization(): bool; ```php @@ -1942,20 +1945,20 @@ public static function parseAnnotationParams(array $params): array; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1965,6 +1968,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1972,7 +2015,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/2.parser/classes/PropertyEntity.md b/docs/tech/2.parser/classes/PropertyEntity.md index 78cea3b5..7adeaa12 100644 --- a/docs/tech/2.parser/classes/PropertyEntity.md +++ b/docs/tech/2.parser/classes/PropertyEntity.md @@ -159,6 +159,9 @@ class PropertyEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Bas
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -249,7 +252,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -282,7 +285,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -335,7 +338,7 @@ public function getCacheKey(): string; ```php @@ -433,7 +436,7 @@ public function getDescription(): string; ```php @@ -503,7 +506,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -573,7 +576,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -627,7 +630,7 @@ public function getEndLine(): int; ```php @@ -681,7 +684,7 @@ public function getFileName(): string|null; ```php @@ -728,7 +731,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -913,7 +916,7 @@ public function getNamespaceName(): string; ```php @@ -1051,7 +1054,7 @@ public function getStartLine(): int; ```php @@ -1121,7 +1124,7 @@ public function getType(): string; ```php @@ -1151,7 +1154,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1174,7 +1177,7 @@ public function hasExamples(): bool; ```php @@ -1197,7 +1200,7 @@ public function hasThrows(): bool; ```php @@ -1220,7 +1223,7 @@ public function isDeprecated(): bool; ```php @@ -1250,7 +1253,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1304,7 +1307,7 @@ public function isImplementedInParentClass(): bool; ```php @@ -1420,20 +1423,20 @@ public function isPublic(): bool; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1443,6 +1446,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1450,7 +1493,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/2.parser/classes/RootEntityInterface.md b/docs/tech/2.parser/classes/RootEntityInterface.md index 66a1490f..697e19e8 100644 --- a/docs/tech/2.parser/classes/RootEntityInterface.md +++ b/docs/tech/2.parser/classes/RootEntityInterface.md @@ -63,6 +63,9 @@ their entities need to correspond to the same interfaces
  • isEntityNameValid - Check if entity name is valid
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - The entity file is in the git repository
  • @@ -148,7 +151,7 @@ public function getAbsoluteFileName(): string|null; ```php @@ -169,7 +172,7 @@ public function getEntityDependencies(): array; ```php @@ -213,7 +216,7 @@ public function getFileName(): string|null; ```php @@ -374,6 +377,27 @@ public static function isEntityNameValid(string $entityName): bool; Return value: bool +
    +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -381,7 +405,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php diff --git a/docs/tech/2.parser/entity.md b/docs/tech/2.parser/entity.md index 230d5802..0db66a51 100644 --- a/docs/tech/2.parser/entity.md +++ b/docs/tech/2.parser/entity.md @@ -123,4 +123,4 @@ These classes are a convenient wrapper for accessing data in templates:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file diff --git a/docs/tech/2.parser/entityFilterCondition.md b/docs/tech/2.parser/entityFilterCondition.md index 8d4cf2b7..a57ae87c 100644 --- a/docs/tech/2.parser/entityFilterCondition.md +++ b/docs/tech/2.parser/entityFilterCondition.md @@ -78,4 +78,4 @@ Filter condition for working with entities PHP language handler:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/2.parser/readme.md b/docs/tech/2.parser/readme.md index 249493bb..a0ec1588 100644 --- a/docs/tech/2.parser/readme.md +++ b/docs/tech/2.parser/readme.md @@ -41,4 +41,4 @@ In this section, we show how the parser works and what components it consists of

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/2.parser/sourceLocator.md b/docs/tech/2.parser/sourceLocator.md index f8ba6556..71fadff5 100644 --- a/docs/tech/2.parser/sourceLocator.md +++ b/docs/tech/2.parser/sourceLocator.md @@ -30,4 +30,4 @@ You can create your own source locators or use any existing ones. All source loc

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/01_templates.md b/docs/tech/3.renderer/01_templates.md index d6981869..7e492336 100644 --- a/docs/tech/3.renderer/01_templates.md +++ b/docs/tech/3.renderer/01_templates.md @@ -101,4 +101,4 @@ Result after starting the documentation generation process:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Fri Oct 13 18:40:45 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Fri Oct 13 18:40:45 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/02_breadcrumbs.md b/docs/tech/3.renderer/02_breadcrumbs.md index 0cad54d3..6198c5af 100644 --- a/docs/tech/3.renderer/02_breadcrumbs.md +++ b/docs/tech/3.renderer/02_breadcrumbs.md @@ -51,4 +51,4 @@ Here is an example of the result of the `generatePageBreadcrumbs` function:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/03_documentStructure.md b/docs/tech/3.renderer/03_documentStructure.md index 14f758d6..1a3543d4 100644 --- a/docs/tech/3.renderer/03_documentStructure.md +++ b/docs/tech/3.renderer/03_documentStructure.md @@ -19,4 +19,4 @@ plugins:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Fri Oct 13 18:40:45 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Fri Oct 13 18:40:45 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/04_twigCustomFilters.md b/docs/tech/3.renderer/04_twigCustomFilters.md index 764cb9d8..e438f24d 100644 --- a/docs/tech/3.renderer/04_twigCustomFilters.md +++ b/docs/tech/3.renderer/04_twigCustomFilters.md @@ -263,4 +263,4 @@ Here is a list of filters available by default:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/05_twigCustomFunctions.md b/docs/tech/3.renderer/05_twigCustomFunctions.md index ed6932f7..167beda9 100644 --- a/docs/tech/3.renderer/05_twigCustomFunctions.md +++ b/docs/tech/3.renderer/05_twigCustomFunctions.md @@ -385,4 +385,4 @@ Here is a list of functions available by default:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/classes/DrawDocumentationMenu.md b/docs/tech/3.renderer/classes/DrawDocumentationMenu.md index 3086ed84..77fd7c92 100644 --- a/docs/tech/3.renderer/classes/DrawDocumentationMenu.md +++ b/docs/tech/3.renderer/classes/DrawDocumentationMenu.md @@ -21,7 +21,7 @@ and all links with this page are recursively collected for it, after which the h See: diff --git a/docs/tech/3.renderer/classes/GeneratePageBreadcrumbs_2.md b/docs/tech/3.renderer/classes/GeneratePageBreadcrumbs_2.md index 3060d122..96a80a10 100644 --- a/docs/tech/3.renderer/classes/GeneratePageBreadcrumbs_2.md +++ b/docs/tech/3.renderer/classes/GeneratePageBreadcrumbs_2.md @@ -175,7 +175,7 @@ public function __invoke(string $currentPageTitle, string $templatePath, bool $s \DI\NotFoundException
  • - \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • + \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException diff --git a/docs/tech/3.renderer/classes/GetDocumentedEntityUrl.md b/docs/tech/3.renderer/classes/GetDocumentedEntityUrl.md index dc59f8b2..3c66c451 100644 --- a/docs/tech/3.renderer/classes/GetDocumentedEntityUrl.md +++ b/docs/tech/3.renderer/classes/GetDocumentedEntityUrl.md @@ -1,5 +1,5 @@ - BumbleDocGen / Technical description of the project / Renderer / Template functions / GetDocumentedEntityUrl
    + BumbleDocGen / Technical description of the project / Renderer / How to create documentation templates? / Linking templates / GetDocumentedEntityUrl

    GetDocumentedEntityUrl class: @@ -21,11 +21,11 @@ the `EntityDocRendererInterface::getDocFileExtension()` directory will be create See: @@ -211,13 +211,13 @@ public function __invoke(\BumbleDocGen\Core\Parser\Entity\RootEntityCollection $ \DI\DependencyException
  • - \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • + \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • \DI\NotFoundException
  • - \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException
  • + \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException diff --git a/docs/tech/3.renderer/classes/GetDocumentedEntityUrl_2.md b/docs/tech/3.renderer/classes/GetDocumentedEntityUrl_2.md index 3c66c451..dc59f8b2 100644 --- a/docs/tech/3.renderer/classes/GetDocumentedEntityUrl_2.md +++ b/docs/tech/3.renderer/classes/GetDocumentedEntityUrl_2.md @@ -1,5 +1,5 @@ - BumbleDocGen / Technical description of the project / Renderer / How to create documentation templates? / Linking templates / GetDocumentedEntityUrl
    + BumbleDocGen / Technical description of the project / Renderer / Template functions / GetDocumentedEntityUrl

    GetDocumentedEntityUrl class: @@ -21,11 +21,11 @@ the `EntityDocRendererInterface::getDocFileExtension()` directory will be create See: @@ -211,13 +211,13 @@ public function __invoke(\BumbleDocGen\Core\Parser\Entity\RootEntityCollection $ \DI\DependencyException
  • - \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • + \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • \DI\NotFoundException
  • - \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException
  • + \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException diff --git a/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_4.md b/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_4.md index 5bdbfb7b..6a63ea19 100644 --- a/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_4.md +++ b/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_4.md @@ -1,5 +1,5 @@ - BumbleDocGen / Technical description of the project / Renderer / Template filters / InvalidConfigurationParameterException
    + BumbleDocGen / Technical description of the project / Renderer / Documentation structure and breadcrumbs / InvalidConfigurationParameterException

    InvalidConfigurationParameterException class: diff --git a/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_5.md b/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_5.md index 6a63ea19..5bdbfb7b 100644 --- a/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_5.md +++ b/docs/tech/3.renderer/classes/InvalidConfigurationParameterException_5.md @@ -1,5 +1,5 @@ - BumbleDocGen / Technical description of the project / Renderer / Documentation structure and breadcrumbs / InvalidConfigurationParameterException
    + BumbleDocGen / Technical description of the project / Renderer / Template filters / InvalidConfigurationParameterException

    InvalidConfigurationParameterException class: diff --git a/docs/tech/3.renderer/classes/RootEntityInterface.md b/docs/tech/3.renderer/classes/RootEntityInterface.md index 7d97a5c6..1ba150ef 100644 --- a/docs/tech/3.renderer/classes/RootEntityInterface.md +++ b/docs/tech/3.renderer/classes/RootEntityInterface.md @@ -63,6 +63,9 @@ their entities need to correspond to the same interfaces
  • isEntityNameValid - Check if entity name is valid
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - The entity file is in the git repository
  • @@ -148,7 +151,7 @@ public function getAbsoluteFileName(): string|null; ```php @@ -169,7 +172,7 @@ public function getEntityDependencies(): array; ```php @@ -213,7 +216,7 @@ public function getFileName(): string|null; ```php @@ -374,6 +377,27 @@ public static function isEntityNameValid(string $entityName): bool; Return value: bool + +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -381,7 +405,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php diff --git a/docs/tech/3.renderer/classes/RootEntityInterface_2.md b/docs/tech/3.renderer/classes/RootEntityInterface_2.md index 7badee12..6fc62781 100644 --- a/docs/tech/3.renderer/classes/RootEntityInterface_2.md +++ b/docs/tech/3.renderer/classes/RootEntityInterface_2.md @@ -63,6 +63,9 @@ their entities need to correspond to the same interfaces
  • isEntityNameValid - Check if entity name is valid
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - The entity file is in the git repository
  • @@ -148,7 +151,7 @@ public function getAbsoluteFileName(): string|null; ```php @@ -169,7 +172,7 @@ public function getEntityDependencies(): array; ```php @@ -213,7 +216,7 @@ public function getFileName(): string|null; ```php @@ -374,6 +377,27 @@ public static function isEntityNameValid(string $entityName): bool; Return value: bool +
    +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -381,7 +405,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php diff --git a/docs/tech/3.renderer/classes/StrTypeToUrl.md b/docs/tech/3.renderer/classes/StrTypeToUrl.md index 89c5aa44..3ceef34f 100644 --- a/docs/tech/3.renderer/classes/StrTypeToUrl.md +++ b/docs/tech/3.renderer/classes/StrTypeToUrl.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Renderer / Template filters / StrTypeToUrl

    - StrTypeToUrl class: + StrTypeToUrl class:

    @@ -77,7 +77,7 @@ See: ```php @@ -124,7 +124,7 @@ public function __construct(\BumbleDocGen\Core\Renderer\RendererHelper $renderer ```php @@ -170,22 +170,6 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti Return value: string -Throws: - -

    @@ -193,7 +177,7 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti ```php @@ -214,7 +198,7 @@ public static function getName(): string; ```php diff --git a/docs/tech/3.renderer/readme.md b/docs/tech/3.renderer/readme.md index 83d85490..4e159b09 100644 --- a/docs/tech/3.renderer/readme.md +++ b/docs/tech/3.renderer/readme.md @@ -60,4 +60,4 @@ This process is presented in the form of a diagram below.

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Sep 2 21:01:47 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Sep 2 21:01:47 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file diff --git a/docs/tech/3.renderer/templatesDynamicBlocks.md b/docs/tech/3.renderer/templatesDynamicBlocks.md index e9092ab9..fc80195c 100644 --- a/docs/tech/3.renderer/templatesDynamicBlocks.md +++ b/docs/tech/3.renderer/templatesDynamicBlocks.md @@ -26,4 +26,4 @@ You can use the built-in functions and filters or add your own, so you can imple

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Sep 2 21:01:47 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Sep 2 21:01:47 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/templatesLinking.md b/docs/tech/3.renderer/templatesLinking.md index 6b6372b8..a89216ae 100644 --- a/docs/tech/3.renderer/templatesLinking.md +++ b/docs/tech/3.renderer/templatesLinking.md @@ -27,4 +27,4 @@ You can also implement your own functions for relinking if necessary.

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/3.renderer/templatesVariables.md b/docs/tech/3.renderer/templatesVariables.md index af11379c..a8ab42c2 100644 --- a/docs/tech/3.renderer/templatesVariables.md +++ b/docs/tech/3.renderer/templatesVariables.md @@ -11,4 +11,4 @@ There are several variables available in each processed template.

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/4.pluginSystem/classes/StubberPlugin.md b/docs/tech/4.pluginSystem/classes/StubberPlugin.md index e47ed002..eae9c06f 100644 --- a/docs/tech/4.pluginSystem/classes/StubberPlugin.md +++ b/docs/tech/4.pluginSystem/classes/StubberPlugin.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Plugin system / StubberPlugin

    - StubberPlugin class: + StubberPlugin class:

    @@ -57,11 +57,11 @@ final class StubberPlugin implements \BumbleDocGen\Core\Plugin\PluginInterface, ```php -public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration); +public function __construct(\BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser $composerParser); ``` @@ -78,8 +78,8 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf - $configuration - \BumbleDocGen\Core\Configuration\Configuration + $composerParser + \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser - @@ -94,7 +94,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -115,7 +115,7 @@ public static function getSubscribedEvents(): array; ```php @@ -160,7 +160,7 @@ public function onCheckIsClassEntityCanBeLoad(\BumbleDocGen\LanguageHandler\Php\ ```php diff --git a/docs/tech/4.pluginSystem/readme.md b/docs/tech/4.pluginSystem/readme.md index 4cb1fc46..5022ee64 100644 --- a/docs/tech/4.pluginSystem/readme.md +++ b/docs/tech/4.pluginSystem/readme.md @@ -190,4 +190,4 @@ plugins:

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Sat Oct 28 11:03:31 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator \ No newline at end of file diff --git a/docs/tech/classes/App.md b/docs/tech/classes/App.md index 7fceff4d..a6a41439 100644 --- a/docs/tech/classes/App.md +++ b/docs/tech/classes/App.md @@ -12,7 +12,7 @@ ```php namespace BumbleDocGen\Console; -class App extends \Symfony\Component\Console\Application implements \Symfony\Contracts\Service\ResetInterface +class App extends \Symfony\Component\Console\Application ```
    An Application is the container for a collection of commands.
    diff --git a/docs/tech/classes/BaseEntity.md b/docs/tech/classes/BaseEntity.md index 2e70f242..04ec9245 100644 --- a/docs/tech/classes/BaseEntity.md +++ b/docs/tech/classes/BaseEntity.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / BaseEntity

    - BaseEntity class: + BaseEntity class:

    @@ -116,6 +116,9 @@ abstract class BaseEntity implements \BumbleDocGen\Core\Parser\Entity\Cache\Cach
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -139,7 +142,7 @@ abstract class BaseEntity implements \BumbleDocGen\Core\Parser\Entity\Cache\Cach ```php @@ -170,7 +173,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -221,7 +224,7 @@ public function getCacheKey(): string; ```php @@ -249,7 +252,7 @@ public function getCachedEntityDependencies(): array; ```php @@ -270,7 +273,7 @@ public function getDescription(): string; ```php @@ -301,7 +304,7 @@ public function getDescriptionLinks(): array; ```php @@ -322,7 +325,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -353,7 +356,7 @@ public function getDocComment(): string; ```php @@ -374,7 +377,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -395,7 +398,7 @@ public function getDocNote(): string; ```php @@ -416,7 +419,7 @@ public function getExamples(): array; ```php @@ -437,7 +440,7 @@ public function getFileName(): string|null; ```php @@ -482,7 +485,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -503,7 +506,7 @@ public function getFirstExample(): string; ```php @@ -547,7 +550,7 @@ public function getName(): string; ```php @@ -568,7 +571,7 @@ public function getObjectId(): string; ```php @@ -589,7 +592,7 @@ public function getPhpHandlerSettings(): \BumbleDocGen\LanguageHandler\Php\PhpHa ```php @@ -633,7 +636,7 @@ public function getShortName(): string; ```php @@ -654,7 +657,7 @@ public function getStartLine(): int; ```php @@ -685,7 +688,7 @@ public function getThrows(): array; ```php @@ -713,7 +716,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -734,7 +737,7 @@ public function hasExamples(): bool; ```php @@ -755,7 +758,7 @@ public function hasThrows(): bool; ```php @@ -776,7 +779,7 @@ public function isDeprecated(): bool; ```php @@ -806,7 +809,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -837,7 +840,7 @@ public function isEntityFileCanBeLoad(): bool; ```php @@ -858,18 +861,18 @@ public function isInternal(): bool; ```php -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -879,6 +882,46 @@ public function reloadEntityDependenciesCache(): void; + +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -886,7 +929,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/classes/CacheableEntityInterface.md b/docs/tech/classes/CacheableEntityInterface.md index 08df82db..04d2f117 100644 --- a/docs/tech/classes/CacheableEntityInterface.md +++ b/docs/tech/classes/CacheableEntityInterface.md @@ -171,14 +171,14 @@ public function isEntityFileCanBeLoad(): bool; ```php -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array
    diff --git a/docs/tech/classes/CacheableEntityTrait.md b/docs/tech/classes/CacheableEntityTrait.md index 1ad53283..1bf16d86 100644 --- a/docs/tech/classes/CacheableEntityTrait.md +++ b/docs/tech/classes/CacheableEntityTrait.md @@ -35,6 +35,9 @@ trait CacheableEntityTrait
  • isEntityDataCacheOutdated
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -95,7 +98,7 @@ public function getCacheKey(): string; ```php @@ -116,6 +119,44 @@ public function isEntityDataCacheOutdated(): bool; + +
    +
    + + + +```php +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -123,7 +164,7 @@ public function isEntityDataCacheOutdated(): bool; ```php diff --git a/docs/tech/classes/CacheableEntityWrapperTrait.md b/docs/tech/classes/CacheableEntityWrapperTrait.md index 088f8765..e40efbbe 100644 --- a/docs/tech/classes/CacheableEntityWrapperTrait.md +++ b/docs/tech/classes/CacheableEntityWrapperTrait.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / CacheableEntityWrapperTrait

    - CacheableEntityWrapperTrait class: + CacheableEntityWrapperTrait class:

    @@ -38,6 +38,9 @@ trait CacheableEntityWrapperTrait
  • isEntityFileCanBeLoad
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -107,7 +110,7 @@ public function getCacheKey(): string; ```php @@ -137,7 +140,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -151,6 +154,46 @@ public function isEntityFileCanBeLoad(): bool; Return value: bool +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -158,7 +201,7 @@ public function isEntityFileCanBeLoad(): bool; ```php diff --git a/docs/tech/classes/ClassEntity.md b/docs/tech/classes/ClassEntity.md index 565619cb..910c0443 100644 --- a/docs/tech/classes/ClassEntity.md +++ b/docs/tech/classes/ClassEntity.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / ClassEntity

    - ClassEntity class: + ClassEntity class:

    @@ -249,6 +249,9 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn
  • isEnum
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - Checking if class file is in git repository
  • @@ -273,6 +276,9 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -294,11 +300,11 @@ class ClassEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEn ```php -public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration, \BumbleDocGen\LanguageHandler\Php\PhpHandlerSettings $phpHandlerSettings, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Reflection\ReflectorWrapper $reflector, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ClassEntityCollection $classEntityCollection, \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper $parserHelper, \BumbleDocGen\Core\Cache\LocalCache\LocalObjectCache $localObjectCache, \Psr\Log\LoggerInterface $logger, string $className, string|null $relativeFileName); +public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration, \BumbleDocGen\LanguageHandler\Php\PhpHandlerSettings $phpHandlerSettings, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Reflection\ReflectorWrapper $reflector, \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ClassEntityCollection $classEntityCollection, \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper $parserHelper, \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser $composerParser, \BumbleDocGen\Core\Cache\LocalCache\LocalObjectCache $localObjectCache, \Psr\Log\LoggerInterface $logger, string $className, string|null $relativeFileName); ``` @@ -338,6 +344,11 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf $parserHelper \BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper - + + + $composerParser + \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser + - $localObjectCache @@ -371,7 +382,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -430,7 +441,7 @@ public function cursorToDocAttributeLinkFragment(string $cursor, bool $isForDocu ```php @@ -461,7 +472,7 @@ public function documentCreationAllowed(): bool; ```php @@ -494,7 +505,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -516,6 +527,9 @@ public function entityDataCanBeLoaded(): bool;
  • \BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException
  • +
  • + \Exception
  • +
    @@ -525,7 +539,7 @@ public function entityDataCanBeLoaded(): bool; ```php @@ -578,7 +592,7 @@ public function getCacheKey(): string; ```php @@ -608,7 +622,7 @@ public function getCachedEntityDependencies(): array; ```php @@ -639,7 +653,7 @@ public function getCasesNames(): array; ```php @@ -687,7 +701,7 @@ public function getConstant(string $name): string|array|int|bool|null|float; ```php @@ -746,7 +760,7 @@ public function getConstantEntity(string $constantName, bool $unsafe = true): \B ```php @@ -783,7 +797,7 @@ public function getConstantEntityCollection(): \BumbleDocGen\LanguageHandler\Php ```php @@ -814,7 +828,7 @@ public function getConstants(): array; ```php @@ -845,7 +859,7 @@ public function getConstantsData(): array; ```php @@ -882,7 +896,7 @@ public function getDescription(): string; ```php @@ -915,7 +929,7 @@ public function getDescriptionLinks(): array; ```php @@ -952,7 +966,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -985,7 +999,7 @@ public function getDocComment(): string; ```php @@ -1022,7 +1036,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -1045,7 +1059,7 @@ public function getDocNote(): string; ```php @@ -1076,7 +1090,7 @@ public function getDocRender(): \BumbleDocGen\Core\Renderer\EntityDocRenderer\En ```php @@ -1107,7 +1121,7 @@ public function getEndLine(): int; ```php @@ -1128,7 +1142,7 @@ public function getEntityDependencies(): array; ```php @@ -1151,7 +1165,7 @@ public function getExamples(): array; ```php @@ -1182,7 +1196,7 @@ public function getExtends(): string|null; ```php @@ -1210,7 +1224,7 @@ public function getFileContent(): string; ```php @@ -1231,7 +1245,7 @@ public function getFileName(): string|null; ```php @@ -1278,7 +1292,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -1301,7 +1315,7 @@ public function getFirstExample(): string; ```php @@ -1332,7 +1346,7 @@ public function getFullFileName(): string|null; ```php @@ -1363,7 +1377,7 @@ public function getImplementingReflectionClass(): \Roave\BetterReflection\Reflec ```php @@ -1394,7 +1408,7 @@ public function getInterfaceNames(): array; ```php @@ -1425,7 +1439,7 @@ public function getInterfacesEntities(): array; ```php @@ -1456,7 +1470,7 @@ public function getInterfacesString(): string; ```php @@ -1515,7 +1529,7 @@ public function getMethodEntity(string $methodName, bool $unsafe = true): \Bumbl ```php @@ -1552,7 +1566,7 @@ public function getMethodEntityCollection(): \BumbleDocGen\LanguageHandler\Php\P ```php @@ -1583,7 +1597,7 @@ public function getMethodsData(): array; ```php @@ -1614,7 +1628,7 @@ public function getModifiersString(): string; ```php @@ -1635,7 +1649,7 @@ public function getName(): string; ```php @@ -1666,7 +1680,7 @@ public function getNamespaceName(): string; ```php @@ -1687,7 +1701,7 @@ public function getObjectId(): string; ```php @@ -1718,7 +1732,7 @@ public function getParentClass(): \BumbleDocGen\LanguageHandler\Php\Parser\Entit ```php @@ -1749,7 +1763,7 @@ public function getParentClassName(): string|null; ```php @@ -1780,7 +1794,7 @@ public function getParentClassNames(): array; ```php @@ -1801,7 +1815,7 @@ public function getPhpHandlerSettings(): \BumbleDocGen\LanguageHandler\Php\PhpHa ```php @@ -1839,7 +1853,7 @@ public function getPluginData(string $pluginKey): array|null; ```php @@ -1870,7 +1884,7 @@ public function getPropertiesData(): array; ```php @@ -1929,7 +1943,7 @@ public function getPropertyEntity(string $propertyName, bool $unsafe = true): \B ```php @@ -1966,7 +1980,7 @@ public function getPropertyEntityCollection(): \BumbleDocGen\LanguageHandler\Php ```php @@ -1987,7 +2001,7 @@ public function getReflector(): \BumbleDocGen\LanguageHandler\Php\Parser\Entity\ ```php @@ -2035,7 +2049,7 @@ public function getRelativeFileName(bool $loadIfEmpty = true): string|null; ```php @@ -2056,7 +2070,7 @@ public function getRootEntityCollection(): \BumbleDocGen\LanguageHandler\Php\Par ```php @@ -2077,7 +2091,7 @@ public function getShortName(): string; ```php @@ -2108,7 +2122,7 @@ public function getStartLine(): int; ```php @@ -2141,7 +2155,7 @@ public function getThrows(): array; ```php @@ -2172,7 +2186,7 @@ public function getTraitsNames(): array; ```php @@ -2210,7 +2224,7 @@ public function hasAnnotationKey(string $annotationKey): bool; ```php @@ -2258,7 +2272,7 @@ public function hasConstant(string $constant): bool; ```php @@ -2288,7 +2302,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -2311,7 +2325,7 @@ public function hasExamples(): bool; ```php @@ -2359,7 +2373,7 @@ public function hasMethod(string $method): bool; ```php @@ -2407,7 +2421,7 @@ public function hasParentClass(string $parentClassName): bool; ```php @@ -2455,7 +2469,7 @@ public function hasProperty(string $property): bool; ```php @@ -2478,7 +2492,7 @@ public function hasThrows(): bool; ```php @@ -2509,7 +2523,7 @@ public function hasTraits(): bool; ```php @@ -2557,7 +2571,7 @@ public function implementsInterface(string $interfaceName): bool; ```php @@ -2588,7 +2602,7 @@ public function isAbstract(): bool; ```php @@ -2609,7 +2623,7 @@ public function isClassLoad(): bool; ```php @@ -2632,7 +2646,7 @@ public function isDeprecated(): bool; ```php @@ -2662,7 +2676,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -2695,7 +2709,7 @@ public function isEntityFileCanBeLoad(): bool; ```php @@ -2733,7 +2747,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php @@ -2757,6 +2771,27 @@ public function isEnum(): bool; + +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -2764,7 +2799,7 @@ public function isEnum(): bool; ```php @@ -2795,7 +2830,7 @@ public function isInGit(): bool; ```php @@ -2826,7 +2861,7 @@ public function isInstantiable(): bool; ```php @@ -2857,7 +2892,7 @@ public function isInterface(): bool; ```php @@ -2880,7 +2915,7 @@ public function isInternal(): bool; ```php @@ -2928,7 +2963,7 @@ public function isSubclassOf(string $className): bool; ```php @@ -2959,7 +2994,7 @@ public function isTrait(): bool; ```php @@ -3002,20 +3037,20 @@ public function loadPluginData(string $pluginKey, array $data): void; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -3025,6 +3060,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -3032,7 +3107,7 @@ public function reloadEntityDependenciesCache(): void; ```php @@ -3062,7 +3137,7 @@ public function removeNotUsedEntityDataCache(): void; ```php diff --git a/docs/tech/classes/ComposerParser.md b/docs/tech/classes/ComposerParser.md new file mode 100644 index 00000000..fd9b98ed --- /dev/null +++ b/docs/tech/classes/ComposerParser.md @@ -0,0 +1,163 @@ + + BumbleDocGen / Technical description of the project / Class map / ComposerParser
    + +

    + ComposerParser class: +

    + + + + + +```php +namespace BumbleDocGen\LanguageHandler\Php\Parser; + +final class ComposerParser +``` + + + + + + + + +

    Initialization methods:

    + +
      +
    1. + __construct +
    2. +
    + +

    Methods:

    + +
      +
    1. + getComposerPackageDataByClassName +
    2. +
    3. + getComposerPackages +
    4. +
    + + + + + + + +

    Method details:

    + +
    + + + +```php +public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration); +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $configuration\BumbleDocGen\Core\Configuration\Configuration-
    + + + +
    +
    +
    + + + +```php +public function getComposerPackageDataByClassName(string $className): array|null; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $classNamestring-
    + +Return value: array | null + + +Throws: + + +
    +
    +
    + + + +```php +public function getComposerPackages(): array; +``` + + + +Parameters: not specified + +Return value: array + + +Throws: + + +
    +
    + + \ No newline at end of file diff --git a/docs/tech/classes/Configuration.md b/docs/tech/classes/Configuration.md index 78387f36..06d57a9a 100644 --- a/docs/tech/classes/Configuration.md +++ b/docs/tech/classes/Configuration.md @@ -291,7 +291,7 @@ public function getGitClientPath(): string; ```php diff --git a/docs/tech/classes/ConstantEntity.md b/docs/tech/classes/ConstantEntity.md index 7f234d3f..17205916 100644 --- a/docs/tech/classes/ConstantEntity.md +++ b/docs/tech/classes/ConstantEntity.md @@ -147,6 +147,9 @@ class ConstantEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Bas
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -237,7 +240,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -270,7 +273,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -323,7 +326,7 @@ public function getCacheKey(): string; ```php @@ -384,7 +387,7 @@ public function getDescription(): string; ```php @@ -448,7 +451,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -502,7 +505,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -556,7 +559,7 @@ public function getEndLine(): int; ```php @@ -610,7 +613,7 @@ public function getFileName(): string|null; ```php @@ -657,7 +660,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -805,7 +808,7 @@ public function getNamespaceName(): string; ```php @@ -943,7 +946,7 @@ public function getStartLine(): int; ```php @@ -976,7 +979,7 @@ public function getThrows(): array; ```php @@ -1006,7 +1009,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1029,7 +1032,7 @@ public function hasExamples(): bool; ```php @@ -1052,7 +1055,7 @@ public function hasThrows(): bool; ```php @@ -1075,7 +1078,7 @@ public function isDeprecated(): bool; ```php @@ -1105,7 +1108,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1138,7 +1141,7 @@ public function isEntityFileCanBeLoad(): bool; ```php @@ -1254,20 +1257,20 @@ public function isPublic(): bool; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1277,6 +1280,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1284,7 +1327,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/classes/GenerationErrorsHandler.md b/docs/tech/classes/GenerationErrorsHandler.md index 4c08c9f0..1e1e8f56 100644 --- a/docs/tech/classes/GenerationErrorsHandler.md +++ b/docs/tech/classes/GenerationErrorsHandler.md @@ -12,7 +12,7 @@ ```php namespace BumbleDocGen\Core\Logger\Handler; -final class GenerationErrorsHandler extends \Monolog\Handler\AbstractProcessingHandler implements \Monolog\Handler\ProcessableHandlerInterface, \Monolog\Handler\FormattableHandlerInterface, \Monolog\ResettableInterface, \Monolog\Handler\HandlerInterface +final class GenerationErrorsHandler extends \Monolog\Handler\AbstractProcessingHandler ```
    Base Handler class providing the Handler structure, including processors and formatters
    @@ -192,7 +192,7 @@ public function __sleep(): mixed; ```php @@ -322,7 +322,7 @@ public function getLevel(): int; ```php diff --git a/docs/tech/classes/MethodEntity.md b/docs/tech/classes/MethodEntity.md index 21822f84..2507d37d 100644 --- a/docs/tech/classes/MethodEntity.md +++ b/docs/tech/classes/MethodEntity.md @@ -201,6 +201,9 @@ class MethodEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseE
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -296,7 +299,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -329,7 +332,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -413,7 +416,7 @@ public function getCacheKey(): string; ```php @@ -480,7 +483,7 @@ public function getDescription(): string; ```php @@ -740,7 +743,7 @@ public function getDocCommentRecursive(): string; ```php @@ -794,7 +797,7 @@ public function getEndLine(): int; ```php @@ -848,7 +851,7 @@ public function getFileName(): string|null; ```php @@ -895,7 +898,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -1105,7 +1108,7 @@ public function getNamespaceName(): string; ```php @@ -1462,7 +1465,7 @@ public function getStartLine(): int; ```php @@ -1495,7 +1498,7 @@ public function getThrows(): array; ```php @@ -1525,7 +1528,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1548,7 +1551,7 @@ public function hasExamples(): bool; ```php @@ -1592,7 +1595,7 @@ public function isConstructor(): bool; ```php @@ -1636,7 +1639,7 @@ public function isDynamic(): bool; ```php @@ -1666,7 +1669,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1757,7 +1760,7 @@ public function isInitialization(): bool; ```php @@ -1942,20 +1945,20 @@ public static function parseAnnotationParams(array $params): array; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1965,6 +1968,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1972,7 +2015,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/classes/PluginEventDispatcher.md b/docs/tech/classes/PluginEventDispatcher.md index 326c8968..1959099a 100644 --- a/docs/tech/classes/PluginEventDispatcher.md +++ b/docs/tech/classes/PluginEventDispatcher.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / PluginEventDispatcher

    - PluginEventDispatcher class: + PluginEventDispatcher class:

    @@ -12,7 +12,7 @@ ```php namespace BumbleDocGen\Core\Plugin; -class PluginEventDispatcher extends \Symfony\Component\EventDispatcher\EventDispatcher implements \Symfony\Component\EventDispatcher\EventDispatcherInterface, \Symfony\Contracts\EventDispatcher\EventDispatcherInterface, \Psr\EventDispatcher\EventDispatcherInterface +class PluginEventDispatcher extends \Symfony\Component\EventDispatcher\EventDispatcher ```
    The EventDispatcherInterface is the central point of Symfony's event listener system.
    @@ -72,18 +72,33 @@ class PluginEventDispatcher extends \Symfony\Component\EventDispatcher\EventDisp ```php -// Implemented in Symfony\Component\EventDispatcher\EventDispatcher - -public function __construct(); +public function __construct(\Monolog\Logger $logger); ``` -Parameters: not specified +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $logger\Monolog\Logger-
    @@ -185,7 +200,7 @@ public function addSubscriber(\Symfony\Component\EventDispatcher\EventSubscriber ```php diff --git a/docs/tech/classes/ProjectParser.md b/docs/tech/classes/ProjectParser.md index 52e5ef4f..f9a01dd5 100644 --- a/docs/tech/classes/ProjectParser.md +++ b/docs/tech/classes/ProjectParser.md @@ -110,13 +110,13 @@ public function parse(): \BumbleDocGen\Core\Parser\Entity\RootEntityCollectionsG Throws: diff --git a/docs/tech/classes/PropertyEntity.md b/docs/tech/classes/PropertyEntity.md index 49bbbad2..f7a13d86 100644 --- a/docs/tech/classes/PropertyEntity.md +++ b/docs/tech/classes/PropertyEntity.md @@ -159,6 +159,9 @@ class PropertyEntity extends \BumbleDocGen\LanguageHandler\Php\Parser\Entity\Bas
  • reloadEntityDependenciesCache
  • +
  • + removeEntityValueFromCache +
  • removeNotUsedEntityDataCache
  • @@ -249,7 +252,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -282,7 +285,7 @@ public function entityCacheIsOutdated(): bool; ```php @@ -335,7 +338,7 @@ public function getCacheKey(): string; ```php @@ -433,7 +436,7 @@ public function getDescription(): string; ```php @@ -503,7 +506,7 @@ public function getDocBlock(): \phpDocumentor\Reflection\DocBlock; ```php @@ -573,7 +576,7 @@ public function getDocCommentEntity(): \BumbleDocGen\LanguageHandler\Php\Parser\ ```php @@ -627,7 +630,7 @@ public function getEndLine(): int; ```php @@ -681,7 +684,7 @@ public function getFileName(): string|null; ```php @@ -728,7 +731,7 @@ public function getFileSourceLink(bool $withLine = true): string|null; ```php @@ -913,7 +916,7 @@ public function getNamespaceName(): string; ```php @@ -1051,7 +1054,7 @@ public function getStartLine(): int; ```php @@ -1121,7 +1124,7 @@ public function getType(): string; ```php @@ -1151,7 +1154,7 @@ public function hasDescriptionLinks(): bool; ```php @@ -1174,7 +1177,7 @@ public function hasExamples(): bool; ```php @@ -1197,7 +1200,7 @@ public function hasThrows(): bool; ```php @@ -1220,7 +1223,7 @@ public function isDeprecated(): bool; ```php @@ -1250,7 +1253,7 @@ public function isEntityDataCacheOutdated(): bool; ```php @@ -1304,7 +1307,7 @@ public function isImplementedInParentClass(): bool; ```php @@ -1420,20 +1423,20 @@ public function isPublic(): bool; ```php // Implemented in BumbleDocGen\LanguageHandler\Php\Parser\Entity\BaseEntity -public function reloadEntityDependenciesCache(): void; +public function reloadEntityDependenciesCache(): array; ``` Parameters: not specified -Return value: void +Return value: array Throws: @@ -1443,6 +1446,46 @@ public function reloadEntityDependenciesCache(): void; +
    +
    +
    + + + +```php +// Implemented in BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait + +public function removeEntityValueFromCache(string $key): void; +``` + + + +Parameters: + + + + + + + + + + + + + + + + +
    NameTypeDescription
    $keystring-
    + +Return value: void + +

    @@ -1450,7 +1493,7 @@ public function reloadEntityDependenciesCache(): void; ```php diff --git a/docs/tech/classes/RootEntityInterface.md b/docs/tech/classes/RootEntityInterface.md index 98f570ab..d581979c 100644 --- a/docs/tech/classes/RootEntityInterface.md +++ b/docs/tech/classes/RootEntityInterface.md @@ -63,6 +63,9 @@ their entities need to correspond to the same interfaces
  • isEntityNameValid - Check if entity name is valid
  • +
  • + isExternalLibraryEntity + - The entity is loaded from a third party library and should not be treated the same as a standard one
  • isInGit - The entity file is in the git repository
  • @@ -148,7 +151,7 @@ public function getAbsoluteFileName(): string|null; ```php @@ -169,7 +172,7 @@ public function getEntityDependencies(): array; ```php @@ -213,7 +216,7 @@ public function getFileName(): string|null; ```php @@ -374,6 +377,27 @@ public static function isEntityNameValid(string $entityName): bool; Return value: bool +
    +
    +
    + + + +```php +public function isExternalLibraryEntity(): bool; +``` + +
    The entity is loaded from a third party library and should not be treated the same as a standard one
    + +Parameters: not specified + +Return value: bool + +

    @@ -381,7 +405,7 @@ public static function isEntityNameValid(string $entityName): bool; ```php diff --git a/docs/tech/classes/StrTypeToUrl.md b/docs/tech/classes/StrTypeToUrl.md index 2b2d7ad5..25da40e7 100644 --- a/docs/tech/classes/StrTypeToUrl.md +++ b/docs/tech/classes/StrTypeToUrl.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / StrTypeToUrl

    - StrTypeToUrl class: + StrTypeToUrl class:

    @@ -77,7 +77,7 @@ See: ```php @@ -124,7 +124,7 @@ public function __construct(\BumbleDocGen\Core\Renderer\RendererHelper $renderer ```php @@ -170,22 +170,6 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti Return value: string -Throws: - -

    @@ -193,7 +177,7 @@ public function __invoke(string $text, \BumbleDocGen\Core\Parser\Entity\RootEnti ```php @@ -214,7 +198,7 @@ public static function getName(): string; ```php diff --git a/docs/tech/classes/StubberPlugin.md b/docs/tech/classes/StubberPlugin.md index f3e82546..115ce876 100644 --- a/docs/tech/classes/StubberPlugin.md +++ b/docs/tech/classes/StubberPlugin.md @@ -2,7 +2,7 @@ BumbleDocGen / Technical description of the project / Class map / StubberPlugin

    - StubberPlugin class: + StubberPlugin class:

    @@ -57,11 +57,11 @@ final class StubberPlugin implements \BumbleDocGen\Core\Plugin\PluginInterface, ```php -public function __construct(\BumbleDocGen\Core\Configuration\Configuration $configuration); +public function __construct(\BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser $composerParser); ``` @@ -78,8 +78,8 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf - $configuration - \BumbleDocGen\Core\Configuration\Configuration + $composerParser + \BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser - @@ -94,7 +94,7 @@ public function __construct(\BumbleDocGen\Core\Configuration\Configuration $conf ```php @@ -115,7 +115,7 @@ public static function getSubscribedEvents(): array; ```php @@ -160,7 +160,7 @@ public function onCheckIsClassEntityCanBeLoad(\BumbleDocGen\LanguageHandler\Php\ ```php diff --git a/docs/tech/map.md b/docs/tech/map.md index b4e5458b..83e291c7 100644 --- a/docs/tech/map.md +++ b/docs/tech/map.md @@ -219,6 +219,7 @@ Directory layout ( only documented files shown ): │ │ │ │ │ │ └── SystemAsyncSourceLocator.php │ │ │ │ │ ├── AsyncSourceLocator.php Lazy loading classes. Cannot be used for initial parsing of files, only for getting specific docu... │ │ │ │ │ └── CustomSourceLocatorInterface.php +│ │ │ │ ├── ComposerParser.php │ │ │ │ └── ParserHelper.php │ │ │ ├──Plugin/ │ │ │ │ ├──CorePlugin/ diff --git a/docs/tech/readme.md b/docs/tech/readme.md index 5585ae45..ca268f55 100644 --- a/docs/tech/readme.md +++ b/docs/tech/readme.md @@ -44,4 +44,4 @@ After that, the process of parsing the project code according to the configurati

    -Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Thu Oct 5 17:42:06 2023 +0300
    Page content update date: Wed Nov 01 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file +Last page committer: fshcherbanich <filipp.shcherbanich@team.bumble.com>
    Last modified date: Thu Oct 5 17:42:06 2023 +0300
    Page content update date: Thu Nov 02 2023
    Made with Bumble Documentation Generator
    \ No newline at end of file diff --git a/src/Core/Logger/Handler/GenerationErrorsHandler.php b/src/Core/Logger/Handler/GenerationErrorsHandler.php index 8da55a70..b21143af 100644 --- a/src/Core/Logger/Handler/GenerationErrorsHandler.php +++ b/src/Core/Logger/Handler/GenerationErrorsHandler.php @@ -41,7 +41,8 @@ protected function write(array $record): void "type" => $record['level_name'], "msg" => $record['message'], 'initiator' => $initiator, - 'isRenderingError' => boolval($this->rendererContext->getCurrentTemplateFilePatch()) + 'isRenderingError' => boolval($this->rendererContext->getCurrentTemplateFilePatch()), + 'currentDocumentedEntityWrapper' => $this->rendererContext->getCurrentDocumentedEntityWrapper()?->getDocumentTransformableEntity()?->getName() ]; } diff --git a/src/Core/Parser/Entity/Cache/CacheableEntityInterface.php b/src/Core/Parser/Entity/Cache/CacheableEntityInterface.php index eafa8bb4..db46a416 100644 --- a/src/Core/Parser/Entity/Cache/CacheableEntityInterface.php +++ b/src/Core/Parser/Entity/Cache/CacheableEntityInterface.php @@ -16,7 +16,7 @@ public function isEntityFileCanBeLoad(): bool; public function isEntityDataCacheOutdated(): bool; - public function reloadEntityDependenciesCache(): void; + public function reloadEntityDependenciesCache(): array; public function removeNotUsedEntityDataCache(): void; } diff --git a/src/Core/Parser/Entity/Cache/CacheableEntityTrait.php b/src/Core/Parser/Entity/Cache/CacheableEntityTrait.php index 5bbab53c..f09b89fc 100644 --- a/src/Core/Parser/Entity/Cache/CacheableEntityTrait.php +++ b/src/Core/Parser/Entity/Cache/CacheableEntityTrait.php @@ -62,6 +62,15 @@ protected function addEntityValueToCache(string $key, mixed $value, int $cacheEx ); } + public function removeEntityValueFromCache(string $key): void + { + $this->isCacheChanged = true; + $this->entityCacheStorageHelper->removeItemValueFromCache( + $this->getCacheKey(), + $key, + ); + } + /** * @throws InvalidArgumentException */ diff --git a/src/Core/Parser/Entity/Cache/CacheableEntityWrapperTrait.php b/src/Core/Parser/Entity/Cache/CacheableEntityWrapperTrait.php index 3b344ec4..03bda662 100644 --- a/src/Core/Parser/Entity/Cache/CacheableEntityWrapperTrait.php +++ b/src/Core/Parser/Entity/Cache/CacheableEntityWrapperTrait.php @@ -5,12 +5,15 @@ namespace BumbleDocGen\Core\Parser\Entity\Cache; use BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException; +use BumbleDocGen\Core\Logger\Handler\GenerationErrorsHandler; +use DI\Attribute\Inject; use Psr\Cache\InvalidArgumentException; trait CacheableEntityWrapperTrait { use CacheableEntityTrait; + #[Inject] private GenerationErrorsHandler $generationErrorsHandler; private bool $noCacheMode = false; abstract public function isEntityFileCanBeLoad(): bool; @@ -39,9 +42,11 @@ final protected function getWrappedMethodResult( if ($this->hasEntityCacheValue($cacheKey) && !$this->entityCacheIsOutdated()) { $methodReturnValue = $this->getEntityCacheValue($cacheKey); } else { + $errorsBeforeGenerationCount = count($this->generationErrorsHandler->getRecords()); $methodReturnValue = call_user_func_array([parent::class, $methodName], $funcArgs); $this->noCacheMode = true; - if ($this->isEntityFileCanBeLoad()) { + $errorsCount = count($this->generationErrorsHandler->getRecords()); + if ($errorsCount === $errorsBeforeGenerationCount && $this->isEntityFileCanBeLoad()) { $this->addEntityValueToCache($cacheKey, $methodReturnValue, $cacheExpiresAfter); } $this->noCacheMode = false; diff --git a/src/Core/Parser/Entity/RootEntityInterface.php b/src/Core/Parser/Entity/RootEntityInterface.php index 54d1594b..babd4697 100644 --- a/src/Core/Parser/Entity/RootEntityInterface.php +++ b/src/Core/Parser/Entity/RootEntityInterface.php @@ -20,6 +20,11 @@ public static function isEntityNameValid(string $entityName): bool; */ public function entityDataCanBeLoaded(): bool; + /** + * The entity is loaded from a third party library and should not be treated the same as a standard one + */ + public function isExternalLibraryEntity(): bool; + /** * @return string[] */ diff --git a/src/Core/Plugin/PluginEventDispatcher.php b/src/Core/Plugin/PluginEventDispatcher.php index c9198bf7..d6a5858a 100644 --- a/src/Core/Plugin/PluginEventDispatcher.php +++ b/src/Core/Plugin/PluginEventDispatcher.php @@ -4,12 +4,19 @@ namespace BumbleDocGen\Core\Plugin; +use BumbleDocGen\Core\Configuration\Configuration; +use Monolog\Logger; use Symfony\Component\EventDispatcher\EventDispatcher; class PluginEventDispatcher extends EventDispatcher { private array $handledSingleExecutionEvents = []; + public function __construct(private Logger $logger) + { + parent::__construct(); + } + public function dispatch(object $event, string $eventName = null): object { if ($event instanceof OnlySingleExecutionEvent) { @@ -20,6 +27,10 @@ public function dispatch(object $event, string $eventName = null): object $this->handledSingleExecutionEvents[$uniqueExecutionId] = true; } } - return parent::dispatch($event, $eventName); + try { + return parent::dispatch($event, $eventName); + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); + } } } diff --git a/src/Core/Renderer/Twig/Filter/StrTypeToUrl.php b/src/Core/Renderer/Twig/Filter/StrTypeToUrl.php index 3764fe10..1f9678b3 100644 --- a/src/Core/Renderer/Twig/Filter/StrTypeToUrl.php +++ b/src/Core/Renderer/Twig/Filter/StrTypeToUrl.php @@ -4,13 +4,9 @@ namespace BumbleDocGen\Core\Renderer\Twig\Filter; -use BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException; use BumbleDocGen\Core\Parser\Entity\RootEntityCollection; use BumbleDocGen\Core\Renderer\RendererHelper; use BumbleDocGen\Core\Renderer\Twig\Function\GetDocumentedEntityUrl; -use BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException; -use DI\DependencyException; -use DI\NotFoundException; use Monolog\Logger; /** @@ -49,10 +45,6 @@ public static function getOptions(): array * If true, creates an entity document. Otherwise, just gives a reference to the entity code * * @return string - * @throws NotFoundException - * @throws ReflectionException - * @throws DependencyException - * @throws InvalidConfigurationParameterException */ public function __invoke( string $text, @@ -70,30 +62,34 @@ public function __invoke( $preparedTypes[] = "{$type}"; continue; } + try { + $entityOfLink = $rootEntityCollection->getLoadedOrCreateNew($type); + if (!$entityOfLink->isExternalLibraryEntity() && $entityOfLink->entityDataCanBeLoaded()) { + if ($entityOfLink->getAbsoluteFileName()) { + $link = $getDocumentedEntityUrlFunction($rootEntityCollection, $type, '', $createDocument); - $entityOfLink = $rootEntityCollection->getLoadedOrCreateNew($type); - if ($entityOfLink->entityDataCanBeLoaded()) { - if ($entityOfLink->getAbsoluteFileName()) { - $link = $getDocumentedEntityUrlFunction($rootEntityCollection, $type, '', $createDocument); + if ($useShortLinkVersion) { + $type = $entityOfLink->getShortName(); + } else { + $type = "\\{$entityOfLink->getName()}"; + } - if ($useShortLinkVersion) { - $type = $entityOfLink->getShortName(); - } else { - $type = "\\{$entityOfLink->getName()}"; + if ($link && $link !== '#') { + $preparedTypes[] = "{$type}"; + } else { + $preparedTypes[] = $type; + } } - - if ($link && $link !== '#') { - $preparedTypes[] = "{$type}"; - } else { - $preparedTypes[] = $type; + } else { + if ($entityOfLink::isEntityNameValid($type)) { + $this->logger->warning( + "StrTypeToUrl: Entity {$type} not found in specified sources" + ); } + $preparedTypes[] = $type; } - } else { - if ($entityOfLink::isEntityNameValid($type)) { - $this->logger->warning( - "StrTypeToUrl: Entity {$type} not found in specified sources" - ); - } + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); $preparedTypes[] = $type; } } diff --git a/src/LanguageHandler/Php/Parser/ComposerParser.php b/src/LanguageHandler/Php/Parser/ComposerParser.php new file mode 100644 index 00000000..32feaf16 --- /dev/null +++ b/src/LanguageHandler/Php/Parser/ComposerParser.php @@ -0,0 +1,73 @@ +packages) { + return $this->packages; + } + $installedJsonFile = realpath($this->configuration->getProjectRoot() . '/vendor/composer/installed.json'); + $installedPackagesData = json_decode(file_get_contents($installedJsonFile), true); + foreach ($installedPackagesData['packages'] as $package) { + if (!isset($package['source']['url'])) { + continue; + } + + if (str_starts_with($package['source']['url'], 'https://github.com/')) { + $url = str_replace('.git', '', $package['source']['url']); + } elseif (str_starts_with($package['source']['url'], 'git@github')) { + preg_match('/(@)(.*?)(:)(.*?)(.git)/', $package['source']['url'], $matches); + $url = "https://{$matches[2]}/{$matches[4]}"; + } else { + continue; + } + + $psr4 = $package['autoload']["psr-4"] ?? []; + foreach ($psr4 as $namespace => $path) { + $this->packages[$namespace] = [ + 'path' => $path, + 'namespace' => $namespace, + 'url' => $url + ]; + } + } + return $this->packages; + } + + /** + * @throws \Exception + */ + public function getComposerPackageDataByClassName(string $className): ?array + { + if (!ParserHelper::isCorrectClassName($className)) { + return null; + } + $packages = $this->getComposerPackages(); + $classParts = explode('\\', $className); + $namespace = ''; + foreach ($classParts as $part) { + if ($part) { + $namespace .= "{$part}\\"; + if (isset($packages[$namespace])) { + return $packages[$namespace]; + } + } + } + return null; + } +} diff --git a/src/LanguageHandler/Php/Parser/Entity/BaseEntity.php b/src/LanguageHandler/Php/Parser/Entity/BaseEntity.php index 39b59557..ac4bf729 100644 --- a/src/LanguageHandler/Php/Parser/Entity/BaseEntity.php +++ b/src/LanguageHandler/Php/Parser/Entity/BaseEntity.php @@ -8,6 +8,7 @@ use BumbleDocGen\Core\Cache\LocalCache\LocalObjectCache; use BumbleDocGen\Core\Configuration\Configuration; use BumbleDocGen\Core\Configuration\Exception\InvalidConfigurationParameterException; +use BumbleDocGen\Core\Logger\Handler\GenerationErrorsHandler; use BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityInterface; use BumbleDocGen\Core\Parser\Entity\Cache\CacheableEntityTrait; use BumbleDocGen\Core\Parser\Entity\Cache\CacheableMethod; @@ -477,7 +478,7 @@ protected function getCurrentRootEntity(): ?RootEntityInterface return null; } - private function getEntityDependenciesCacheKey(): string + protected function getEntityDependenciesCacheKey(): string { return "__internalEntityDependencies{$this->getCacheKey()}"; } @@ -493,23 +494,32 @@ final public function getCachedEntityDependencies(): array $filesDependenciesCacheKey = $this->getEntityDependenciesCacheKey(); $entityDependencies = $this->getEntityCacheValue($filesDependenciesCacheKey); if (is_null($entityDependencies)) { - $entityDependencies = $entity->getEntityDependencies(); - $this->addEntityValueToCache($this->getEntityDependenciesCacheKey(), $entityDependencies); + $entityDependencies = $this->reloadEntityDependenciesCache(); } } return $entityDependencies; } + #[Inject] private GenerationErrorsHandler $generationErrorsHandler; /** * @throws InvalidArgumentException */ - final public function reloadEntityDependenciesCache(): void + final public function reloadEntityDependenciesCache(): array { + $entityDependencies = []; $entity = $this->getCurrentRootEntity(); if ($entity) { + $errorsBeforeCount = count($this->generationErrorsHandler->getRecords()); $entityDependencies = $entity->getEntityDependencies(); - $this->addEntityValueToCache($this->getEntityDependenciesCacheKey(), $entityDependencies); + $errorsAfterCount = count($this->generationErrorsHandler->getRecords()); + if ($errorsBeforeCount === $errorsAfterCount) { + $this->addEntityValueToCache($this->getEntityDependenciesCacheKey(), $entityDependencies); + } else { + $this->removeEntityValueFromCache($this->getEntityDependenciesCacheKey()); + $entityDependencies = []; + } } + return $entityDependencies; } /** diff --git a/src/LanguageHandler/Php/Parser/Entity/ClassEntity.php b/src/LanguageHandler/Php/Parser/Entity/ClassEntity.php index 61cf3940..efde7556 100644 --- a/src/LanguageHandler/Php/Parser/Entity/ClassEntity.php +++ b/src/LanguageHandler/Php/Parser/Entity/ClassEntity.php @@ -13,6 +13,7 @@ use BumbleDocGen\Core\Renderer\Context\DocumentTransformableEntityInterface; use BumbleDocGen\Core\Renderer\EntityDocRenderer\EntityDocRendererInterface; use BumbleDocGen\Core\Renderer\Twig\Filter\PrepareSourceLink; +use BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser; use BumbleDocGen\LanguageHandler\Php\Parser\Entity\Exception\ReflectionException; use BumbleDocGen\LanguageHandler\Php\Parser\Entity\Reflection\ReflectorWrapper; use BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper; @@ -49,6 +50,7 @@ public function __construct( private ReflectorWrapper $reflector, private ClassEntityCollection $classEntityCollection, private ParserHelper $parserHelper, + private ComposerParser $composerParser, private LocalObjectCache $localObjectCache, private LoggerInterface $logger, private string $className, @@ -75,6 +77,15 @@ public function getObjectId(): string return $this->className; } + /** + * @inheritDoc + * @throws \Exception + */ + public function isExternalLibraryEntity(): bool + { + return !is_null($this->composerParser->getComposerPackageDataByClassName($this->getName())); + } + public function setReflectionClass(ReflectionClass $reflectionClass): void { $this->reflectionClass = $reflectionClass; @@ -102,6 +113,7 @@ public function getRootEntityCollection(): ClassEntityCollection * @throws DependencyException * @throws ReflectionException * @throws InvalidConfigurationParameterException + * @throws \Exception */ public function getEntityDependencies(): array { @@ -113,8 +125,9 @@ public function getEntityDependencies(): array $interfaceNames = $this->getInterfaceNames(); $classNames = array_unique(array_merge($parentClassNames, $traitClassNames, $interfaceNames)); + $classNames = array_filter($classNames, fn(string $className) => !$this->composerParser->getComposerPackageDataByClassName($className)); - $reflections = array_map(fn($className) => $this->getReflector()->reflectClass($className), $classNames); + $reflections = array_map(fn(string $className): ReflectionClass => $this->getReflector()->reflectClass($className), $classNames); $reflections[] = $currentClassEntityReflection; foreach ($reflections as $reflectionClass) { $fileName = $reflectionClass->getFileName(); @@ -293,6 +306,7 @@ public function isClassLoad(): bool /** * @throws ReflectionException * @throws InvalidConfigurationParameterException + * @throws \Exception */ #[CacheableMethod] public function entityDataCanBeLoaded(): bool { @@ -304,7 +318,7 @@ public function isClassLoad(): bool $this->logger->notice("Class `{$this->getName()}` loading skipped by plugin"); return false; } - return $this->isEntityFileCanBeLoad(); + return !$this->isExternalLibraryEntity() && $this->isEntityFileCanBeLoad(); } public function getShortName(): string @@ -457,6 +471,9 @@ public function getInterfacesEntities(): array */ #[CacheableMethod] public function getParentClassNames(): array { + if ($this->isExternalLibraryEntity()) { + return []; + } if ($this->isInterface()) { return $this->getInterfaceNames(); } else { @@ -506,7 +523,9 @@ public function getInterfacesEntities(): array $parentInterfaceNames = []; try { $interfaceEntity = $this->getRootEntityCollection()->getLoadedOrCreateNew($interfaceName); - $parentInterfaceNames = $interfaceEntity->getInterfaceNames(); + if (!$interfaceEntity->isExternalLibraryEntity()) { + $parentInterfaceNames = $interfaceEntity->getInterfaceNames(); + } } catch (\Exception $e) { $this->logger->error($e->getMessage()); } @@ -515,7 +534,9 @@ public function getInterfacesEntities(): array if (!$this->isInterface() && $parentClass = $this->getParentClass()) { $parentInterfaceNames = []; try { - $parentInterfaceNames = $parentClass->getInterfaceNames(); + if (!$parentClass->isExternalLibraryEntity()) { + $parentInterfaceNames = $parentClass->getInterfaceNames(); + } } catch (\Exception $e) { $this->logger->error($e->getMessage()); } @@ -812,7 +833,7 @@ public function getFileContent(): string */ #[CacheableMethod] public function isInterface(): bool { - return $this->getReflection()->isInterface(); + return $this->getReflection()->getAst() instanceof InterfaceNode; } /** diff --git a/src/LanguageHandler/Php/Plugin/CorePlugin/ComposerPackagesStubber/StubberPlugin.php b/src/LanguageHandler/Php/Plugin/CorePlugin/ComposerPackagesStubber/StubberPlugin.php index 1be4a906..a2d6f610 100644 --- a/src/LanguageHandler/Php/Plugin/CorePlugin/ComposerPackagesStubber/StubberPlugin.php +++ b/src/LanguageHandler/Php/Plugin/CorePlugin/ComposerPackagesStubber/StubberPlugin.php @@ -4,10 +4,9 @@ namespace BumbleDocGen\LanguageHandler\Php\Plugin\CorePlugin\ComposerPackagesStubber; -use BumbleDocGen\Core\Configuration\Configuration; use BumbleDocGen\Core\Plugin\Event\Renderer\OnGettingResourceLink; use BumbleDocGen\Core\Plugin\PluginInterface; -use BumbleDocGen\LanguageHandler\Php\Parser\ParserHelper; +use BumbleDocGen\LanguageHandler\Php\Parser\ComposerParser; use BumbleDocGen\LanguageHandler\Php\Plugin\Event\Entity\OnCheckIsClassEntityCanBeLoad; /** @@ -18,7 +17,7 @@ final class StubberPlugin implements PluginInterface private array $packages = []; private array $foundLinks = []; - public function __construct(private Configuration $configuration) + public function __construct(private ComposerParser $composerParser) { } @@ -39,7 +38,7 @@ final public function onGettingResourceLink(OnGettingResourceLink $event): void $resourceName = trim($event->getResourceName()); if (!isset($this->foundLinks[$resourceName])) { - $packageData = $this->getPackageDataByName($resourceName); + $packageData = $this->composerParser->getComposerPackageDataByClassName($resourceName); if (!$packageData) { return; } @@ -61,66 +60,8 @@ final public function onGettingResourceLink(OnGettingResourceLink $event): void */ final public function onCheckIsClassEntityCanBeLoad(OnCheckIsClassEntityCanBeLoad $event): void { - if ($this->getPackageDataByName($event->getEntity()->getName())) { + if ($this->composerParser->getComposerPackageDataByClassName($event->getEntity()->getName())) { $event->disableClassLoading(); } } - - /** - * @throws \Exception - */ - private function getComposerPackages(): array - { - if ($this->packages) { - return $this->packages; - } - $installedJsonFile = realpath($this->configuration->getProjectRoot() . '/vendor/composer/installed.json'); - $installedPackagesData = json_decode(file_get_contents($installedJsonFile), true); - foreach ($installedPackagesData['packages'] as $package) { - if (!isset($package['source']['url'])) { - continue; - } - - if (str_starts_with($package['source']['url'], 'https://github.com/')) { - $url = str_replace('.git', '', $package['source']['url']); - } elseif (str_starts_with($package['source']['url'], 'git@github')) { - preg_match('/(@)(.*?)(:)(.*?)(.git)/', $package['source']['url'], $matches); - $url = "https://{$matches[2]}/{$matches[4]}"; - } else { - continue; - } - - $psr4 = $package['autoload']["psr-4"] ?? []; - foreach ($psr4 as $namespace => $path) { - $this->packages[$namespace] = [ - 'path' => $path, - 'namespace' => $namespace, - 'url' => $url - ]; - } - } - return $this->packages; - } - - /** - * @throws \Exception - */ - private function getPackageDataByName(string $className): ?array - { - if (!ParserHelper::isCorrectClassName($className)) { - return null; - } - $packages = $this->getComposerPackages(); - $classParts = explode('\\', $className); - $namespace = ''; - foreach ($classParts as $part) { - if ($part) { - $namespace .= "{$part}\\"; - if (isset($packages[$namespace])) { - return $packages[$namespace]; - } - } - } - return null; - } }