From 9884cc6d940f0b2dd5f81f5956f19fd83595f95a Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 17 Apr 2021 22:39:18 +0200 Subject: [PATCH] Added test case documentation generator --- Makefile | 3 + README.md | 9 +++ docs/test_cases.md | 19 +++++ docs/test_cases/t00002.md | 63 +++++++++++++++++ docs/test_cases/t00002_class.png | Bin 0 -> 14356 bytes docs/test_cases/t00003.md | 79 +++++++++++++++++++++ docs/test_cases/t00003_class.png | Bin 0 -> 14141 bytes docs/test_cases/t00004.md | 44 ++++++++++++ docs/test_cases/t00004_class.png | Bin 0 -> 10357 bytes docs/test_cases/t00005.md | 78 ++++++++++++++++++++ docs/test_cases/t00005_class.png | Bin 0 -> 30511 bytes docs/test_cases/t00006.md | 106 ++++++++++++++++++++++++++++ docs/test_cases/t00006_class.png | Bin 0 -> 64456 bytes docs/test_cases/t00007.md | 44 ++++++++++++ docs/test_cases/t00007_class.png | Bin 0 -> 8401 bytes docs/test_cases/t00008.md | 57 +++++++++++++++ docs/test_cases/t00008_class.png | Bin 0 -> 18633 bytes docs/test_cases/t00009.md | 42 +++++++++++ docs/test_cases/t00009_class.png | Bin 0 -> 16714 bytes docs/test_cases/t00010.md | 46 ++++++++++++ docs/test_cases/t00010_class.png | Bin 0 -> 14911 bytes docs/test_cases/t00011.md | 56 +++++++++++++++ docs/test_cases/t00011_class.png | Bin 0 -> 8608 bytes docs/test_cases/t00012.md | 59 ++++++++++++++++ docs/test_cases/t00012_class.png | Bin 0 -> 34419 bytes docs/test_cases/t00013.md | 83 ++++++++++++++++++++++ docs/test_cases/t00013_class.png | Bin 0 -> 43309 bytes docs/test_cases/t00014.md | 74 +++++++++++++++++++ docs/test_cases/t00014_class.png | Bin 0 -> 26060 bytes docs/test_cases/t20001.md | 103 +++++++++++++++++++++++++++ docs/test_cases/t20001_sequence.png | Bin 0 -> 14872 bytes docs/test_cases/t90000.md | 31 ++++++++ docs/test_cases/t90000_class.png | Bin 0 -> 16076 bytes tests/test_cases.yaml | 49 +++++++++++++ util/generate_test_cases_docs.py | 66 +++++++++++++++++ 35 files changed, 1111 insertions(+) create mode 100644 docs/test_cases.md create mode 100644 docs/test_cases/t00002.md create mode 100644 docs/test_cases/t00002_class.png create mode 100644 docs/test_cases/t00003.md create mode 100644 docs/test_cases/t00003_class.png create mode 100644 docs/test_cases/t00004.md create mode 100644 docs/test_cases/t00004_class.png create mode 100644 docs/test_cases/t00005.md create mode 100644 docs/test_cases/t00005_class.png create mode 100644 docs/test_cases/t00006.md create mode 100644 docs/test_cases/t00006_class.png create mode 100644 docs/test_cases/t00007.md create mode 100644 docs/test_cases/t00007_class.png create mode 100644 docs/test_cases/t00008.md create mode 100644 docs/test_cases/t00008_class.png create mode 100644 docs/test_cases/t00009.md create mode 100644 docs/test_cases/t00009_class.png create mode 100644 docs/test_cases/t00010.md create mode 100644 docs/test_cases/t00010_class.png create mode 100644 docs/test_cases/t00011.md create mode 100644 docs/test_cases/t00011_class.png create mode 100644 docs/test_cases/t00012.md create mode 100644 docs/test_cases/t00012_class.png create mode 100644 docs/test_cases/t00013.md create mode 100644 docs/test_cases/t00013_class.png create mode 100644 docs/test_cases/t00014.md create mode 100644 docs/test_cases/t00014_class.png create mode 100644 docs/test_cases/t20001.md create mode 100644 docs/test_cases/t20001_sequence.png create mode 100644 docs/test_cases/t90000.md create mode 100644 docs/test_cases/t90000_class.png create mode 100644 tests/test_cases.yaml create mode 100755 util/generate_test_cases_docs.py diff --git a/Makefile b/Makefile index 0de5442e..d639d0a6 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,9 @@ test: debug test_plantuml: test plantuml debug/tests/puml/*.puml +document_test_cases: test_plantuml + python3 util/generate_test_cases_docs.py + .PHONY: clang-format clang-format: docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.2 diff --git a/README.md b/README.md index 58f8ec79..44eb556f 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,15 @@ To build under Ubuntu follow the following steps: make release # or make debug for debug builds ``` +## Documentation + +### Examples + +#### Test cases + +The build-in test cases used for unit testing of the clang-uml, can be browsed [here](./docs/test_cases.md) + + ## LICENSE Copyright 2021-present Bartek Kryza diff --git a/docs/test_cases.md b/docs/test_cases.md new file mode 100644 index 00000000..7d584581 --- /dev/null +++ b/docs/test_cases.md @@ -0,0 +1,19 @@ +# Test cases index +## Class diagrams + * [t00002](./test_cases/t00002.md) - Basic class inheritance + * [t00003](./test_cases/t00003.md) - Class field and methods + * [t00004](./test_cases/t00004.md) - Nested classes and enums + * [t00005](./test_cases/t00005.md) - Basic class field relationships + * [t00006](./test_cases/t00006.md) - Class field relationships inferred from templates + * [t00007](./test_cases/t00007.md) - Smart pointers + * [t00008](./test_cases/t00008.md) - Template and template template relationships + * [t00009](./test_cases/t00009.md) - Template instantiation + * [t00010](./test_cases/t00010.md) - Basic template instantiation + * [t00011](./test_cases/t00011.md) - Friend relationships + * [t00012](./test_cases/t00012.md) - Advanced template instantiations + * [t00013](./test_cases/t00013.md) - Template instantiation relationships + * [t00014](./test_cases/t00014.md) - Alias template instantiation +## Sequence diagrams + * [t20001](./test_cases/t20001.md) - Basic sequence diagram +## Configuration diagrams + * [t90000](./test_cases/t90000.md) - Basic config test diff --git a/docs/test_cases/t00002.md b/docs/test_cases/t00002.md new file mode 100644 index 00000000..0132702c --- /dev/null +++ b/docs/test_cases/t00002.md @@ -0,0 +1,63 @@ +# t00002 - Basic class inheritance +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00002_class: + type: class + glob: + - ../../tests/t00002/t00002.cc + using_namespace: + - clanguml::t00002 + include: + namespaces: + - clanguml::t00002 + +``` +## Source code +```cpp +#include + +namespace clanguml { +namespace t00002 { + +class A { +public: + virtual void foo_a() = 0; + virtual void foo_c() = 0; +}; + +class B : public A { +public: + virtual void foo_a() override {} +}; + +class C : public A { +public: + virtual void foo_c() override {} +}; + +class D : public B, public C { +public: + void foo_a() override + { + for (auto a : as) + a->foo_a(); + } + + void foo_c() override + { + for (auto a : as) + a->foo_c(); + } + +private: + std::vector as; +}; +} +} + +``` +## Generated UML diagrams +![t00002_class](./t00002_class.png "Basic class inheritance") diff --git a/docs/test_cases/t00002_class.png b/docs/test_cases/t00002_class.png new file mode 100644 index 0000000000000000000000000000000000000000..0f78640cc349ea515b17917a9af5fcbe7b681306 GIT binary patch literal 14356 zcmZu&1yq$yw^k95Zje+C-H0>-0*CJIQjqR$1%yL;=&nO|cXvvMAl+Tkbzl6x|E|04 zy=%cbG4JfzvuDT5GtUW9kP}BkCPIGp>=~M*1Xu}poqzW1x!J21z`Mlgfd$}&&QVmu z@w1Jso2Bs=$7kZk*2eaRj>blBKe@d%b#%1lWnrCGG5sNvJRf}}O3PALJzBRIctEs& z(3ypBd&{cZSvu=Z)+D-J3_7yC%Q~m9saYoYA@W0g*^5~1s5VwLU^p`+>#X(l;~Mw5 zgQw)_Bb0JUYJ7oOo3zHdU4za(cldg0OtdcdKJ-FJtf4dNjVtnN{r$yv^IhO=rM&J< zjE`%+3|ypN6p%k>t9@L<5pH~E#T97iSSroU13zaRUEwc$wE29x>3d>pFQLYPEVBW5 z=M2>0$T$5vLeu(jF9VIbZ~L}pp3q}S;#Xo-DcF=0Z6HGBigUXeqP{dDj-fDKJenYX z<%kw4ZJ4A?{|RC0PrrfBt6WD;OYx2hqpuIMv^v(Oc*{TiklfH8HLY->w4Ci)%2-N;9N~kV95|{Dd@XeifJzgDQ4b|(J!LQ%^Nx~-C&z^BU zlLQN?xau9GAnM?35%(6>tQIwfYl%-aw2e*A`Ajv``ev?nS!oxl?R6EamaAgfsTH%~ z%DhIR+&_4R^{oz%M1_G~36BI4dhD}o8G7V_Bx$`aytuS=*}paHaMZk>db{bh)cBk9 z4K5BAlH{B8=O7R)7*mpx5epRLPbEwVEdxU+v14CB!5!G-k$Tr7sU|&?IEBe+_b-OA zxIo}>l#6fMel`$QZ<3_YO$ad-Xh#&wt_UK7l?a#Ke5h z38ex=cf&!i;rru!?|pr=jwakP>&AXWHZQtDvIhNU-7Jp8Js3hFPgFxc1^0bsAZ>1H z%2J~Hh{R9j7-c%3@uYq-wx&k3z25HH!kFCTqFj|};4F)6zu4_KJ3L+Y5ArPcg!z zp{Zi9{xcG!)Z~qbxpR1UcyNHWK#BVM-?2%skhpIy9wjGl#ZSIl(E8S~=$sv%eg0GS ztLJ+pCfzGLAxhNgieDDewld9O9l8Dawf8peRr*4r@MS=R{@Be{PyPJ zAYg|5-zmy7X-In%@qb=G_=p)^t&0~IPDw|vlK0HU#CjH@!dLIka8Q2ngM8^=v00ek z{?Yq2>Z+^kzcV~F46Thn^jvr86o2N+#HXcXlT>YiXyXxDrB=G;aVuv_GtV|6Zf_)< z^|p%_I*@6kxn*}{!+B1`@#1CRaJ*zQDX`v6#WQu~?kVpNdplZ4ls9cSNfMqWFQ3J> zAyk(uk8-nAUCq6|YwWhSvhHH#KtKTY9bvIOJ~;C`oO!rfYQW=nRT~htKZy7hLIDav zj{F=r68q;~C~l8Jq(nEIjBRfcqPcz}0V;v0#0n?eh4`(XVR<9UE#oR(G)9qa9X|Kt z_!HjKttbh>h15|*vJIh#G=|1#hM{Rb1b%os#3Imt^pn(0_>-e;-;S!bA72F09`7{7 zLEP!dsY`+w?G)|56ls*Zs=9LVX->2sZ!H5MPRBF$Ig7&L_mdl8fMmO#UNQ680KWu* z3uFNIpam(XxU@a6Iw+5bQGkgwaiLxGIH0hiTCeqzgM`^L+~MK;pYur29)bk%f;-3% z#rL;BKKnmnUO|Cg@Z|OaO2)uHCTNQS3y{M2-=EJUV%|XAvM|9Al_#rWfmELyWhlt= ziuKcI`r}ldVzDC3{Ypt~e`kjq@V?*mYjUX{d|8YKpN8UrR+>cURhv&IaRpt0)I1-W zOyZcW^jktBAXg4^RZv%WQm;qv**@r!dZAjjNZ<$#PQ)7CDA*^?rQ~ZKBraUij$+A_k)}C;Izf`koPI&#qo;MLZkMo6VUO8GYC$(xrK+l zF%~9!DN>mcs&2a2^zJ;m5*d$veLeZ&(&cb6Up9t5hR@|;bzc*s0No1Hr8m4dJtY{A zfzxWv_VJ+>1BM;+usw5h05@vyfRm2pDXQyvcNLo^89+TtXQUbb4OppOKWNNMqE>^EXoxjtFjo~yQ4J-`Ikh6!9V&+nGA zG(J3*L}$ZaPwFm}g&z7<@PRvk{&N2pe2%-y_4V2NH$FPTcvhHPp?$34mg8B^|3KT6 zE5C&0UFD{E+uznC)4$=VXrF7~YAInxcv)HTDX&83Q22IP5{Rv=?|tS;0i|KHSK)oL z#nq%%KX_3HI_?Rd^_k^p6(x&5&0Q$6z5*6OrN(pp1wQuC~M5V_x~( zs1vMxN*e-REdfF#`UD4L(%&b)IiH^XR5adpi6EU1trY=0whHr?eQt{ToBEF}$VU{0 zk-57s=4)+sR>}#{gDEI5YD~xcc}X(RRs&kzlefbav}c_~$?savu}1{gTHpU#Xrv01 zWj*Y~;yMm4EevUN+I!^?U@{^nG-z8S>+$6);GAaU_P0AJ=QZJpRGKx+pD3C*e+l5H ziF2AN&`?k$)2H#QA@^3|&k-^%A2$U zg@aBEhI}y}0hUSyY!Ez%3GA+KXLHGoXio~I{&%)$2=yq@pOAvL zX>pqW>fdUckoUl_+R(>zRSL1xHG57$_c7?@b<;niS78R}n3eNc+H;dWOaB8wTAe0?vf%%`Gn2znC| z6jgqV3^GRhOMC;O$6zK}Bz6j|p?~fL7A-h;ycC^ff1$N@kzRR1j z#<@&mDwtE=FT>OA8b#L@#pjRbY_x9dTjjH>l{D4SZ*<25eb2nQa!rug+}PL%=wPrY;`{7jm3@GJ$VDHG*Sbe^-mDWX8`ZHwPF8$Z0{SCx;#;}a8O?B$fg zM!%G3aYq>>vXy4v9MT^MEMKQI=XpPV4&h8KBXO{NXmAP9z-Hf@@?!fdNj+qRrr?sE z&{Obcshlclw3`=&^G)Ql{IC8-Mn>sopCtYJD&Q%ec9;7|+hhhqr}!b=m1;o(hZJPh zZMX5cmxf%5=X#5&G*bBGv;~?opQ%a%7e=#hB<`lbV>EC}KVLC8UXuNR(-Pro-xR@q zi}&M4Q4u4%EU<&stVtLA>h+8iE>tb!cHw?*?#3w<^N>E6UUm6Sc3enM(HKA59A7UZ zlzCeGImPB})$8kvXB(Z5?S)4sofO&jReGAf!-13^>EDv`@bH)>0vp!~OQDMl={gsF zrXKHNeLo?ST2fi%sHVZJEQ*$0EVZovh@&C6BOA3Ys{7<38I^Hb5=AvE7X4APQNJST zWpRNjtIJD#azN3hrVoD=&5s)A_k|=8}`BrP&cD-%{Ie=D|ZF8nhz;^t;msGYn(PyetfDOYe7 zwCCfB+v0xzK-7avt^_j>)ODOiOp%(?dtq`qHQUAWn=-am_0XtEh_;?!x>4TW> z_G;OsL@L=ya|L)G*VN8yeLMohF5+QiSmCdrd8xV*ekV7l4SsVjf}Qm#)MjR}{mC3# zyQJr}tW4^FQV13x6~919UV*ys!0=ILXI{mG<=mj7D$K008}KZZFO_AuyXlG|s^hXX zI67RCkjWe_`833u3RwrN&SNw`Zl`B@S2tl7#3@C8&73qE4 zU8HdQ_6`j3)R&?nX)n8)cqMWoLb=_cM9^LO({%DR2;7oem=q4aNLIcu#`g^30y(^| zpmaiPa=Tf?I~BtsKTRQf+1;NQ?s|W$@A&Pcix`^jpHEz3BN#5`MnHaAtoQq-w{_)* z&l*bxN+`WRkUs^F8%mOkNn_CF_d@C_eXSJV2MicBIK;EvPe z-J-6sHLrG^Ot<>YJetPfg|Q#OzCUFj4|>pHDF|%(pf#Ejte+9}iAJ~}AZih6D@98lkzBnpu4 zLWaU6o?(T58SvEm{?UjLv~-umlt1yt4UkF(hP}G8EBt_SeHAS{*m)!)EJjlif3VdMoo_E~ zba>y(%HZ=l_A4_h9n!Zx$J(~{usE3FPZfb6#sLqUF|VHLrG+v09BOjRgvb4Q{bKK? zVb1{?Xi#NsSD1E?n5=^E+lo5J!L6Z(v!tGn>X~!{+}Fhu zp3e+oAE=Q@?Q80l-xw}Fx=jNUM56$09;>g&QZsDk!1O2~nYTZit2X5wh1{U&kfA~M zP4z}W?MDRpD48UQ?p0lyKxQTU6T8$QT5McsdRfVZj^L*W|DYxh(1)^^VoWlXp%j0y z_3zotI%)bMK|?+lAKp`IUU_3;A1#?~r%>2?Vj1HH_yUsj1;t zWDgnd*0V7xmcCDu+WoV27)pE##>c1D#Sp;fG$}8gGCc}_ld7p7dnQRUznvDl81_dA zpK7hJ%z}QbSB=-*%}p{}sgJ|)+3|rmFk<{xK_2V1*s&d@x_62t%v$0AWTT#fW z$4I|EOiUAd5UdwVc5Y=uVQq21ZwtQwmd~Mt*7saCMI&&=kdsi)LgyftKOG52%-2#73rmIK`!?eN)9BUCM>(PgmZm%V6V; zd5KLYpqNIZy`!$6{Z$G>6L?dRzxx#~+~URJ$N)&V|Dk+UnhuMw)Z zT0;T-V|8bN5;MKaQCPazcnHos3f3(wR4MdTfs^K&HR=gI`C_PB@FT^`eImzA-)oAj z6xJ_;T^#pkcx^#g6B$`FQY&2X7K?%Q9qeKWwNc>Vy$<**S`gQMn(DE3Mprjus zZdwc%MoW8EhYKJ>{X7TTb?GJ}%&w%eUm{JLvusLU@V*~b?TcftHy_LFZ}uQ}ZIXE} zsj{-iB{0>pwd!u41HNJ3KO)}wzJ3TBc%!I!@nJ8_FWZRTEhaLobEJ97A%j2;nZ<}X6QwIMzwUK#` zqmG5-eF7>mS4DXmS*Gd`TcX5(?0PHB;utVVeBPi1hTbpR*I{h<%AgJ1o@ED$DNC>2 zQsbfNdwCMnM|YAZ18-BLq{KNN%%KBoh>BC(==w8e^3341ZppGnBY;&Z?a0MDbe3OS zo%kIC%NL*Lc$r?QJPlLq`6OkuDvWq{W!IS@s}ftNR@yMszv9{?F+msx$u7hr3a?(O zQJBgUk6`}c_^*C|Wwr>4|0LMBmI%icWe($MFuP>@6xY(M#t*sXexs>#BOmd!T@@n? zp@Sxre`>v$cD)gso6pNrLMp{KzTYH>+al8-C!B68g8tK<0Wn zbIsKerZ<(y2y&qfuWG60LS}IHQ;5wqqUU4Uwejo^zDx8DWSxDQDr%pqErGVapFLhf z#J$ct`Dpnmy&^%h#COnv=)jd!Z>E6N)+zH^#&-2-bMC#?Df(X$RpD%m>XEVTTlC9} z>*lZb>OZCCwW-yxSeM@&Yv4m((mbv%FL?wX&QwaU^mQQ0$!l(Z1ro#%PB9F1XsQG6 zx!1naNX)wM$E!9oo%LY1%uM(Dwi~aYeN0W2AD;GCjGFo$x+T|9X;EO*L~rvhM&^=h z!cglxuoN0;ort9T41UU+yL z9vZq2za^3fzaaew}2(EKD?CGD}xKeC)iqFXSbS*ruVt{ zWzy(!)Z%iqc&o}DoZ6?dMS5%}J2^?w8c(Sup5PAH5c#GrT7U5&D(P%%g zvNS!0UNv*IzrPd1_jv^k7@Twfys_L5{{yP@N7&GRcS9~uj`!NZCo-mX2gzQN z%u{g6RqoLKU8?J;!;u@Gx=fl1l6c8XCzb2InD!ug*MvRoW-j31{r7ooYU12qf3-Hu ztYBF}K4c{W@)$offtrs?sp1{~_>&g}1U0aPZLFpdHD^1Rwtl5vqUq8N6X1MHvk65w{!OEo6M&W7P(Y3rft)1Lhl6cF>lr@*(a2+IdoGh zmLBpWo3f#XRgm99P-V_8?hr~)ONlWRuh&$q1*D#d}4D}P>WkWUABszVi`)&s$Xya z#ra|fk0B?5Xi8mLA(-`#8sx~gUYW|f=-jtQzRvtK6Bp8?SqPsnx z=k1C4E?tRkX5^%~NNR1_kj6Bww2c;A2N)>Y&tG8S>i)U=v7uEru>!Xj*} zu7RQHg>iNt2j^<=Lx{sa!o6_b*raZ|)SjY7<Q`9me8An+I3T-BPQeS|5jF!D|wM~J0NjfT4Q(|PZV;I?j%k`;Qsa}ez z=)e#V4Zb3l+@s8D^keXr5*VP`v_(yuy*$lGV^%KT8S44o@tV4V3 z$L3NOYOfmm>_(CCM$S2mTp!I<$3iw?EwJo^g(;#6OrGu|9n2J0?3`olUCKQ%+x@raX6 zy`Byv+={uyad&Il7yLQ_l9*ucuSlh^Ml`vq7B;Dp=>6=$W$-l@(G38&un$DO6ryb8 zl?KLZaX-+8xd3~^?H3pR z*!j#?p2u`6l^rzrD3X~r)FI{<_&&TUO^ZmnIn)a{!#XqOBQHd#F|l_pdm} zuFwHV(78_gbUUXzh4w(0ql`-XnR*MyE$)ULcM#*W9Hpo3GDXKF0`D2^H@fvpIB(LP z0&!mw=c`F#OoK{Rwzofm+j;{qFp{1TM@Dr%kdp6y;#V(oDhpF|)E;PXl$rEPuZ#B< zgelf!he=%79*2FCM{)>Z&)B&^YrTOh1@|@+NGpM5^$unXMt@m}uP}L9ULBVqm65x- zxovNj(>puB&%?5{g|{5^4`NiK-(a##)olvud7J=H>Ys9&EH>6&g3GuK zGHt$0z6b6{$OjcQ(TEFnF}-0rVFt512J%|diPH}aGr0M} z&ttG;$C%-0hRW8PW~u1uxnTAjnh;do3s7U4C9uUdXD8E%I0pxw2}H}JO01XRDz=CG zo`A)Qp5KrkohUmdyv^Py)4GkdFX+-tQg#U%rR8FC1L-gJAKP$)H5DMtw7R&TINsTX zQ(%ZgieA;csDT&YY)Dtps)<&n3kjAIz|*g^jiRZj`_nrOz|v5IFOJyjC%~?elG&(T zt*s_qkz>r7ZpJrX7yuegqu<9Mf+n0paB{3vBA!9M!hB#EJnBbzz3|Ml$g}wD1=OC> zZa-Glw-|`gpP(@^i0A!w5CBZ?vMIezH;fNxC+evKkh5j{Dh9ZkT-z5WF3&3E#x(Rd~ox!wWyG`c$qD7fYAWsPdVq0|==^FH+GXmn5@ekMnot zG@QSPb;9y(@@~h3B4@U}u#xu#ie&S*sub~`)sALK(|2jQ}LX zGb2qC9jEzl)R;T~0q5|hNtEeFh}FjtVjEuwBvSTN*SrsWI?7AB&sa!n9HDcj(F6&k(Cz}H z4Jw>?1)}eLz+Hkg07R1*K&NVPSPv!u^QZfv9Nwt1rd5=2xo3%1sq)a>S{Cm+|( zsyqN}6#u8qOQ5Cw5Xstx#@`JO15EwXZvBj$-WZ_omDb`6?Cos7@b2b-)?@s=fVk!& z1~kC}aqRxY(u8b)*W_sH0Xv-X)1jn{<|&E-H#;wH&x0yCVTxqkbWodAfw<{6e|8T= z9KZc-^d+bVF2o)L$b6ZXrIWGU-0m}gl^@M37lkm2{ED+Cv=iYNW$$25)DpmY4R8HEaIqy7kX zGz64mlB@>c#IpT!Y}|sjzLhRe7sOILm&V@MrA|tCIvuv0_ zh-k;1qc0y3{En{0)&ajo3Iiz8wi5F?*Nw%+vuGDn*R?<3}z%*nyv3F3i8LL zjiKx6IDwgBkz>mumt)Cd{T~=O!)=m>JTe|b8SHLj8`*E9sHhke6!gp(KzNUY7x?Ua=uBWG`l#lyFcWjV! ze8d7>UoQOktTd>&>O8%87JKbZc8n%?=%R>Fst^FFE3UTjNE#f6T?JEH1xsKAGFe+& zKco5+&FYz(n+v;*!0gWjC|_&ddeqjOT_#(c>A-m*KkwHv0Nf&<4$7NIV$tcf!a*Ee zTrMvz0<5tSte=K-d%yhpol$_xh@|(40QdL2HLvs>AHmy>JEJB#Wq{gY3#J~@Kb)|r zNCQ3lE)PJi&x~h_L|v70Oog+`AfB%ecji4I`XqCF%ntTtyNmTby&Q}MYS)>{^D!RN zE$ZYy5d)3@*mW_zA0S;(fEZ;3LESA22jzKD-Hl1-S~XO%e5$nj~eUQD!TQ zy$|L%M$#_33JJ&lN~v&-F>1H>uO##HPz2AhB$gmE{|Z-wyB*TTfA2!LSkyoVQgwFJ zG59=zSo#GF&|JVq+v=aaA|8Wm)mrV~g8TR@;JCl<1~>u8CIDd)lb>$NYTn;epO}jQ zHu?ybBE~ol`yhIIHS}rHbfN&axI5u*M!RxQBx2IN1vN9d zUr|Y-QDaZzsXn0Fs4cj@`IRn2+LVX|P(m=F4`GO_URh)?=d8HWR4+=B-=Sm+1piU% zYG&LQk3&ftio!j*0BZQspY z8i@ePbVm}KD6m}OSrxca+jJYn0cjuBLG}KMS7~rAN5_wzuO}I~xapCg9h6UO#?FRt zv_nhc#!s?U>!u2!ueMPk7sw|(B;}4Vzs(&@XWngmKFqTg&a(Z#RK{;B|56!m#HZ^3 zdDP=~G7x~!1ds!PK(IUns`t@XTuhYS$;vUHSbj2`^9+(%sOHD<@Fy?FO4)5%C<+>) zJd^l#4NVxKK!OUtCkLofj5wfcic`PKBRldO4)RDZ5C=4u?&t6Q8WOA%8ur)tHTwL0 zhiRjqgel3f&jA>Nkx6@g9wT>AF3s8tU=-dV0l1!Cnl28=3?gH?1ka_1w!ha1``oLh zTA%_zQX400+R={-TB1mci!Dq?)5V{g-K#mRlM7eHNZ%GD$KWZ~S{DPP+x)k<%LlEG zJw{)|!bq;Y0O~J5ETf@xRgnG``W&u7TSFyhTJ+(QySoCwoO>cl%BPh+KJaOrtD}=@ z%~zRq0*u7G2lkE7(Bp%7pM&4mD7y!PaVJi@o}Skg@<1%=H$h+zzx|Q?GQOXzA>N@;6b_=XEMrNau!38U$Kj&2bwObu{8%p3hfX2sLNRCIXZ$F)*{mRiS$3Loj!|0yRa7?Dq62Pk8q0IN5A@aIqI*4vV^_5RL0h#}b5<9v5_ zqk3v$0xLk5{>4K7{jH${2WgPMx)W$>Pd7*NU%+&_Y}1P&oEI;gg{qU2Cw7^ZC6yB}`yqXAyvt-|&ja-i09Y9_Kk7)oPo`e6+mP4_42Gy#+o%Wcx`pGh^B~U3lqQ8ZSkA~Zd+6t%x^+=VVtM6 z2FXq?OYFAGwa4X#9|H|>edlYKe9JXd5m#9?!D?Bk=Z17eC`=#u62+{x*9@BiFe+_V zD5p%)|6KyI4|O@Jg*mK}f%y&KRWSTa=_3|qhVwHgBRIDiZzB=Hfc+5xi&xCFuD7iO z%gbNJvoc1f+M&fk; zmoQBD`*t`*!agl*ROYaf96xh7?!P~rNf`d`Yye~yHu6X;D0YzYL=IZDPH$Tmuwf|h zfdMWRGDGJ>4Q2xY9wo@{(1RCI`KkW5aX+?4L6hrAbX(hkYs#sKFeL?uL9Ixm>(^(| zTshK=1}^v~bXEC529ia?#yV9v->%6~tI^32eS$nN9)hl_WL~!s%qg*lQO1|0Rr|2t zgGQ&?;;lQLBm3U7_(>ib^s7PC!DkccxYCf>SEUNmFR}|{JO=Ts6r!MfSp_QjcX!u> z1<6qkM2oA1(SlF8=I)6UEY$tC~=ppM_@EBR3T4m>VNYVv5-Rm4><@d1IDKwHpDw@wp+`89PYPpl9gr%q zB@B*dE9aj^Qe8ZOa-Xh&L>wSt3*fM%mooV+ZZDgJ2}|4jrbd2fYhO~E^kD%fuC5+n zQEWhue16w*uA~l}PalG+lYl^wI4r4R{f7k_0Je9@{_ggd=gLMI*~q{&bjF54MXrPc z{g$t%dm&$1ZcN!^eyyl|zwLjKi9Gk#dcC|}%Axs*sG3EEjcHkB6}pSc6J7l=pMFA5 zMTod7OptTt!(URYS&+Xs)-@g$$dw~IV5u6dZv2IhME*a6jbrye#^7^9H{G7-x02FE zarfIX_)mywxgv3Eo-Zea*vGQuKhGjn_5{pZs-8*E?y*H=HUIDCd{5vP5XFBqJQAr% zc&h*DWDbg))u0BS%4W?;4%K$-#RD4)PaMgjh5yvP#aYSJat6jIlYMNIF@Rn4|4~=_ z;LA@Ab`71u1q=cLdel(>EL0Et{;5pdptWsLQeIyCQuCTxDMO)+K#@L182NXQKlv=d zKdt?JeIK7%u@Sxl6pLBcD=~K*B#|-}gNQcoZ_QD_ZtS1~YI6=03_SMVY?A(fYqy_vw@0p~i9JoZ-!1uoZ(F3XC literal 0 HcmV?d00001 diff --git a/docs/test_cases/t00003.md b/docs/test_cases/t00003.md new file mode 100644 index 00000000..39364e97 --- /dev/null +++ b/docs/test_cases/t00003.md @@ -0,0 +1,79 @@ +# t00003 - Class field and methods +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00003_class: + type: class + glob: + - ../../tests/t00003/t00003.cc + using_namespace: + - clanguml::t00003 + include: + namespaces: + - clanguml::t00003 + +``` +## Source code +```cpp +#include + +namespace clanguml { +namespace t00003 { + +class A { +public: + A() = default; + A(int i) + : private_member{i} + { + } + A(A &&) = default; + A(const A &) = default; + virtual ~A() = default; + + void basic_method() {} + static int static_method() { return 0; } + void const_method() const {} + auto auto_method() { return 1; } + + auto double_int(const int i) { return 2 * i; } + auto sum(const double a, const double b) { return a + b; } + + auto default_int(int i = 12) { return i + 10; } + std::string default_string(int i, std::string s = "abc") + { + return s + std::to_string(i); + } + + static A create_from_int(int i) { return A(i); } + + int public_member; + static int static_int; + static const int static_const_int = 1; + static const auto auto_member{10UL}; + +protected: + void protected_method() {} + + int protected_member; + + std::function compare = [this](const int v) { + return private_member > v; + }; + +private: + void private_method() {} + + int private_member; + int a, b, c; +}; + +int A::static_int = 1; +} +} + +``` +## Generated UML diagrams +![t00003_class](./t00003_class.png "Class field and methods") diff --git a/docs/test_cases/t00003_class.png b/docs/test_cases/t00003_class.png new file mode 100644 index 0000000000000000000000000000000000000000..5d45282327758682892cae6e242e0df98442a8a1 GIT binary patch literal 14141 zcmajGbzGEN+crESrKF00G%AA90s{g=h=hoMgmg$ZgY?jfk`jXC5CTefcL>r02o51B zF?0?!i;ce}hki0R*~2W38d>@}G7P7#PMQ*;UN|_M7jPPj$OrO@^f~7GMJ^K_FbmW`twOKpbG#dE8v^OKb>Pbc5W(|ox8Pu#+TNb(c%mJ+q10^a%sM=NFF`vT48n|Q@V&42dD2vhGq zF5LTK@tE*RI*Auwsa#dMM4Tdm%5J_-SB;F~yEI`1w^ulA^aAlTcKlPQeF%5or?585 zmQjg(rPQq74|v?x{; zB8n-Yp*um-lW@sJrXmN8ym}e?b}w<8 zV%&H2AMJa8I`4oYO$K6b-KQi}8pTk~y506!B#e6@@~|Y8DAhG8_DaW_oAYLlG===~ z=9%py*`xIAPZz8{>(xwb@5<6^X7SB`KYyaqOWCOe{TQ=sdUGS;b*TE@_0(iaS@TUB zb!~CKFgYu^_WtOU7$YjHy9Uhr(ceu1&%r0xB72Y^?f{<$OB?02`-kh zoUnKP5AOV2V~@rU@!q|ERRILK+qK}A{;lbEQFWe|g^h)0R$9}hZE@0S^>oqZhGm^s zR_engN$rx?AwzQ>oF%VYqlZZZBMB5MsI8bt;;gs_q10SIb-%#5v@|!|Wyuy8J`e_jPwQ%6+!mT1SO#~0e z!-w#-!s;rAspn-g&3?^;j|J1jybq^>{JhU%E1Nyc-c0zCthq|=L>ABZSl8RmG`TNZ z!urD)XR?IAwL$qXC)Dj9qx%=iSzCDn&v#slvSzNm~7Gwx3Nst!8W*Y2PyfL>9=@=QC}=) z`*Eh^v*C+?1k>snW~#m_G4Inh4Q!k-nD4Z|%tvh$lN~AeV$k8b6-Vj16yL82rj>gi zpc@Fdz2NOo^oO0Iu6)g6(K%t2#wypHd3AY>BDHZ!IWDp0fu?$z-~Jv9QWhgeHQz1m!TOZ71YmzcqWVyGN304SUv{Y}&HF zI6@um9L_ioxUTA6m;QoHHiy^S(lj3@%XhmDi1eaP_o8X@`pt7T=ox*BvSP7l1h?zz zugP*tvQP0^F@|}MSnQ-QBE1=&7w$U<4D`7~q0}63w$0&4GG$odc)(;)l`P0nD60 z!vxa-mK27y6;Kp2EY703MJ?gf$=JAft)~AY78o(+a5~v!P)}`cKF|x8v)A@D2vrvuur!yBO6|AyZfg(OOI^P>?KzAus$Y$8_acAqClLhnWxmO0P#rJa zXn`swd6iPnb(XV`qBE>1wD#oFb#Dheq&$JAgx`F|nr78TwZrl@BrMfv=Kwl{T`j}H zc+WPDJLQ|E&wp3aoG}b+tAdguZ+2F1=rzASx!0yBHuZ97+vZqu$cRH78B)Bs{m@6y z9}Nzs9)yB^UP&Ti(PhoSru_Ku>n145wFWcPQ3wY~X;N0B-Ick=vioewKvyNj!booZ zJe7bB;6!4s|x)DQbsi9VVe~CftAbu&;OS91v z9!5hG!Q=zm_zhWJTty8}`TLwqucFp=S5f&@_7mQ{aUx*7Qt@Bkk|1jeq7qab8ZYaK zq^^wpf`&9G>?pxDbiI$dERGe;H4n;8Q@wX-fWv3{9YIWcdzL7H+F9490CJ{DKD#l4 zMlbhQ0gDxZ&s3KuswblE;58lF#B_bR>sjOY$IR3H%kG~x`rOGfb5r42G{R5R>mUKv zG%oGwFj^$rqG?CrnoCHwDi0&FnE^c`MI>e0p42sS-QvxC0kKKoYWBPEBB6?4JSj2x z5t>?QlkazqVdNN`(XGtOZ*|gr`t`wJp5LiyqgDUi!Fxp}2XP%kt$t)F~JO;~C9W z$6y9VJ0?Om(qSB+g4gPpYx+y59y&-~sJy-kXC1SIOU~q(BXHU+*ZOZ}$cNX-E9cAQ z(Qk|vPnbqdDZ{8&tMKh87I(R;^`8zl9$KaqrX!r6e$}_|T1F6qILCf@Um3vI+|P|S zD^6YO?;dDeHhJK;S!wd)7a>`Hk&$F^j#Y57X1IoMo#jB1!<1->?=i(M`)gxNJ&Slm zJ;#R^I>3Y`30kvQn48~QrZ=WyKX{aetLRiFdYS~QHb>|mHSO(<2Oqc$^rbO4U(;;Bvf0bmp=*EZH6nvIb zoOz~B@4W0*f92Nto{`8$G&Gxbs`B+enNF1 zaMt+HH(8tQ^>NeHkwVvg5m))hrg$V9$Gp>MJ4ylcJyHqT`Oe1yKqxG65DL&$k(H5# z80WCMNYML47h5J!l+G78C_|P|5Z1&jR9yK?pMIAt4$nJ4JrusyT|iL#1bD(`pKX9^ zKOlQX-@V70SjD1OQh;TdL4{EEhIBS%(3!ez8BSH&2HBwU^xw#KHlOdi8uV-P`9-ii zD={7D%k21S)hxqgAU#vXB3y#=>jHjtaZX2qVIvQ-(0Wk-kudc9h_PZMO5lqmd(mq> z3nmDg?8%}|FPmUBLG4>5Bs<@MP>qi)BdZEzv+ufwQN0`4PkrRd+Q6qBvMO7&s;OFq zQEH`~w6k6mJ>c8t;zES>gGM^^ccpj`XCh2}t!_xD&5P9oMZ_jMXc1$cruZ;MCq8L-H0|Czz1`?vHbU*k-=qJs zQM+Vd0}P^VFGGVtci5+r+)K>5GtRf99HJbMcp!cfLBA^pWgVLDe!ay@Whzs_CPv_DR$sKqgZNMyq0rcLMs}2a?ps%A6-P{YXQp?8^`TD*<(9+c-V_08KgHX7! z#2{KBJG0{<4ByFiq0)x1N`T`Q)NP%2K>V=4bALBSD^q?(4{)((t>?aru)p|hQ{e;u z2zo~GCv_U-7UBv-L2fTMnD|W9F*_06pL)qHv3y?7JolFQoff_X5UG6B5?D&F zDz}Wp;TjjuO54%zg)Tw$@TA`0p4lv#Dn)*4w_o^=u5`!RS!&1}Qu8Fg*fP?P@bPWLBhscOBPbnJq0Hsz?D%IC17 zH5^!)@w&ksE^<)+$F;Te6N z&)R?67S*ojW^ZOWd$tF^MMJ+{f9F6Td14n{!x>k|wJyT?x6)scs%>;{$L{f3z81^; z?xw<1emQ)9x0jdu+T8TCFjX)Opz#q@Wi;*I!};`r8hj~6_oh@3dEv@BvxN8SN}E@t zaB_wRYcm&?E`Mx>zJgQs9KM~k-m%G#cV6(350In~6oi;JC*!Ag< zgqW#my^I9)D)H`ngDX<6buiW)BG_8xdN=MWd&SNZ#p}{z_d#Yug>WJg>WMJVBrx8} zi1+5Fb7!72J^Wgk=YoFgIV+=I`mzh)_E%V=_=?!x5a`{(J$vti+?v5WU-=leTwKR- zbwp(u|7Hh@wdghHSHCcp_>uy+*0$fYXb+3mn;y}g94C3*Uz)40?Xpj6Y+Y+=*zbsW zOb8H4JfoZ`J?4p+x#}!b3*!tDyH%%gJDwam_N&4BgRuU_hi4298nw#O+|vP>we+W&z`mNn+YLcTE z8ww-d9@@`|Y0i9@dQ#iRW(kB^uLs`h;8_zTOzHd7CDijNkW&!-$Bk>IfQW13trM%a zJ!aUNO!p1O7(e&gISHxplm~qmrULN@L6}JnYJE&*_Xt{u;~>lehJRwfNklEg2M}fq zeNcSNl>Kp*I zp?B8O57HV#e%XhsS1v%`}7WolD!0un42KEUHSUMYP1{IpSKQ$(7qY>$tZ4+vZ_SoJZ z$|>=Q>$PLTx!-FELF|tYtYs<)*CWRwyw?PXB$bB%$k*(mLuNC}>-@S6DkBGgyA>FT zcbyvt)s@QN+#nVO;7~!3?zaKpqo;(879`d1UKt}ANoE@j2DK|L3l?L>{%Y19X$YkQ zC=V7P99EG0C+#o`NAJ`!0_p*CzlthEq3}R+ckz;hGl#2+m_XNQgdoMfs-3=C?0%BW zlcw{I0*!#YA7yACTa!h|zb$|U6q}`QYIK-Epq*%AB!W}C5P%=i>@G>8aJxw_uYni5 zAb*c*DQH(F`XIy#0q8n!9HclS5DelERs!PYcM3rYsfvG6B0vQ#$ry?zYETp_?O+2f z;IYrZIkigTy6*0}dx&Wj7y2Jbh!z<14hWx3kkVb88Y}&cg%%F--cy*TRh zti)MGJJL|AMu^)G>B9~Ero+WX)tyZBXKTg6`S~DF>!q3qajy}VwUL#*VZSd$S3vlk zW$0JG_&`#GrMbYSIePnl%ig^CzwzAwEGkQ?fiyeYfTyN`zavt95QJFyGN&$qyOhsU z$1qU9+_)>aHSj$Hivy}EX`GY%RLkG!fZ0y%v+|v)TVm+csXx$BEq7Y1xbu{-W>KE0 z7Iikx0P=U`&%{nRtif9ekVK@*cSdoT*ddX4PtBeH=uB#Lo?k44Dl(X#kEB86y*lgV zopI(w2*dWe*?T8|--^``F8&bwFp_$Q2d2 zG>|6qVbl=u%)DA{1WMHp#gJCs0kOdCY?``1({JhW3tnt^#}jErEJJOh*e$lEhlZ8& zmy>llGz*?VG*pB!V(vWdrps*1hXM3EBodkL2h6g(avso%i<21#{Yt^nho4X4mF){cb=2NBxY`2Jvb9(Y)@IZdUq5Fehl=U_ZD4iz z;%%8BIxP|0DL2w!)uq`Je5o*ydWL6DvKTFG@zNF1`p%iKg;5VixKCS`ccGG``-v4|w2mufgah9wEvzijrM78oE^cTO55o^1i& zU>8U_+#kyU%Vf&!$MN!>cS?@n2sj&Mj4l}0U3=sdSiGW8cdhW9#+aS45^!gPk2a7o zPStDWU-KF5X?crxH$n-?d+x`ZCZ3xn#ND+Znq$1WuL}zJx6OV{I_^}XV z=4;L5Rc8@YqqRz4YG|jSCHTxsp^SFb%S=N5SLIECh>nt=@UqsRgN@$5#POA}{`J zlE;*+`7?Bsq2o6bhBp%@@*}sVtkF^cAz1LCW7PCsIY21@1ZLVBx%=rTU^3h{ey8hJ za%k!Q+$r|+nJRSoZ0#8QBaCFC!dkP|>Dx#lqTzVeL-+;PqcK;hA|MHIzSuUI3Ym%Q zu5C6uq6o9|v@<(C*pQ>RvNytFT65L2(Z~C|3?jSd z5sZqkCT#XywXg3Ch!%tZPkXN_?T$?t+ji!e!c6H%!iziQ0*fwO<~MS&OOi9`S5U*^ z@AOt2hi3<$9{r%HrUPbSXoxnWwg3+3;{fQx6p5^$)wd;%ANw1JyRzj`qyW zrNxJ{^G0ZDsXlgh@-g7t$&M_v<%NUhbnX(?D^7AcXPIyx zZfKdlvp?3gK3<-sSFN0#c8-_6pdx7?t6QkM|6;(>BO~O&z+YU#-h-c6O6A`a!zQ1@ z9T@&LqWv_|vKou@x0&~H_1NTjwM|&|<^}n>C=31nUI-+DyppSJBUhxN0br3=FIP3w z^8fh(Y`#g!hB43MLe#F80d&5Mp#7+if+$Br(HM(9!*U=>18tQTqp^a zcNsCbNAV-5kief6U}Lft{bqc-)>Lv$VIfOtetFizgsy8NbfSAzKz6%1rRRCJuT__? z?H&$Hf-dOUO+?b6huv=P?MSkn<;-fobF8k~3BUn9!+!PiqzPV`f_(R-3;@Rd3XDyy z4vQYHp4U+}4db8j@Q|Pj(%RFQ@o$RIJ8pjM%TgCv}g-H>?RjTMmoAD+h*RtJJ;? zTW?rr6D0XbpT&An$tR6S^Mol4nqwEJ&f4#Ch$m@X4w<7Jk@au#Ij$pnbyzJ3mK3!qK9$15tCi^Dlxv?o$vQ4wIjow zcc-UQ{G=x*hWFz(S95n;iB3pbOE4GK^K|x} ze<)l!fcbRgFE6IDd~#31;f!gQ4?(lwt9RlcX-^o;RZT&l+Drg&T>paA_%s$CXhq;m z{_F;TigifQl{6P zEgj5NxZOGly~hpk(KB*nZawubQ1D$+G{bdsU?vx0YL{;5ANEEYQ;tX))THMqJi0h* zcwEQ`aAd>jDZ?HECs0vR{s}H{Nx3#Hg;SjZyi=Ns z&1$w>4GTY?aq}0<$dOwZh!*G({-v4kTs=XV-+A(tLceMCsNS+>*}(mYuGRv@AlKfO zWW0=zN=QF;D)316M^0)=+{irL~X;wyn zmU1b~Ijfs1RpD$LIQ=e-U|IqjvP*=rmsi)kojXQ5?a3{FG@Q#u;+{id`!Q*Tzd5q_ zw@C54vpb6KTqw@wjd2P)`I73jxr&`xvj9CdWG6n(D@J9e{o^rB7i4|L-%MSb-{$J- zYcGYg!8NXk+MCIw^3|IUdB2eQ44h7wo{N$Fgle`DQyA*cW&x)C50s-xnVw1{QlC8b zpYedxt|NZOS@(87Y#ctPn(_dVBE(S#&0rv`evuS;Etvlw1X0A)ZMgI*jARXJJODGw z4kt#)^8~eW$DmEG;2fkf!{2zy5Ib5vfXVyu!8NsHsk(Sr?gR2(eA{fC0_G7|6^Jz< ziOf*1=?Y3`)oQ;3H_h!E_ztw!Ik*5u`MQ(Sb4)~8&Lfaaa`F%q)Iwu5O&&6(9;~_j z$G-wN3=xaQhV<_j1n_01Uz*TU74pxufq$|B*n96(P~pZC3{`wV>t$EWBQ)qUtPH}<1uet^Ku@K&$fYEh=m}MhnX~M%BQ|B z`p-D!PaS*03)X*xY&u5VD2=<{B?xi4zowyjL;PAf1<_@}1CuMCA8Yvp~MrEwG4#J zfT0u*jCIl4PfCsFBavhFsc1m*pEE^7H2?|LD($B{_0OQWn zZ%0`*M7)cESAk$EGPwQ!T%eeYiSp|;J?j<*-r`tsfmXe5x26JR#2dtK+`;AcVvzap zYeVk~U)&Z!tS3G)t)?LK7RCp91LS`#bEC)ko?iaqVck)!m@7~Uh#64zei%{Vp<6m~ zYoz^db!@dPS+2-^RidFBYC38WMD0?UC7TClVg=Ifp3Uq=$WqUS3A@ENZZ(xn|j$;3;oi>Yl zU3G0r65ED1%F`3|pH>^iZPQh+O*@YZP&UNA_-#>jqwsIre#_2jLH+Z_C)4i-0)1$L-lVkB{Y2_vhoYpJ z@+pDpwWj>u^)C2K>GE!1AEiMTo}ECwx;1_B)?A{FjJ!<5wTS^f1PzeF{?4+7tN3kQ z;(}sJa~P8>V)YZI$@J$USt5H~6eMjtg`f0SrP$-Nl>h38V+s~at0@ZTS|b`EX~Y*V z&br{PTy+jlGp^~y5uq&IvPqY!8?4=UO(wxVQ)brt?uy=ZdNJl3INksN2LPbI-&ZMT zLi9x>TXtrw39;&yn!{iESh#c82Vlk%WnE+z5=zcU%i%x?Q%`vfU<*2%&IG+u1^}zv zF2zv&EoMmQQa3W^kgi9@C$ttA;27YY+UXgODFPz6d_gY^y2y3_m#`cR?+&5MBb5T& ze#sYzAsMtyrD1j7m#SvLU21#AvsB(wW%T*Qk3tWD9Cg@#c99j<3)Gg&DF{LZ#zzhx2U_$;ht58KB+)WQkih1q?L|)p{jsgW@*`x zq>kLTAsuv&t^WY`q+I9 zH_?D)KnB8WWf-=kJf<+GOz*!9x?~cIuzW@aNFS0A6ua^F1GtPw#EWAEyBXKb+!8Cp zYOOj?fk4f`S34%kv1<7gVd){pu@Nue?_COA_AN*YN%Mz7CdiyE`)tLH?`kilh9;xA zO{Sk87fM_cd=&LCGKvRLH2uP)a7bZQu-I8eXXLbdrlYR+bV9o+=6#799lUz63?_6e zW;+t&f-p#zCa5jU95V=(yr}(Z+KCZI#2KH&`R1$89f*=K-I-~89a)vE$#Y`i94*1d zzly&3bWf>BRVDUOkA}#qjCiVs=;3EzvyDGm^7F$h*Epe1_)7|7(|8Wl>ZN4#H_OV~acQSY~0Hu-j$$g_KV$3kCn=O6q`}(WL|~C z4gY_m>hCTqQ@vq$e@!=~qAj3b+*}<4UaAPjD&4#}>L-ehN5(ukSILiUy0ET-tyCYk zt2K{4+`S6t+amC)AWJB}@Am?lgNS)kBTI&9N##(MP8zMvwgc*mldt}<6iT}=pQCB$ zj5JpfcNMnBl@`~t#+$y)ti}X3DhJ4S{g;{gyCvD7ZA!73%D?8HETxv^VyzK)NYxcF zh2WF!@J{8nbJKTbVQZ2~7eB}ub%(QpD44Yib*XC8N&e$MYH{gR4jSCt2u%dBj7Lkd z@voz!gT!AkIOH+7W-w7)PDs}5IHLQx(yW>gxOD&?Td4QGipaIoc0r>Fvgvi7er=pcSA_5rWH-56K)yrr0Xu# zfK=}ZBpFq2irkDn;&|Z7$}-j7@aT>4W^BVq#!uP5pEqw*rPAmRdbjv9t#Z^ae}2vK z2=-BSK|)WkZkd6G#Rf=sLM5AipO53XD4*`Ww{=^q!1W+?;0}w#xrb_@E~@!-R~+IG zq3GJYiWV9smjLL>an*48q*$4Z-_hm+;2 zs9wE>8b=`gv);PA;e(T(N2P3Isp3omM>pZUSEpnhQCI2F)P)6iakpf z!HRpig``wGdZ|P95{ah_cgJ6|exr)KW)hno`*E_p+`zN<_P_Tfekt6T7Ztor#nt~Q zoi|Z%m{4XE_LpVQ?>RW!zqjfdL2?}eq-@w<2q0XxDR!2b!iwuwJ26XXw+jw_+fwEh z5a!^8r0i~99U0CLU{BD??NUnKo%j|}%bV-v@`&cq_w+mQ0d~?6mfW0|m@3#aW&Vl` zkfvVpD;@bvh(<3(1=1PLfj7&aztO3X=EJe~*Q|dgQuY;UEU=|+5F>|;bTD=e%I|kM zgba%+tXzJI@JRi_;kX~d-J{q$#gS^o7$DZLTFA35_t$=zHCFj(!?c||Sdjez!rnzq zQWZ;_|A1zE_s+~j`Htv~p8PS7+JXP!O#n#lviWY6Vt-u1=r0lj!vT8$yB8d9Ulda8o~`A5Y#AjPz$OL8t~t}_BfZjh9PLI^sN5p`~;lAy3cz*oAE5qtWYqMGy> z;Yrd=v!(9J$Ago@hK!=;(fDSRS}`^60$A8zaMfDfN7w^7Wj9bjXD9HRHj+3};4n+` zx0|!MspWW`%f?V>qJ#jefFM(*aToIo|9{*Qo?}CPP z*LRUA(0P=C2-MSbimNG*7L`0dfm0ht&mi=LLqZ>v=VggBy!gCh4%f<^zubPm=J~O06^dAX&Ly%qrGKCK1^N z_#4oztNSC`M;uqOwsYU~2A5i?zWvV|cz`8t{FyjCJQRcv!s$@=me0ov752R$8GUF# z4KuOJ0xf)jQ3sGl3oKPUz&%k<_`hKH{&JVh)q1qg{@-BMyN&-@v=1ecyI(7j_%&@8 zHE_3}+%Hv@oz$T5%YOjvyzF$;mfZZ^Zo7$biZsX>aC6^~Ap z$-_1UQ796iCg^c`BvdJ3=q>!2Pr-s3xwwP1h@LcYTp(-ZkKzUndWF{Nqh2CLvNEIp zePIw-S+4Cjhd(OEtMJyUIpl!Ph);c4wv#3&Ykz>lYofeyVqJF4bEepxs@>8lJ9c&uD@rBJra5>>6 z#|<`0n4e4k)q|_`IZdSFBdxj|PE58*@dSRWha2$m;eeU{QMOQ%@EZG+C#qf8V=gbi zF}vz*l9pJenANJ`T2&5u@2ogC z4*YxL6CJKQpDl1@9vuA#6{O5}30?2dj ze)mtM*&Nlwk_!t}Az(hfj{)o9`&hTvNxTu0`(o^cteC8DlnXnTiH08-kyv;O5!Jbb zI8>gdp~Y$Rxwq*8GR`k`qAc(Kec5X8(a)&~_F-n=evk1;{2k#)Yc7DhgCIM5dJWk< zOwfIwkV%lQVkjZ|ByI!Ug})V9mz+?~I^6&FephWe{D4HY8#gmOgWpVd7lO=s8&`Q> z3zWy2Q0^XiW2U=L?q+UQ0>#+z%SCB5vvT#wP&#HMQr{wyZ>@KmfpSFc69!0})<3TU z1ryC}7Gr4%Huiux@ctCpZ6Lh^PQakqC&&Ki`R`3=(`(^vc%ZLApRE8=5BNF;xF-58 z>B8*!ol1O=86)eoj398U)Mjq*^k;yPZ>cY$mtH;9=yBb0tT81T`Y09nsH`k--1(i2 zq2YtibT0*L8bBn}TsoDk8CWHRQ0(W=eF)*L`&`;3W`CsT?q7?E0=|slcCjBiJ=mC7 zVKf;pGyk<~j(d!fF1x=I{a&HV>u{5*PRKfSlL+^%jQw(<$sKAg?J}D?P~by0kbzqLFq0L=?;NS2uce`Hxkm_odVL`DM)w6U3kuO zp7(k0d++alyL_38xyBf4&N2UUi_PwFCqm$KpW@8&GELJ{J zK!Ux6nug=Q<`ED9F|J8Y5xPokthgWd6L&@rCeW(s50bz9FA&?`g$dRI4O_7zW$3+ zN0zdE+N~0d!5%eNwyP&x`QIT=YEkbTs0otL%E5t_mMEr z3gdPe3B3`%r8EkTW@XPVF_e|7;+{bwek*Q|#L>>x_ZA#Qww~E~Y=it!(EQawh<&JJ zz8%+)MJ=X$dy*^(%9~YWbEhCYq^^{G!)CV)=1F{0oyBOE$jM{v9;0W&A#|*Z&lSpt zn1d3PIOEkrswR&-&nH}Pdh<-!h=-Wi@~YB}N=p|YUxTHpgQ?nZ#IQ-cV>6mc_Io~n zN5QuUDB)$GPBtM|1O(boGU6}QT=jO7(KK)-XSy4m5IYNBRqI*iI~Bt!3#|%0O6eJq zCbTBs&3`|wvZk-OW;jvhZk(C`8ti!+y`GheQmC`W~rm|)=Jw)wY2245c6Vl6XwCJFi zgufN?G-Psw`h$s^Nm4QbJ|@kQvKq@Rvr? z5YYWqL}4&SOUq!U7WJ}cxZq5aNLUt#tY>hLg@J+3`;dFaa7M+^phjP2w zkF=C*7~yl$AmZ2di=WmS5K))&rko6zGzbLt-ilT*6AhR9R`Jf_f{g?YCE>{3nK?wOyldq_lBvVz90&A%&L2-T@S=b{^E=Yf| zQ;sR%_;#{vLYu zDFPG*NEbRXmFd#j;u|J9?F0*qzdroZ_&6%^2?>4(#r;C6ceby{#gZ=VQxuo;;f(>B zg~r5c(?0Y4#`C%^1*hFBQOAn=+iR5O8*H8rSG>4cz;-c$F2XYJ=k^q;IFUixCR`c> zRV~(4v@>v@FvJ<`7^T!O!xiNkM+UN({rSE?Vc2T6o_pT$-n=EVjC{P*Q1ynE8mYogn#>F`yR$JPA=LBb&t{m;F7du$`AL(fv!?Jc1OB z9nT?aR8`v#kDT0eM8m^kZwv0jy>I-;q>A!XXrArtjdYSXauI^<=Gn4W->|CYy&?-5 zn-mI75^KSK;LvRL66OfBwNpt1I2TJ-kIe@<*bje1N#&_U4pkyRSW{sy{ot@`7X0m+ z;dZq)A9~H&qPM*|W#3LgND~1}20wq`*Td792$+sM?=Gu^+;2EoZC@Y%`Wg4SgegrF z*3x^nJIiWgY>b?obk%}^9LB}Yao^N30fYK`cN1p|R8(OtSMnc|dD0^jsp)&rjWDd!kk~=jmet z_cknA%~oY?UI@Q63P%hlZPta{et}C4kz*y!R=d_(7-yLRW=Fdeof3^dEt3Y(?h@th zj?N;ZZqmA9id3xoYZD2gF$!Yi3gdtAXKOjVU%4qT9A!bZh9**QjKLF>^`pO%3X+UZuTX23i zUsb6fH!B?W;ltT`wfqPIvPt8HOLw^eGLD!Y|Dc&9w^anBFa{IkxgNLnH6_6VRaS)r z1E;n68&%Haz~AHB-xeC{qf*DycsIi0WpTlkw}I617K<_(ayCMn!Qc{0<7%({?A*4v z%KC}fs0wejPhy6uIlr14#1mhbx_UcP5@cKw=l~7$d zuoT2EIuM2V#5H;{=@sMg?U9;&29G77h+Ktr6B8S%5QQ8d*$Z1wYfN;ae05QkA!ZPPt>YxuU|5Kce4 zt}mlwfRowhd+W3jiVU{MVPhkT)ZpN;874)&*33EoK`wevNxdEy@|%)bU(sfwfI$ljZ9#Nss3t|gj8O$TcBa3#`Er0V zPG&s`k2I<`>0&>gPaL?#wGQ)B6xIuZ)h#WrKX$3aKj;tLf98%tcT0lY^!;@66U5<> zqHpSH=gXd-s@ew{oD$=^U-|ur>bd289Ggw0_5Ak_ z*WA=nO_51AT$)nK09sHXc$zBgD}o@`k)0odbw@dETl7kFv;ywjJ7H{!4gjpOkb_Q6 zZ0a3L12vywnDE$;qwop?hPx~wtv{aU>4S|xN5wpnH+_FgSUO=Cl&MQ1K%$)pplxz@ z-v2fI#bC-nxfyfzm{f{KKO=Y_H_jCdy z;(hlcj+;Y!gCeS><6MuXpBs^|efnbb?-7)!};sHo7IQM-q?38w2bB#{t~@IW(*ozGE|9NE_?JzeX}aDZq)K_=^4a zr$n=VoXr;*pCRXy;ftmbR%nM28Grx_WTY@cF|lek8!^#4^NAPgWrz_HnEnU*gsTmB zz^Wc~6l#l{>@Q~K(qs41DM?}w4&hLlAVY)6!S?q7W)ElM`0N=AOP2YdcM2cQ{8bx!#znG1s6!e~@^d5a;0Y=llC8z4>%Cx#G4`G$bodpD z)Ji#zHeI$}j?a`}GhgTb>21A903HG{MXFM|s%E`&QN72lAA0&+k?wYPcrX&OI+xXz zj`Gl!fQvolE8`JWfh4y~n60#nD1d^r(B+uF_-CqZ{EEEhYa)+tj;&N6U1Xa!X_l8; z`78+8tKIEs1cvu~54b}I1@hwfDm-@7FQbC{s6Pr)5=p*UkL5skOy3SN{XG&ce?&-G z#djg~iwYo>TkP59oc< z4J`Q)DgF8jo+_^kGuB6Bf%>ogS=gRi(fwW7D0SUPdg=XMds#A`-wa_vo&3)IYAYa7 z9cw7$L=Z%c?$3Lc`hd35XW~kK>FD22QFNe0f9|qBi;4*IPb*hq(&F@94ZWjN^pC>h zOh7Wk|6?tvDRV9Izbks)R$?BDd`!Zpf!Ib5k{%|`#=fHJf#w9*lKWcBc$^lT-=`c*Xcte77aDyMY@*1 zdINfV44#XK=;x_PN=kl=Q#D-hQeg@0&ioh@Ypy#fyi3WfD@(z(^>g#BH}06LU7x5A zJp%)L#=e%6o&23}fWNpCIZ2Zn9r>hEgWwa2cnd9qm2vfY-P$iI`RgnA*RQ??!F}9; z^rQsI^WNlFv||@z-Z7Hk_f*%*Mhp|@(Y=}V)8)W{N-bvVbQu~)@|8rjG8BE@T=Yf3 z%}|b?c_*8$7KxEWQeO^H+;b1TRiwta(ZM||o*U3%R_;`;@>fZ*q~`)YQl}74?hF3| zzU9$3uU{`;8&uFkZgQ#Ec#JoZ1Q`)jpcg8;tHh?&pQ;Cw+6fMr&_Oo*mCLhV@LFA? zZB(GHqm2%Dhsiqc$c5Vo4j4hewPP3?P0G1J0fFde-KHfh_{rB_ukgnf=SU!TpvY(q zOqseytKZIxf$vg8g?_qir;%u2#%T#s@2|?emxp$HxBwrUh5%h;T-d+q!T`6{EdgdCQA zS%X3WL})T2+|;A1Tcb=S7WJpfLogjhfyk>aQo-KTliD0s@9m~BH2o!&WtrK+K;K6h zMOEC(F+X^MwHstICqL!6v)?l%mEN0MFDa_dxFe@X8%w6Hb71hM%c z-nS}5<|1c@A4V4yt)AjBAK>*|Ry>m1g!zQkF^f>7_)7)kYzcUGI@x+DyW!|V89yNe ziL8`yNO^q(-YhnS_9brlNp;d-P4 zaAqOL`(mBMn>^L0IyNfv%nrdWXU8`q-_q*T*b{ExxH4*Gl&VPe2^p;XE2z`E*Wn$JMi$almWmR-_pCY??{n z?-)%9SG6R7J}rYrVBq~ddH7M`_GQl2{yNsZBesk@Y)&nP_Ur_rwe?tdT8o$vE+z4t z4N)a9?34rjklx$f_4uhg9fe+V01Kp0{87jK2eRb*QlD%a(|Ve2bL+NDqpv+at|$72 zAE=`q$=ACVfWkj(QXwO$v3fX6Got|r@Sa4OIrA|gr= zNx3W4>e&*9^As6OeWz%!UT7r<(xC!n6z#>{KVi~Y3YH>Kx6MUEO>$Mc!KQ&=GV6zL zFX?8cVLyl9eX9MvKhT{S z`t2rsGIgFLREkN|2n9)K^JL=p;vvc}_3`mU(d$@t9N7Zcn2_6$#o-ZD@SWFf9raE} z&g?<%H|Y-8oPavz{^l#yQ;5F7oAC+Sv!ez(-wi*#W0{UWJik$7h{?Hfin3Cr$v8>E zwIVv6fQAs{msA`WZN3lMTpJzcqR7m_Zf?^?9kTCDX+qs?*B{B# z^FDP-*D=Q{C-WMV)MOLD(AL@B7_hIX`&83Sp6Yyt*cogPrA)#e9IWr_)-s!Ufq--6!)teKpS0#q>p z2zDx8(>K|LXPl=bWM=fe)h2}8cwYw`Y20;h7tlJ@62M97wb-K&1*saA@)H_0MNI_5pj;!MNH zb}9)^ch#IK@1`-lJ50?(^?WB??d2Yi4c{V1?Ci4ouJ%t=WyWVJe5j&!{zL*MoJ^-P zZyM#or0ARum(UfW&Ba;ld_60ewl%|a=1iE3spL!UO9tmxR-JWz0b6;rvO}(Uck*OM zdReqt-{oUDwUg3a=hj8R&tay(*hdnE!LV=&L4Rx5R_X^%l3tC2z2D|zfyo`DGQZmTdF}q)Mg5<}YkHsf?2GI#FCMI|8u?mo$ zPhhR0P+tVkR2d^;^FTfm=UQ2UW*9iqMc4-NfKA%jG8^; z6dW~V9VsPy98m)|XqtZe)u(BCLo6Id_cEnx;_xS}2QjCfjv|8rcV9p2-!fA|ZQh~naPYr_y`Os^aT@x1>+5Mf~1G50BJ#RgRrM@nn={VLq6?KUgWNB`Uq+b zyL!US2xr3Hybz;$l%aTiiF}fYzGDI3J4T(l#IWinaMIb}c+hr+Vjq#D^28=hf0WHB zUwhBOQ#WCBnbh4N-3(OV9aqpICZl~$K_SN)F{qp@bT!~^7ON7lNtyQxdHru9h0AZR zF9ueRate)$UM<|M>*!pw4OJWw2w%7zBiiGIeoQ!I@q}0%F9hV8t1G0-@p2oYkp6r( z8%A@xTHNE4J9a5ISBBr7c4@pLDN2;>RhGRU;dD|_FkNpzFP*x&&@)b2J{Q*>ERH5_ zVGA>@5(hIsK~IAnFn~Z6;#O9r5KkI8QTUQ-8;FW#)2E7}7cZF}B1wcuIg6dUn^Pe{ zCx^VUoEepaEgFSi5aN6g;p|*wQ^-7EPdAt;*T`6w0i<(lj9r9?SU_w=M8pu=2S?ka zON(j|sdhEtgQ-p8rbd%RoTk3m-KM>sdroVlFF&(9l^Xp}=;*nsWgrz~9HHuQB6$xI zkE^zkmIkvT-hx8N*4NiBHt@q=fPy^EAIGG6QvTkN2TS)} z3rwF8ui}DJ0syxWH_{YU@^!&|hycrAvdj8*K|v*e&C;c?+R8NeHS%-RI`v=D(@&BT zJ#zJ%)mz-$D6cvgAcBvPsVrJQZw@w=n0XDF@*)|X9o5R)#@rKQ2SvZ$mVHxX%yaM` zg^v#_f4=vBt$CdPN6iD(#;KbDa`PBjbjCtnUh>&Q|4(gBDVR8EY$T+FER{i}f%mJ0 zE|5n~mF}mNl^@T(`u%j?4jpvg<`YptNUZ(Lh86PJD4_qBP_~nXd?1dzq;g;5SMfOaLL7l$um+z?5y|m5>R{pq zK4FdQ-=w7fFBOd^m^MH?^KGyy6hw&;^tphZ$c`LI(Bf>(T=z!R&?!0xCyGp{^ceCn z0jah8Ky{LfF~ASiEt|c{D@0?PwPUy_G&!_Tfug%<`^>tH5%++vvL77{QFx@na$SZ33 z)i4I>2b}XjLM_ojgBh?mZJ?VX53qrQfNI-YG)ltTa~>359!jXc8ITQJ)dx-ir7*$o zaDrHrYgOn4ZnD@vEVy8YU?jt60H(lT{RtcFPTuATL_DG#fPmp+$gi*T@Z2m1aQUZy zQ>j2h9+ap8?PpR!LX^5+V?flC9~3)y0r1XY|IZnlf>ExDSVC7|8<4#GJ166mMgWns zE1qah3g%~JfttdA+)ImU%oY*i+5;ZWSw3djjDP(2ar%=b4+ajM2U^jSbM^}YPb|vo zgHV4x{?Wfl^~aX=BU~<+MUh+LK1}>I*=p{igp`UZ{QC84ygSWKYAj^KECjHixCA_{ zO&p%~3J1kkRsk2x$fW|!9sB=1F@Yj}I)80`E@>XF`F)2Q%g0BZUJSJ2`r0xE5Ajb> zvz2gvc!j=R+I*J_f-d3pLg2hFI@L>LH6KHoF9M#Ooz&zpno{jhBCnL-Zn0wJ$GirD zAs|fAbvmUL2>MBB@KD;`NyFQ)+Ns}wOtOQ57WDlGhRiA%rcQabQ&2}#X_I_ zY9jjYZopF5s zrI8@^v%>Be)CNL98VovA)UU}%`G}3Oa5kfp5k$^?e6gXomQB2f3l^l7ysGX{CPXnh zK4@xvJ~X>*l`~23PdjF;`XSK?tF7K$Lm^vQ4R(SGuJXsDpf6I0?b2 zz3zvf$TOb4i~r^qfAC8tAi>Q$2)iAQg!k;SyPRVl@> zCjCR#Mc(E^Nlne(w5?%Z-V@7`!(%ytYlRM!{UZu2LjK6IYui@+w|`^^zhFN7nYU&Z ziH!7SAbGnhtpAUP{QNKS!yoIy!+i&tAxziRlu)gi$`kYx;Utz}=c)Lzce+1h3#Ev{ z!WzrVF-xcqCVu2$YK{{AQO;^Fsl|J5p0aOrKT~cBGQAngwAx@U1Armte!z)JkqS-Y z9+6m5UPvJY^#nhLU4^Bwxv}MFcj3@lqX};|s z;-3NKw%VC9#@QIXrj*tMKX^+Y8&6NA$qpgJXP_QC5t=p6YVFG{P%Z<6_#FepL{k23 z98T8LE7sOl>JO)N(VNJ<1-Uh)~GEc2K=Nirx51L!qzwF zAYe>L32Z@Cd47&(nIfhP1^n{^*@G@l9CdUIs;!d~IW0t)N0x!gGOZGMK(De-wF#Nm zgXD}HkFy(d>pe>LqFFSwdiBDD(B9|j1G4frJeu8W+(BCCpcE{j+c}59aY8StwIn_q z)mKfDrt~e^Wnn*nVBxDZ6uXZqa7TY=z~*T7ngAAG&~ith;Hs_XWwO@8qg8Fq^=>S2 zV~{SLpV+U_y-`hzQEFY^J9PA7rzDslDmi(vs??&DGpkFXb;QRfMz?ONy{GeplZ_3r zxbf_Jp;hqRtp};_PVo0q5yqT{9pN^U@0B_9ie4rZ#?Mx5?6}fg7+cA+uFFJ8UR-#( zZ%<%aP7XM^P!v*w6`VE{nHd+GZjl>ksxe{=HELa0^v}AhN9PG^t<~gDwzX^Q0 zYj6Mb&Fkcg_1K!$Mp^=PM3nNo){ z(240{$jLJ&3oh4+o5Qvjnk1q4Oh=$4a^V;L)KEfU)#NWZnltuZ!n4 zy4|c~7txDZuDpBr0w1dRv>%+EnWm$JLtlQgKi?X6P$r^9x5bsUCZdhWlxiMtaO3!; z^mZ;<654ca-JW0U><357{%U6jr>}84HZl+$^zsFygPzj*9lM-jq)fcK?tpukTV|!V znx)3sJCMjI$^ZTe^(pxq)(@v!F!!K&_c}v@YECU>^#=Ms7;a~_?(9azBp$;IBajRs z1eyyNC@4;y!GLseC7zv?i7Xjv#gvd54<4J1fpuimGtrkXbq_OuD}zWEE%9`Lr?{|q z7NV*@XXJV7?tFb_rL6gv>@CwAF@e1U7+v-oIvX#(w+Y;|aX^niiP$fs+FF<0yGelY z@z!So;0{Zt&W}##6!Dl|*r(J@xE{(FL)?H?qD>PY!VGyM-WVRs!$kp>a`s*yM{f=Z z6}9-|)0?gF7qnEl&-ETQCFGX_oZ7k+xBVG}m_^tE!+Q42t=X$sr!MP^n!vYiMFO~v zWyJ@UXPt%Ch^l-We^E^gu4sr-2c#9bsz49M{4nwM_s{o<3agcfPk!oza>h;k&1tm$ zUroecx_kq~CXf#XVC$jU9H+JC9Usg8)rw3y#r=fv#P%ATt0xByjyCesV?K8X=%S%BoL*#?^!@L+784n7$ zK3^arUA4EhiB36OaQEc?^R`I0{-b%JN(UyyM`VY?6En@GKg*r5=g}I79r>~rXbY!Q zN@9t?S{B-P5S&RQd&||7P^Nv7U}jJeAZB)*AeOj6cuAx2ukd*E9=YYTMal}Z3X((T&^dG{AP7izcXv1J z3-9+)@8{d^-ao!y!Z@?8waz?_<2(m{d0BBRj7JzKC@5Hx5+aHyC^tw@P_B90z7AfI zu<)w`|Ipcrs@dvUSUQ>N8`z?V>znIa>)PtSC41vUW@Kw?$<54cX{u{(YiDN4q-SA< z%fj^-1?4)uv9g-&e_ltq1}@_m>-I&)Vut0e&t}9CP6|mfhe~pkKoVCDluv`N6mdU~ z_NMSS+AS_@7;@yYR&R+QZ2XDuN1D#IBgwZ`ky-LtrbMa|_kE2q2oDMGrgv#O>JZlC zezF*9{YKCJng_@2hW$=~`B!rijypqb!b*sQ54CiApM2B1^hjcaKJc=6`#2e4yj*+p)wE0j)l%nEBV2k)mSY_jLjO*#Wmpy!nIiPl0 zK908fAt+E)lXrx`GUvt+jTOT2r>SFuyHUgGG=8UcyM64gFs@NxvES_33;xINIi3a{ zJ@9X(wELLTN{RKcKyf^4Kr2#q8@Z9rn{21kMhT6K6ffD(a1vRqU1hazZd}<45vR7I z?K9=|d>KY3cT>J>r8`~vyzQAif7nZ9i+3D1q&{$a+aIE`)lo#Ax7_Yjpr%A)h^KFf zjIO_?`u6UIuw#eUj0VBi-e7-0!=uA%w%_C1L`TW7S_D5TB*bPx zJQs!5?q#I&U|EN$f6DXbHf)vCO6{Pj2mTo{rms(;=}WO*H;Ntz#;0dIv@2V1mTj=% zc*W8}*`vG45{NG)+JfOh^mQ$5k*$UHKK$ue;sq1+`pv`73D;hU&Ee2VdD_kPXceHK z*ak|92r4^juf?IODfgc?BQL_E^#iCEYSS2D`q|OY2wHmc%*^OhbA9N>X+#wyCOX0d zt-N59EOE_`c1Da0gMut@ji=#~xM`9t9&=DPs=|iJmA~_JOS8kpaG@ib)q(GD!lpA* z2@S*}3d)`cap|ugP?j+Iu2KL+z(OGR*DHHy|6eamc_!adZ<)}&?M0qUO9?l#L_zs* z4SD??=F(wjQHKk7d8StG!RQnU3fc`ADheT@Z>1@3y=5ZewpZ;;Q^&eI1IiP$fBqxD z9TPtw5WG&YoI?f9^nVY%_7zp0!HZld4U)%$bMxj+FJE7AQBkTVPu?0B6s_Z+B=RRh zP%N+YVd(nFXNK>`5FZ>IXlrYelas$yrK6)WJ-valgoD6G(L_NiiWv_Pcj6fuo?E7m z-Zts&{36@6R;;AuTP34oIex4r*@9~C);J4}YK}1Hwwmz@3c?yzaddPP61qNmfr4`K z>-Gh5H_9IuJLyHK5Mr)Y@W-FHOwt|BW-yQT>Oj-)Wp@x{XcIesUtpfTflHC3n4Kcc zLBi)6wbnW@!AC|$#=#L`=7EB8{>wnHVrV#l?{VjGch>&9FrKndSrvjWNK>-~Zhdzv zTv;7sB6?&Iv?i`^<;Q2rfq?<=TnY*be;!HRq(7j#RqyNDRqa{XTe0_7?h{?3F_syX zqxo{*8$AJo{0?~Vo*P%bfaO9_+cj)=X16mM*3|;Dp4PAb$Qw)VAmqardH_6-dh5yq zeX>X?+sjjB__d7l;awH}4Yi*A^9?L*qphFC``XI`PRscWr0U-;Q}s=XX?-c{X+&7S zg9tcZxj@iNIlG4?V}sJ`JljY1v9>r$aqx~pK2Dn9>xA8IdH%7+)agV)(#dLL2F(nE zTfn=^zr2f-&kc3UG1Vq&ebGDefk@@~-q>y@<7Dwl!Y8Fb2j+a$I+Ef?-YSda4!m-= z6CkWhPRf{cbQ27!vX@&8=Jj?kdl03cNUmHgkJ-O6Cb?4Y zJv!7+E8B72?Q#%OpV5B@2~~J&5btp?Z0NPxxAqQtjqD{bL3tuUR=7zBvn=st9Bw*w zJ3OmzMfKE8D6Z#@bBmsTf4WyFGCJlqVDc;b`aQnRoKU zP0xsTmr8?p+=61-t>7Yec&&=m`KNnfJ}a5ZY!(x91B~L+-0VESXc9QU3`_`bnEv@s z@eJmnr5wnfT3dz-26)buF9}F`My$YqqSgM@_TCJK+k=_If2_@@%rLr;fY}LEnf6Rv z^jCt$A{Ch@Yu8O-u+V5H?Q$p<_8;dbK`ZK5TMrV>KeA+26?&YX>s1yea9>n4z$v}u zvLD94M7O^aCajN^Y5w=;yqVP&wi~R)q6W?iwbLM-e1~fxJQ0s^3UW-hyu)lf?i`!@ zZyB?HP+(9Utg)yY7ya)GP@SrA*%MRSrjz6OWUWczO~W#DkcozO`51**|F%FHEtZXo zOKNkiRt_s&J_^&uiFVmyyvIhgb7yr=?rzb`>?nNMjj@%z1;6ItrrOTj>!9=aLtEe^-3s z6TX9z-@*O;90Iv_eQy8uePP23l&muyhodC4#k!P|7H+yKwe(-j8?R@3(Ibu~5cuYU18s z?oAQ=aN>4aYjav!d}2J93*X&olYz6dCW+^&vt}!#5H9J^Way|cJfU&Hdf0P%yqK^$ zg4C1mQdscrOB%JOu*LjsMUlP$&8+b}=9)LM`uI0{bf9@%d2HeO^R3In!xs>U2Dcro z{cW_-Sb0)N=QmH!DU-pDkHkCzDiS^=w##2We%uWtlzYUnhPPmxn_I@W`?I$sHhf;Z zEsm#5C0784-`2>?-TiJ0q|7|dD?iPhWC0yHEbC?dJLBK`L2E9X*+Ps=_UlSsQPuae zg;Oyz`w;{LGV^XX;=PLSN5!mlK3!)jHVm~{&~ML!@e-RrukU;^mvu|%1&!?y-ZfYU4`@C-V_kYwS8ei_0)CRdr>0E zDqp;ahi07k@nsDe7OtHqaTV|7Y)YoFs+yb z)_0ll;8vpkj#>&>ny?Oo?(|AOYYWtC(d%GSr#nfw?aJZj``CsZYx4LLmGeUxav_WH zE)mO3Os>%O`99@Mt64M-*q%_8J!4KzsZni!!BT15?eRYmhKp1*a_}X){#UPT?8kWj zmst>>VJhP9EQ!4Yf2XDAqfE%{ls`S}3ZeYIq~}U@_|ZHEHA8JtBYEw!8TEDHGpEMl z9jxDxl$8&eNrL!FhCQ8`(Ol92`CQNLglU{A9;5o1?~glF8O+dh8(ls1|6RzlSRv1d6SZ1y@ZD2|C zyCnD_!m)*Y0$#bi;ucjDy$pS=f`IJA6hs#>KwhO_rL-3pETz!rn40us&g3gj8}wrI zreo2pD&|uM{>!UTOJZ+FX8rMe5zM!Hing5Q*mYU;`+JFd#Ii6LMxpzjN7>5d!z+ZL zs=rGDSu(^YDn9x+68)jfP!2~tMt@d)uG`wx`)1(Z%>I5KcP#QA0gQjWu$tO5Psv?S z9;q8ccvH0Wpz!LRK&e83UcZ7fB7IW6wUBzD^^BJhgI?`+tyP6#*J1X0gp(u9wNl=2 ztzk4vlD{8asEX&NiQ$hv$0vUh8u(d3T_Csdk6WS15WAb8&psUzhs+luIez;BK?U>v z^y2rg|1P$mtTi%!dZs?zT7Qqy=cvig5Q($Bh}*fs*{CDU%kbwuuHGnozWX#bUR|x; zNm-n|1jkrg6prYK_+x`S$jF`A#EWZrl-%b9md*yc=y*{D74_|TyXEL`r=felgXqcx zWiHze$qyWpRNBD~oQiW$|}TVWekw+0EZY7#GV=K|!cpOXA@yQVkT5?Yu3btiNsRl;|ZFmO9Ry>R^NL4X^Q+_uQrvZi#U ze_I%V{FQWZt)6agRY+Ll?dr+jArEl9igdHol5vmX7;Nx zSZTd3>gaG8DYMXp!HOI<6{lOpKGN4<5_?V{6DG-Zon-!8=PEP5Nl0cx+D*+I($bE9 z#&Ri^KQB{oLpsm+(@04-c+Io3|Gvq)|756%cwDp0wuYu_lKFULVWDh2jjoVA9;-=* z;!{`Ag@;}YM!Qe&&Ed(e5v!eiE|<}U@em7b?~w36@pM;#f!OB`e!@&-UzT)aX^nG@ z)8&Qw^sbT58nwYdY+8A}YM-l5E2L{d(rZ*qrOfEodol9gm!Pi1O_(_xwP@ZL zD%{#zCMM=7-Pu16le&H*B#T&r^)2_aVtRU4(RM?GDXLk#NV%CZqcZu*Ey#hI|L+{Q z4!nK3_Y><;pPb}&I;zKILwihgjuuaq%b{xUWA#qnB>Fk_XT=M3__fIk+#yha$RjO~`|M=w=V@{s&jfa2`YOna#&O%N4CIdHX<-65UH>$B z;ZFmcfu*%iVTy;CKj1ymgFawe(t{G@B?g3sVoprlsN=jJLXefq=Y&GJ^$)gv` zwnenBt=TWmqv{*PHyfcMpZtk^@cwkeiAuYRzRZTcOIbLF>uBj_wB4&$kDOgd$?{J& zs;uO*q4$2<0`wma!`w={)wx+4`EzDQCG_HsBw-Ucn^U3FF15+PPfuun=-;iTWX;4| z;P&5v`Ty6c|6P_JNauDX)cnOXK`q!%gn+PF?VeR>my8iTlYHWhxc1v6@3s4+ke}d0 zM#dHMX_1e5cTyz@tgM*6B-fQZ-Jul;`opFh`=#JKH`)7JTVZVs`6WsE&$F28*i!nU zo}JImYB9L>jUbCtQZ@!lRpeP+FTUf9}sdGfZ>6y&oX{X4Y`bM4nprgO_GZx7=7ta!dQ zpk}%~@bmAZvqlD2h7A*rmr^(z8WwWh}#>xHucA6DZi0m&6 z{ck4nFW7V)f&UNt_@yQQU#uK$2j$mIBx%=VOgg5dq|Fo9RTS^WAFOLc#l)^m0kPsV=^0=Xz_s}v1&J6#_l<{^mZt4YyohSb)2 zC`!Jb>h6de#TdK->kO`FUao(~dylpALI}TmTZegBK{enpK=vq^+Vm(_XAMJ|7&>fT zw0@>s^)?a8{jbE2M_OAAkEYAmI2^iVnXlUPDyinzWGLqLi+XY~oJ$}rxk5|j=I1m~8HgoGt2r}^vN z^q`f&d~r-pi;5u>1w#N#qr)Y{ww=X0iSK8M1#s*fIlv4V4ZaqUFJs*B6G=GWgt_*^K1t zEG8YyC+#8p{r{$+TYZ`9{}Zn|ZpiWNSt6C}%p}8$9cfnR1J-m8*Xr!8G`%;EC)^J0 z@WOlmc=v%y68v2sBZPfmCsNLp%v_%=iKlP=ydp`Jwo+nE$KL~K6d>oyK=kVDI4CO` z>B&?wQPG`k!g6!PCb)l7r^?=7ZRpwxy9#Ei(i4?EW^{-*Oq99g&386ua%V0?_}f24 z&JSwL)g8nEql%^aBxR%zP23R+(w65}(bm4pc%M+m5#StUZ%hK${ew|0gHDq9jas>L z%l$yv*cT#hf}bMTb%gM-h&beH?w))9_wDzxnw&`K1H9fBZ~@B-cSdcWk9y#%Rpq`k zTzq=8y-=UCrPKZn`jG0cE|N_jhiq-#*##Z6$b79HJxXP8`8jL&;4&NY?dNjR&-9x7 z;GAZdn8Igg*zD$G@+wF5n4O<3jB7>ola7Vt8Crhxt}EnHn~%T!ll9F9=G!!{Ywg+! z3?y%qP>!R^414)Y-IL_=&CZi%sU0C{U?z+FL)j)r)-o*PStV z+dJH*xLf}xfHiaP{!JbKRj__3(7)gMZ%str4XHRzju0#NocQ2`Z@BmpC~Yk4?88+K znU?xq3V)uU1`%G+mH4gt&3^&VdfGq!D~B4h9@Xphw_4h;GPGtiW@?l%y-eD&i$Q38_x$0S69e`XjPW117-2_uoG5`U|E{> z#m;T-#Id$ML28uA{-2-48~5}2anrLu79KtG{|YhfH^v|}p4f0>Jp zU1K*J*#dxqN&UI{Id6=hftX%Nlrf9KMHv z*I&9ENVVgf@S|$?8TD;Lu^)dYGy~%)z|ntYjY#hQMcKbzgXkYF_HaE}t^$<*y-pig|H_76Y!^=;tG%`h?rIUXK zKu%K^Jvseqob}J};R;j}djh_7+{q93o}ZJ`aW@vDU^jSmdE_{VAsuyesB`Kt;nWUh z7XZ>(SxXQ6G5A#>&Fe4j`oEA#F$6TM7*2~f0Ki_H7at!B;^Gc)YkaP7%2&xY03#2bTGy-& zInOEb-{AycKk%2r3$F8#V#7m#5StoPb?e+Wot!ra^HOBSs*OienzMt5I5kU6VIR=; zy&1^<9UxbEu}^}E`faq-Z8CchUVmSR>5q-dp^~I_D}7EoEi@oe?-NjeZuwiL-b#n~ z#r#LLewR8&lMa2^ALhOuRlvmT1ttHTf$vhiWJh1`&-n@=t=(*R%V6H{oAdt(?sv9V zpBr4I+M{31a26vi$W4bnyRO_XnCnF~l6p7xKZu5mcs?VC?`~GOO=Nffrin@t6y5O6 zK)T3TH16{N7pCSfW@}+B;@B7HKsG#BOt&Cf)N=R>ak?z zK<6I!zNUpn?|XYjv|$d;GGmUfCzpJ@<6FJiaO`k@?ApY65l;HZHy8N-bBnt>o<>RK zNA-AeyyTkKzM1j%46fu0Lv)yn%#ZvJf9`+haxx`CMOnHEA)mA-oR_UD{A(ImbRDhj zl~z38x;Ga(BXlQC4~bt)X7>IF+jk*M<)y__VPMQK%#+XcY8#1Ej=HCg^-cG7RiR64 zi5+R_*V_3hp3Cy$AbgZW9Ps!L?s!uiAXv|RP=j^Ci6R>fNJT|*vup;Wn6Dv2EpGQq z^$*g2zbqOZ#j8H~+3M$KFiL@v=nN_>%k9i-xFnl$2S=}^U{m-Us<=QKr-1sBpIz#3GnrcxC%v_=lDdpSQBa71nG-n!Y8a9IsSrEp+Nj*TnzSgZ83#wouW~;dhLtB+f?n|{$)vxK8H%t=H_n&@}aM=0`F>6|416Ywh1=)a|u)tf67mi*E5QbAg4 z@@!=Qmj<*BgDuo>sLG2$YpZQI{2J6|-FDWX>$C_!~S&dhQ?6P0_ZsG8S;C{d!GOOoP5`G8r6|6r^dQ`h+qT1s! zXX|}EjbL9?`J(m5k?{GhihczK{KMEYVxHhFqFP#-0}}WR6eDoysb>i4YrJ|pT<5tf zMk?V+w2U>C7jhuc(6JX)s3>46Y5wN)u_nj=8|Eo3x;jQa4q4>7yj#Z~V>uV{0i2aw zQn0krB+Mam!XR$m#{9My<()Oi2|ugTsM0VLn4Gz5k!pha#Q6g30Gj~Ff9Zw>cQXGs zSoA&NroxSxY1D7}8W$Tcw-Xi&21Y%ygQ1y;o1T|T`q=9}de#d7aoxT_w_feZ{tJK&tuJfk|NG=e{#4Vka;Z}Ru+B1RJ}0*kGO zsnzW6f2ZQKk1sHW**k5=&#dusU4dHj->a$L_u%)TxGZ1nH*k(jMzF?3x|l-RRkU! z+|1`Ieom1*{1^p!1+?{zlLmSDV>Sk6SHJ8=4r%VwzUtf|s`ZOME<9Jbl0HQAuW|;8 zk9<}4IWX{f(eMHSFQBJqX|i*OgUE7wlvos}Xow93iH5*O^v{h;qsNzYZ0PT5cyKKh zYJ>-zF4nJWXm~LX<+ig7{Mw2U$!%@Dr9_5hZN&L8n2E$Jq*5s=;vu(5aqhB!uxkd& zC$KytFHOftTV1)`^)RfHnRz@rlBp(!R!S;A=b|C6;`pVZ2Zt(plL`Z|bN=eqU9Uaz zJP7?vr{gFadsW3MX?r~^l*GQFc#$mxCw)m_1mzPZxFV51&$6iaiaRCY;+PZ&F=|ex zmetvZeCKs7au8)RTXCDAABwMPeN z|2Dz|2BO~!xn6E>T4a1_fDl`~!BY|ZMI5Mk$BIM)BLf1207*BR?xA9!|F6k&RC8s; z`2gUg842zIQt_@k=+ms2{jC6K#$6^kOL!}ZnD|&K;i6#>_hsd{M(wvrAB3Wf^AmO~ zWQkkJPRysdn8obX70y~X%U(;kPcJeBuW=aD#jn9bVRc zKvj&;$;EPb>pFRue9!=SN$`ss;d>+Z2M#AaKFrLum}P~M3tw#w1^qN$?xCy4^rWW7 zs;R+|Kd9Pl%EZ)hoUVv^aLYhuzaD5L_dzH*Y?S}n9H1q^H>a<^t3ZsT*tw_JaS$i! zOM5J7Y??PRhU8fsaxcF`q*Yi+nqs4HfyT{_agVNtE|gx8;oeh@TpHk|+!2ezqT`p5 zC>$9K071#R7DT z1>w}^`Q}I2B?W#mH^}5bC@p+iB3U~ddB9!YQSBVqzKo+!GpXGh-T+zNf1wRHVn~&6 zK>^Dg5a_CRJ51_tSwHyvIU|O{?8#H{2NXcur4Qv5{*jjls@B~bv~!IUyF|4=3TORX zWJj|PBSp+;U zVm{w0mQgBR9SvSh>r~QLwi(K5RwM=jH$CRdEEVSmXBMhYclJR&^- zXtR~*1r)2I+BX0F25w803;*ji4Bt}W*-l3Q_U2IfFn)xBUNAlpGu7{6aPpnVRCZEi zlPC9a=}G}5yo*#ao_x*^ENLKV#(`@K^|BM(Pa^0DL1-(m*58GR-cRM-0y7W8wGoe~HL5!St0+aq&vUwd24KC&d_vde zWHvsm&N|jlCkNm|;3y~(R%$V6?M+~FESL*(9kby|SI+hi+{=bY-48H6EW?p_Db^?e|8-VX&`B1ore*Xn4b%J;vfUi0~()VRrkEIWC8JRjJ zjk{dx!_Q~nSQ41QIqo_PJE>Dsdgb#rg?4<}q^!N36MR@Nbai^ZQF zErk&6lDg(BDo1m0~@w@rOeUe z$ZcJ`6JbD_YBt$wTEB1FKQM~7L)p9Dhp{E?{ssoDV$Tepa##YCrt z$Wca}vqq=(P9OQ~qMZ~nU;73?(Has5yD*hlg$zxLOw7%@c%)Gf*zyctDN9VK>k5r~ zE_Zrre26v$!a~pLF>OkFaD-v!t_iKp~ zpRchMCJlCb*ud#}o;AXjqZ47&38mnOAMWTz61=gG`o3%7_nz1Q6a8A3sTnyPkTdA-oB4jaeQZT><$E$Ll&G$JePmG_w zs_=uVEa!yN59Gy-r_1a%kA$C)iwEb>R5`Dm+#W{Fh71gt-@4>GSG*i;)`}uPh$kP! zmKehfwp<+X0|0^>iovdCaS5EJzJn@oD-rUJQo^d5AHKMA5((1PwBvQ-nXWMZjk1dp zLp(IHH^UZ879VphcLYHq$vaCnqP-@{=LtgVgE{bCw?F3Ck6>=e7d|!jnHW z_Q)94;OnLBXkCQEU4z@#xtwDmIcJ4t!LzzIsw;KnS~gWcV4 z^By&P@zWO_BIry@H@4IgAzyz0KzTXt5}HbHx&fiS)jA19pvcXnIVTR%96?&^bSURQSDT% zu3_zUfyW4Z7HUcDBw&*L4NgwV=RWNZ@66vXCc01zrZDpeZhwek-8?0^TJ79Fc$c8@tEV%@>GY>y=hWdIr)T z?VtyNj$pzjcCHi~M#yHB+qSABWpg*&iE-exmn(0)IU}~NaRG&e7jzMJQ1Niv+>1fH zkEA!C5nqZ)cs4izPzo9cos5I3vqNggA{ukoLJZ~ALc3!QG(4Qt;)NZF=%jeNknmlX zA%!9hF~1iKIHwR{PwJeGE3}RB;Hrw<1zL+=7$_9BXRxKhj)xNFOzve3N$c{)KDNvZ zq_k}gQ?8fH5k_2PF;cna8zZuH-v6_IAEE-%blNFShX}7?0Yxd#;d%b|N?T&0qkh=- z>g-AK3z|)koVH{RdW+~S8zI*K{(3^e_@d_@j+u_iVfebpe9Yd(e|fNoL`WXf#(msSHkZX`xgkF=;$< zq=s>L^xpd})v+<8j5Lx0Ly@FQ@JAY{hb|u4R0lfe$s4gvo_6XxOW8THVrYBAh^g7ez zH7Bk64yag{eeEnaoOH^lP5qk&l%Ueb7Q zAM6qpzPKX5H?BmucYJitpX|1)h_h-^6*igyuiIa~3>s`^1wzbFEO}B5E3uQ#r1M7^ zBdn`X?UK1-qLSMyFIgR1Pw4F)_C?2Ppl@u-0{$yehe@m>oP+o>|#%K=KX7d zb^tQ=J|w5IogA`)vgOq=q8SzQEuD(Io4pHAUWV+;u8UgUnosBX*7ctN!X6e;`L*7` zosF*$3g0|mj!n!Tl-TvAXQcnd_`;vW-})3BcqYbVzxHA#K8zojhXw#HoUuc6n{~bm z(@Aw4rpva4C-3cBBi)aNYmwjGCId}7z5*=`X~FekA(0r4pa8qkg~hO0=(r6R)6*|c z?~Q*vSaHa~!N8=tO<6ntB#zIVu^E~5F|_)6!o}pxk6PqGTH)b`-Kmr%M59KATmT4yTgbQgvk7+WvtwR>yD2w(%t;*zjk96{!et)BmrO};R|oUEMaV3PD2N@n zC9tTJZ}7gZF=#GKg9kGWOYjHaH)okeFrukNcfM((3e?@rsk~!|N##eyuYNJ<+iIjQ z8~)V*i+C?$IS8{Y4SiR=6-Ue0!EFiA0kn(>n&s;6LZDG7ke_Y^U`o*sl@poFMh9WZeo1hi{>*?R5TLw zJxO?PWv{zG8121r)9I7O@t%a8?GHT zS43&eR4djPrU`&9V&HO^W2i`@)R`fjODt1a)E$68)?&aNzo>C5RTf%G$v_im ze<$N7WabaOk7R&p(a~|s2ItYzVFBfRan}iycz|iT0>yHU#=%$sn0hF7x}_@e9_T8k z0|eU{dp66YeQ1f0sqL$iBW@PP zIeK^(13EhT-YFpo3CZ2NQ&eBg=MFg%WDTX$=55QKF%caWrJ*hKt)_Srm*f&1+Qe4H zYxRHXBFZT1jF7@)M}eW4X43XWAVd|ak_W=0Gf%NdZPoDEtk#F+3A}fOo~hjwjm*=l;fF`s&2oTJ0yr11&y&u(pvrbx!4{Be95jr!Kc&R;A|uzr*JP=D z0O$i*%wMjIWctc2Q0EH1d$x!7fQX1_pH^4gtdot@kx}`W$oMHmCu*GQb}w8tzYty6 zdiMk?JHr{Hzx86jJL8dunEJsrv=3J{&brA#PTq%tcqp&;8ZTVyj4H%2*Ht@)G+I3V0hZ1XU)G|k+#3kF>>udv z@#q_65P%j;T>QvzA=dg0_E6}MzIKQ{-aW-HpVzyZD7qQ_WF*>xh&_B?jsA#u6wi=- zQQ*9DLnfbl-<9<6kh&X(q$=xuQkh)%*DI6WfZgePGUUZZdq1g|!{s2BdiZB6{f`xj zLE;jZ;W4#I&$HB$M1K@r?Zw^PIQ9BGrl}1p!5gA;j|7;v6~Hku{z#l7u-U9; zez^{tv}Rc^+P(MDav+ZUqE8*3ZqUklGxQan2KivwW4pB%6ox{%;vq^anQt;4soGgbZYtIkca3ir&#)#xB66n7zWyu7+kMXjqQuXzyYdeqg?+F>u zu;d?i`05Z}lfKwQQ_Llq$Z>Z+n;rR8n*TyEHoPre@JdC$pgf8 z@y@mR3QVY3Nm7Yfz!2hG=0F05k(dezF)^O>12Gk(RROwiioE8itJj446&Vl3cwRl# zvbvz$8|VZdrODQtU;ldcD>3w|6>k``A|#Kq9+}6&5fyv-J)M#5FXnK;>J+qZ_aXeY``8#{O!xooTCTDVjwY zIQ2`mJcr+5PJ0)Q3IA!YYuNHhb0@cq+|&`{;A`1gmaic=o6_m%PQ zjWM05A#~+;6UFMOQ>m=muYs(cqe&}7ZxGh$*(JaX*DD(17*TN%m0YfKk?RR&1H(7} zs)HLqitUGi(!TsdgR8((!NOHZX^*VUqVWy)MO#3Cp3S{vT1Kq+YFQ_X3Wd(-OtSZ6 zK~rzp;@ScaHMJ`v8QIYy>?ZUApZI2Z(tCm5`glKX#^~#-a*|ks2vT!nv)DNC{YicC zkrV#uljoOPqqY2Adj!!9lD+_NcH`3Gma;r$Qu>>m zQOrKgN#~!Ly%KtMjB=PY3ti@FL!6^QRXCDZ0k$57$*P;t4{pN&hv1g8e;LP>d zJ=K6cag=8OkDlet$c}-5%8pOsJTN)7k3(GiaCJoUAMQCe5&wGZl+!qY01R*QxS=R? zz~)RFYL%m9rME%rQ1cBJ+S!=kA9aX0%&_@rM=U5Ksr?>kuSRvIjTZ$mAS292O;P%B z;4JqD4J<0aRI9X4!ZI16Os>pmn)x{~T?nhG+@UYa@1%buX}lm-qw>}DTtYAo=t<9f zxV|yuRdPSw!0XlI+ry%Y&o05&Tfq4QB$^k4*_}_z%BZ)jKWWMS4=3X!c|Mb?O&?Ia z`(q1`Eshf^e0-{7@2gZivH0*v)C!&0lgMO6j64>BuX0-j6UX5JA`wlv-N)A^4~&p_ zN(x!t9OmDe=8WSGx)XOC)@?$`IF|(?`K61@;&l2gGA#M*7&%=iHL+UnwCSEZQ3}z= zn4bFNz{zz>BOW$(GS7BNSzxwiUnOBf)0qr+Afr%Pj!BjFIgZ)v9G)3*YruG4C@^?t zeP1FhVox#<4)O(I_w3d>nB%upI{C^-h+09I`h85wtiQ9AXC${Pp2@im3(kTDgl)j@gVYX);4CDq2~7h8 zv1e>qv@PxYy$Dhq;f$yl|!5)tH)(5lJui$LSCg^EwgZ zkSd*cuL7-MdyR_`)KzdS1~^utV_gKypovGY0{P8;wtV+ObaaMoS-o+o*lv-{ceS!> z&@rt?Y}p8kw-ZY{OkSHTOcV1aMN%NFkCyQ>JhL%dtso@!?d?IMy@(ey%#J6{zD&6yL)POgiqbyBmOar;;)UTD>{mFfJ5Dh} zl(HN$?QgJ03eoih6zz07AXx-GPi4{6uAN+mso41OEYE}X4eGi`X!qWEL%3a)zsd`(HS~xsS9LA9QY3q`h z6|JCX?mFjysChpN*sO;AmFcX}izUD5{Z>R|_eIY~p=m%(C-P(?!aH9})OJKXBFgIvNTi=>??Z>l_92eA zC_|@~#O=c$IeN=TNMFt5KFR=pY?GZ)!&xyfzUK;KgB=9spA(*|AJ}go!mE=ub%(0W zTHoUz#4WrPpq9Be{$U+@r?SYJpMNxhz&XfX*J>c%w0>ypY&aBK`#6)99RLL|f9nKC zPk{31M<2k*&e0c(P*CW7gV#g}=q4E9+~=PS$#YmFbpRmX^1?nq=7B%>qXxP*R&E78 zD9BKTmG_EFKZjdK!~KeOaH*M@C-f#^5=9OV;H)Hc7m=Aw_trXrXTqEqAzU?i3K`z8O4$5^mLPxtU~XIGiz zpVTj=MiwXm1S?K^{1pzxRaQ{eGNrpE-;2l$+X8U0(eMxjti8>iE%AaM}*rY5VwNtq-&eq^~rc z5?z^MWh@06cia|zw(LBj9|fnAy5Gm{56E85eu#LlzzX01hTFqqu0DVMSs9{+{`2}v zEz+~LYlFA+Z}mxWbO|o*Gm3*@UWV3ND{P%IlT47_IMJ2gGIwbweCm}Zj>b&|pq5YI zQ}6oT-L6_#xEgkO-T)JJFoxKw&{&kuMI<9C5j{iJ*okOj?H_$5)7TWW6Fpki;#moM zZ_YPP*mzj%I0brZ#?dCbWrD&<=Qx^q-6|2XGZioWu9rclD~ZN;+)A0Z{C?WwO_0SC zC7TD6d19n_1ZwsSHl-t#XH98p8YO#_ zDfs!!)+4oH5R4VVNO$KGFRS<-a5yl~P_BJwzK)zBwx)Ydze8Wdz|oAQPzMFGbV`3+ zye8^}ce!qD-!%89`=7i$Ne9b8LyEHUv|#tZ@|mrj=vF2~Sxed2HGYv2QK%3Gj2UEo z#@PGb!OV5Y>obU9xl#wWHibOC=F29+@B4yWD9D+}nb>MS{kmbcWjP(|yvjtFVpN1W z7!-qXf|VmT;|d`I(7U+CSnzFAH-_9_u$q&rq%YKo%>jM`a(7tKTs~7pKtLcvHtr~s z&9ifQURho*g<5r(j)D?03kDyp>xRXx-3PfH-g{3X2`+)<1 zm~=Q}PNHd$8s~j(8=w65+?hRyl_5p*MCy#S(MZj2uST29Tw33|!r_z089mWXPbPTh zx1LEKj+8x04x*K=G<&p*16e#tOdZuc6_~ef{vfRYrY4pDgP>>8L?w;qVs2cGG;GkP zwiulC=iNcU-ZD*FWF!!KdK$zyZ{VQ{ReRf;%J0BRZJel>O{nddl=v=?j;>!mO`%@_ zwFuoj(MNUqqpz5S3m6M@GtK`Jr+M#b-7pRV&|68Nbx^Igb@fAW8ErleNze94VmJRr z3>JMPB}VV_aMfNomfvxMPnks#HRv%mzE%IOv&G_I(e)T*V--j-aN986g2u&t=FvL?ZPOs)yBpr(QybW|rybrP^KURCCHdO%H0ZL`?H`1Gmk9`3zl`L55g zfQ+-R7L=De&bNl=YLs!Xv!|{1sg1sP+dS6)m>8aA(hC5Y_zmbwSEU2@&ePe@(2zJ)V1MK3cm(09}#y)AEQQ4SETC;VDt z`JVVBBtU%n`Aq4#gPY|t`WgF9%S;fM8n& zBHRp(GIPVu`1ZE8wjV#DI4vehjC+UJp9r#>77ADCW(tPfxhtyE-N|>lX3kYoV9@@k zJ?CxL##QgnpJ0t1ZR0c@>MFCCTv}RcY-}7ZHZ)036@QU2y3(Jmf+Qp*y=}8aGkg2xZ{u0Vy754NmwV=$f_%#;si>%s z;0v2^&nbAb@dfb_)snTb2kWCcb?#coR|)LQqdD^ON~vg>Oo>=24LJSQ=H?qXOQ|DFj;|$8_ch4BVK#O= z`wn?Q_?LvsEygY(P?Sj8iDG*^>j7D$GkV`19^QR`;Os0<^&KxT<9IhrXJSsmxK$8x z0H#qFd+PgjdwAI}NBVfj8T25#Ahbo8D858L0-7G8Ha-|17NUmAE(-g!V*D-|i}l2Q zVM5Y&jpb@Co8=Ky`;z{CTH0I+fR^mHJ}Z*$a-Q z00-io%?jJjSr=(kEp|Bg+Xuds;=!qDY2jbKq-JDDAG0&H{zQLJJcc}V{H(xf?2@Nd zl@3k+VC~-t{T$U}l?o)2|EIREimP(#-jx<4L`oWAgGz@qNQabkhjfQ@EI?Z6?rs*{ zz37lex&NN8y6aaU<%i+?Pj;4P&rwnown4Gr(L{IIyx=%9j7ap(}M&8TLa2u5@= zHTwvwknwRv8i;E(#mX4)on2>z@3_6c0!%$mtPSeSt8J~Nae3MSbhcmbfyS$<@m^?w zgq(b((y$Lik1B3?>kEsg?CB+iTzV&$BRb+Qn~*9S2UytIYXO#uu#%XV7)2!^b;d3S z_>u=@o0rrv9T#zKU|rwPkj&H!)cgLfShdt(hWR-l)Ii)vey{m*?>5t9tv3vWuRJK5 zjb3rc$^mF7qZt_Jv>NU6n$Ey6X8ZbfaiF2{*0sMTESb95V9x|7y}ixvZ7*a zi0H}4RB)z6?m%w9#$ZD6wdT0#@B)WYb#AW)O`(ij9owNU+CDRowS>g%D<~xW1_c#ugE5{CDnlmJS=%whg@r-8$#Rx@Qf;FG@U{6%b9xGfY9 z$ZOC-P`)jZR!|tPG9Cou?sF|}C*YGS&EH8nV&xkyqK%GPF25B|dD#<07rdZ_1Ed{q zq@|>#i>91*zU6^9df0Ljo~F|?6F?p4U7HQQm7cEcF_&R)sCXFBxQh|6`)@H5HFnxb z`l64DI2%CQGq4p8ARuY4ItiTlj0ISC8smN6eHm6XKY_84rOD)iOkZj_>}nSXdEZoL zCLhgHSm0v?sb)09cSR}qkBMIanO5=n(1X&X4+H5n*0u{B#0TBxIit*Il`Z>UprDmK zlGvQmnv{1VQ{SRS{M4 zErxC{Pqtpt&@96|n?cN4@xJG8CPR_O$qO8aKNi)uKqi&_IQv#aL`19J;z1(=$Uz4i z>I!ok$tR6cT9SQ3gi$P3nA^mKKwRt|iFY>a4Dk7EZvm>1iARq8PCG#vfHW~fh+0Pq$5XxS_uKXe{j}hHoJzAE($;m8UI?5tmFiiX#zUHyrZ5?ZU3+`Ca2}Jsqi)*saAd4Hwl( zvb`6}DI$GKj(qB^QJuXwMUtQdygfI8It_VkHm%CC`3s!FM#UVwHm2@vT;ol^k)6$6 ztA+M-!C5Zf(9+R{5C0N<02;M$S_IN!-1y^%eJl`azY!yyPwdDG>gphcRG;|1EOqd5 zdUK!PWA0Q+y2B< z+9DH>j~e0x6%!Bg4L(|<-M~If6kEq{zEsvJ7-J-qsSd1Vq6;vicpQ%i*&`|6TW(Nn z%qfP0w___;Dz{p_E|<^A%a_JTl(j=HYM+Bu#~RN6vQPu$=FdgrH}|}=51@Pb3{W(6 zIxw+-8^fTC=boKFB7J&i1+dHF<;7CR4&HdyhUs+syJ!1954mqSOA)tX@$nm-$;)r~ ziuj%~n{bnwf@YG6sx~`#<7Sf=*`jIkQxRb`>Ij8#7O5>zd^fhHHFEJXnRQwuaQ3nq z+Sz@sDmI>}1Pb8Q8=idaPntV&4-{Ym5RidnH5XfT{5Etz$bTh+KE#3c9a+b^O4V~* zsbP>VEaYs51bQ?Y0W8sXNs5ln3NR3Ls4ijJC?j2lZgQ7Cra#bpUnF`;U+dfKLrb(( zcDUm24H?8feho`|X_fptLLC-y!e)H~OpCO!K9Dl-Qcd?Z$l{8jF%oj->skB)^m0X3 zz5Hbl9h7d|kCzd|CCZEEt!6U@PcP|Gz9#~3Wh>~eJ^nZ>6krp(c~U0Q+<`>Q?1m$K z`U(n~@~(h+z0;##b<2o%JB=SCHuR$@VI0|Pl~!7Ajcxx(2R?DigcehtP`;SfVRTN9 zy^(b^rwcXfRu0TYn7bscV-IaM{B@9<091c9W0qFFhM*!Ona7A3ua(9FJNBje%t-oD zT-QQuN;+;R{uqPZ&|+vZcMj2etdem*aun-2YAYlW=vDw=%;iFO`~A4hDqH|W_6PRT z@~r?bPx>$%!zWD@AHekh*`lNSMu_N)AV(i(qsudX54jW4BONb$o)kdb=Zt`sXwZN> z_Z<*?{Xq;MF&VMW`3eGVX%L2(6itOwMQSCLYE)QOuZ(Om!$$PCY=b`xs&4zqCq%CF}+)#{pcUc zSUf%&0jl{qpua#|0fSp?W2=hzW(Z%S~W7CH=bQBm5-P z0Ju>n!Csx`S9*)lcieYJKm#hPr|Gs7i(3iF05YV3jSF=gs5Kz&P9T1Y#$ay3_2Zpf zoib*>Ts4+JA*5Ns~nNSU@&eL)tx4P>HqkL&@?doGu~ z^10{1Xk}fM-GZgG6lWDwqVy;I7iBlh-T+4 zD?Qq_IY}BYOC(;#|7t?3`L9P7r;(k%OMumZzq9}aruISZgeXu?HXdZ^I5@arKt(-v z0kzqBHT2_t(lbCl?K;tut`AwnpXufj&~;WtGLc1^3IR&B)p=EdS(*8A80idK#5^N_ zbD`W{21olr6LMj<+t~30O^I!mr2G}iUqruKPl|J5TDxYo0WFxfXxvRwQ*F&b0Wdr6 zbgmcwp+#KU8r{y<9kFtDP0WD^xk7c+l4lNWe-A)Iqi4DklKYiQ3pK&&5x`;(%$J98Kl<&`n zKRQN_>OLr3#T8A!>mNg%p^($Is^^Q680@YVXQ^1$6zf1rR<_iOx0ulP>FaswEy%eO zj5^{4T{}lyK=cU4rB)WLUl$bjBIlez@kqM?QzI%7Ss%e&&7CBu_zcue#`k^gbXMWE z$}!NZ2wj?l=3W1sS*2mn()QrmhnpxB^fKjylM1gFt19m+U+#Jv*WYKEybsHGjq4@k zx&~}BKpbhzO5p`GouDurmy5m+p8D%&ul1Cj7=Uu;v>9?ZpmAXA+I__wlxdv=cSHBL zRB=(De9&Z``$ErSZlRc(CgBkVtZ(dShvP6Ncd`OhKS0z_)eM0w8)R8z0nvLnlfzmJ z`S2j>B@|DER|R$@j&mABNl-Yav}PKZWDKK#*gM^3fYxVlBO7m@4D{|cEA|z8O)N{7 zeM@CMnShsFckQc(6*^hO5j|Z6qeiShhb$|tZKF62)1e`rW*rfI$EtzT$e1hWJcQQ@^!~*3t;)IG*$c6fJq=%j|T?Ik-r6X<~Ifr z33wvCxel}hJF^KODKTRh$R3DVWZl!y@h03@IV}}_{@73F9@qnu1*Ea3(Cr44R6uTR! zw>NKIQj<3$-{FDh@UxMqC{2YP)(LL;jp8zziM|&(oY|52=394(_#dX+$%@fQAyVtXxehFC#F z5AKR`Y$mIuWr4l*31Jx7I{_4+ecAxSQ8+Efc2;Q#!#GR6vn1z>JnJ78tOUW}QPp#J z5xq%BZT6bjjLjO5KfWx;@<$p|`w33jq~PIvnxVtZi@hXilmodm37w@Q0wu;LiU^e3 z2~;2)Obu_bk{(x zEi~5mqM0*05cU|_A+cR7bm$AC*&`ysX+5j~lB~ULSB?&rNq>-{ABGOJ<(@)c6j9b@ zPYYY84^PQkRB3K3NoP@s0WA4&{-T0gL&#RtO}OEZzEQhM-+glv;O;=y*c;x){=`@m zsJx8R&X-owy3v!=HI-Abu^Dpcs()X*Tm`@m4k5C<4T#qcb+W@H_vNP1eN?wm8@?oA z{?KIFRA|~in>tRM1!AVI!?yKQWaICtOs3C!Jeq)7q*nSvY}yUo*Soy@E~{)w-foPd zVT{sBN&dK@LZ{qU9?_=?_jSsrj31p-A=+ZGq)6j*zE6-uwPyq1sb%XOed52x=j93d z;Ag#x&wGqp*h*pCOi!M4onH{%B@_LQ=H=l|>fues`KozL(&h~p+t(B$*2Z58J^Q!I zvZxn9UoZ(`*0`p|S9Ak9x>R#v;mt>LnnFrgSnDhpS7gbxla2)+6gKw6`?%%4GY-)Q zu|UIzT2o!n(n+D=dn{^RclM=ukgd-aOVRVNi(=!!EUbiltYq|I1EVl90dH)JY}3f2 zSD1LZzjnI&bnR~BVJD5bGN-~cU%v1>GyX0>a<`y=#Eis@Z6rSVByOrbACs8R>a5~d z7vm#d_&v-DrS>v7-p6}1yLbZ-5qG^RTArLCvvD<&=WtD5qQ)#I-JC>S@NbJ5f~@#47ChUIfP(k zd;)XwE+|Rd&3bpA`4D?2pCHP8P2oyYgzrtuJP2jwf6I4?wSicSbCeiVk7EZy*J&l&zea2DYOr?NoVp1)IHvgw& ztj|5f*d-4(kM5)M$Qf~#)CdXeU4YCp*H1wn&=supuL+{c7_Y7iY}(wiT>IMJY4P0a z+`0NUD#m(IRPNu~JRvdN?aI^%h?z#?InQ{jhojW?{-AGA_SX)>ITKfgI^H1{Re!YE zDW36L>O*8_zw5at9`@E@S83tPP~A@dN_JFxKG#?W5(Jp(@0aJ?6t2sfS`F6wK>-Z#Ui-KH3_S7(CF;4c+Yb zW!CC~nOZGOsU^M$7jeP&??5>3NRl4%+774Xt5MyGKDV;s=kpvh!f6#++eI=plV#OQ zgloOYTU^`yITRU_MNDPs=(0GG3G?D!2al2)X{x;G&hSZm28PR+K6sen;?;e8c4zwK5WcoF?e2wNJ-69LB1MScG{@ zQR^8hdIg`)*0lR6jT^^{w2C{Uujy4cE-#%jFZ*w2&}Of&Ms;^oigocnHD;7lEZ!andaYU<_>WK(iy(aU|e&46(2r8S7Mw&MweykEB%tyvZLq0Axi=ozwE7@kH zWdvMuT5zBu;R~rHkwbcW~HK%>`Jgl6g7NU1;jt8>+j8>MY}-GM^wn zB~f!CUdt><9CRBHopC>_!t9fjc4WDh6dug-=<{N1JB5qjiemTZml(_(PSzivx~b+x zmYe^*-M><2T3k+diP*H;l4C|`ytA8HuUe76lpdzBH9>y>u3p#~tE@4-PntXsTcXwp z;6CbxUijmSFnHIfBB2sGzSru(-)<0ql0R1{T{z1;-*#5ESBKjtv&~cP4E|zb1i!8& zA@!VpXewqa+>5xfbd*=MXNx2bPp3fbSSjaYsIur^cI7FTzH1&P8`W98oW!w2%z-zd z9F}i`M`r8#IG-$^%)jIe_EOXJD!#CATv|@RB#UDb!g(#NrdFp}oQpKb#>VDgZ-0Dz zjE06591^nOv()11cHiJu2jstA1Uu3Mog~jMzdNk!RI^>abh$ra>oYHQzAGfl!_r6M zi+PGxPdsJOAFrWzI69k`CZws4RO3+*r-)8RlN^N_X-oQA|2Ic{xvl_d9CE}DmecEQ z4vb)Hp7vu27d(}Tk4+FnDjn?g*>8!7$e!=Zr2R8o_&8DTxVXRI&X-&=`nqv5J5`n{ zw5<(VM=yc8kcyzMDI67*kmR3 z_|bjyVJVZX?va5(Y9Px|-0OG`(k+@#!JbC0nn$9XeI0~P=)Naiu$P%c+JG&$saM?9 z?-6BVh5OrI4ePsbmi*XYE3+2r>#d`LVpHz;ecM>$d47EywS-ZpR|P==I!NApO}Z3( zi#GaxGF5HTqdiN}CuXTE3S^_zs9W|V#{ud@4j-vsi_-3y!ub8dHK)61QXoNCpG2_<>ZlIf(m~3us z758m9EI!H#r!M*8?pQ%bp^Z7y$vTh6|N2eNdi?9n@gu%J7Q__^MXD4q>-$h(kxNIp zLgGD;Y`@)=N7$7=M|4Vs^#-I-vRjU4rqkQO6rA^-=A$d7ef-ZMJnoj75taCTYnyC6 zLGPL8FrA#z>r~asO?z5-mXANId`8mi?AONACLS-*n{Fs_vGJHejrIxj#)U_~&}pQF ztRq_Po7T6TaG$c(R3Y&|zfHtz@^=;^t6QE)?y+o2_BUmRBEVAnrSR$mS^X@hODZ)> z$NIN6ZZDUxYkr_TMp))CQEWgFR7Z~gjsIY>vLpjC<4hm7Kat=y^01^BBI(pz_mB?L za5UBsR{11#wv^g2o3e7L=^8na5oHudczK`OUO+A;lLj3>scxAPNLO3Y&a0ne^NLRj zYkfUV`pI%i;F!dX#myx0%Z5Jp+b~&UxG&8L&cM!p1tPb0@kU5th8%km)qo>Ty6;-Q z@QvBdGlO#)#?E%LfTvu?W~~nA#L2Gt5zRl#1|2fxKtYc>=z&y2MMO;?!xBN8S%1=B zA0ErBh@Ko(wmlM-LU4WyG4h%{gTt|s_3fl{#4MM0?-eSLh)5DtKIU00*H5VyAC-gL zAX#oO=A|a{*CE0DsK5c2YpZSYd`X;6%^R4AQ%n|FJn$vV%VZMvYoZpxUL_B~nxCuW zW5$@dLk&V6o@%?VtmV=uVrd2Zu8l=aHj?oEbKb976!ch@<}Yl}hF@_T2D>>b>W)yY z@F;dlvY3gt1xpq<*=X(;qwiRF7rTUY~Wtxds42`YT%~|{F36@23p{^p}=qP#!mh*@@IP5 z&sx?zlAr;gMB{jp_76D@^Cl|c`hYzoJ77D{Gb4+NOPH|Cv@9QOc^ zgAUFgLpdZPj`9`8$Vf<&P!(`#aPm^KKvbgo)mUfPFR~t!q9%WVoTr3x=G6@>lPi>k zi;MjdWajD7Rmy4w6Pl!aI6QK?v=^U(#&IKHl9OF5xwy!_a`=AmYr+$*v#I&;E$%z+FY*RzIqcgV*L`hpVO(g*;gufmId@37;OV;JAeB| zJ@m&9M^{PA$J_0MM_ED1or_=FXhZOrv(}jPK28YWf4XRZ zrNuK$JzMxadLBw2&jgRa8V1b~QutF+sU?5OkqvVr9 zn8!7|W6458{WJT~C711)vVEv}C4AK%_oUL0CcLD5L)FPg+m%!%9B@2So^bG`g~&L8 z^@cE@zmMYcKpb7YVV{oa`pmWop5^)L| zX5#B^>oNtNQ&MO4hLa-{eGd+VIQ}hCVJzS(cL>qkk=`(SV^eU4{JP%dBj7C!Mqgzv)r>3Q#d$r#e{esY z4x8qaP`KkU9cg$Wk}k&a$FY?O;{r@X(wOB*joXsbYPe2-oDEb zKV5gpc68z?Rgr0aF<;NHLDi|7l<6Qk%dtRv`8Xmn@=JLuehJC1?eUJ2t%UR}X_w5J z9|D;=l`1;Tb(X80U%{2^QRP1n5@QT~hUsWbgg#cT;rLQXoatlA-26O&J$l%ks?NK< zzm}V7&$q|9wu`}i;H}#rw9h<78I%zpCbpVyB>LAOv4E$%GV-vK-ue zh`(vfb>1ffH+eVOcOO|^pOyBHHi67=54TV4Am3zAOA9W}_|zUhRi8;^cHQ%V*Y4f2_a^@9-ETEk>`)1&m!F)~K z``TjNYWFy(ie|0lZ3kzy@{>K?M%NR)sjXvYm4_XHTgOVA{FrDx&W9kVF746e#u;D| zo66F|*97nWHUjd~Ux8mV!_Q=0P`T0|09?G|;q~TO>Bal?d`BnuQanB#IbHJcl8m#T zu8V5BURsbrxcrMvRyapZ8u(5M>wBDahNtmCwR|Y^*kRFZ`H2!+8^ix8%KS_o;sOrH zTDGN`RlTxdduP#GdX%j@^1_-c<8z10PEtzedA#zP*n;l|90i~6_NJG+V)|3-yOn=( z7R_1reZ8rm^FLDfLtKuka&#iARdumBTp{}H{+lf)oAq>|eR5B|fpg{8;?IhBXTksM ztR^j(}hd_T+6K++k?SC`EJn#tOB4D^PN z9tt-bP`KrU{_kqzze@$>WbO!c`TJdF`m+7V+%Jc=RgBen{yk(;l8YvD*v+(Sw^%p} zSWAn)+^|-l%5evR=3EsfO_vBl)5{$;iFh!^YTi9i>%U88;`>G&(RcH9%Q zNB=Fl{+yg#dYv?v(zu+1J*Gwcbhcl9>n|m``Ns(G1OHUwzoNvjFiTxD|9Atg;OQ|L zL9&8D-#-ly?td%=ik>Y`%Z-e0q_0XJXJ!O@JiM;bFq<&x(d9!E5iG=p7PXrB1r(P! zrFe>{6rlV9W`D-}PXn0y{0%4rFq0)Uns~-FU&K9nsDu9XAr8x$w^huD)7>RhPlOji z>_r@V-@|{zm;G;xYpFF*u|WoA*q-@8W+ucURg&~rJWvqkl zM1OG2@*e&%UxQe6HtbMzpFaU4j)FL#UocW^z&=N*UbUW4=hAw?OYz;4crAhSwzJ#D ztck7mjP^ouVI7Qz2ebj-rb5r@PTldQlK$HTsb;oT5yRc_eH2K)%AaIC2-$CwsB??27$PJ}SYo4ZMVq&7Bdot}4 zJ{0`VA7^J%{`1GG+Bw~yznFKUfNmRGys3i)EsCiF`}LX>c(X4)dVHWRJ;0Xm=k&ATU# Y@Y*zCHu_Ev{}1$?n4D;t@CV=j1tn!2lK=n! literal 0 HcmV?d00001 diff --git a/docs/test_cases/t00006.md b/docs/test_cases/t00006.md new file mode 100644 index 00000000..92aebbe5 --- /dev/null +++ b/docs/test_cases/t00006.md @@ -0,0 +1,106 @@ +# t00006 - Class field relationships inferred from templates +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00006_class: + type: class + glob: + - ../../tests/t00006/t00006.cc + using_namespace: + - clanguml::t00006 + include: + namespaces: + - clanguml::t00006 + +``` +## Source code +```cpp +#include +#include + +namespace clanguml { +namespace t00006 { +class A { +}; + +class B { +}; + +class C { +}; + +class D { +}; + +class E { +}; + +class F { +}; + +class G { +}; + +class H { +}; + +class I { +}; + +class J { +}; + +class K { +}; + +class L { +}; + +class M { +}; + +class N { +}; + +class NN { +}; + +class NNN { +}; + +template class custom_container { +public: + std::vector data; +}; + +class R { +public: + std::vector a; + std::vector b; + + std::map c; + std::map d; + + custom_container e; + + std::vector> f; + std::map> g; + + std::array h; + std::array i; + + J j[10]; + K *k[20]; + + std::vector> lm; + + std::tuple ns; +}; +} +} + +``` +## Generated UML diagrams +![t00006_class](./t00006_class.png "Class field relationships inferred from templates") diff --git a/docs/test_cases/t00006_class.png b/docs/test_cases/t00006_class.png new file mode 100644 index 0000000000000000000000000000000000000000..52d921f9c356674dc3500a76da253aee2a1914bc GIT binary patch literal 64456 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

values; + std::array ints; + + CMP comparator; +}; + +template struct Vector { + std::vector values; +}; + +template typename C> struct B { + C template_template; +}; + +struct D { + B ints; + + void add(int i) { ints.template_template.values.push_back(i); } +}; +} +} + +``` +## Generated UML diagrams +![t00008_class](./t00008_class.png "Template and template template relationships") diff --git a/docs/test_cases/t00008_class.png b/docs/test_cases/t00008_class.png new file mode 100644 index 0000000000000000000000000000000000000000..c50d183d9bc2f69633ada5ed1531762621795932 GIT binary patch literal 18633 zcmeIabzGHQ*Di{vpoB_yC?(CJkyHd}kZy!UcXxRePwFwTrodp*_MI14{#2U3&w4ay=JvV|#n+7tGAo=DL>l4i@H2 zP%8@z79L_S!mNp+s{P-;N4NuqaZYrQ*Ro1r!S<+X^{W2W5>kO+JTEiQK0!Wae~Yj3*k@T`%}b!(;NC>q4$KbJ6m`(w1qfEz`$kSwTL zuGpsVJ?^}~M7C7}%YfHrvIt#d_b#KcH*cyN<2qB4Q>@M7^n_sb8mAv>$knbIiQ1pF zB6p{RxSlGq)2eyY`tc1j#(wi*CZ9l!lzQz@AP0G>bP@5xgtm=GHZud(KHYxDW8^+R zQ9vnsc7$n&_qC_Kt~U{?*52;3Yly+L+%#d1YCMf%N%p}CTi>_Ub$Mn3HLpZj(HRo0 z;gI&d)LC}2U#V68!)_Og3e}vw4R>r23D-kDRiDMkg~_EkHX!3f-tWKn?)T4jJJe9* zh7eA*`&Dc|>^?x^^sLEV<@^?AKgDpC)6WdTZ>^Jy5R8#PMH`G)#`cVUwHJlq+!Lo- zW-`dy#yv=#O7@zcx{Li)+T@t#vw+ zND=y3Sp4y%XEHh0u*Y(^(0rPgAJvuX&U`>P0)nWG`0JO7&e~f^51p|^X4{dmBc3z| zKe3Eb=zAYvn@)a$A*5(|-$_Z1{lUkM@QxDthxgj<`mQ{nq>SWUc(5R*`n1?PObORF zKy>iI(|vIvF>>U&6l`{BCs|opqwj363%6OL+5UmER}4Oy9n?5@IPXNJaVXRehwa-B;T~Q zx^ZFTqH6IrxG*|YuTI_aGDUbV{A{x?2k#LV-`0<>{i>>}>x+wePi)Ti4Yu7*kH&Or zPP3#FMBls-JPp~7{PKmYw^eTl? zMGR`<;^I5A^(mg`8+bbI;TF-%KN&EH+at}s!xv6-%mg04Nx)hqiW9Qd)dVXGdg@_>JJ8w_gBAA}SX))=CPUM_& zeW#!AKuSUa<-V<*osQSl5doXwZk2pbsX_NCgg9#NbZ<%PyM5ZO)11dxwawC;*G;|K z$u=y61gc^1IWs6K;=ZP)CbdkW^Y(O2b91v+t>b8}f`4XOQ6G$b zQ@>0PGaD=1!(uo4xp}eExCUc+PEmUaCdlrNVLn+Oq@bo=Z4V~e-rn{#=)jZo!C584 zULP-k+Sot>X{>UT@^Miw&dzKoo(d>BZ%tMNe*WB1|7)!1W=zNHEhT#8^J|%jtJuRs z`_j0&IzC+)1cU*!0=`wp!B4}Vrj8r7u_ijF#@{`OHZkXZo^?s=e!spwe`gmmm7!eOJwSyjYk0+XAPJ+=9pXp{_0=g2i<89x&>67gXAwXDdF) zkB6T7Z~l5o3Pi*I?IvX--rm_E-F^&xHW|X%mrRCpE~2;}vTlXB9^H(MHE3z?{$^+H zc&+0SojFa21)yh-4+kVz3>3}WmSTS7x=g~6&!M?a%e8;>t6Ewxm3 z;qjUbWfW*sl?sW8J-{P-@}$^$;T7)j;o&9R9i@pCPwQL`RAVor_f8!I|>_aO~O4}{deH?|a1?{WCH*7{P#lvUs5?T^dG!V2* z^nZMa^-5UyECFBh!~FbwGQV5$3x~Ya)cMP^10bY&iC$Y$X%GYgdAw3%XEc)YHatAs zJm0-UR`BX@F#V0%`^)!|Ebgb)g{mqlDxJUG6uG(L3d+mN9e)43IzNJ5P}SAfo6x(+ zDl7l=;RAv}ejWnBXucv#L5}0FlW=K|angpKrJu_Pu)AmVakhBKH}%H0_&=6SRgM)oa5pQ!BQ<|zQ=KE zCrJfEiHU-s2naYI9Qamyw!;D{)9I$A;c3yg<7aXgXtP=8cOSZNtj+Y27a~OGt73UyF+b~p94RCVbU`FafOc{ zB=U|VRNQrj#`f6V+wPEbXiTns#L37y`~VRzfZs4QR3|GmrCN1p?wZqbG_OjfF!A7| zF%-|rSKod^j$6r~wKNr2?4mjWLh7sH5ZG&{!;s06m-EC&e81U3)lznS$5l=x9^BBK z<>Ixq;bIdPDP*tuqPmF#OUbBOWDlclf-f+{fscBzWbNytj}H^mB}VCbpszv++8Xx5 z9{II#5i&4w@?EAk`K0JBy!3GueeF&ub2ko?4}|muRT#86|M;^2LH;CEk5w<2slKi4 z5!tNK#W4;8F=nY=Ye2)lPttxmez0g0v~OlmD^Jn76dQ{Ic7 zNmE(YdWFB8d{chXGkqY4U$5paNd3ISs6A-#GFC;0q~5TX@86$aoh!o&Sc^XMsz`JR zN~oQ>YL@QRx}J2(b=Fo}>nl)@=iG;`Tf{I~w7U6I-UlbSBKOa|*g)C^(ZK^q z##;p#U-gIs*~|Fq;ZJTaLfMYo(K6J*NiXCJB?+Zv>=awyWc2J4Jl}3B@l8tJ-rQc; zUi>wbWv9_78-s$Gab0?bMZoX=|gIQ$k|LJ2lv#&Oo!?j*!KoN%XrjDL(D%K~=L8+1_BAw2B4zfV8P z%!(i2Zb3Y8oLJbe?H7}yc3W%`8jrO~tGcT_w6Uxoi<Id1+Do7`Ee>%)sf{G6{q_nfHb z1Vk9WsUm(_N=Zs~_w;03Kc%68eZRSW6l$XiCQ-Y*xy|(ltL!y#F>$=QY(%z%{kEHm!LgzhK@~Y-`^V6ZOs$qjCi; zx`Ws!bI~J`VZ8&!)QpUbyu2E!x+_AHP;&q9N2ETS&_-5#G+$p|CMKr3`}cPsUf1rr z(i)G64r6QkwR*Jhhiz5MN8(izpN$oAa+0~4AG^bxw?DW9Wz~Nyhb3y@Jx^XinuzJU zk8C>QivO+m9cdo_XTgxPvM~T+Y^~7y>;?VMmUaW;Z0=^!xp*cHy*`es^IFe;^o|W@ z6;i2i5@xzF;EHd|c1-WdZ#i3cwi2VWI&11m(ED?;C%2|yPoL%USku?2c7ezt!+tzG z1D&C?nD;R5Z}!IgXypVKICEkEkyh%qAZ-_jvZ)bpjv6vi`?psT8*aEZM9q$yuUlPg zUd#qPs=vqAuA3?RTQ{|Lyyz6KHJ;1L^LSHjd+TsxxFWW*t2m8QAtHR4L)&&M|IEyt z_h?hTUep1PYm75#ib=ikbr`wr)~{2USx5e1DSz!|M}9x`Ms7@bCKC0>>3UOAHhY~r zC+2e}-(?kPte`$G?J3*+eDq#~@*cKdG!j23`#snAXt5pgApzplwGA_dL`J_YvG6OJ z9ti*ex(x{)^jqx6x1Y%vn)CjOsF7{j7XUFRm~b?O+h#Xcfw#?sPU6KOCOFIe&6Y_Q z^(8W1P_$-%wg8kdE!B?@ySzUZFaS`2!ErSb_(+Y0a^ ze4RNzI4R_^Lgxxka33a8yc?GI=~UxZ?X|lxl(g|S>zYQu_V|**4)=55N}z*5mE~Y6 zi|0xgPlc&VBDXGmKF6;CN!1A`cl6xTE}ajNlKwwiij@;e#6+rOsq2p|oy(p^+%%l0 zqN>)u_&PC=ZpG6frH~&;1bblF{v>3~kg}raBJeFQ=Yx3Zou?jgFewiwBs?BwYwv3B zx3i~AORa7DRO?;J1+H#Av3C~rah{R5KJ4Z*9IGi#*6GcwF-5DFS515$nIXKqk~xyA zaIn83yvcZfeT&R1qxdkIPRVql)JA^D=mX}dh|R+Ev`@O|(ZR0u&PeX)-qO>{dLgM7 z<)nV@34^cNs@N8j6HGVR#22I#BsTEbqzjl@t}fvF^RcR`ilTx*;qw78u>-l(fZ;Ef zpGKr*0t=|RcCM;XTzO3gi+X36_I`qwVRA*O*~W3S{sWWeh7y9O9F5K&Mg{_dZ0Mw=zs|54#RE>@ql^5*SSNUuD}- z2&JO)lwx5YN!d`QB7|t5E&0coc-=9nY;`tE;80^Sd72YcnL45c-!k;Y^8s!%B-A3x_yrQj>?lrJi zTxY2QCFnkCsErk^6l76f>O)a3Q7!*ENn#1T<{Jn}N&% zvD`Mr+}CY*$X;hFdNy@IXjxN@(&C21OWYQs$`L0}hH7QQv#Z!>`ZZ^_$JjLaPd0!d z&qI_6U|~V+qx^1;lp>-?rTBzV85!o3K5@KGm@(m~<))+T&lb~vkA*U696K@D?k_K7 z0IO=eEIo-<@%wy&2oGJX7VW>zSA=~s;;o#kVoO|gj?dd%f&@w zlfg0~d#lOxX^9{D??N@U(7?;3&?xapztKXibc62pWue7-A-EezC6s)ZpG}l)G*#gL zFrg*{v0~<4S)yV3f|UfTyV$1mL`yokcdt%O-LY}E9;8%=_?*QdU)9^FgsaT_u z)VBKh?J38gtl$wNquF<22I-egHgx`&?8b62h=*U=6h0I+sJ~h|m58R>b5eh6+rde} z+_?t5Y*g>d>+hYhxF(zhWkbxUZMMet{A|kTq5sXALK zhpwmv0RaWo_?2#>$N0P0Nnfw8FRr=f+`~m|x0_#610nlS@s1;q9&MJ`Z_HKeL)+1c zlkyuLO&IocwAx*#XNBkne-0%_Pd-rjU_g3zA{=i1{8Li;K5N}B{+vJU!m3ppW}TtU zZ^(KL7QC+Qwl%Dz^%oqs)ZK49&`@>isvBMGWN`sJ-l&=rsP^m8cOHk5de!aST;sJh zN1cA6iMQ@7EptNMS574^?TwAjJ?dJ$&$M}HZ{+mY2~Q;k96RS8-w)I7sTN5Q?Be@J zgQ$>Zl<=@feKsyjG-ejWpchU|g=%GfRhF5N&%>f|`WI)WHA!7ESU=?`=3>^DI;)K3 zE!J`%hAw2MA=Ix#M2`=t6$@7qP&I$=o*d==>o{DWF#MX)4#Cx==Y4{^Mhmf%N-cpR zTh28+qttJ!w&}MCx0tGYB8B|U6eJ+d#1z$y&)7mR^uMX{=qJ2=cIg%5$N@)3a8Gcp zjB71iYCC~O^&@_sIy2Z;II)cDSnmjD)Yjhm?r7n5xUS5^%6)nT0DCeI*43Df$<0~+ z@nHHz*(nbF_G~DRmq56eV3z0AWK=}=MH4bx%>|^Ne+;^}=!V6*09l0QJYVo);mEV0 zcSF0#MV;sTG^{~)_G-E6MFQBKAlpiUz$k$+6}}>=GltZw9j`E2-lCx4vVO$Cc1U`VE;`}2g$y$LXo zHm)F{Z}-usBRI|U{8ax2^cM(_slCPEAHTsq2QD7XbtpV9 zus;`t97^cg=$Uo?^en-l2j<+OZXx=~R)ON{R48tOe}tM)hE`I07a!SOpwJRkDuNL) znfkS=?2C`FqCOkk8xAT}4{27JzE3%uZ(OULWeNvttU|ihn24Nb_|>|*nIEUc#%Q}P zjOj#DVj%-}t+MPT<$rN`3VjyX(>FWQ=yd|}V|4u8k$%A)3~b3eFOb#x-30ZGN=CIdNPt2;(r(UddtZ;Eg9FmtvrlMT5g zT<4%)Ml78w9a_)*65FF-4BC9Ze~lL5F}eoV_DDZ^X+>+h&`bb@&1$%M??5EK)OlW= z4+aE;s#jT3kE@&N4N6I{n0?`zcpTH?4M$`h4 zF@=q3Lx6t=Nz+h9CMsU4k5%6%O?M@RD*Kh18JwLpn;B?kELX64I^yQMZAq$4qNp*> z5_w~=^F71L>*<7HITis@u;d~sS;Oy0a(Hg!o?v~NABvTN|B_ahMIys4!Q1?G{7?9x z=bk}o1YO%_!yP_e{WsYujz>FlGcz;2Bm7=qbk)ku9euXV0w6UmNp!vB+V!i_UgLtm z&NOlDB`jW-9j`entL64nVcli=T7~AvZRRps)y}dpHWzi&^Q1wx@MRRBW*FX8N`=FD zEwIm0xl{*T3=s+rSKr0guA3DT1~m=Xq}ezh zKVel5lpT{#6crv2aE1)Y89#C^nF9q|G(*W5;ea)@mpf>{Fj4x&$loF8pWjq#xk^d( z#8XQX&Z8vM!F}58#0v6w^g6ReO4(2AkgYFOa`FVAV0<5J^WkLv6oG5!C2-Dp9#1^8 z5eq0Y8G*N_@w(KZWP#%;V zd%a8(nz8LxB=WdxGg=MQMfTgetZ>A@F$;1~@k<_1`FetfCpCIo;mEEMi>6np%=L0C zm4+|yq#Y9LZ+bJNOHH4Cd4)FCGF@%M0Ll_D(tHXTXn3m@?nW<{4jRh-!YmR}1MG@9 z4^#Y0ZUw_+EUI7#0Wb0Z=eqdEBM%rl)$Bpvsg!=zF(o_rB4&NDQb z*iZ67Ia3U*P~>Y89_BFOw~2rOUpO=Ns^tvK5UDMU&p;y@1H8A5O}%ome-f0F??rO_aO8o z!!|kks(_fHqMZLD+3N4g7IO_NAtdx|BDX#-<&xY)8EOKeXNrIpvyK3z3`0kUPUX>&@$848UVDk2BTt{w zYdbGY0DRY%$iqoxKoR4M8sK$tsqI@7PH{m^=`Q7cdg_2}7#=b6q55P##>6yS$5U3s zUjkXmUm97K%sV8kyDw({@hg$cEK53u%YLW1HtX)BU3hq$hpebct|mEYgF3Ia{UPBC zT5k7K9c;TzRk5i`MoPAQ=J)aHlSAf+RK5W!qu-Reg{@1JSc|m8Kr$0%!WQPyi8~q8 z?AiW<2sTi|hmJ8mm8Fe6%_D*<1%4E-wd zZT?e(c=ctKItgZyslKEeV#rr!gS1eJ@h)4NJ7Or=H5M37-jC3}L9I3W{*B~^sW-wGXk^`Xl_ z-DHn{{8hr+@%~*wfuxSwnwsL>DB6|{6)7L27Zovk_-A6?b#;?%ZTIcQrX{59Q5R=@ zbh0j=HM$S#M!t-Ymd8EkUc46pV;~Se--ETz&!4y*{bF?~ef{>u2t3y8UVaeY<=J5H zsXH9Xyvt6PQKFkE5$*1wgR_Qd#9mvTIdM;7$XeHG#~T$_Dw~bstj_W2AB-OLCPGj! z?sUIfor);q2@QRA`Samhjrv`j9-3teM47*zdi_Ost;h#iP*_H&UfT2*^-J7q6`1cC z{V$Yq1IhQbwNtCT*P20p>9mV^zx(ySw*F;j1*;9ESGL#1RJGmOqUDT)pshYC4n30u z2tGfc*xED(nC?!%5x|k2uhZxV&U)H^toj=Xexx zV@&Yq)KMO{-=RomO4o2%>e{Ky9LCIuQsv8;UYr7%_7`QTcXR6PiF*Fok1$`Qk-j06 z{%mTkD2M*k5*77kxWa7e!w2N_XPuTWr`>kDqjZ*IK0S(lq{{aSQ|t`+Y`?ormT$0i zw89j)S8MAx47@+qn%TALCdBy+C@=leLX_{q*MTf(sC3UWl$7Mx&jNxcyIDPt8GwDr z{H%7N!cMIkAu(o04Pb7 ze)ox23EqcMkNyQMSuI2th|}bACzvk_6>4B%=f_7Vs26XH*Xb+;@u0fuXBn~b znu)nzO2@MYgzCH@I5=p;)sS52iVpm|EkNnK)DB^i-=~O?@c3tV?Iu!+GYb1xz?ar< zQ#sKEkbxZs=JN0uHqxitIP@ozh=+%JGl-_E31wzwgGp4l;d8J*7Z;xpLuPZ@rYwPh zG%-plL_!0czu=^Q^W`%6tkjqD?glN1sU}S*#tlfTx|!*}m_JW99i`)UwdZz`UvzwR zX3&LEqG2(%9t&AevFqjDdpRb@gYibjq~nA0DFN=H=n4u*VAM&llix%{s(e3&?P~c zAeS8CeG8;g3V;rZm7RPg{i7=xckzA4_$k-k?AOZFCir)K{wmu_2754czD=pmrIxQ7s&(= zA?6P%0KsRe{6Nm&5$1v1P6t4M4SyjB__Ry-ooC@$hQ3|)b5e^gi4l>k97+CkGHRb) za`?8jG+@L}FJc~*1>v(^p=D$tK}B zo_tobig8hk3|WgF?pfAeKP{c$WtJW&IGDi+?ajHwVw=H9v4O6+Ty8>9Lxa3brS?ci z@liB&NEPZoP6L0gG@SE5t)nkRI;KWj?+L#V_1R{UzJ9*4bboU2O4kD7 z%a;P^L_aNtGVTz?<2whO^dZi9kqv)$U~5u#3xC7`H|9c~4s|$OwYOvoa|A|s&{-1t z`x?606MH6kf;?chl!|9yF1ni-w_N5F5nfoRRHVh*-0U8zR=Ruy${gStrFFtDSKxDC zfB#Lq1Qty(T+|mXK@+Z}w4G$pxdqsQo|gxPk#Q03u4e@RI3KaFo3e#ngQ1 z8XFe}P_k-jaV7h7qTTzX_G=z=iYbt`Bx^jUd!bfSx;w$)UF}TguW{Y7ogp0D0%iD; z3(Yz;>?I`Sb+jtLQ|KHK7cqeY2T=>8Asql5@)*fV^t}+)AoL2#;sX9OXNhqcNn)Zy zEGyGB+_8oGE6v34oO`x<52~iNcc~Stp4#(n;b_9^s=HCA(elHqoXP`Sjnt1cFR>6PWeQuQ`>_nG?PPg4JEorQwQMMT3hF^h`BI>y z(8_#rBia|2pop68h~LJ0^s@W=Id!f1ZhJ9=Samo?8*`0rAa>z4+AIx$(o9M5C87bt zyTK#1NfTH|0VbBuhf-9_hAy8Sv818|}KcM^r^ZADKz)ADJ> zwH*NF9EqJT;6^>#mlZhUCJ+)AM+!!eNeN-#s1hQ;D?U7DsL-0^-I5HG@-$#$;zjM) zQQRlOg;##7J&w*-M$ob{Du{xw%_^DIaTaSM9MLB-D?b{~80w$L4V4zI=Asvks&c5W zYE~weF0#d@zd3=i#j?WPax8*2TK$b=1x!ra0cRPrF1m;H-4BIjDt&~dc7B*%6oXtl zvl^>Bt4gEi45!sGo?Fmmmtn+;r05q3k6WFz4lo(NDd(LuxmT=FZpn7*^M5VUOb;y5 z!1Rbk;fjN%Grw@3lp>Cb!vPDOIp<{UCOmWEeivn}TiKY=@K7a(+0U>>Gb;K7T97qz zF?@Mc@J32qUH#RoSE{Px%J0_XsN|L8eGQF_Q1ff1I}X{xlK<3Gv4IVY4a(PR$1N+V zxP*rH$g6YK;S1C~7Nnw4K#dY7#knaHqb46T{^XW#ZNRp|8-3~520SL96WlD-x3;&- zKdwL@XH@i1{G=GIn8w4y(`?Gb_3x`VftoA$`rgEGS}cPi(ymy(*gGpuDiZZjd^$mX z{v^lO**`?zRmmN_y_IlvW#!?2N+=QCOJDYqpv&@l_*As66P|2i2(Q(ZqrNzkmXzdu zu!)-|koP)IB5&aG(p{G$h6onBa~)_C$vxDN(PHk<%?IMXR^EfqwCeyFw_IpfUtb@h zBdQXa(laG0C1YLPwBq<~^wrv_DE2L?dB~%Dls$Zes2?di$@^+z(|Jd{G2b5TX_;`T zSL+$2KV48t&Qw7`t(r`z^w^7bEaL-j&^x0Qqi)(HcZ75vH1nU&klb@VOfR-BBl$YR z@K~D95Ec?`UJ@BXqT%a5cQGgG(^PD?CRoFsmX?3YmK%_#lz+HB=q*?^-fqy%bt$<3 z`61I$TI=#G#T{q+=SfoqbyWj4g%s4vn5(EWLDwQ&8j`JGJ$>PQ2X?AUH z&RktM0V2ZW`#Z8%mj|SUiH`-{^FdJWdSr)P?S?DH>2}{^n$uAkj^#3*iVM;B}m@b5XcCrwB^$XHX_@3k(W{18 ziNk=}*Fp1b$yv_sb&)(5n)sL=>Hzj5KUAo`VFKxS&IWM$`` z_G#pQ0r}@=-N59xeCW#6w$-DQXS#cO@rM#r#bSGe@t0BiCe`<{Li}|C`aZxA-Z}Jr zo7Vd_B>9fzcBQFkpdz&3YT$9<+6F7af|Ze;C0GS1=@2}4pJh3#W1Mbeh$(V?DCLd#g8yg5VvlL1fxEle!e7t@2&Bd;Nd6{{f z{|1!QyxRhKH9Py%FH#q1rSHqdw_{{(=@(G)?AT3I)WvZ)?VFn|aK{7Bm3 z|DEzzY>wMk89Kyq03H#_5x}Z=Ld7K|B>|TT6?F<_llV{g+uStQ<+zKW2$wz)rf+CC z6lY~_&Tu3*^?v5n=$mLUC2^ei$ViHBh6wNJ;A%LC{r2q};HUjcSjQg!w>S!CtNk<3 z01xw#g#CWPmoJV_{t5JFpeAUFgph-HE6x89Tkjy`y$6f$17sM4SoqUG!3a5b{=fdg z`vBkP4oR-~?kFH25=MnW6DK|^@yAVv}wjtnJdJ)DZAt~v! zH91qsIG;XWIFgxq~qke5ZKd+v1h42fYO@bV|Y|m-j zjJkyFq0H`2STr9?Zs~MbZ&Uq?&5fhVfM#TsNnUy*B2hU)o)t0U)*Z-+CGCz z%}B&3^W)74M)mR>?fMt!W=xvZKQJ}xoNdkzH$XMSWF%)WM#t0TP2MG-_5v#gEXe+r z7AOEuhhM1Dmoyta`By9^%Qr~i#6ls=sXhE(S)pWtv!L4bf)1s+x>_ocdvChNj-7a- z!b~OUg~RwAqTqILMsB3_Tc@BCan>DAnlVTj3iSb|_zGZEmO)`5WFChYJQALs*Ui4D z{%8cR9s(M3rvu{MyR_(AzCj-imSa+4V#WZQSt(!nZ9HHT1Mve^GFvE+<2lT5+sdL2 zIqB&G9VKetL0tc6sd5Q2B0c=h_h<*39QvGz$q-rG!>K^MLUp{qKlFvi_URchkL~hC z_D(NGEUQ5mxc8!+Us@^yH|tEj!9-jDE{fhEoT$6GzR=`DZoG7wb@6xiowC0=clZ+X zXs44VW%*HP>Yg0naZR92VB+Nxfw1vDSnns)az5a!%Nut5*PnvXk=q;z zoK6eQc>Eo|e9;dm%fSkUeqq$8bl%egI%7~P{m9#qk&)qj7rAt|ShvMkwZ&r5?&z1& zWB5ec@7DOWL(9aSwNi3G^m2fIhxy|uq z&H(e*2&dOxkwQfPxQW z#Sj(6Ai>a`%Fkb07AYbo!(*vEXhV&Q28y7>CN> zbNO)*VR|TXe~4>ruTtn|8Z}dNvaz!muG#u}BuOe^&CZ&&QXIHa%|*e-T8p>@&craG zc}SII3X1@by8C0p9($|VvQH;ZGCpbH#V&Is3l0ZKs@1zztR?@pS(PduSLe>fhmAi% znudo_2x90Nr;P?+y&xVu7%z`d^R4y2Ku%$ri6gDBo(Qu!%EW%Q$=w9d57c; zd(C&OIpWRYZKs&4?&~784oL@0<J zU}uN%@6VJZ)dLDewcGXZESp`wActky@)bTI>>hIC&dR9Fze`K(Y1ZJZ9e1PB9S5tf zsqNKSs-<9@9+_TA_msSU(6wz~Z?`d1Yi5{bt;Al73&#aL*Pvp6;dQn=r;|HW{ZXJ6-t%LetdBQa zFRqJ@J{5=#JZPUl%fh~$4YC4}0vy@M?;*15%Sp>+#-V%p)pvFGvYoc1(QlkCS1AI& zY;Lhyri|Uo{*K%N&!vEFb|6kl5#b4h;Tuaa(@?!vkx!#y;rH84*|fa946G%8uTJVI=d-uN!$0u6xX9>71V@pYrNUh3d^m>iA{;>E_q&|IolAj2Ws-F4zbSMe7FvY>!v{9gwI zWvqVz0hIswOU@m; zm}vOvhQRTWC>dAu4hCEya(DSeAO1i8u*yV#2fp7z^l(KXl;0)=|K~5JKc)>pdJdjP zcSch9e=*O$g!;cvXbZNTf2cyXdclP1YgClB>PM`*w-JGuplUap@l&%ZMwFjC3N(r6 z*6bHvEjNuc*?lZ|_8dJEyZr^%tyu`$G!?{7_Ty=Oe>VNYr&69!f_8d-8ZP+{K3F!g zz6a*hpp};zw81PtH@x9i>%v4$GIi5q)~rfe9zFB`nnZd#dUkmZcVW{&qh}X}<#V4! z6Z%XHOKVrSu2KVnCi45gO+O1_1i#N`!M#<>Q}&@xJ! zLst8(JfFN)Km+xumweT?OImSXx*!l2r+jz&E-j`oE|w3`5BToCzyH9pzGFJ$j?=BP zV0@s}XN~OrK>`;__1?`}{4;;UzrLZIh&4|5-`s(_A%l-be9z`H!`o@UG<{KRIPx0n zVQNRa9R-r>vzAeR=p7*#J&5e(<>k{PRD^@s;DwFZVFAP>@08WRY(bZ$KeLna_m2yv zg})R%eSM&ADdA^FXEYZ6{N(zOZdUPW#LhbX6CjEZ)kwu)4WB;hzu5ao7%|K`t7E_^ zCp*F^evjlXEi4QIm^M@EbWoKiG&_4c=HHE$kCeWhl6W{eI=1+syWkwX9~c;bcXs|~ zU*!|((kFL85eK3Cy$hOyHRzH|{fyJ7&1p3Ynk1PIp!jNPYRmj<{V8~sPi*#=#RUZ$ zkGH1Esz66ydKLDWb)MThV$f4{&pBu-U~W(rP-(zyb)Ub(eit=1m`||kZhCwU3{+51 zSnErg`leP^X)$$vex8+`T_z3gxv|9)p5LKLZ`EuEDA%?Kq%Od{nIhncwcJC#cE{Gn zccY;9t<0!@pY9jw@)LLmBuixw$gKeGY6Q?0v?2=Htp-^icwC<}-gulY_=6_M%+@Gh z5l|{fk_s@VW@g@5SayP2p`ud-NM22Ii>?|51qOD5W>Mb~19r>EuC?Tb$N;xsr zyiV_Qux}Bf5^_JmDU^Mdful3CXBu z&&GJ~V$d;Dp}f>g(9_9s6T9<6lfM)uFF)&fu?6pYFdMTR{3-%EYu_b27qXhFw2*}B zY)OZnNYK+A++e7y6HXA}b;7%Xb6T_bvNE18t!o@m#G?mm*2cTHMH!m`%D#9}y@vf% z8WKBLnme0cZ4fRo@ib7YLbePJHg=+*m*;SnG`s0S_Oh6)ERDj`Y+b9k73(Uad!U1@ z*O+}sj+&lcvKrpYCKtTrj7HFNomND6A@x}%5c}e@oJn{T>vl~pVBEKgOyqJ?U`z+` zxS#H}e!^0#&d69EmKEFr@V>%y)L3e1ZOsX!NKBcge*xj&P+n3y_r4Du4Uy?=e*s~A zwhO}sdZsQJ15?C3fP*Qs-PABjxqwgnI3EvyX-Yi`HWgq$&#}J8<`ry}ovf8Nmb1OM zI+tfdcXvo~5Pk~_rVo4r%aM{LC znswfJfWb@P0Pqgy)Q6Sx5b+tB*IVP{)*-IRM{%%kvZt>$>D}MXR`F4|nAJg>*{ zmFs7+WmRkljj%vCOXUG?l_dN8_vSko@q<9~-8wL>>f1kX*kpAwp6vnH{Q+W)UHo*( zo%P6)Jbu4@Kb0*irZ3DbS2jJtM6eGZ+|N&Tm}HjBL9H2q9R}3aXIJb@3~j0?y{r2c zr5&PqdVZ8{Y00$6-bW3OaCYWR(1;XQh~-)g;@bT7nXFrX5C2UL2@z&(2p(QHo)<9| z@nu7d3h%$m94Fv;F?S<0PkgPzXhgcSy3Oeoyc1GxtzZ{J0Th-3I@!K3E04?!O>4TI zY{$o`g{O>(!kgoaLl~WiJ6v}w$V)KwMx$vCLGED&01HdF&o2_1OL`PuL0XKuP^;bBT7je zia8aO7$PcKg)i#TcK?+j9Bvth1UsW`jA+g+H?is6(6eGHbOnX}7NlAtVRO549T>3wv3rmU{t{3F-@O;3jA;#YF2e?14f?TpzYPg?_8bUcU;3OZD_ z&Bkb6+JrvNj$(=3|FcsG`}kRa849SMn;Wc54hxIIkOZgfkCAh&WGGWaH8wXFo}ZHH zBJ0|hNTtsH2#N06qZO^coF%G%eoA!`8#|!?faGbte5~HKj6ypDtJ$A{iH`8a+~DXk z{%)v^`hR|C;ak4I5P;CVh;1$-V|v=CeS|PCWWXB{)JCvg_J`h>NFiSWLc~Yv>1ji2bdq_D@*I zfx}{5Umt}>e%Cal()o6&ES}r(_4O?|^v^u-K(WoP#|gm4s;-|7{zm0_X&)+Pd%y9J`b zzqpL$xajCQ=5B%knR#GprgqHkAtK`JH;pPozy$NWgoFn!?_|nnN-%10QeP-mD|kog zLlh5f;E6;$#S%oHj?qU);1oJi(F_HYbMXYwjK3O9pS$QhboBd;@GIrI-R80=!_}S= zT3Vtrjk6i5PjGN1zCnw(f`j+GXxXS$D^XJ?$SFCE-F`yrQjJ9^Lda^B(&e!C< z$U>!shV?^S=46MXUt@u|^_;HuUN$8ei;I!=d|Q+J9nTsSN_q@)cb7iG{rgS(fAkx% ztw0pALvob5q01c&3kzg3buOBTLIYZ?Z@ZFsZ+P@x>vTy{1z_#k4f1$Ss9k8m+ZbZr zZx!aOQwsLT?t0xg#UdU`xM5(|0=Ag_qE3Y=&da!cUYu@oTwxKiKikhrs$e!6d)W+~ z)<97R;#Qk$&<1@)t$PYtXxYg&BRQTJ7++k_TrhdCRx&YLAD-59fK${WMGCRA*nMs$ zL;UVJw>|#Zna)9(^@`ZGB14%PWoR(j&vR~gNv1b^53rA7>)iy+W~bSB&QL+kDKkcU zo>QyQ(|)QF{D%O7!dElj)Mj&Y6HW=vNS^(z+?ZT50}j(_J1!b(SyGvI9LTrcLh_Tf5LqR}-wMYVeM|dWV*?Muk&s@wei+{o%-o}R@*z-CvVU&kz zgAE>%;66F&Ma9>*f!ueJK-(GL zn)hs}ls2yVqZ^zIb@ov1WLo{{7n1FFy}q`x4mWh7`!c~00c(G3=8*_@ywwiC{4RAd zaHR3{x9lGJTLUNf{!u?Yswy&${utfTM^dN*!RvtG@l-gr?Dd9m7yRc3U3d@cdc^w8 z>{HlJz>UB4YL-y%MEE7+d%tNS*f-Q3oU1wB*j^Wbf;M?x}bx9RJ9QaLi=hxVX6BM`x-;c3w78SW*(BIWAmQr4B&aV4D~pSN&yE zc_-UDFM%#8FPTtCMkb_K4W2_NKc%Oq2c(R1!WWqwi2ppGt)2YW1KxeQxiM*x6JQ#j zA10~4vi?kwlEVDg6sgy~GSJ-gPB_g%=B^T#(hDVij`tu})h+vzmOcXU3goD#US3KK V-x{Tn&%ieXaS@r +#include + +namespace clanguml { +namespace t00009 { + +template class A { +public: + T value; +}; + +class B { +public: + A aint; + A *astring; + A> &avector; +}; +} +} + +``` +## Generated UML diagrams +![t00009_class](./t00009_class.png "Template instantiation") diff --git a/docs/test_cases/t00009_class.png b/docs/test_cases/t00009_class.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5c234fdc0739b8e35502f0d0446c33359a7bee GIT binary patch literal 16714 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 P4w4j=dtdlY@5}!IhrDAX literal 0 HcmV?d00001 diff --git a/docs/test_cases/t00010.md b/docs/test_cases/t00010.md new file mode 100644 index 00000000..4f66111b --- /dev/null +++ b/docs/test_cases/t00010.md @@ -0,0 +1,46 @@ +# t00010 - Basic template instantiation +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00010_class: + type: class + glob: + - ../../tests/t00010/t00010.cc + using_namespace: + - clanguml::t00010 + include: + namespaces: + - clanguml::t00010 + +``` +## Source code +```cpp +#include +#include + +namespace clanguml { +namespace t00010 { + +template class A { +public: + T first; + P second; +}; + +template class B { +public: + A astring; +}; + +class C { +public: + B aintstring; +}; +} +} + +``` +## Generated UML diagrams +![t00010_class](./t00010_class.png "Basic template instantiation") diff --git a/docs/test_cases/t00010_class.png b/docs/test_cases/t00010_class.png new file mode 100644 index 0000000000000000000000000000000000000000..dab84971d7a9d31d970a6d704e1b6ca9e14c4e68 GIT binary patch literal 14911 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 class D { + T value; +}; + +class A { +private: + void foo() {} + friend class B; + friend class external::C; + // TODO + template friend class D; + // TODO + friend class D; + friend class D; +}; + +class B { +public: + void foo() { m_a->foo(); } + A *m_a; +}; +} +} + +``` +## Generated UML diagrams +![t00011_class](./t00011_class.png "Friend relationships") diff --git a/docs/test_cases/t00011_class.png b/docs/test_cases/t00011_class.png new file mode 100644 index 0000000000000000000000000000000000000000..7a11028babd7f3a2b6cdf448f2e79d22b82bbe20 GIT binary patch literal 8608 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 LqC}OLVbK2pKh|;o literal 0 HcmV?d00001 diff --git a/docs/test_cases/t00012.md b/docs/test_cases/t00012.md new file mode 100644 index 00000000..f54b6970 --- /dev/null +++ b/docs/test_cases/t00012.md @@ -0,0 +1,59 @@ +# t00012 - Advanced template instantiations +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00012_class: + type: class + glob: + - ../../tests/t00012/t00012.cc + using_namespace: + - clanguml::t00012 + include: + namespaces: + - clanguml::t00012 + +``` +## Source code +```cpp +#include +#include +#include +#include +#include +#include + +namespace clanguml { +namespace t00012 { + +template class A { + T value; + std::variant values; +}; + +template class B { + std::array ints; +}; + +template class C { + std::array ints; +}; + +class R { + A a1; + A a2; + + B<3, 2, 1> b1; + B<1, 1, 1, 1> b2; + + C>>>, 3, 3, + 3> + c1; +}; +} +} + +``` +## Generated UML diagrams +![t00012_class](./t00012_class.png "Advanced template instantiations") diff --git a/docs/test_cases/t00012_class.png b/docs/test_cases/t00012_class.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7fde5cedba1da28856bf5744b317bfc2bc26ab GIT binary patch literal 34419 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 +#include +#include +#include + +namespace ABCD { +template struct F { + T f; +}; +} +namespace clanguml { +namespace t00013 { + +struct A { + int a; +}; + +struct B { + int b; +}; + +struct C { + int c; +}; + +class R; + +struct D { + int d; + void print(R *r) {} +}; + +template struct E { + T e; +}; + +using namespace ABCD; +class R { +public: + int get_a(A *a) { return a->a; } + int get_b(B &b) { return b.b; } + int get_const_b(const B &b) { return b.b; } + int get_c(C c) { return c.c; } + int get_d(D &&d) { return d.d; } + // Dependency relationship should be rendered only once + int get_d2(D &&d) { return d.d; } + + template T get_e(E e) { return e.e; } + int get_int_e(const E &e) { return e.e; } + int get_int_e2(E &e) { return e.e; } + + template T get_f(const F &f) { return f.f; } + int get_int_f(const F &f) { return f.f; } + +private: + mutable E estring; +}; +} +} + +``` +## Generated UML diagrams +![t00013_class](./t00013_class.png "Template instantiation relationships") diff --git a/docs/test_cases/t00013_class.png b/docs/test_cases/t00013_class.png new file mode 100644 index 0000000000000000000000000000000000000000..5cef910dee974f56e74ba2e76d4f4b32de958ba0 GIT binary patch literal 43309 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 +#include +#include +#include +#include +#include +#include +#include + +/** + * These should not be include as they are not + * in ns clanguml::t00014 + */ +template struct clanguml_t00014_A { + T value; +}; + +using clanguml_t00014_AString = clanguml_t00014_A; + +namespace clanguml { +namespace t00014 { + +template struct A { + T t; + P p; +}; + +template using AString = A; + +struct B { + std::string value; +}; + +using BVector = std::vector; +using BVector2 = BVector; + +using AIntString = AString; +using AStringString = AString; +using BStringString = AStringString; + +class R { + //clang-uml: tinst A + A boolstring; + AString floatstring; + AIntString intstring; + AStringString stringstring; + BVector bs; + BVector2 bs2; +}; +} +} + +``` +## Generated UML diagrams +![t00014_class](./t00014_class.png "Alias template instantiation") diff --git a/docs/test_cases/t00014_class.png b/docs/test_cases/t00014_class.png new file mode 100644 index 0000000000000000000000000000000000000000..1b062b2cada61be802fd06328f3a5f0133f16cad GIT binary patch literal 26060 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%0D$0&u$K$2L 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 Pa_GE@Hs-m~b^reYe{14F literal 0 HcmV?d00001 diff --git a/docs/test_cases/t20001.md b/docs/test_cases/t20001.md new file mode 100644 index 00000000..58146e8d --- /dev/null +++ b/docs/test_cases/t20001.md @@ -0,0 +1,103 @@ +# t20001 - Basic sequence diagram +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t20001_sequence: + type: sequence + glob: + - ../../tests/t20001/t20001.cc + include: + namespaces: + - clanguml::t20001 + exclude: + namespaces: + - clanguml::t20001::detail + using_namespace: + - clanguml::t20001 + start_from: + - usr: "c:@N@clanguml@N@t20001@F@tmain#" + plantuml: + before: + - "' t20001 test sequence diagram" + after: + - 'note over "tmain()": Main test function' + +``` +## Source code +```cpp +#include +#include +#include + +namespace clanguml { +namespace t20001 { + +namespace detail { +struct C { + auto add(int x, int y) { return x + y; } +}; +} + +class A { +public: + A() {} + + int add(int x, int y) { return m_c.add(x, y); } + + int add3(int x, int y, int z) + { + std::vector v; + v.push_back(x); + v.push_back(y); + v.push_back(z); + auto res = add(v[0], v[1]) + v[2]; + log_result(res); + return res; + } + + void log_result(int r) {} + +private: + detail::C m_c{}; +}; + +class B { +public: + B(A &a) + : m_a{a} + { + } + + int wrap_add(int x, int y) + { + auto res = m_a.add(x, y); + m_a.log_result(res); + return res; + } + + int wrap_add3(int x, int y, int z) + { + auto res = m_a.add3(x, y, z); + m_a.log_result(res); + return res; + } + +private: + A &m_a; +}; + +int tmain() +{ + A a; + B b(a); + + return b.wrap_add3(1, 2, 3); +} +} +} + +``` +## Generated UML diagrams +![t20001_sequence](./t20001_sequence.png "Basic sequence diagram") diff --git a/docs/test_cases/t20001_sequence.png b/docs/test_cases/t20001_sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9f6cc0f012165cdf6f7ac63104cdca8715753a GIT binary patch literal 14872 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 literal 0 HcmV?d00001 diff --git a/docs/test_cases/t90000.md b/docs/test_cases/t90000.md new file mode 100644 index 00000000..09064c3b --- /dev/null +++ b/docs/test_cases/t90000.md @@ -0,0 +1,31 @@ +# t90000 - Basic config test +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t90000_class: + type: class + plantuml: + before: + - 'class "Foo" as C_001' + - 'class C_001 {' + - ' +int value' + - '}' + - 'C_001 <|-- ArrayList' + - 'note top of C_001: This is a very important class.' + - 'note "This is a\nfloating note" as N1' + - 'note "This note is connected\nto several objects." as N2' + - 'C_001 .. N2' + - 'N2 .. ArrayList' + - 'class "Boo" as C_002' + - 'class C_002 {' + - '}' + +``` +## Source code +```cpp + +``` +## Generated UML diagrams +![t90000_class](./t90000_class.png "Basic config test") diff --git a/docs/test_cases/t90000_class.png b/docs/test_cases/t90000_class.png new file mode 100644 index 0000000000000000000000000000000000000000..bf1266fe987b068f577b043d5299b92ad552932f GIT binary patch literal 16076 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 +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## + + +import yaml +from shutil import copyfile + +with open(r'tests/test_cases.yaml') as f: + test_groups = yaml.full_load(f)['test_cases'] + + # Generate test_cases.md index + with open(r'docs/test_cases.md', 'w') as tc_index: + tc_index.write("# Test cases index\n") + for test_group, test_cases in test_groups.items(): + tc_index.write("## {}\n".format(test_group)) + for test_case in test_cases: + tc_index.write(" * [{0}](./test_cases/{0}.md) - {1}\n".format( + test_case['name'], test_case['title'])) + + # Generate invididual documentation docs + for test_group, test_cases in test_groups.items(): + for test_case in test_cases: + name = test_case['name'] + with open(r'docs/test_cases/{}.md'.format(name), 'w') as tc: + tc.write("# {} - {}\n".format(name, test_case['title'])) + + # Write out test description + if test_case['description']: + tc.write("{}\n".format(test_case['description'])) + + # Write test config file + config = open('tests/{0}/.clanguml'.format(name), 'r').read() + tc.write("## Config\n") + tc.write("```yaml\n") + tc.write(config) + tc.write("\n```\n") + tc.write("## Source code\n") + tc.write("```cpp\n") + tc.write(open('tests/{0}/{0}.cc'.format(name), 'r').read()) + tc.write("\n```\n") + + # Copy and link the diagram image + config_dict = yaml.full_load(config) + tc.write("## Generated UML diagrams\n") + for diagram_name, _ in config_dict['diagrams'].items(): + copyfile('debug/tests/puml/{}.png'.format(diagram_name), + 'docs/test_cases/{}.png'.format(diagram_name)) + tc.write("![{0}](./{0}.png \"{1}\")\n".format( + diagram_name, test_case["title"]))

o%ei>tHrW7kYx!w5k&`@n)}p;>p!<$;ici{%5ubxLd#tom0kH%Go+ zt}icm=Jk<*LEfZ-O&o(IXKZS^DO#FKFA4r1^Q5OJljUfdwKS(>9_ERq*7J9E^v;P- zRg}Y~suV;;-6z^V07V1yCoVLoT6(URo&gMp2Y~31t?eoA(mqmEHTd4wqU=)1UEl@0 zzvAQL3!B4$?fUI(d|q}0DE{u|%#LZ{#0YaR*JQwitw=SGtdYWBaOgl?MusU6{08hFK@q>qzZpDmiT))kQtdo`GF4~PAAOLfjp}xGqQPfls4B?`RA7P> z3BEXo{W|O~n#?9ZFCb3n%W>=h9#q)k(I=AE-tv@4b-Yj=YEvlM+8%Z&^#{W>Ku#XX z33pxbtxolNoM%_8F7cOt&n)4k@|D)64~Wgkf;Pt{z%Fz|KZR>>=U1@&FP~~FlCWKH z3M{z~MvZcilNKX}@6pPdn~rWu>ZMX=^bGshDZm=cGe^Yu(x*XkdcBLt?hMgaavUjA z${8+|Uq;MJ2{7F^mLQFdcXW$`HlCt~ycN$?FZb9xJtMa+E4TB=nhh&cUB@>gioM7l zem^<$2Gm})RQ~rR=hqBtDQ>0E7MLDj)$&EiSz8954iYQ&Z{>@BF2f?#PGfmcVwgyB z7C429!DlnL*JL5NK&;DNiVu%EZ zAVQ)S_a*uCehdywcq`d$i;KRBt6s4y6jwqtm8K{j-__WtNP_l+DuS9&>L0RX6^C)Q zfXibam^Ru+Yi5180dEG4D@ z4&K@7-t4aMND)`5_mQj72)kxptQA26Vq@KP@sqr~O90frF<&hMK+>q#5x!#O0F@m3 z7Bl{{D&qA?-Yvboqw-gW{lGco@1EYA840MI8F3^>yPcwDowGEUC!gM5>adBIxI2IR zbWiRI$eSE&+Cq&jte^Ky-kj+zpl9DqT|Zv~+?W^*Ii(Sb0O4>l$N4_pqq{X%^(vQ(Tqe zNh_aLCSHqHDxJ&}#Y`9#Y#;S|WpS*^hfR2Y= z@+a}L3k?S}R2R;ySyf87^h_AI>w=s~!iLs9l0d*_G!V5y%C|Dqhw|SFru&V~+mvgC zq`r^k4oFMKX8hR&E5N@A*iE0RsB~TElf3IPf;~V3c_-ET=*l~kfHKhazS=CZfx~FGPOT!*u_7V(4{h?9Uo8cJ&(S% zlZOCFSuTq6+QM)^!BLY1q3tQEuQnjJ0c^P0-U7L~)m!wP($X_I&V;4%q*fzc5yO&% z-6<+wE5MSOoUAB!dl4G68Ajxkw`>fC&g55o?Ct5x&AhtWiZF<>_jWw61`)_Ki9tiCw^^wiS>UpT~z{<>L z^GC~mE7OT+v^HYME*mCx=*LN;etFee@MsJpRIwXclp3B;+f>g|xBqX-^o(!-0X;k* zqCrW5tROAoQ?P13cv;%mV(hxNF6j-E(*0U91LR)n3GAB-=-)Z^->sN{GyB2K{t&m;XV*|BLKc?7BBG*b4jppy^cH*n6w@Zf{2KWAOQuEB36AbtEP5A(n)c6dlc;z(5MRjBEMy1;PdD z1r{YXb*=K(50Lv^$_wfug$z)rn5d{IDv@yZ_oTigQ5n%34!kH3&Sf$nLPR + +namespace clanguml { +namespace t00007 { +class A { +}; + +class B { +}; + +class C { +}; + +class R { +public: + std::unique_ptr a; + std::shared_ptr b; + std::weak_ptr c; +}; +} +} + +``` +## Generated UML diagrams +![t00007_class](./t00007_class.png "Smart pointers") diff --git a/docs/test_cases/t00007_class.png b/docs/test_cases/t00007_class.png new file mode 100644 index 0000000000000000000000000000000000000000..55aeaa71afcf10f023aae45fd17cc670dfe0e1da GIT binary patch literal 8401 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 +#include + +namespace clanguml { +namespace t00008 { + +using CMP = bool (*)(const int, const int); + +template class A { +public: + T value; + T *pointer; + T &reference; + std::vector