From 91a781d8a42f532bfa02e5e6a021bd1f30232e05 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Thu, 21 Dec 2023 08:49:19 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/nextcloud/25.0.2/CHANGELOG.md | 99 + stable/nextcloud/25.0.2/Chart.yaml | 48 + stable/nextcloud/25.0.2/LICENSE | 106 + stable/nextcloud/25.0.2/README.md | 27 + stable/nextcloud/25.0.2/app-changelog.md | 9 + stable/nextcloud/25.0.2/app-readme.md | 8 + .../nextcloud/25.0.2/charts/common-16.2.5.tgz | Bin 0 -> 95720 bytes .../nextcloud/25.0.2/charts/redis-10.0.3.tgz | Bin 0 -> 101998 bytes stable/nextcloud/25.0.2/ix_values.yaml | 512 +++ stable/nextcloud/25.0.2/questions.yaml | 3853 +++++++++++++++++ stable/nextcloud/25.0.2/templates/NOTES.txt | 1 + .../nextcloud/25.0.2/templates/_configmap.tpl | 443 ++ .../nextcloud/25.0.2/templates/_cronjobs.tpl | 34 + .../25.0.2/templates/_ingressInjector.tpl | 24 + .../nextcloud/25.0.2/templates/_initPerms.tpl | 29 + .../25.0.2/templates/_validation.tpl | 42 + .../25.0.2/templates/_waitNextcloud.tpl | 25 + stable/nextcloud/25.0.2/templates/common.yaml | 80 + stable/nextcloud/25.0.2/values.yaml | 0 19 files changed, 5340 insertions(+) create mode 100644 stable/nextcloud/25.0.2/CHANGELOG.md create mode 100644 stable/nextcloud/25.0.2/Chart.yaml create mode 100644 stable/nextcloud/25.0.2/LICENSE create mode 100644 stable/nextcloud/25.0.2/README.md create mode 100644 stable/nextcloud/25.0.2/app-changelog.md create mode 100644 stable/nextcloud/25.0.2/app-readme.md create mode 100644 stable/nextcloud/25.0.2/charts/common-16.2.5.tgz create mode 100644 stable/nextcloud/25.0.2/charts/redis-10.0.3.tgz create mode 100644 stable/nextcloud/25.0.2/ix_values.yaml create mode 100644 stable/nextcloud/25.0.2/questions.yaml create mode 100644 stable/nextcloud/25.0.2/templates/NOTES.txt create mode 100644 stable/nextcloud/25.0.2/templates/_configmap.tpl create mode 100644 stable/nextcloud/25.0.2/templates/_cronjobs.tpl create mode 100644 stable/nextcloud/25.0.2/templates/_ingressInjector.tpl create mode 100644 stable/nextcloud/25.0.2/templates/_initPerms.tpl create mode 100644 stable/nextcloud/25.0.2/templates/_validation.tpl create mode 100644 stable/nextcloud/25.0.2/templates/_waitNextcloud.tpl create mode 100644 stable/nextcloud/25.0.2/templates/common.yaml create mode 100644 stable/nextcloud/25.0.2/values.yaml diff --git a/stable/nextcloud/25.0.2/CHANGELOG.md b/stable/nextcloud/25.0.2/CHANGELOG.md new file mode 100644 index 0000000000..1a729e2053 --- /dev/null +++ b/stable/nextcloud/25.0.2/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nextcloud-25.0.2](https://github.com/truecharts/charts/compare/nextcloud-25.0.1...nextcloud-25.0.2) (2023-12-21) + +### Fix + +- correctly reference collabora's interfacemode ([#16327](https://github.com/truecharts/charts/issues/16327)) + + + + +## [nextcloud-25.0.1](https://github.com/truecharts/charts/compare/nextcloud-25.0.0...nextcloud-25.0.1) (2023-12-20) + +### Chore + +- bump patch versions on all charts for new GUI release + + + + +## [nextcloud-25.0.0](https://github.com/truecharts/charts/compare/nextcloud-24.0.0...nextcloud-25.0.0) (2023-12-20) + +### Chore + +- update helm general major by renovate (major) ([#14631](https://github.com/truecharts/charts/issues/14631)) + + + + +## [nextcloud-24.0.0](https://github.com/truecharts/charts/compare/nextcloud-23.0.2...nextcloud-24.0.0) (2023-12-20) + + + + +## [nextcloud-23.0.2](https://github.com/truecharts/charts/compare/nextcloud-23.0.1...nextcloud-23.0.2) (2023-12-20) + +### Chore + +- Bump everything to force min/max scale version update + + + + +## [nextcloud-23.0.1](https://github.com/truecharts/charts/compare/nextcloud-23.0.0...nextcloud-23.0.1) (2023-12-18) + +### Fix + +- add nginx changes for nc 28 ([#16306](https://github.com/truecharts/charts/issues/16306)) + + + + +## [nextcloud-23.0.0](https://github.com/truecharts/charts/compare/nextcloud-22.2.21...nextcloud-23.0.0) (2023-12-17) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v28.0.0[@a765a49](https://github.com/a765a49) by renovate ([#16069](https://github.com/truecharts/charts/issues/16069)) + + + + +## [nextcloud-22.2.21](https://github.com/truecharts/charts/compare/nextcloud-22.2.20...nextcloud-22.2.21) (2023-12-17) + +### Chore + +- update container image collabora/code to v23.05.6.3.1[@6d21951](https://github.com/6d21951) by renovate ([#16097](https://github.com/truecharts/charts/issues/16097)) + + + + +## [nextcloud-22.2.20](https://github.com/truecharts/charts/compare/nextcloud-22.2.19...nextcloud-22.2.20) (2023-12-17) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v[@e97e94d](https://github.com/e97e94d) ([#16037](https://github.com/truecharts/charts/issues/16037)) + + + + +## [nextcloud-22.2.19](https://github.com/truecharts/charts/compare/nextcloud-22.2.18...nextcloud-22.2.19) (2023-12-16) + +### Chore + +- update helm general non-major ([#14784](https://github.com/truecharts/charts/issues/14784)) + + + + +## [nextcloud-22.2.19](https://github.com/truecharts/charts/compare/nextcloud-22.2.18...nextcloud-22.2.19) (2023-12-16) + +### Chore + +- update helm general non-major ([#14784](https://github.com/truecharts/charts/issues/14784)) + + diff --git a/stable/nextcloud/25.0.2/Chart.yaml b/stable/nextcloud/25.0.2/Chart.yaml new file mode 100644 index 0000000000..5f565e0a6e --- /dev/null +++ b/stable/nextcloud/25.0.2/Chart.yaml @@ -0,0 +1,48 @@ +kubeVersion: ">=1.24.0-0" +apiVersion: v2 +name: nextcloud +version: 25.0.2 +appVersion: 28.0.0 +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/charts/stable/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +deprecated: false +sources: + - https://github.com/nextcloud/helm + - https://github.com/nextcloud/docker + - https://github.com/truecharts/charts/tree/master/charts/stable/nextcloud + - https://hub.docker.com/r/clamav/clamav +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - nextcloud + - storage + - http + - web + - php +dependencies: + - name: common + version: 16.2.5 + repository: https://library-charts.truecharts.org + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 10.0.3 + repository: https://deps.truecharts.org + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: cloud + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: stable +type: application diff --git a/stable/nextcloud/25.0.2/LICENSE b/stable/nextcloud/25.0.2/LICENSE new file mode 100644 index 0000000000..33a8cbb23f --- /dev/null +++ b/stable/nextcloud/25.0.2/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/stable/nextcloud/25.0.2/README.md b/stable/nextcloud/25.0.2/README.md new file mode 100644 index 0000000000..d551b5d959 --- /dev/null +++ b/stable/nextcloud/25.0.2/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/nextcloud) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/nextcloud/25.0.2/app-changelog.md b/stable/nextcloud/25.0.2/app-changelog.md new file mode 100644 index 0000000000..d2d7d2d625 --- /dev/null +++ b/stable/nextcloud/25.0.2/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nextcloud-25.0.2](https://github.com/truecharts/charts/compare/nextcloud-25.0.1...nextcloud-25.0.2) (2023-12-21) + +### Fix + +- correctly reference collabora's interfacemode ([#16327](https://github.com/truecharts/charts/issues/16327)) + + \ No newline at end of file diff --git a/stable/nextcloud/25.0.2/app-readme.md b/stable/nextcloud/25.0.2/app-readme.md new file mode 100644 index 0000000000..1369f69bf5 --- /dev/null +++ b/stable/nextcloud/25.0.2/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/nextcloud](https://truecharts.org/charts/stable/nextcloud) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/nextcloud/25.0.2/charts/common-16.2.5.tgz b/stable/nextcloud/25.0.2/charts/common-16.2.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8a24314324126bd3a79a3fde96b8510923a93ccd GIT binary patch literal 95720 zcmV)CK*GNtiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ%b{n~|Fgm~a6j+pVV$BgL-YGG0)|MrWN8iX2w;_3h%|=fHO_}3(t@9e^_0E%g3)e>9c#$Z|_OSQPSnLK0g+c+SDpVC5GMy6t@N@!0 zR-MDC_rvC&TCG;=v|8fdTCJA;x7KOaf2gvkGH)as2^r~Lz{Jp(S8C!!37 zKh&PwR=RWF$O8lX5rq^JzXxWG5)1MMS(2Ed#rUhW({IA!$tyX6Kcbm=K{NKj2 z2Pzft&LczU0m%fVvG~<10U$mO5ChP4F`xF(1M(~I;1GG7-Q^!W@cGN)3efingZv$@ zW&O%j)iwBJp#gM|_L?6ag~)H*y#SE&)DafJQ+;LI&6bQ#CmS zfF3B9O8`s}gPu3!JyY$SxGt5iFW=fY0Y(5t;S4*7iqg<^2lDrcjX9s*B>-3m(FotC z0jt+VfWhmB3G#uDkc-^?6`J9&&wV)b5CtRzE~fHtHbG#7KOq-PvFm#10fxMU51{7( z?2ki4sp`ibIE6kKB0y#+3?mP@AV8rmB#I!>!cQFD`xsmTiIX7kFrrp-ykC!MZIo_D zyak}5mR4s1v0oWNiXHWZgS`$Ua~*);9Jpu%BaeXx?0JBNbHIpIwCoXb9|dJWCBqS5 z2q|(ojr40%CCxR0`6ehqTi)9s@a6!Ic(=*JDGB-8@z_HEQ$<5pj;a2>pqI?4kO27( z328<2_=Wl^c=tW_@idwOpSY;cr;}J0`24~Cm3r3$$F*8b*N{vpc$<*`ObKNmAT9;a zcLCq8uyGi9yX$b%sXRM*#8~AsnMq4^nysrwFhKR74vh5OH#F!G&{d|Klkw6|!pox)~`)i09y7rw6Vro$E6p=_s zWpZHDZwbP~Gvp&`CL{JS!_YfJ9-I%5LwuKVB-Pgdg_yY6_o@x^p{?GJAoijV-A+P8 zC&Y8(FEkRJvA)#Bmk>c0e;o)l#1}3Zu_$;HI_&~%8im+&Y76L7lIzT;z{3s}+rN+$ z;x&#>XTI$NA#DTVd-GCqb(0`2rf`h3q=WenGoj_D5Cw!{M#6asSU>o@biyhowkGp1 zA#jS5^%>*~8-wE>nANNGTDAUPbOIagPOsT<8x7PN9>IFMbzDCl9@USBZntsNY&YxO zqb73Tajn}q?l#cT$muleo!0Si*hSDq-EPf2PPP+7o(BTrVTU8ifAz(W9=I4?5!Me8 zMLsK)1gfW8XZpl=S5Nx=4>y-;y$^_cdU1B6e$km@ewCCw=0qW8bD#i}sCr=m6a`Q9 zA`f&4vF@W!%q+C=K2W^enldF2|1J41jQkV&fugVn+MT2L)w_^Hf%OhS_uBX7H-xaC zu!rcJGBmZM7qK1pLp;MC8l!XSKo3gYRFbJ#TI*K-UGQKVScPbpQtEw;wLf#J}(Ozdv37dUbwt0M1TM@2)?d-`rfBott_# zn&A5C@*hA*rH1;P$`n8fZmzFyHR4k89CS`$Ky4BUUg&?gILjaPmBt+i0P%=Gs z41ReMPywL_%C%afVMLuiaf=yNNgoB!1LDdFBu8+RW<>SkbOQY`(o^%==Y07d(OW1Rk0qpFvO5poT-}oI1>tzvXHm(L~XDs$jeJ9+yg{At|1U3RfR5&Mr>wPEYy+y-7pQQ>d$QN$M`3 zZ9rTLv=pe79CV5OdyDNRgt9Bd9!PkfeA(x0WWTuRpC(`M^~8ciCotra7~g)b;>|;U z4w2Xq^dhfEcwD58fyF*Fe;bRbUbjkBsN?^(pZw3nBKIMw<~2 zg<78#Z>TdtZseixN)SQrM+cU5$GP?oS&S%Kd(;R{gQsi={@Dru%#%w*4`3?cnXEA zpx?;dAttVP=?;H|nA!D+I|z`Y`66E4;@u%`RzBIrl^B*mK?!eMXfS*uexpFe}@M`==2%1V`Ypc;^nQT3-%c)*u0s`Y(}2y-uoR5M0@{ac(gTOGvMebEO0F2f_@ZFUVCa!CePjbO7#{NKN}_OaH0^=+ zLb6!aY8Vv`&kBu(k-u)6Y#KbWK{gH6ZOlb8I+;GQJr~Um>14WIn|lCY>QLO{f2AAU zi(3_i(k>=+tzXKz!x0z@K%2jwtZw17O~C<(q$k zJ)(@Dx;p;N@A3as8?{=!QfpNmGOeOda2j~1r_6O#E*MqmoYt$K=D+KjUgY2b3K?jY}pK$IV{WnYN^}|eC+{{ zX$63L?DMhe>m7%EBwi%May&HypoScM!jxfu-2ZqgKIz{ThnHR%aa~Qcp$5{i+FQG0 z8elMc-T?z(CWvzt&w&0%fiz{1VW;Ac=yPKrTQb8pB`()CM^wMy(gxzw2&x6^V9fiRb;>4&6H!K{FG3I5w81kZ zGtBo9(~YY2DkedQXQqVwVZQBwQvnj34lek9Cw4aC11?|dGJLNGpTEf2B(~g& zcdo6dGu<&_0D26C$lW(kQdmlFuFPOaNkN_2`2R)@LoOJFWC{kSCzt2eX?$r9T>GB% zL<`Xfh2q3h@GJgw{)urx!81afvd2ZCGW!3|KcBk|VMyFaL#HTYc!V9uHUv-(Bh6@< z!aCHCJa2%U5OFQs-7lqH3f5e=Qm$U>2x?7XAZnOjnFgo;q15(V6llT>Xe;>YRi;Kb zgpMf3|H#5~pocQUE8*sT%JfYXv&Jp1YrV{G_g()(T>4%AgNA)|eS1ErvQMn!6DDnT z69iqpp#R6Xt3dxA%t<7M9s86)&%^#0eEtlo($!aZMSS@JhI7k%u`2Ava;cE^97g^D zr=BtEC^M2SA=~@>xdQOW7;*65rRK*AOMLdgDe-;eaIuSPT7qWk=;|LN0uJ=~)+^6% z1tuIV5+I*fAU*5e1=#1E48brY4}9w`8GJ(Mk5Ms76%hBWs$cSY z$ag^{_4~`0lJ19;hvgwghL)Mu`Z`MF@+zY@Jt&bFh)KK zAwzCS7Ux~$^C@LtiVtqZ`5Si4skX68s^1ernfXRS^>-j7H{~T~%WV2+3TR(HQ_6TR zS#Om2ICeS^^S{gyF01|?#72fTGQSeHOFmshK=sX899ym@E8ue%_G=8Zowne>UPm_3$+>}x9c=uyU}hQck1oo zu;Cmz&}q2cHd^SU;Uh*Tgs@dn)#VMYwQ9W{N>Ty+Z?$K=LkAY2Of87ol*O!)j6&;8l!dxbsD2a4K~p+bnDGdz1wnYsL>rQ zc7GwR(hXNdm)EGsDhA>b?Xqq4r&~u?$8-EQFByp!lRMXsvp&w4m_$48=ZP<)NQ!+dgG|;z?SR4 zVe6<}8@k7f5xtLw$YI{9h^pciuQsezpxJ1`VHd(C>N@DC<2!~p9k)9iwwfK-Y8;K)Zo54k4q*)qyUn5F4v&XU zqt>Xkx~S1^G>5}syLrrMjyenRp284AclbE8Rpnf)TgMG}+-V=T>vgx;I64}_<6)=W z?2Lx>u3LA8wPtrTY#wzxeD=Ac5p26dXIN|1pfemEwc$dnL*(K|l3G;F#rO!0MzD6& zacjrj;c@F|)M*TBt!C5h)<&&H{TMbH$Y~rOwVH_YO!v5XTtDg@H(T|gJM1)%7Soyd zWAbP^%gVV}w`+}2w+1`yCOodSq1$M-yB*Z19l15sZnWy?*l~^^LT;xy93D5CsN=$; zcBeUXou*Sq-Gx{y|0Lvp>|X(@v>M09jry=Ns-Y3A zp`%87)M|A{ZKqwY@g>7Ku8lgKTBFhJ938EU!K!Yl0@|-QMDHRPy6aN?0f%VJD;Co| zhP@)m4a^mwrM!G=)kdvRuN~LT)_ct5m3D{kweIN1ZMn^(cB78mZWFc~r*S-jjn;6~ z?jF@@-Qj46I?X1k)#^tr)Ih`0&{+kCwMeZ^Qb>R@VLHlh8Y#Ew2?|lQvmrv6=+G6R91yrz#Dv0d4(`z$P&~yR47n=8A^&*_vHxccr&>6sT2n~4Vp!oN z*_fwn)RLQVMtu+Om0>|BPtplP*95PHR)Kxx|8xL^N#y__=2WZI{i=d!6=(|#tl!n!`hi*t_*hO}fo($tt8s!wu`ABQnvZX|zUojv%*lhu{YyhAY0%#4c zuwqN9Vj3%fHfi)I-N*(g_{BIx0uk4HT(UG#%Pbzpcj-tX&a;|Fl%6WQA@w`1jH)Vm z>h7NSpHXnF(u$|We=Vb!H6^)*9ZyG_wZ#|9ZF~<@6s>+HRD@azDuADnHw6q$1HSa@ z*&0AfHO(a=LY0^Ey`qk9svdEmXO+od$2I*JI}XAsEk5?F7rtD+X$6b@5w zrKNl9laS9>Y4WlnxWV7vaCxCsspUYE9v=M=jqs;Du-D4=A(sd}?6I-j@EZq~h{BWQ zB?oZ!oDhLvsu68l8N|M3_UDCI_;6Z?N(PQN09yyT@T*%DdTjPdZ78>wgEZe(!CS&6 zK$_`=0g=xl$>MzU1L%yCMLw}QppN<}q;LdQn4dh*5d0S!ew1+pr!a2^oh3U0ZL zR&t9ji9A-#g(RS0$QjJUmb*aEBoj_7xyKI21$IbonjCwD@yK#47Dpw6b>nrxU@dLy|+`qMCm{c%s4+hqiJ$w{4A^5R-n-^&}Uz5FGH!^Ck7@P(NCY$)`Gg+Q z06B+ys$kWZF<;mptD=8ujAnJ{1rylVFH|!Hk=IZ%Mfrs)rq)SqRXRr1Q9ke0KtcOpjTh@DfaB`^*5^9co9uOW+n9k7v(#o+zd^t}nx5RT9~D7*SSkg?J;OAN#1iy2(xOIAs8ec9Q%<1Tya6tC zx~JGdNWO~o6#4cSG}m6KA643zjB7w_1({<1WCpRvkTqh|7*aCy{0Da!vb;i8-N(B%u2 zESBRstB18N6O0*n2u;QCYU6KTzPTh1DC{eIRAH$u8Szr~R(?tfze4D!5B`6 zAVZ0aI5O9ii>A(|x_(4)eeP>WQ_NqrjycEl$mlheE;yDB)5# zt5-XRFu)bg*z{0>QX}IjP=}@57L3zotU(H$MC-4@Mx_kwzO`#fV0!q0Zbhy93Ilt+ zXM_tB;9{gQyKtafq70-+;vSeLVKH!(<4N+VvcVY4%1R_GSB*kZ&F{2gr~GfFJ+qr= zj1-Pxf)JVyijdWns`f;1QK-Sn^meLs+ckR_IroU=5?y|gskkgMW522m$d@ILIk9W4+oK|8K;#60_MKX5*q5zM8oY6wZdJ=6I+M`X{iPmW7>5MaKG zyJPB(#uM=$>)Sn-P2ADg9i=|)C8m%e? z-%b#?I5R^N4UJ5qY04Q@d{gWXrK|q|XB-!gl)@!~BZLV@o+SML|L^}t6X2@g^~vvi zLngjA-?wnL$|NvW?diyZ_(Kp4J?tcVY-@AxPW$oUqO7eKQ*#1SIHfIz01K5AGbM6RxsQQ|to2E%Js3QI#7aXzs+~dHu(phUB zAfe3oIO5HVBY?p@4sI_8AH_DpS0R=8YKVkrcA!R1_?b}bBE9NTX?lqf7DM!~fXptgH<**tCGC-%HEcP*^A# zyhj;9CL@$qtJMP3a^vZW#k!PUxRR`w?$t6G?>pNl^GRC;;I$S;4o}<}^c_1Sa3kC2 z;wHZKJypE4_f+u$23X}R?b)R=TcvovV5^ifD#e;v-D~|l^J1i3_jqmSQKCsf!M~D} zEZ_`TsG8{1zvQq|F0*HLWqEX-vnz`a*mpveP0xBubEo>AnvYyq?{Ovmt=e@}W->A7 zq#{`@nU`wF&c_@`{8q)}%FRQwnmS2Htsu%;Zg_J#NB*n_MnqdWY~y@!DcyDtlxv^{ ze&qkBL!Kjwt{;39-k8Ia3t#pwi3&5vX1W>1ydEewTD3_WK26iQvCamk3#jDHt}%F9 zcvlq4w)rS0QrWU0r5EU8%Tb<5NJqB|Lz4Uv+mKx3A=_AXW7~!>%{7gsY)qvoVj*_u zQbTH(>jAMqOSmk8s^t%ri=75vT zP{>v7iI$49Eyl-W>9+U4Wqzx&vml}xs%co&jA1Ie#4T2gbAzEy`5U87$xawdW6y8p zaUi$M3G$}$w4K^|9tjoMNPt2v_0W?3%Q%6Hs}~?JapYPc)&==*zR~g>%}yB&#nHMh zRRX3^D)+gN>pkWg9iG|RD!Z$n-s5?>%Q9Odzx{%_a zJpoDxf1Gqe9+NglVG@M;x{a9dm{TV5T^VMsZ{tu78q1*R%QOn0X=k++p~Y)c5x}^_ zsxTdoM6M4Ro}o%GE`pmZwK8lJvdUCC^%X+4%2@6#Tr8Bg{3v!*)0`{WGZaFPk8y?g zw91Q8e2tKjH+G%t4Hhpwyq5SO%U{9-=#uT=9@aKTn+nuAU^Zbe}8SrpiA z9d-Z(Z;WrO)f~?ZEvX#<6$X5u<691Zi45WEj~&e_9g}3-5TDJznu0Klqt1~FToi=J z5dqop?yj3G#n|3z;6(v3vSdE>=v_a@pS{gf-H^yjirauH>B*!DD_ z#JO+ZnJiTLwOCQ_U^q_HhFpfb%l$?oHsq7|j*rJ(5Ry;xJ5Qw9Nl=7S)pG3_*{rB3 zr8|{&b2AW@1i3BaE;S<(Lw%YwQ52813bqjkauv95V2FbUxvT3uTk;AW5{)O;kfxkE zt(;tCtA{6^2WBwD(t*q9rqU#;4+o`xo;H*PzNTL)WxSkB;s`34qhe(GCL^(|y!0bH z*0)Q@ZG2`)wR^y%rTvN#HugI+%1Y+sA}8`^=Dqev;O~`(Xxy*4O6(#}@4UI{+T2=> zgn?P+A_A60M31Lb@M(hE7D9~zStSMuK*Bjl>J$oaX=S)BdGNE4`P;>?lm2wdD+d3L zTrq@+sV7NcETFMjOB&Y1*i|hm{e(S~;`~(`A|BsSQ%xlpjPpsFv2IhNW@j4_{t(Co z6bZousnkAu$wA>8q(w=+h!3Ux)a{v)RXRx(=5Ip8hlGnw3cMnO=uQzSe3R}`TMaqq z$3)SV4axedsLpSd04bGfd8-x28vByCLgdk2@xrnQ%5lz#vb-0K#^(p|Hx7$`{@B0D zbCNP1bV5s);H_Lr)? z<@D8`S!vEnouQ;U(SLcB6K5N`F)1&mW5$P<%LRTGq4-7<#4O=^HH$jo25ao`A=EnEjD@7Qg79N-W5MVEUQ(=9Ju)iz;G;3G@+WOCLxnl z`az|_w|J4+w&G%;qeCm-U}CunLfJ@y`WldQSXY-ehGWYUwNl|Cp!w+&A6flPAz*ze zs|0n2)fwe2+N*-CT_}fRAkeq3o8wZGiDR=-X6nXRAVZ9Wr#_w`UmkbDAdny|pAG(A zthNE1n51Ypq|9O}X*+$-OG&pyiPsqxxl;AsnvO+`XAd;T$+7Z~p4Qd0G0zgIS>{?g z#jo~`s;_AyArp#9IE7X$P9nK}cCHt<4Hn#hkxI31eGtabdZXE>OX66O=o#YpCctJ5 z>e!k^p5wi2C3%mFj-+&?C#65ezV`D?dD|x<1|@T=7+>O|YH^@1NQds~+9~s{L2!-u zTN{2({H?jw$fB^^`K0AeE!5Vzdt#r>dKB}$x&(mEi?wJ^&}E)wLomRzyMajPwwb5I zoCBcbiGCVjh5fP5GE4n`F0Z4#@J;|JqM9gA?8En@O`mjlr! zj(lV$m`@A2`cH`~tLT@h+y>Uct~`$r(h*GQ&0-(qt*GmROF5IOScg7Cl!aujkd^ll z8+@5Cxr~wEvj_89Bwv*Y@|E>2R<}>y4z4dh+@4?l1Du@?Zf`!E-d=o^_p^!1nr>9Z z6g%=+rMH07tNuG-GaN#Ss=&C^i?!Ie=>G`*r86-7=KU-65>x99!&4*-3-0h=mcc5n zt&z~vpNv4?d{o{>2YN3yRPdn)hM>*_O;OyMhsMyE>*nP>&%#Yxru!3fJoa=^_oT}~ zGnb}I7#c0L`3QF5xEYe$w3)`2i3&8t#k1nx*?)nG*`au;DmWF#mQ;)>2|*ON;-{@& zh%rz-t;SG8BoY;JkQxXC>ZKu!IA|{frifz0lpMi<4n%N01u^zu7%_FuD$YR?Z7Aoa z1KULv@h;6U1i|=@GmtDI`=GL}8{nG4XNuXh4}^HFIj{%HFi_`GDy6#looBW&z%;H| ztCac@Z^^68bbBo++B|b-I&b1CnhyEg9mz8r-!X?<=64S?;_}L8jW26}_<&-6?4gR! zc~GH1)iv4VL0mhm)Zcp)FkV4J)%VOPz!J`t7zkUCP$%lzMUdj(V~I`p#so9x&(tdX zlgOT{d}uh^aG8&MqUD}dZ)e6^$Q@H?16Hl-Fb)0D`52iy$vJv0KLJg zcvUJguY_FKIPGg(lCifJOl_fYPwH425p$uUjPcSYb_3tKaM8SbkJv+I z2wjwkphKZ{yM`bnGGDV?Xk@w!SA_S%5uYG@2UCj(1rsY!Nxd*W6 zv${1Ex!`r=(-Kx3@y&qlekjVX-i`Ob|XEjbyY>} z+?p7Kvp4kY96ZS<+jC7+Hy%T)dAo7rk)?X4ziE9MgF5Czh9o=y4>06< zz=1p-Gn6|3E*eJT1Hi)gAju=+OAfgwCwc;dv{6;AaHl8gRNoV0ZTUaPYu*5<%i(G7 z@GyBAto(0dbIzfXFArgW?@S>4;hudHz-eZ)Or%G!mm_hhu&}bpqfdFxqRu@NJ`%$4 zAak-KFyN!WH*#qil@rZ42jU! zzr=d25?>`J+72?x-%;rU!V}R%PHPRnPu%zNQ&LD((^C0W{&$2zj8aGK^0dl)N_eN4 zOMQazodcZ-x|?8jC%7o-_Lfa~m`WO@oZ8FkuBLl5FPqh02;%z7ZxWI6exfpe%c~F0 zFV9bJwc3BDHJ;b|Tx4~jNU3lDXf%C2K`^)*diRv0yblh!Op$r}f2WFu2)g?Mmgpn+ z>E`-9SIflRPvnj-4R=gfoBopQzvYt}zvRrIa7upwLN()ZGbmr4ygk1x=M+fBgxeuZ zu2KKgAL;59*?|SkzB~Ew?tE#Zr+m=C1T$a_`X10Wk=SVvt8@z`PJhet!TAbqmygXsk+>n7;cq_`s6M#eOfpVE+!2x3* z-28OfY&MU9JpQl@57{7k;j=0*5#5VJpg7TFR|LPS0nuY6f0`T9O$&0N1OqY9`7Eyn z@G9wbvzN*wX#$RnN0Bz1X{Yl<+L(B*44UyKOqLR5XgzDpix)ko~`uNKwQpx+TP_D~OuX;JeoqD)qw!C$m_0O0RJ#U2ab+TzrV*;a)l*$H-3(g6FFx(Mblej^Y4e@VFY0i^^a z-wF(R3qZx`1O`k<9tnuaDBPS+864#60i?I&9wobGj)bn#83e6y>w%$1hUN?QCn&`1 zr;tp==%1XWVjJYRE$CnlLC5##JU(PfXFs%Vzp>o!7MfJmI+C@lsss`F;Td30T+pR` zb(};Rrzp@C1#f-;C^0W>e_AVvq^0hBgNw)?dKJl8Ms{n(_pw&QafI$$wG`y*U@pYo zyrR|-zQSN{4j=r);pg`oWf}+Rq*i#u>v7-iN*mqR^vUF9{-Xzn!|HPsLgB!WxtSbAwz=V`q)|iZ`Q(i+_06 zb8_)=>Ne7t?akjk_4;pTFn^M}OFoP6s$d&|{~7;!O4@Ceal z_VElN>hf08ZM`JrN+60F>JFy$>7gp-QY7Q>s|t%Ql~*Sjd}fj<63FY39zgLIGIF&N9J*gzz~T<)+JH!Ht@tY|HJqFNT2>god<#* z${0@j7RWL_W;SaSZx0UYPH}ZV`eE4HYC(oB=MiGmV@@gi2=|Xw5t6U%85MXihyqY@7 z9BCLSdH;j(Yu6zhr5_K!d?|hYTv4eNL76$#S-mQGu_~IY+CelGRs2=b?HBak@I4#* zaS1#!ca=*xv}!YNvbwwrI}h-iHKEwoc&DyI&(>FqlxhC(M{pAGbv)xvp74a$F$Nxi zE(L;w3i-HL?~NIr#Wby&I%QA={}D!IaT|I}6Hdw)vVCv(E0agA_Xdm+i-~1EqzRg+ ze#h%kUQd^=2E-i%$cfRS$uO!6CaH_l1>6awed$S}Lr!~dlpQOsB=2T_MQ6^HIIH7- zsmtwqZ_KFa5Qx-G>v7@KDCU>Z-aT=dLQLOCzriH5yxZsty3d)&&2o_Lhs7=nc~hry zPxnq>tv+U{RS2hO+>?;XNoFZ8hAsrWzJ3{K?DkG%ZEf}FBq_PjENE<%O$=<6DsxF@Cl(qIP1&Q0t{x2Ezqx!2^ zOHN1Ld=O%vjX?QNvx?o!>->ey!$TS3QWXcG)luYm{I4>o?x(nS=Ja{PtMF}AL?GE8 z1kN@*wT|2!fLG$Go!*-i(W>&gvm&m1jeQq=l9j9SdcE4d$@o+TuU+ggN%(S1pEAdz zY&x^QBKzhIrvT3vT8{kOwzHF}=Uk}K0}{`T{n#U6Z%0!{?znOnXNSbeMS5mLagJeP$i+~ zZ-2rbqI1g7RDVbQtXH!3T@|&ycsJLD5=ss9T~l2M4e>9bp8{1lRp`r?UgD)J`ycRI zM3|{l0f=iG)}}Us*aKyCp_@)B!T}yi06L3+nt6GVrK@ay!iKew5T>Xi;Qax3H525E zJA7|?IkS6~*YKAwB^h2HgDh^Im*h1nf~)dCi;v|>MTj^2&nGc|S+!IMAdZO#|1k&l z<->Biw=caqKmSv-|LZ{JCvX1C_y2mQo8JFx?M8dI|8L`Y#{FNj(Bj=+B?{r&Mg<%W zv41Es%T++d5&uvRp#Wfigni8B%Y_AdJIUME&4EYm7A(J}cT3$9wO4Lu#{BYUMuu<)dvauF4tf1@mHeWiVJ zv-{KX_1|Fk*yVre`d_cN)9Zh;+t{uD+jzd(^B>K2Yo7iTPwbaEbjjNWzt$s{nCJ@+ zTz00n@8&65|7U?OM1Pq>{qbx656jp8TDz7y|F3sj&H8Tr-^OF)f0guegvUbaQ^{A2 z;4c$IuC{c~0)4H^6b5-RzY7`c71}L$b=7<|3Z&2#1ywrff&Wy@lE#-%ANwws|5|Ce zXeHP#dGIB4{?}UYzn?{K;rv&r&`+Oe0a!Bso3)JoU$5=-|Lr_x{;RRxknYdtnS!`j z{ZFads*X^!jjmtd*u&ef1 zrNFi~v^z&nu^s5&?|-?vJ~O`t{}|l8zdrkLd0vv%1pv;j26w-lpZD*sPTrpn&Tl@R z-}FG4_+|d>`j-Da8kH9fUYw~|kH;&WiP%?}h`HGM+Hwgv_|vQ$!x9Joik4iSJ-s-) zDfmifj`+HtR_}B0%1xGRdy8eT%tJC$sA@HC>GJF0(OHDYtn+A00Ql+R=KR-_%S$te z`o-P#hugQ;AFj^s1|QyDo!<_WaVHHmZLTnL%Z993LN!}#k`V;(XR)=2Phd5d^JcQW z^Dj4hDd;a^@v5w8^5T-&W2{|^X{&8bI!W?sB>t{spWU-W{!{mTJh%MUZ8tOW-%kJA z&hw1&pW>di%Cr8gM$8B=|&FrH&AT?9y8+{fQGC9=*9LpEHK8uGzq`yXW{%e7fe1)16(ryTkUSz|D)cl*LL%N8;_a)x9Q77H=qF;{#i>0 zESqY|-|qX<1CvgV5e*N;#Z1Ee(U59L2+PwL7my()xVZ#ZAscI%^;#{hXxgtV<)esVZvuBgw8$o$JNrWTz<3enM{7ycZ~j-0q8xzIW67$}qaj zPRil8gS!ud^P55cWF;su)2E@FoSvTdZ|}~o2CE=rE``o&1%)ztT)p^0XM>J8QTh4y zwtv^Zx&He`~TJIyZGO& zJVySPV+~>Q0c7!l#zL7hN*Xmk<;wlB$^6wr(iu#aEgww|&mud@& zt|Rh2WHbwTZ=vx;ED`I1h*_X+7pJA{?GaM;RFQ!)UuC)0?RLv0%+NH}MV7iQR^+`C z!hf-(BXZ@hoFj%6ycHEd<+5l%>fhE%lf6*9q8eZlF0gUsTIB6Cdty`tOG_?zqg$l}j*Uq>sWW7P)SdiCLBU z>rBXlZ+^-9GNljSICkiJk!c;%b0hN_jELu=aP!k!!rj6~vM#F#ylkm(Q|$27E$uN6 zNOOu&P}HEWJEW$5p1n{GhG^&vhZ`q`X*-7`S&PRq4P&+b#@uJQciL>M)|tweFEV)T zE!T*|N3H{1^I4Y6AclU+?fg7Ip!|SCG>%~CmXin2ra|5wV$NZ*U|!3=>JoPIVpU#( zgYq|8gn?ZoukClrWyx+ip+CpqzOSH-4L*zYKR#MdRQ{Ihf8B1Qoj(6<*19|WZyQfh z{4ZZnUL@{UFLPQp<;C=6GUdYM#7YC2FV89wBwlQi0l>4s&z^k8*Otpo|v9ghp%bBX#H8A$LTBw3pTI(_;bP)}s;82vY!UyB)Kc_HA z6ViNGg_c%K;X-o8K$lT8E?JJv0p&ahk0z|8H9ST0TY+&Etu0A9m)ODbko6qZc?E(8 zR?K=4!ENLce4GW5Pw~q3csa$x#dK8#*CVW9w#6$$40>JC#@w6(WEJ8r(`y#dPD=gD zNhiy#M>(zTEhJnFcwM?_@HrrsQ0?$XaPHG6G0deJJm3X8wp4z!3 zvWYH)@2i#VqR7N>khzgZeX?unR|0<584 zIYmc7wCbxo23wS=V~uPb)oi5|b94v+DYx;@c`3tVRjh0&)hm(k@JH~|#oynb$2ZZ9 zF`Gm~PP{xXfkRAbgy`W>{pcv3=b7G_iAUUPanCOWWpUp+SF@9z4dT|da$aim^#(WB z5$Wq3UVD%pGsr5Q;hAPhPE60&Nyf*|63gcCEF?7WzdIr>ktfz&g3^0RzGZQ_j1hY= z;dR6e3)O{^Mgsg=!iK3SoTkbJpcas}$ndy^{=d-vV_5ZB{ePRSZ2V`lx%2yH@&Dvx@y`8<|6$wJQ~5B(6&u!qLzoUbD4!Zv-bwAgX>1$g+tZ(Wpv;L?E{ykUrPGo8Wi#nWz%#@SwpNQBY!$^0#$>rW z|NH6XhqLputMl7muWx=C++FlPw(^sJ%v$L*AZx{1T1PkET(IR5f^`ZVkMl{fB(3Z& ze)8*xpZwOJjQl6A=-F86NAWC?{~Fy!Eq(si>g>+{w((m@~obu5JO2Xq`py$bG z6wM)gS6_I$lXXg?E{qBZVW;d9*K*6!+v^N6SO%}+AHwCPqzd)`7fAUJA%&t(;`&x$ zK@>NAmEwAQHp?5+c@?od>7s^#OY!~Pypa4mw^-sLo6pOrvL1~H@bQ7fKn?VdlZxYGA7cz~9hgA)-YAWRLj_yhk3xTo&J&)@c zWy8;9E1SnFHSk=7n?{tqN8uQO*EZ&=MC{$iaoAsU^_;;Rdfug|ZDAT44fglbQ5~zm zlt=N4Na5)w^;&U#aZ1x%pBbCy7tqQs_DF)A#2~gxHJE7E`jw)ey&SAU z#4le=bh}VG0}s4bB8E*lSFCqde-qM&vU}a~HJ5jff4~$>P$=)jc3l90j~;->mj$DX zKUPR7-2X%3|C0NsWnKL8(9Y2LW;(!S5X1I*!oIEgRz7d4S5G91ypxUtP&7maP$?6B3Ho`+0LEIlx<6YxHBU zIW{8pw5c~h4yyJsu>F431xYjNf`w_tkzIX!S6Re1-YELSQ0PPN!e=NPK?n7To512x z3(5208>G-%w9?1V3$6M3$*lc0UaK*)^;&NWc99jf2eA%3YBYI|Y$R*Xoid?>0OO)pne1I-k82}RH} z{zO#}1_6yVK|_LXK^HX0?zF+30IEP$zc%qS$`Us@3ORK3brJ`lV(^ej-|C_=7 zz6}5|Pp@bJuzK^ETqh=*Wj1=v{uzGf?c;nbZOU}px{nE`fYfDN$Z z&J3_K1Av_wVD~)NQ>6bR-wg=fg!aEe{8uY;|6jAc)Bm^fsH|0Tus5OoYsT50?oVaP zAffyp$V-$&!peLjfJ!i=ECwqY0^&|t%GI;PS?Qsm--2?kk=?20JJo!298#@&++k#w_Zs&o#rQO~NtWVYjBp3ZzE1eXypjILQiv8h@ z2v$wJdX?>h&Ul;_UR+EaGDG3KdVfT#m>g!L89}XYNumLAe7{Dy#!B9&8Z6&OLlpXm zAwhjL3o3rbgeT~`laT%h5|TBQzoFh<_(OgI=GwClMneFXi*x|K6%)@;~xdJNa)5kIMgO33oz@LKHv>AQ*ZP z5-HI{cCMHyL;`bY*h0xrRLWd1M8F9VWXLT=R9veq65Vi410EiRFq|(-BPpe=NdOZj z7nvmdif?0uiCp=LA>~6M6I4f$=gFhFqIm2 z0_iVk4yvFmZ@iNQlXoMDeWz-FH-KVQQ@8fU%KDq#T2mYCB!HJjxKR+aFq15HlH8JY zS$hjkb`1J1c&&P;aVv8oUe8b%Vwa0p8jAfoDXMA`zp>KuRYZC|{bd0RYg0@MuEko6 zl`NA}xf<8v+RK+OO1}L$f0ZndbTzU$60XTw7w3nHWf}8v?2#e#3d-Cdky)>LWxg(z zUE_g&s?7R)!qWC-%M_n)M5cUB`aG8uS+RUz1Yh5Z)%OOCRQ}i;7c>4|P7QG*wq#qm zYX5?L*COWYf~hChTCVShgezszH=zp5X=*&565#E*U~Lnk(iHnQDDbcYX`-g}-l|?# zmEfoRO7VNEQd3nzEX0mQU#^WO@I38*_`tA-e-|UsN1=m!2FFNuuL9)thBt_kD0Glo z+(Y#=~ zuKEwxAF)J?}Z%fO;~;v-+X1B->QQv+IUSLHg4Ue zGe;L$u<4t*m$(w?soqy9$=oL_mdtHiDE1i|hf1E9Meekdg{@jYSRHa?DEY zCIp{?W|#W!YGPZRs5&TQ@1YOJi_Le1RA0r-Kd)UDLNvnnTWxbfrYL~p$JottgAG)o zbnK5arvYjfehcRS3e~Uj0AOdf|9;K(iI{`rL7tktVvmkhoAg^TPsCx~qN=7Z>GlB# zBM({Vs_O+N>BGngp^U~-KK~gvJrSQ%t?*~USP;wn0b~=JPOqdI6c@t2np8!Z;v`eA zf+|tw9(|mfE}PnV-{^r=raZCMlmim7G7v```6;bZiJ^F(1AR%p=yM=Y&FOR8S92I6 zG6Sm`>Eqmfh(`ERdA|_S5IXnBcYCQ$s#Cx8YkP%NB(Rp(}w8M1phG0XI#LI zhoiD=cID7pUuy?>e>i5m*EYE&VRaJvNRmaYpZs-*@-Fqa(dS^7(2J$%#XOoeTE{d? z-0=eJTh^*pp-cdW^-Z}lB+93J89?gRKVH~@9y&!KTLRk}PElpWK`m@II~gipzNie~ z*Jsx~@Zr|JNplHGPesOyC_~|CjMIwLuzFDucYubKKXDaMjYJMyJt7%w;$=27mF%{Q zW=UqtV#)cLnn}5f?6QUIyRsq`*?%^b`~8O%^1rvb>HL4~<}Ux=b{?_RY$*5p*O&Kw z^_=f7l<$4xx!%8#Jny?4?>pW4E05>jWPbNuAp9;6eisP;6qeit!tVm%!7dPf<4=+P zH;wo(`Qu;Fa6-uascj%yS20``|J7`!?*D2uT8-WL|5hHM>%Ctv*qcxc7ctYz-V(Z~ z=Zh~6T~>3IyF{14$iH56S*>L^jxMaf_9di?$M(7IC57%3Q~qa&#+WjNeEPt7QBS`G zEm`5c)0B6b@>VtF2g!Hlu5@KlSFh6tI=XbyS+rO#Q%tS9W_}y^+1};|V>v_rorz{! zd5Yve<;HWu7<496nbse@pZKbh_#IuSTP_yZ?17j}Ymu>}7 zd<%lv!eJ{C*Pbqar9_l(R~p-pWVID~Y~e&gPx2I>tNH#PK!1w}L(gJ;TC)H5iHDu} zv*!P)H#_Zg{=aUkw#)ysl}E&XzfDAWTlN-6Z^6 z{X!BZ9SFAq7sIIqxHPqDoB2>(7Wxb3233RPz zyy#)MqeBW?%a`RSHJ)3?Hic@rT!5TPQPOgu*_%lTV9E>i2@a6<1e%a{>Q|J z{WHbj1+dTpQ0E%bYM>Nal|>*mb_XDazDV%Ml1f6Cz~$d5TX0Uf3ScB11W;upB_~j^ zN{=A#W#S7ChS@I$u__MUdc?Ue{!(?Y8>Zzi4)hIRVPs__P~~I)171;V;z>}24WUmC z3KG#T@=cx_`hrTr552nBFK691NsNVP2V!xhT4COySZEn^T{EbySrxqY+(;|bV z^>I~HZFrBs_YwSKivp{0j#VSeGntQzxP`AtKD8*9l3D=B?nsrwLIopNgzlIN9F~eTXOTlvL$?xTYpFGZOQ%TgUv(!_`(+|pHh(Wml&lDmF|(bC z(74@(w%gEl8`^F|`#LtX-G25R?`Io7?@2#J=RW}oDW(kh>?84_>65O2SQh`;t*8Be zYxVlh|6?nU@aX8L2741OAHnQpJv;gz7rSrB@2mJ|$dW-wW|%KAD3m3w7l09wN;9UBaM|+wf+vT=n%_R1bS^3_N{eGJ>8rgwDOfl(+BP$kN%YV)xj0 zFDNKue+E6AN`xTWNF^3i4Zq1LS*%^W3X$VMJXJ@2y*EHa3x#t~mZ*t)t3AX}*|cC+ z4`$AQkIRbP6=hSW3yFBN_teU*nBwldc%5a{X-1cJp z&3XaB06Lh>Wj)GB2*+xg=?N{3{i&&WW3NWCd~$&jwG_N$qOkn=3mpeh`kuIUBCujA z1~aE>Re73cUA*o9*}HPC?{|_@tzJw?O(sVX2{QSK5)iVw8wprd7>r`& zERp8vO`Q3L7rjSw%ZpvSFJMS{`dFR9dvxKm>+p(@plr3bZ^20_DhW-|q<>2_4pvfb z@_wZ#OgVcyNoRj?T2-dgVL7L0bxPcf0j!Xl6rWbWj|Ibz)q22|=bu$AKcusu@UlqGylQI)aORHEa|HxQsW6TM=w}=M7X1JF z#04?lKv8WMrun_7Ki`JppeG4UoD5_P`#Cb46H!K{m$oM{c*d+X1uf^~2g!E3vqW&s z9?z)v51m_{P;av2(l!pjlKSmGjof}qDH^FDFUXIP}$wRP~~ z?*_B#f>xj7Fld4N|DO1mk;h&6n0S`S|Mglceg8|Ry^H_Z%ClTJoJux$o>-n3{+fY2 zamCF<@u-WtHW9xQqqa)$PF(thB6m_lkPX{O6?o387UQOhZd~k}b*Vs4NMW0!CcI3j zPKGP~5OF%IN&5M7U>BnUz`w~*47j*qF?AloSu-R3e@=Qo(wx|sydWOBD1s+zX3kOk zcab`qmFAxksgsf4<+%}Y-^*R@Jid8-5mT6()^oVx*&UO1&sLs7`9H)Y#B46iz|R{0 zUu!n&-E{nav%B;E+R7vC|7x(s*l)!0Zv%W`o4<|95^I0D=t_3}WTn+i?n&}&%$-UV zlA^0}AxeiJtn4q9fRb{XO1AK(xZZNbfI1W8Mqb{1fqi=o`X-JA6vA=}?al*s=K)(i z4-jHoW?D#R73+F)xk2#?L5R>aNLeA1ZdJ(wsf+6Pw@dPXLe2QX>Y7*pB*^5N@a0R% zMbrtgfShU6`ewIxMS%TfjAzI%??lljKE?7MnIbkp5xt4LCwc!bxBoUW_dj*p?VbF$ zm1n7>qS+vfJoHR9;6xki+JO_5zdl=V0=<>&!HF6#WfRU0Nse7OTj*JB!-?h!?Zb(6 ztH?&2#r*5B6X$Wv&Q@GNpPjupX)hj!Bnq-_&YU|Bz$@|fW4wmS(#fFZ1v8`~vY{oe z-?VOvPAsT)Q&mwY5#lLLj?&t=>di03@S*Es>GHOjmU4cYD{XVA7&re2dg4*CFN(ZE zXwH4D%<#MbcGWAJNZCqs&SwsIJ-^9*soad7VwLV=B0dq{}4LJV*WX3a3*Z!wNn zOzm&NmYxm-1OoM)QT@9ys&mmdJ%ts<&k$z(ZJ6*^yQ5eK9C9IzKK_p4OvvF*y#B*I zMe=_*gd0-;mdO9@b~AndL%Y@5#eZ()5t9AQ+mq8xi2IyrURK^0Y`ak4*Ckew_;p#w zizq|kuh>PFFs=#!OmzY9fL#Pg2z(;qH>E8`_Dk47QgCS`x}?Q&^($FwC23p|{<(rS z1tKtF6B6Rz^KaVx{5j5nb1I2(Lp)RlW%*Ac1T3Z|D7Z3&_%oM8u@I1Y*YyyPH{U5i$0T_O8N zR-X&?KN7Jgx_y~viT>BEH9KkjuhZ%7^uKL9;{Lx|TgwA{QX&c<1rQ7qHv@8w@P;#n zx)G29Hh~Pl5CJDdkRi9k*G+XkAz2G}co@QPUR~+>K*4rp6YZYk@Fhx^0!y8|3S7Km zD8=qwp9@0oV-+i6E4g%uf~$IRZOFH7GwxtXWU?+`=2IbzG!Z2+e!;$LQ-NpLeC0WQ!BCa{qh5+B)f zqx|lse=29de&$;|JF?$yPm4cY4vIc~I5V~4VI4v2f!BH%uLuJWh&Ul2S5Gl%U;l~j zmn~TPiE%S-nNow&?G-9)hGV}PcT9Vc|3i3TuBe)2_Oxg4zRc5#w(X0#&Y@iZL*%m? zG%C1YDE=P12#%%B_W5(X`4ui4W#zFMJIa~KWh%dumCHcxsivfvV|CWJE42?^KyOfYvr;X>cZB2Q}bBViXza;4>=Sph@n z+#}!BJZzV*THhA(uVGU~-UZyMcGF^RHEVZ{^stck7A^XDOvD9%MJ;ksLr4ko&X>62 z1H$7;vT7Yv<=X`g#dri>qu&a*^#n&s{YB)Oh&e(1OnUm}utrY)ygaOOJZ!%e6UOd& z!c%1bp~wlJkn%b4Ec5?uwlewOYW4Qc{Gm_E*=hLN z!<3~~qRgrx?F@R7t+A#F9GFL|j?x?wIV{A{Xme)S~5r~5+&U^e5 zreK0X5itW@7eL^n2jKA?QEZXL2R1J)V|~p}vHUL$zeEGEnJM59FU|GRPymO44d3N>-82yOh4NS?+`Kk~LW_ z2niz&@$AFpvVD_UdBRv=rGzmOeu6;icK1rglvc^VV%(gs^2+6jqN6xbBMG(Zl99%l?GV@iqW{F8A1@?;`e^Yfx_o&O#F2=sd(%&mv zGDO}S5MP{X2gKFq-xjawY=cHl(_EiG&ko8|N9ujz0>wi^$mcTgm6EK|2)|Z0=fWXH zzEq+y+t+Pp81bdA0@2oPC2psV6v6Unj^Z*P*{ZawI7DoH2U&-=Pf=$;Dc6z&4Wj-&<`}^7Ht2z6P@vFS(msgy@r7Ri6 zGJvVto3g|MkUk*KOENs?CVLr4WwBa}V)2raiOjTFoQWjW26nDLgk|#(qy23dH`I*% zN~{}J7M1L?3j9Z2B4i|>WCn6Oc-_87XlIStWRP^OYJW+f`xbi8cTkv|z6-*Jl}^Wz z@h;yc@OZ>5Szz5MT0ZpJWCW}A5N9DoBYeLi;*Y@Z8?b$)gTxE?qhM`cPGb&SJN@(8 zo4m|+sln7fNc1l$f74t8iv1NjUu#xmbDKZQv>*Sh<3vZ=aHvZ3Wm7>vw zk^)e{ef0%CH_LbXB3^$LQ8e(B-+01Wpr93}LNYZ|`hj`>W^wTx)kQKu0pLYOLw(VV zsJEHvSj#ZU`sh3dCeL<}`y-zv_J0+b_pJH98{K+3|3|l7Ywqm-+jtW8e>K`0JO?O_ z?A)qDP=c42I0mK5uI3<=sTDEup8vQd_b8ddZz^bPoknP~GhWoB4_W7E!jSp7Qh=n5 zH>$yJ$cCet`>V0#>}(@{08f=KUrKx>5K}%mb=10$nl6h9TQrrYZJUrBmhArsEn$l7o4Ui1IQ4r@0*Shlo5~P2MP;AG`ZM{!sTtTNx7`duOx) zv9Wuj(+L<-?_cu%=zqM}I$0q5RJvL!-!}8wdhiBL8=q-HiRO*4^cQ z+R7vCe`>G?n+XDRQQ(pJ6m7}wCyL77GU|?zBJbb0pR3x};%Tt);JV^f{(*$|9)Ygi z{72|vR|o}$sEY`hma$4mP5t2;fks zyVVNj(;eLMpsu=`?+g#Ar&#}wZw-8^0bq&#-|RHf`JcP>&hGxttvpi47x83M7;MDz zM{BS<#wclV;=5#L)A|!$;zse+r%*5`ZWs=^Has4ZT@ffB6}p-ZIiRgbb{8Xx&>rcJ_gtec;*c13^e;nDa0S zGwf)6)51sQ*4F@raEcfTg@b(jtEV!cT%TR{>}YBgI)8rvUd_Z}ker$`=!uCRc>KGe zfT|8&-GeV*7Fh4(Az5__@6mQx@i5H<#h_#G>{soP;U7cc)-GDR-+vQ8O40YZx$BB`ICd8=_$aS6T98p9;k`kkP)DK2zkA6@sBGbCz!w9`kk3BGC$F{_ zdtm_^wXEO8qBc`~x9&L1-OuaINFv+^Ua|?Vjtf7*mx#Ixl-O9%YiKT5GhanmQJaLB7c^4^}t_ zUQgiMoeTd_%!zMo$oWmA~XN9NLrX$(&X?^xAFu%7k6{x9n?K4glG7uS<_Y-Em#2uYG zfo`);f&Ay7kX5G8hhr2T-dPvfJVppymj9z$OWpt1s5jfY^WUvJQns@$D%ybDm$)YB zCFMPvZx_mWse-G>cd07N41RX;jJ0oxK$y8o?>Q`e_KZ&mTo!YD3+6qJE_g5dVdK6t z^nK$3;J0e%lQ%kEEuJl|FKl_~^VLcEWOYI)vu@wk;?t{1k;Ie;AW>J!{etGQ6VMxz z5VOg&2hLB=1}9Ra#=oN;XtX=xSE#zJWyuro0nTX&08D9w!W%S_pv-EJmQSt4>q1mX zxz_1x!F9rNQAWI1SBs|>rhL1m)r!39PDh652uk~1Jc27M1ci{dutaP=Qfv-7u5E0g1}ZJ^mAxCMe@HNj1TXI(7BI-=g$Ap>}JmYJKe_4{=1cD znds>U1iC-LG#4=d@6cusdL5-1c3K%uHos7kVdk(Q1( zB?BmF5$E^^9(c~)LG>3JfHsjf^zeieH^K&wR;XhYq%a$hVE}dy_BySaP)x)FzlAt^ zdHo9f%m<)jQ16X^YtRqf|3eEh*d)*DL&oFS@s|7`I2CX+sQX4B-mrF+AWlHJmzZC) z{`xwg>q_YUA9gUsRw8T_jcR~NLbU^W-ws@Lq`P`x9^&brZMszU(W5fv2$Mkp@yC?& z30-UC04fwlZ9RQkUC~%vj-n(xC9>f-;=6c%+2U})oVI^fEpj=!qh}VbwM03`Ol7KO zwk=5jtd;*nlTUm9dv|+#XWzO1y|=xV|5ov|k^jUrSh4^pLP%$GhLGNHTU}Jlt5|H` zMC23Z5KHE}$P$u-Y4T54mDV}AhegJ(Z5^M00QLLEuq7ELVHWWi+Iq^WjS-63I0Upn z9HuCPMope^S;SSQV!JQtbDUsWN*u5L-!Uu_-jq`^8e@V+S_zh!*lF)}oWtTRhK1)g z`$m#o7l;ZV{w4}I#_;<0GhfxbfGG;&*U5bmR$=fMrni*RR2&nNtuh1mBqFS=9>{xv zx_Oa|!eaV1k3#})Nf8n_n6l9sXPA;?l3*AIl~vwAGDI;S&c}pALo~70Z;A%5;RLeF z!a?544upTq+z;j?Nl^W14njeZg{?q)oGJj7adm;iA=dAna*VD z^@))#!k!Md1m)ngOoIJcokHfNzxuBC_hb8{id0Lm%hW&4K@p^@!qb% z`xVS!5gKTFVj0+p8Q7Z|g4EF2zo!_`{YCuE&C;6Kj;h-d1?Fl=?PLac^|pTYX!1<` zK&WEIl}5)+vd6`iYZME}W{!NH9ChMWG8(ZDT0D(<#V)61zi@U^QN0!io;1aj;jGro zkL{ACs5MPRoH3R9%tc+}lPYI}CN@$4r%Xt(mar{a`kAB`QVr6VbZNc`lZ?QOG63*L zlEvuJ!*g(-~hgGLPK-hP_r6ter-2dZK}rea(zJ5}>pIPKz6{n3@D`S!U|l=Q%r zI-Lu8M*FtV&zn7>93$~JHFlR~g-UBTANXS?+SJ>$P099$HER1!y9G*9G2BI%#iwaL z3@^tcaA12ZOS)=;BcCL?BQ47S}{%UVRbDNSI`>=oOG(nw=-KvYZaqI#eLrCvFpa zIj@jUBGcKfg%L$nWIh{|U9-c4pf{jRZ4D3?GSfINl5Y=NToqUT< zm*~{T{!aQH9hQA9m1Ir?TdUQ1vt1VeuM*0u`1Mm$HL&zex%cWXd9bfHVea7*b^*vDQ%dKhCPPzMS`1rdT>Qr2{8(L89Bm1dE2P2d>JM-l=mv39 z=MOsScuJeDTouuX5m2o&FzBU|^aN}wM=#u^;!^iH?mnlIf;u4dW}uMWa^w4JA@eD- zF9q{V3n4(C2Pi~Sk z1#{{6eqP_2{Fi=e{eNn*6^Hws-CPkB3JGyKDcSRXm?t`2X-}uoC}o-jw72 zjl28}E*Owrg&~9^9jG7RiR`cW+`1QBi)^HFpeI zB>150^VUybNJx&4x3;1bjbl0~Ca}xrO^l-P2xgpOTRXj-gRKZ<8I0&}CITnfVC(-= zh;@yS_FW`WjR>Y*VRe`28sT$5qtP8sUxLKlIX^uHZD|Nrjx!T#Y||69e=M*maO;Cr|T%#iulz7BjV$76jlczrSWn_mpp zr`}6@+Tk%~{$v#~Mm<*v*!t$PUR1Vk5=fXQ{(3$6y~a5IWGZoqTZN~kRGnq&xA`ce zs@t?F;Z{+nEU}P6ert*be};?R9=2Jjqpz=gudjSRd0;RxADv02u`*Fa949j(UOi?k z?iMUy7S&bu71#CTj2#$r=N-xK1zGh0y60_h4VY)vfjQv#h5=|C_)R7Dz^b z5{^NyQ8Y*P&*u2AdwWNA{?EOgowfeAiie49LN4W_oQhFiN(KNnje1`A-!?R?7p3|j zv6WTYgo~}L+!Q$0Uvc(?QMDt{eWIYUqE$CAki}8{41s0+q+3UoT}PGu7Q!P-Egx6q zoR8(D2mcj-0#fKnC|v)`-Sdt7MO#JG8u{%g#zfGwkoiOaY#I1)DN40N9vx zDo;54j+iyb3E^g%Mc1%M-|!|k7Jlcf?A#rKG1w(u*)pogRk+DE=MVaVcAMywB=mnT#>?vVqF#=cAoL8o-8jcl8n7?}&%b!8sdVhUc1q2}Yre?yq&u)td%U^aO<&f(b*Mh}Z!0dA20b`JJ-ZTsK;?!j9A zTgAf#J37YTJez<%D!|Kep0fOGbIX2w4rw8Z^tm*P)CU3{hbRCW{0|Y4Wa9x&8RMKo zAY?`PZ@}E72?FeMm)le2VQSK;4~rnRBJOLdp;DpJrA;!h0(yGlhrSy!Ohbs_qm z{;NZa$2p`!Pxs$}6{|?}L(p5RmGsMs`aw=VOwux(%b6qy=+fDh6et_fz3g|9y8yg< zj^BeMHxusKgQ!pCF1*5>r8~PIXX8f5ax8 z3UcyV^HLD!&$qi&^Zx-P*Qg*jbZdT6{=av)=bZoSAFa=SR`M|Begnz4$S`<~9w8aB;8KGw;mOEkzVlfs(Y~ViFP=!h*pG0dE!+ zB^(zL35x+Fx3Z)at!(QjaGJ$z<|Y`ZZfNinMEJ21s6RNFC)}B8z>3mst1SA3U7eab z9Wqq*Kf!7TydM+U9TB0_+Z$6&_sTmsd0`$+0hg3-)sHotCr;afiGHZA+IT4w>^>=zs z?<6ChW~~9xut5db%n;EyK`%v*9k7`a(Ph~RgWVA?RY~#M?yDmwm5he7m6~49j4)+b z9k4lQfiW#Q2g;l!&Wf`=&l_jHPt+{2_yP#}KNw}-!az|g|J{mZN;kR%B*5nLA4mQ> zI^0{!f2(+SWFon#gIACMIqFotS%yGoP9)Ap=Za)VmqeYQCS7iLZ(7TK4JRkfU0Igs zCJOPB23A1)X|j#D+!U=_zV6YzEB$Djj|9YT0>6YXKSTLcSOF}#?-3ObEGb5><80@G zYfEq@S2QgG&oSth6O0Nf+ysCb5Fx|_iUz$-qby-IZfyMXAt4~NMPlnG@W(JoA$Ww~ zAw!RR3MwhEU!V~%hv5ZCA^8htdr?9F{FJ9jl#q1FAl@P+EJtAm3UzajExkA?U_{dC z3#y8YLJ|%6B@s9bCkYxCbZUoc1yFc&PM|Tda8UB%W{B~41ThH47)p^b=$N9pv3JU0 z4pb)tGns~zSPcarLpBDb(E5VXj^m*(U|M2~lWf4XOChByEmJ{1O);YIGsrcxh;8G2 zRDjVqB}tyj$_d1PY7Z|!Lg}xJM<{~;aUE7o^U_<}B!v)BbHqX$GbuIp=}8Ju*HKM! z6nmzr`MpLauUxkb6}tlC?!=mu*qmc@(nOCQ3Jq;vTD)ofFcd)Z-$NxFpTgQK0$x|o)$=A!3 z0R_|_MGmyOvr<_Q>uoP851PQ*$b@nasS*iIi0vgZ33n-?p@GC4;-L?jwTM_JBAUbg zjl@K(^R6cm6=e$zlAJWW0=#w;+z8!arYw!p;7?1GDo zu=VvTOh=4K+(Q5pGGyn)-)Q<3R_9a5?6mut1arjnkNI z!uQNUX95cXW5pu~Vh1JRAWSk4V$PKwlQadG6iE(J7{+v~pulk1NwpQGkKq){b8yBX0~j!AGK>f;dUT_Hr2B=~x9KBV0Az?TyFh5BmJKu6 z7v>B5Yl!(pp{u?icn55z2__&&G7_-=AMOVr5JU_*9a&wb>c8d}vxDsbY>F|X9E>|r zcFOXi8<_RMEeXDW6g|R%RWRg6S+YE!a?UNaa%+#w@9S~+f12EHeIU_?D9pqABuz*H z@q!s(n)v_W?vc&^*YTfL^yoqn^X$p<0_6n@@m5~pU?Q@XpT6Gd#h5xdibeXkUI|a% zNSNAX=9ohTM3_R`n(PD)lXx}*&O$q%18*VpeM8)@3p9dc2*>zloWhxCu4)$J6n+cb zFClqE#ltm9lV~~v<{7V-vwHQ2i=q_qhreQexo9z@e?>*|Pr41J*C;+66U5S;7a)8H z!LQe+GjwB^hxN#Z0(z1SwkEqS+ACZCUj84!f+T(B1HSd4)Nh~2{=2_@VBi1TKHOfP z|F7iXX5DhUsq}4_Gv>4VYBR_e=)9Htre)@R20&X&u8ecIhlfY4#@X*Ql@&8h6rnp zcXOk`z_e&u1xUbY!aVJ5R62Dx4_e?PFcJQ}A$Z3cdjEp?P!13gR|%B<<+NXOkw6&# zhIYtymxhwiL!V80M%u!R6jOEy!X$EqiF|{Wq8KvA!(lm>E&Oyfa!5#iytNhZ%AHz6 zdK=_zl<8Nsv1&$)$B z0g23$?wYy7Eap~=p1fepe;IdXZF_M0Rr0P971sG-IDsG}AcY|&fSLLG;2p>0g?>Bt zeNbV5)_b$e>>o8W)B@aBQDC#Ob|A|EUVdJVP{(6X_YkT zsmGx7*a@JpJF{pB<17M)dm?bc?YPhO^ll&(eZSVvaqN%NbWuDd3^PzlCUR7@%PN&= z2jQi>tG0L!t#@F&3sg$4Nz^cy+RSL8G^RfowW1KBC2p?lJ zQcc;j9_?98*bdJ)bWBR{pgUhc0rQmp75vWt1RsKV`YiNli1oG8x|g=HX-~GEHDVh) z4;lL;{_N`KN=(HtKA81RXxADwGA5#p#+cl|0sQoa`IZF#{VweObG!Su_nVvDzstY7 zfA9Px|L**KBjA{Kz-9{Rf0_I(+V9lqa%_s~?l+7$J@96XrJzj_qc}79Gt5Ak=EE=> zk6@8ReA-4KhWgRm1!0GhQr`Vb_b)wm6_EChse=TJsCM*xQr5yf(GP{Tk7VvtI4d9( z#n||AW=Zj#2+L!L`Q6g{X=%dX;dEx4Gwkn*rNI}y##Y7O()_vLl>gSd*!r3Gsg?f_ zS%v(!v%SA#%YXap^S{+RZMX}a1_obg+G2+=WMQ#-vs8-4n4r;&mHG$~ttE#MH*`%R zTC#Cw3X?8*d;#!6U_%SWwQW0pwP{Rtu(mN?Xz|7*VQL%Wh3Xso))RF7Jn7@-|1A5n zmb&d}Kev2EE;}Q1oDBD&b9;t4%Wb zT$x2TDDDM}&;%A!z++F$+9kc+0!F`Uo_dY_z=8R-23FIst?kXLe`@%De1E2*f%2n+ zIhBD1{(rc;Yx{rfZ11h@zbko~`G0(`MTuomtmsUbVJna;JvThAxQ&nN%;`J`Js9v|%Q?QYpjd5o!a zED)&W)^SL}`w&C!P9083n|1deQOj4O zvhY9R`$#KHe;!-Ctt4+P`W<&~Id9PMCM2&J%~Gd3jf=E~Z|1QdOOw4EYoxl^S5 zBtcI*Nvfv_s+}hOiGpg1x0)&yWNzq0jVDf1EN{l+I8$RZRLAlBheP6ka-Kj^x}%2> zuM%mUi+;4Rk`NSw?sMFA8&tRAI_A~M1$tPd<(+G`90JKU1F<>+wN94WIo9y3o!j~e z`~lT%&C!^Igx~!PBQg$Cut~vp6 z4js$YCQekjPpKKxq7LInd=Pq=7y{RoJiQO695-_2i4@sz$YTRrul;Rp<{( zOKi=*L&;>UsRS5*_ zPkdYM$-lpTeI_m{AG4s5&tyIiOn5F;ZDun_jO6+kJ_hWYB&hyb5t)^+zm{Lv2BUpp zWHRIi4P}Pj&6QSO%%T!S`>O{{yNHXbUBX1y{%WG^^U0cFT(M~n-eB7q9Xa-g_8}MY zHWRYl@g&n69)pMRJuEUvAiH{TAL1nHhGQ~R!%d-9U&sGh$-d>h*umvcztEzaN|E%O`p+1Q5=ksBSA@0npavZ#E z<`<3jMqxG%Q=YgOw>diI6-7iT{zE?pZc$gISQNEI!p7G1&5VNrh@Q#NxH;8ez7y4J zuhO;)oLJu=PZO#&xj;LWwuo;%=hsj9H1q!_zyH7O#Q)#jKG->0^Z!*m&HUfPdY0e? zRPtxn^FKJdynY2lmU{msa>~ki<~Z*T@t$9B_4x~}8IkeSt^Z;aW>;*;ZV4*j)`#$) z<6;g?uwni09Ubl2{vU@2>-E2qr?vlI&zTQrOfl@SNwM_6$CYU;V_7e@(_*SCeyuO# zl^6OpJa}@uxwLQT$K3KzQzlrZe={<4<&mnw#h)9Dbe?t()VGTnFdo2(i`!>;jnU|V zltx?PFL#AG(U;YmvG-_2=0$qB_tk+?W!Nkss0at}G>XvJ$ob{ojAQ#G3s?OgXsnLO zaSo%TKLzieW4<^oknaI1*hdSc_W{`C)cyjZa0JsR#IQsAx$)2#r9#8s8@_h|8Z+&10s}VklkeG zRzWM7z0TSNIax~kv#ZO?^Rv5)tIH3!cQ+T8uh_A$PMem1Ztt#cPG6mWI6XVNdV6_S zg82jjN8-O4|i9;onN}r?@aRF0HHxTy8zfE|84JX+w$Mh z;o(~TTg9`u{KqH7S^(s9SU>_CJjgukdJbK&OQ~pR_XwquZ}S=n&yH?6u?c7=zM?f= zY-=%eErzlQb3cwA;G*KE*f2P()yh8uF8pXxj_A?%BDZkbSb~dKrUhT8yslWu4399+ z(B9J;k~C2w_IXY4XZ)O0uJ;D19KCS!%>9P z+FpQ&=G1lUb$GA$9QVRe_)nCDk1QKQV07yVMN+(H36)_KL5zQc(~G#RjCpo;etY}j zxAXt_aPjgP0KC|#gfknI+w-%V^E+k&Tg#|V^Hj@!V&C8TARGXm&i`-k=+N>1J6PZU zU&%9z{HO23i_3Z(9%TqT<0oebo~@XF=KP_6gt8};@ys%nb*yr{vLnHAZuA(Y$6}v| z&?qk;#tF)f!Qh`sF5bf|DyBJMuTRf!cMlHP2kDwTM^ym+f$ni7{`8}^TkZnwc9xJk zt6U}3cR3PUKY?E$iH1OZVbZg9H&)5jJk75Qv}{%1eWaYN_OSUB2qrR=@Mrcn1VPMS zv0empR}Pfe*wJE}?XMkxoTm-{M+lQ5%x|P*zvT0uoxNQ<|NHLF`u^8y9uc2egpZQB z0bT%>Ss(_FLzsaPidmLr6=kYLTv}t{BShE?>XjN_+g(D|I99TxB|>VNxf?)1k1oYp zlwl(r#w$PYV(2l0g;S=y!>Xy-KGk;w$q>b*>MC|0x!>smu&=u28|l@H>zd@>K48jU zMZ*}4iwGWzyhn`l$^k#)^r_Ogye;JkDem}|tm`#S>JLwa9!X@Mj{g&5133RgV3CEXm_3dAK_maS<3H{mP?ccK|5xys{J&qI z5rF3K;+5?RJ*#DXmsnDowVBzcO$>h7nDg&ihU!%}N-I#66kl>pQ;csG*rJ0@dU@I9a9X4O#av~;AXC`tLx*$_q#cs#-tURg#& zF<0*Z0q;(AfU%l74e`b-@m!9Qpr6rPMW0V<0Q4&AlqM;ST%G}H1-mUkeMnmY)+=}$ z@YB=wv8!&#m>bsMn)9X>U$bZhYFj^nYyV)F(d{hJh990%g^OjerW2~&q=--!g`~2; zCMBZ`>3DW?etLHf&i~)t`Q`1!)g`$21zcX;f%E@&aeH?QwATMUs6E^BBF}5?dAVP z0sw3j@Z&fsVEh}L@&N5j7z^aS5r}Zh`UWNz#sd!$WkT?H{@C^oRS&C~uOas43o#+iMu2w$ zh|GyE(_lZxZdUw%pd&W})R_nTAw4T_;YZFJQP4ijX`NYh-S|crpCybv45h<8?rjuyX z#%Kw&WEMpqE$^neLCZ2WeW2+ghDz0*oJ`=;+L@D_6wEy26m8lVErFb3dvHlnYZpn; z;5D4UG_dKw(PiKCv4BN^iU0(UVUe-egF%w@Q2>G%-jC@|QiKt7pw*24>p&F0h}_pC zDn`>fpqU29hC0t+Nfhd^wR>v2nQEigZbb4T8HL64Z5~s(lN2F=gK5R^h|h`1dd4{{ zCJBZy-OV%Y=RBk0MaOA=;bHPNGtZdmIJNH2(+=VrcBWM^g#4p1evb)>hIE@?8wN|P zy!g=ZcFabXJ8B&0TziZ}r)4jeK3tA~rzoU< zb24P+L0}@DU;bMuKajnu&EPak0`?Fq8tONv?K{a z=t{M#p^EWHFDdKrJ;(o$~ILGb#Kx!B{wH?>5NY&kU)b^L;x13fPB5m#I|ut|(MD z1ufTgqpeoEpBwz}oe6U;B|sujjcU~vrxUJ#1Nce!)gPaL;J@GPbpQ7L-FEkH?|*t1 zKaSpSurcRHS7#_sV9Xth#yKVh3`eEMic85G3j9q-qM_MP3n%|Y32T946lUi#fFUAi zT+(+D{AO4Qm8RRJJk|DJo^4?T@xS->k8J<%?VauQ{hyUQ&Guh8{(Alo$qAO@lvm+J z0Rquv3-1Y4wkb=SNI)Wz6!-$|`0a19mdDOfZFwxKiB0Gl#c%jKM=LWCYYC>kVE-TDdq&Mp2BT=QbOzd?Pta*@H!6Rx~5W;oq5SmHO9#qZ`1**Gr?nvu{# zn9DgaX9#ocY)=~Z7=VouTA#1rCtxna6a&zSPtC_1P(AA6T>H4%2)-z?VDyHnpChZcZ z?e{iu=a{-^wyFCKWwCGZG|PWa9{+!5Z|BH~|G&RJ|6j?|EdO~}M0xV zm;zX(QY{dvK1r)k`2=sPJw{vXC{4qxCKENUem!u`Z27Hmeu$Ofkj1UFsp4sl{zGB4 zHjLTz41`)3#yo_Su;wvGsD^8BY;!>Q<1ytGJ~jMb+~L7<=Y5b*1OMOM-`}zM|L!{f z!)l%u{9nui6^=bBAkor*+UcPy6ZkpNwe{r8cEoNyR8(O4IadH+widn{1;!)t`Id z>c%c%wBa_w8Qm9mYZcV|ti=twZ&(LL*rBfv(RCWIaSasL`WhIJM`#&Fz-{(~X zoAkf!eOv$A-QQWqe_6>h!`5TZf*JHcX-1kQbX7}Bv&7CZ-KmqnDtlR3fE`np0X+j2 z=AZ}+CKi;%Wt)M0mEKZfTL;sc=d|)Uw%H(KeD7>pzSmhGKetq5_D1#kfsI}3$9Y=u z|2gx%$fuG2Z#(+m-qHI0|4N=2_`jG1^DBTA`3H3M$)Dd~=~|TN%3NxcCi_=lJG-hR z@bSZ&Q{3e+y$aEqv#%fVwBrBr&s(YxO3xbY$tFXYrZ{Zc)EQS#9&dD7n$%Fx>S3)&CS$O$b0|vXv9V&d)TT)Ec zUN+4dg0NK*P1T#3Y}LWpe1^<+k=hiQo?}DOaigCr{P zYO8eqsC54mOhmeXaL}#?h@PnBIaY~Ud_Ey!T58DkesJ-r)&B3Uvzc_kM*Z*5_W#}6 zUi<&9=9yvt_i@{0SpfYUcjYF)ayznYfb#mw60CqtaX4qbkyK>~bZELZ1+E|aX~qBN z%=;&wCjP&BV8wslIoeg)%IDGBs3<$Ayy)%J8^gIMo4|*Gh=@ z7Pb(U$jxpPRP<&J0dv^^@m_m}h;kt2LRD2?E~@LD=V_l-{C`0g@CN?BeY9iC|2w;f z>+}DWJTtJvxjeu{ArZx`_n_Dd=c7!>=8Tm8S)nU<^#b8WEa$1_Qq5d_0ubQ600jIX zq~6WEl!Hx}b)q@T9$E6j=lYp@qc^ndI-`v18eO(uE0{0N9jn(rj)pKEr!eMxe}Rj@ zP4eHt{(-&z57+kp)jZAXUk%iPJb{a20vQDS$7{NZCEJv4B+;h8BG&O$XC@i;gwEjn^^_6gps*+m@;+ zd2-Y8+NIUxpH^_4f&b4f1vc>iz3oHW|7Uk^Z*R^2SMjvq|22zo){B6iI7FWCLzdoo ztJsmNfocJWG8SI*KX@Rgg*72UmW zU>_DRi~NyKWf5J3&Ug%24AXv46Xmn=vSCR#9~ySUEp8vyk@uaijaCG1lGK6c;-ZFi z`yMYGYE>WEWHf?tGEXq%5=jMPQQ9j&vk-iySjs-6mr74O#yQO51*jwCjdk++Xa5Qt+_FIOTaYwt~1C05dEEe?CsW;P1*z-hPE6Tyc7Z&vL@bc7R>g~e3g zj3yPE5o>YnZ}3f@D*jKxB!k7)hp-sng%1DQ#Q)hovd{l_w%7XqN*7#5_b?-Z=42)4$!Cuc`v3}gCd z0kaqulEn+$p0&tUZFQu*D|;)}Z{|0W2Uo160DdAxcuM~^IWl*y5>F^g{y z@XT*2jaaWTiP5hsJ53~4b z{lDz{pF2kf2kZR*D|rn5F9v&wTY!N0L+k>oFH7DCJgnMC{vig%;H#eRel}af%6&j| zt}7UO11i<~$eMHi37#hY53|Xl;(rtWKRi0H{6BUMj}F%I|4JT%|DR`*<*&6ndGvIN?51dav)M&p8R2?6VHAo8AeIHOm| z!Z#j#EZ%Qen)uR=jiGU^whBU$F_W5t!o5?jvUJLJoYLsUKpN4ijkZoGg>7}kx7(Vf zEEsmqWgDPhePJ&c2u8ZvfgFVo@FF8u#U(;{AY1nBrq)I-NUb&YOMynmX0jIJR5y}F zyx-vT2KLzjuW&KvKl=$xWBR8@p+p7P%pllIVForgCg2NrfK%Mzskh9OW9lpT0{TgT zNr$82$%5rr8Tq6(tc)<5yywbq2nyJzi+dPOT8EouE$eR#{4grWX_^niPNz-!8|E)o zPGkL>SEX+txl53w59Dd(gacDkK>j?oCo8)D2W^rk8{(zhDXkfsO|Q2ZheNYEQ}N(A zX3*Z-sgf(n=)=dwcmZ@C;Isi7_3{BuId79lXv@wfGNajv62LhPH!M#^qXztxhgp0n zX3S>w);T6g+AB-j_ZQu#4STPvo^eOW2mPX>ByLbwkzbUg`$VTxF{tpP(er>5V;Fcx zcOxNi#7MKjX-|q|bUW_%lTRR!>*Whb(W7>`(gG2S?UtLx%sb({0eceY6=gm4gN<-S zJ94rb$1`S;7IQVp1T&*TNg;hhV(=VuZxiF{OaL~ca0JsR#8CD`L(y*Dv&uwI`)HiS zcD@_4j3brA&RLXqoFA%}uhsksyAW0Z%}(;z*e5w09QM-3gZ76FNRm~Jjq3N321#%i zJuk*{9MmxlE)dgtxYr-2saVru2~?oraKKW$V;IbAq%~!Pa_1^V2?l|a6)fn%G!BM=5kZ8}Z zLY0ng`Y2bZR06LP&0EZepB@K}AzAXdc`y`#zh*)2Rtscd;nt*a2wdh?IixzF#f>X@ z4?zHaN-zl&vW>lRRi_#&vtOh87N%zN8ufEr(c{t<-P)|AGo$6|Q&mHuDH7~lluc@B zr7QI-4KKgT%{Op+X(9i=PB3{=|Bs`+ZCCzZpZ~4oapeEkOY{8@Q|CvK|9M}Y<}eUu zzN0`k6rKx7w74zw&14#3D_Tf-9)`ou+s?})HjrSzj^x^;vVGdqNj?fjL#Qy0%_p?M~ANe zH{BA}{C@?H!T*1ugS|X25IJ{#h#jEp%u=_2t)IZ@1SK)Zk`&}9$p|d4k>p-DN4OVQ zL7;G|43X?DZAUP-W1we~Bu>J!Fvr|P;pl^$Bv(1RVb#0*{o>`t>4&q^>s!mMQQyxL zBe9DsthHuO+E(?TF9{Yyn4ff94Ni1>yj5(6Ty3Z!X3)%#ICCUkQglO#>ZGyuV%2=ieQ;Q$1aB!seqyz{e{WKXBS8O|;rjOmhS8beAIB#wtoZ-ID67>3)w0Jh8W#zf z3IM$*OrtU7g7YNkH{t_tFse|D(o)W2AMXCs76ugo@BUMZa%r#3yZ_XoynSKI)0`>+6md<-zp$jWmm zaIqhQJ}N*Kl4JtG5T+wG55o8#V@$YQB9`$BO4>t_~Ef)r!e>DcDr_EZ);_2tdQ@8>s^wVwWb z@%rNK;{2AAUGmSGjYc?yXnvL~Oly*X+q2Wx=a$x29`aj@d61&}Fa?24WlN))rB}aS z++O_r`uxMo^WQJdWRC(WFa>RP05Q!j`k)wRS&|Jvh`B&XClOo8A_VQ`Hb4a!6fh*P z=)7R>3dq(UfZ4LP4e(=r{fIe?;&pCPrP8LcXo z8iz7Fh_|=rHy;*b75haLM^MQDEbM^N6!{T7P5Gp1aLgbfQI;9F2#%v*7-GCTD z%%mwX_g;V$5`Yg&O$1XZ=pjRofDA(d`dETsa-=!)P+?9a(a;TTI!Pg(Vgg6*T)RXW zEiwlIZVx})oS(k@aCQ0mKR(=CT?uX;>;yH!s%6*WK)c`4c2sIVn(@eWac6Ia!f(SH2NXzK~|5J?H9zrUvaN~Wv(d|THY*k0AM9`1epJbu1XlFnmd4kbYfrT zth2B9s-X_bvH=J#`j?1Y7ZAgY)Fxk~6%wdh zxy-7;Y5EvWG1U*?L<>jhHCg%aR!z)q@zZEn0&ElMUCnRZl2zj2!?Vr|sA&8J5X1~w ziwF}<`+u7BVKj{v$o}0T{_oL|z5nm*tn+`brk&`7U`XoZf?X6if@=s&iD)GW)m1Jx;m1mA&j435I8Ls?c#~*@kVa zS2YGE1$9*TFfUF_p8j|yVv3e+lzen$D@Y7~c{8;%sXE;fv(@fZtB7I|KXT*{TABm2 zd0cw+maDlVt{s9eAWO0sW(4fo-4y<+l_MpVp?Cew*Fy^974$hzJy|DhPxXpJweQ1j zv3{2GG|7KCD#)S%Ae-X9>>lpf{y%%WYx!>_k0JlD!CqqYF9z?25dK6@p2qtV!(x&| z@G>017wT6jdAVoitbnP5=P2eD9_YE~Ezc)p%>)CHrL))TIj4Ij20c;IlwLSIGK2+# z76PT@YQb3i@JLt;ATi8Q+Ag{E6FALcc0$fh=0umA5HCWus0FPHyp%pF%e#A(z@VS! zrh0`42kqY0W3wJ5qgw5zWUmpJI4O-Vsa+gya=S$fh%Cv&0u2|t1ed0WotfHw_;>* zsF=w$w5^D~;F%zmbGzmIHahK{p<6VS!gvvyUX zYYK<18)x*{7tMQ0E5I6eq56E=&4zsBvWlF5P3G=yzAZ08xy@Ex#UfFDT_A!YldH%{n+65s$7=Voewe2BVf65le^+~_#Hr&C>!nDk=Lh9&nLYB-Qk6Xs z9rcsTI(U}cl%EqDlo#2qjlp20WJ>}1Sfwna6Pv=;|NyC zY@DXEFS5E#$f{tTm~Z_A?#2c4l`%w0PautaY$e!-mF;HPkur|<=xc~dmzuEZg@JG*A6zkPYlSq>XUmZ*`=mux(` zhec1s#~VUgULyfR@gB;SIEJSwMznp%vBGv&W&c8U+`?$f;9Oqafw14FVzx&97a+u{ zi0CpK35JdYih0u)gnLI1VVYwuoGbEiw=;cUsn#(r=+=VzeIc@cYnADTdK&eAzA68{ zNE)Cf|Bt=BLnr_5!TSEsN*?YY9O5KeUK${&KHIZs9`AX!1OUT z<@A>&Bni{xpU?_M%FlH|EOj?aCzqekg?eJEJ`DIP1kl8=Tfoe`93(WcjB8<~uxj~| zQ&ld9QBQL?>>A01FZ!mWE43!aG@yIt*@~6jCrv!p?FNowDIwP%GkNcynzSVASL z9#0E{RHu65vWb#xR0MCLTcyDGt-0&>|1|Ia=pHV308qdG?`-ex?A!ML{k8w+Y97P> zf6WGaSzA7Z^l>ssRN+5eWB>Bc1O`l7 z*mHURh`B&P%|0PSv*nK(r=N22e*MZe56k_>*Ez4R%xaxwIDJY#8NuLZ@C0IKHL6Rl znRnJ6kSM=J(Zjdw1K%PR=>&)Ht?*y5SJ?vidw4-xf$A<9K{WO{Rn(%X7HVK{`U+ed zwn0nXvIR&WkzAr6S<~-7sXSTsXjx*VEmg8IMxeZ8K7qw!kr2o?S$Td;jG3dhS@oJ@`vw*RSVAa2``W9xMZt2vltOdD z?RYO?8cuIvgtC~*&UC9C7w~RaKs-cgOy%%#6hVyjSEBi{S`Lc@#qzf&_==Q&84`vY z4?oONsa(pQ=?NBm(u2yc%^`GT$NDJ>$>DxLyGZ!|5BCEn(M@~#`MsVDArz-icD8SZ zu0o}?U~QeaiiztgMz%6kl0@F3mxSxti*(%vCke3wP{s+viUy7Hv>{4)W*`(GLB^k?q4%hKtSMnI*+l`93vlPiq&7B`YYSVhNY(rof>&TYJY*DN%SuJUqWt3=9 zzV=H|<@Y*ZzFm8!kVzBI8E{G25(^(Fa-Rk)hC)c*Gy0aJx8qsR8SVeTK8V$Og68h@;t%@GDWJWf3m%ewN#yhqw z?+C?lWRx>rqWq~dzd=5h`;HL|(NvjUUB9il5fOzcq{Hsfkjk30k3QMI@mxcKrvUsB zvo-TLuJ&dZOSHgHbDr)i<=1hxC^7eVoR^(Y?)dSg`UtvZKJ)BN;B`r#jbpqA@0eRy^(^PJ$k^%owOZq zZ540;KkaO@=C+Ehm;1k>@x|6o>D9IM6L@p}rn182<@N8oFZBuxi2-DCfIl}^5K-|W z`0vf_|N5`qyPfXe-hW~Lf4ANJ+xwq7oAfRH^ULV(oeek7R>0*`3PG#3`R@Gs?$w*$ z-Y0+m0@79zjPWHBZdXO)CNw|y^3pe~qQr?ZSAmEoq!{gY{Mq5!oNn0j#Ln1BceXxCQ}jri?W1B8 z66}w4#?F0sNEDvHQu1Gcy@j(!z^c1F=DwNXr21Q1TEEYy$^LH#=%42lpuzrsOrB=gXi4z0uL#O8y|~U%x&J>8^KOB$FhC z19(pLdZvLnAgT(o19AB}cB+-1*x5XcA~edc3)D|i=1WO;O{bDsjJu}l2O2yuN^SAr zHHyM?h%gCw)l~kLjW;x!^M8Tu$`FNlc%P&RNgz8tDa}h!Ij71ZJ*o;Y7-1YA+Y)tS zB>=iLXBMB0JL|Lo@b0}Qcz->Hae;CUf&SGR$FkZiNU|neEM05KnOvAF=i0SA;ZM)M z_1-P}n3oFo*X4ruTnUw?d|2QF6PT%>P}-a7V-T&7qdhqQDm?O~U#(M|vyB)|k_fui z%#8_3$0C#aY&#CG_y&zL(o3+6m!hVYMT)>7j!}f;8u;i{og#uKZ`W!B9iKmXUv*Mx zdKY~V0`Zb%?BKBqSiFQ03^Nh*!3-ob3^52Z5MrDRs8YyD>Qf5s2{Y$uL|YSl%gkH` z19w8VdgCU^>$2mueMf4CRh_Fv!0YW?bE8DO$G3_WC-d=N# z-+6VytpdyUUA4!#bYXp$WaPc+zshza%I1@8OOUoB!QoanouMs`aMeD%X zXqYAhcE-$2P%#fWB3A8iqDL#GHbAPKwg1x6`(fATkN(4dCIN? z?lJ2k7|uDg&DHoi-fmrh~+%+`U- zFt4eud}Zi%LM>6gL_u|wSrw+H!i~qg%8v?i!#HV6n;lO&=Sr|5Y9xcz+GuC?vtzAE z=82>b?4{@tY^L(2jq$$2kDM(HsT8Uo!;CPmj{78wLCC||{jU>Ni=7Hzp5J}=`Qq~B zhuia;-!IOr)T0|=9G{8A)pfR^I$1N&o4EM>>^zWQ?d?FeW_mq|mw}CG)g-UkV$G=? zgmJ8JsTTDa$TtWRBYh-QGmCLnrkG4HxQ9_V#*iwbROciJL__qLF#w!f-@`sCAi$3a ziH1owpk=}gks&O=7{h``?0XFfW`ko!Q>1Fx*{@fBT!JXfX-Qu)-D*J>*dA!UZMxF9 zmf-L{g|~-ib7my3;}0hES+@69=$1QwyWTa$W0+x0)NL0v2+y)C*o<&e{?=BxJ-=fK zV`r@MYSucxT>Wu*eluI0m#1eRu6{qixw&{*vBHyhAF1B%>!BtX*NmfI;L>!trKGo8KMhZl z{|AA^D9PrH{K}uE_^&%V2loBX{iAjKx0O6*{@-%2mveNe0sJ8j3yuCP`*={NeyM4W zAjaVUUWa5DfFLMe$mFV~Q?7ITphMO9Fe}*8pxbg$DbDC1Onf%YpjQn$w%KHvNLFt( z=dX`X{IH#(X13U0k`x9Y_(cRPxkInf0AFS2MS+UI-WS~fT$MRuXAy&Rj%oCDR-;mx zAvQOX!g}f3ZqUS>kv**#Ex#qC1h?Lqf1Iaj|JRP^=MDkU;Qx8Bx9{ZtJv=&C@BgcK zjQw95>?LM_)1dwkLV(eqWeWill=8*qy9>P$p%~u6VgiecL52z#JGXUE)=vhbFb_b0 zVN^g8fM604@6Da1x*2W#1nyqHyg3FkDChqKmxzGh&+gd1kH!St-rYL4dAM!4(m9C* z6W=Uv{#Ljp@g8nw&YfT$8t|5c1op@2EhLt2kGy@UE?xuRbciXWn$Xx%J=^2OYoNx zi$^E8)~vB0&OhaJKG@fOEJ;m43fSb+By07lr@mCk+Fo#YeD4J&-p>Mxw_l(<97t`> zhhSO2C%5aCXHU=StX9`L&++=0DLC(g1~o)3RhFUv_LEN_*b00Y)f>_(P|^@#m$^wO zGd6{wkBY~zhyhMRJOuBy8d2TION!d8{t{(W*ZCD;a)*>E5`f_6Bu)y*Vw#4j8zV2& z*NHoBo2E`wGr%@(4USp$^eSP^e)eu+QG;{KiDCPSNO00SWxjsO+Qxwr3^TWP$}_}i z*zJIoMNU=8R4O?&AFUGQ!ehl`8&)a#8W=t1RtATmurlI@okY&hc`ZQBB-46OzO4uS zxhBlOtn!_)AL^&|)(*%bty=H=#Y?fO=f0gyTC8x5mAMc-`H1vAi*4>&gFddG`S<&- zbV)&z`U%`Z0-`Y{Xav}bK^b$^$YC)`FlG+w6|si&s7ii?#R3#`d`Qzm z*IH|iowd1+H&Js<$6GHtxh-$8mw4;>#N}u+9K}{92c|DfV(Ifj26dW=(w5-1COkM7 zWc1~p_E5WF8KR=rAA(s?8bQn_3|c|ZR5iA`C$Wbe0Anvl#2(LQOTfO54A3?L(rbC@}Bi7Snpz}dDgS$+PtnV3(}8 z?jfXP=0M4BOx;7q)#&EVaxCXCO8QAummqSZ4@oqH@omKfw>sd(*=qxv$(qP!h8GiW zkV8Mt6)0B>0{8;@Nr8#Sg6E6lQtlM~%Wmp(1#+#os5W~^(gz8_Vk5WBx-Iu??=-8x z%-+N3aFy{PDes`HIc&&|`g!pPk(HG57(02GBUV)R=}yRB%2oYBTzqAu)Q^x%RZR`9 zaeQp*QW}K>%rFC-NiluZfXLqXfUSf7w0|1Te_0lbZkqIAG>uZ&6{(W8KEO{fYI`2s z;QzI=x4&bZ|Lz^EcZFz2y(I3Fs*_pMDdl z+6CC9$_2Lo3WM{1+NTEouUq6<<8~foiBP$7*;jKm9HjXho>rItz2Q<&>^>Any5-Pf z{QQztSnmYQ&%FF!q}*+_1vK#gz3n4A|JVNR(axIxui`QIzZldf*#fF_H2**wfa>Ho zRs@#21<+nCYYUKNLNcUff-QqqI2uCkP9gGxKiRI)t+_Ij>)vQ3x)mwj{Z=!dhgoj; zl(ifdF&ORq$>ta?_rj2#>0Td|hW>y3`b_J4YoooFpe>h}zYM5#^T)CTkZ5UA;8Pg_6z$j6fR>M!|Hm+= z%OQ&rh_^mOX%amQ(HO&v>>u1iWVVZ-4g7!q@X*%(clQt0{C_2n2q|`_b9OL*87x?A z`H%{~F>@@%_z@M{K>=oXTtEyG0)+1t24PenjKMf(IsCR@obX6*iW@gDQ+>|$$|={A zw-}ZDne>6YiKrDby%=rh_(@nK^t>7 z9)W{xk3(w#L0CYby2MG3UjT-$3LTxrAcj#f&54nqO}dL{G%?t?z~lsMCRq$W=>>Z+ z-|1C9x^lV&9qTFd6e5>yZu!0}&qcJ~4WTrW>GI;||#8jrWOo=>*&ayzvvjf>P<=lJ>Le?Olv zM_tbfEB}0pVZmmvBy!nGZ9OUj+=oUS>WzQI_mPea{e2t_c^|mTu-*ene{tUvqY+dt zdi-IcOT+2z!V6w4U1U*W6c1J@F!J@!qe-{SGCifm{=Qu^TYYC_`e77%peyvapyI+>R#ap#1c!GSC@AR!Y%Yfg~G< z_jC~0yK#~7SCpRY4O`Ca6{AnBkKXLEK_cW)(}v8ce0)-&oHhv>J@AEHru&a@lxlEA zbbAWg*k_z6B1c)5D4sh)gu7{XEcmN&Wo#k;$M=7P$$Xjr_){{>$(BM>B6LX%6L(exu2BSx1~zOvV| zX8Doy8Bt{@zF*R~325t)<0B`?@nmC%vH@D&*l}psaJlrWuJ_|4Nt zR$Xw(XZc{E8MEqF#};>nP_uYcEe;^(+~M11K*t9s^eCEKOiW zF6ftMR>XCxylZKY4-Wq-Ux(|dAK>)3w1p^yu1{}o|G2t&`3;fcdVn&aZyqO~Gi0KydyEMq`p>1Mu=^ zKxa4Z^?Cs-@a`SxW+2!wsS<$q@4>(Q8>Im%2uJMf^~HzNw|BpuIEDZHnV=Uf`}*Sd z^AkoX{+dps6a*Xey(k$YL52e29Ay}uY;0=0hE6*)CZLPK9@qu{rG4Tgi_*k+3qW_M zxL(vo%e(5?+F~+w1kfZ3-bX8TL^DcDCul z(pmrj)9+wsTfFEeazGP{!=Hk{$QJsxni)w3*%{X=eF&Y;UFI>QnV~B~U80F(* zu(Lg4KllVb1_#@3l4k&<$tW?(?Qd^eCI9*=k^8}$)0>Oamp`v$M-ao?yeCMcZmzEG zR<N07zviLyDUZ`ttK-v5?*c1NLI*5t}b6)t%{NG;cdZ41X3?g z?@oU{y*)n$!ROD8flvIaj?BM)U4f*hFYRBi-khIo@j%#2&SRD1`(825&Nw2Q|HTes z|10PO;0vGMcnG>(=H|cgS*QM2(CsqWZ}(_>=Sce~sXz;S94C-G*|N1gF50i$#{pa~ z*p)2Uv)31Azx{gk_V)b4^~L3@r(Uzp8LYi*snlPw>cV1xk9}*e-6~^~O3r!E?UEva z_+$rkyEso`Sb$*Tvqg=s!M~S!5pU&;cHmdq0nh~*QreOxW$#k@p)AIlkS!LLxvo4A z!zh9|>qLaIjE9uQ!Cb44n>yF)?)zMKw^y%kRHp49 z0WsSXMd9D|TEWkqG4pyG5)HEWVYGSIYwb^7wn#pQ>$x92yP zr*F`}%#N+)w5cr`SovYz#d|m<$TIHh-^zwa=(6Sh~XJ&(^h9c1m`9VxF3*V-~|=)Pqs4j60v`W19z_A@S(LC_s~Ala(ZfhpnX!^B0qo2x1sT)8y3dO8}QrO^O2 z(?GjDUH40`ZtI-i+G}rlPYeG~VP~B4@>lcyufx3q+y8UtXm@@8Yb6i6|Mi{S{*n%g zbyvUqPK=A)`!cQV-}$946WP``zO?Jef1ZnB@}#5sj+Wi67Ql>SlPA7swww;Q@Y?jD z{mr#utD9@aIcoj2wY|OV!$3jS%FDYqdU^aYt-6IK7rXek#r-p@hVSOtxJWaEaaxPR z-!V={D269-f+-_;Vw}9U;qb?l#~AlriklJmo9XTUeeJZs&fJy(oqm4#vkRYBo41Af zOMkNFvTpnt@YHml_hy|R+KpJ|5~5o6^T5q!&Ozn@RDEx71^{f~N+^77&kahl^-W_be?K=G?LE}J&gk70c`>!X z%zKJzD#+JtJk=dWKDsUML)v#K%V1}|OOW)hF6X=I3m-u3vtXNL0Wm1cxJD_bz~Xl( zZE<~B7bs_NjrlfrCx3*ejsDMF5uQx{KRDPwaP<_O0i;H>7(f3|FGo9O?#`(wTS&z!xy1^}<3DgylN8&<8}wj-*V6Q09iF1&+*&y9I>y>aPQYq*wrDOY8 zy8!MB3u@^=44|z6Y5j4P9X0bbpj0A|b5=uwLG**u5UbZ+__!`hbJ3uQzR#<*7?9=) z{OLlNC+4RMWj@`)4`)8j!rwEx$SEu}S!RbdE>f?0@=axWlZ91;(saXUy7Ie0DgI5- zYR;3Ur3vSJ7#0`J%?*4tg1NSV{{Uk7%AOYTKSpV>i1^=_|L^c{+m`=#kM`H{|00UqacV}mh>#zg@$l1}L+!{$nw+?xheGx=a;fAn66B#j|>$B}&h0^E-Y z7$Cy369&8!SN$s7?F5DFM;9cy%8Oe;e?1}b4{b7N;Qw@V7vlZ@qnZEj?jP*g{D0?Q zo&RGckInzD>3}bV_p_<`6cuG4HD(o1tKUy+}~?6O)#N&TrJC21vSqFN(`Rpo0MbwVVd5D(SwL`K?PezP1%idcMv5g%a)aZ zg#3bUI_fvwJNO{P>jZ4NX=pnZJw4&?MP<6gHe6I?VtTzl8hI@|1b*nf z|9>>?|4cU9`XGPKD+n~{e+Sz~cK)xUquurXzlz7$|D`Oh27DQU0H#38Uw=}G!0E+W z9sD8GLCxa9BW3-I>4k0h|DsA@qyBef=YQYc*Q z4t`hTy^tJWPo!QskCZ@AyZhJe>I4A+4gxX^iOgDs*=8@>rfgPpif6MJ7qoqp^;*dR zwLO?a%cEP6zDx7%NXAG8o2D*CrH`Pde5d2;hNVvB4y&$MnUFN)ib^4^RI3VHs+CN= z@(^L7A?9khwb*NFt^ufprmG{7!RI}A9Ky^Xs|XDLju&f~n($*o zXKd}kJC`dcY08B2%`1+W7`>PUx#k{P=nX;wAH(V5s0l!`qqUZ?zw5^<|Fg6W*W)zhUg%pNBIaev_xz>b|K2^= zckX}h?d+}P|5ZF(u4fE(6y{43`>pxYE2mGB(9g|-fn`jY!vy#YFdczc(QSY>Zf%r+ zy8g6Q0U8X4<-O-Yf=MyGRj$h_VY+h5ACn>7^X?D#VHTkn@_RXiZi}>wk3*CycW|?u z?u#E%FvdNYZ(v#@Qc8}+fSp16`OQi($KDbA}5qY zP;|hDaFCam3s@N!S8bDYp8$@+B$buf4;?zCXTZr?Bam2LA_3uIOK?UjRX@%v1a9FY{@)|1VG%vCn*->fJ#D}~;+ug4+E_3vmkDn5YO$aHXM+M_y!F8} z@XqT3(!l=@4!0fukHfvS|Hn!mP3*zKMjU!5;?QX+K!!BLaF7oe2(cHmZPXmV9IFe%!Qv4Oo9rW9ZT_s z^o}`ZAqA>LoiRyL=}04l8(lAHa&{7Z)T@ZJmU1wIC`?mW1gfurUibmhO-!t`pyQz= zEPE30c*4t~=RE|f#h2IuRP@BE_b?QACbdQgn{&Q2|0{?Ubyp zZY^3?DYfHCo^6s_(advbT-L2o3ufReZ2x1!E<|KG2fawx9a(g(H?DHo+h^tiSCgu8 zkykG7W>!5PK@|-hZrzHI%v}=3x23!@b8co=rn6?gvsArJpV+DJof2w}RQJag6D=vx z0V!lgX6)Tmqt0DRzW{=6nTKenv;cQ%o1;}!Fp=-aI#{p&EoS$VPrd%PbFi~};Ku)0 z$A4SNBjToUX0jyfpV0d}R=<+B&SU{>d;SN2?Jg*L#^1Ly;CawrvdY?4A8cWdvt00I z74EB@07qfIh!0?uR)s}D=e9zXmYTxMrpV?12SND0farjB%wEseX(n{QPhrIGtU=nm z-u;*fBC^efUP@Es3$QV1=x5iK-P!IqafHlSJJr*LsgOr+3&6%h)$Ifq3HK_*#JvYG zFIu&?_%?h9#eR(&{xow(HMB5O^tS3EH(B||d z2(dJ^vd;3X+*>x7RCO&X>b~g`so+EpvNmywl)r9JTyWHTqs?LY*US8rJpvopp40h~ob@*E7Qwdo2z|mTQw0$1T5Ww#^OJ_zZ?o4~(v!UqVm9 z!QztWKGTeU@SYu?@SyU#`E(fK^YQ?%{Ok>VA`oJ8Q*Pt(U3cle9Kbvrv<%pyUAz1Y zr~eJ!99&wJ-Ag>j|DS6Q|Mg9(B=QLh_wUHXr&+8wW%zs73q2={T zy-gnpXOnE12j0hVQb1E1v3mc46MSlqyfzg2&~9?+Mks~umP z2R&^TEdTPO2HaNi^|`1cVV%L~Ae;batW2YfRMA^`APn2xVJU@=^1hzd9sODglia%_ z(M*E2gw)`z$d*r{D0nw zq>;Auj9T85Vf$oz3RhYWLL-1hMcXd$xni@{LY(!8aRyx5M_{eT(0eMm79m#u%&`9t z(Fo?@0M6_R*0BE{?i|?hA9i>4*7-kH^32S(*_x8llsdq0F;MT zOlwuug2yBtK=*jezoq)Ik}&jJLsj;xnFJBlrCIONmXd+Yds>o*y(uH8ZmKg8b_T+8 z)O`U_ID%;uV*8d)3~^+_qi>3YS;h3gtR~c#S|I~o5~0k5$KF%|x`=EDM4WJ!5cqKL zpjMTDF7@-c&sxGw2M&GjJ)Mysv{}=a89rUt8tv|tQ|nqB`SSYWG{2^TapJ)1_+4gv zN6M@<&#|&zfp*QzJ&KRFww~iH=7`PO+T>8b08%8Q@+7#)7qD4W9YCT@uE~}%&UyUf z=K!b03)!$@g)9hJTM4oOwp^Ch09_gqGFv7~gRCtX*#Oa#XoCt zU|?jRm5P=tV!M?~7AAwCvs~t&2ZIxU&7R@*-vSj6QVW>&fXfA;>oIc^+D9EN{?`%@se z>R72?sdP)biq|oZTDE&U)3y~>AF+=|KL{g>) z&HZaY>VlE=nf}{;dYu2u0-`a#A3FZ~{?Wb{|6~93WPSc$$@n1IF$W&CB zov_2NzKFFI1FDuj@~an-I!|m>MEHh~G}1+s2Emc4k-k263pO)_#V;gOck^CGjPWOw zyunG5q6b(AD`C&>XM@KVxgZ5?Eh$FyinZz*bXZ1XA_!r~%yhnge3j`hzNJv%+ zFVJL~hoG#3PGxxHX6$29fE!enr~s%aNa3aFs#7Xr z8Yr;ohKiVAd79UM(HzEI+;7zREI}xL`TLZST-Nz78UEb@e9QUej-&3Zc0ndLJm;Ar zZzeL7IdL-0Q+{(w16HX1_&dAHdZ*CfD2*Mz<^1Y)9`(j((vVJLG&^n6D5r$nPxDrx zC5HuVmx8)%4$)y{y$B1WGuZ`cLldBzvNa_TjWF4r?ZY&`gZmMPs?s8+UF64ydTqji zOEjU|pg=p2QhY1I8qZ*X8TqWSmE#TbB9oEgAtG~Al|y?I-GZce+$pBnRwzzhj~QVN8?yql$7(`GW(AoE z;06Ja<01iLT+nhbA}+PDBhM?lHw6nX$=Uu!t@4{Xh598&qVdL^LiER{(tL zQ$Y*hJ~yYDO-nsZ)iLAT1(}xI233nM<~>qamZ~;lV3@tHojSp1&}a+35D1-onijjE z^7UK2uczizB$_8SQ%LP_GZm`0;Dt?~#U4(y0dRU=U$vb&+b~gcAX)$uMvMJ1VS+O! zCK}ZQZRl_-4}=r9+5U*}0Q;K3=-1E6pWywUI^*nqglT$Sv6MN3K(^Tb?j7&D_P=|l zhX?EXzg0Za-LsM!_`!-vXD~@n!srQ1QyD*zF5-f$56P2dLT!CTpBPZn zqCgotSO_-^M*L!!v9SOKVzDg(?IN8Et@#E{_bGJwR<|SYXP|`b`~N4Na%Xw*U-$M8 zPLAC8uO~=4-9ZDx7dbi6Xzn+1{?#6jF!jAns&wmwfo52>of630xqurT`TO}&ZiPSRxYGkdPBz@Rc>)3`iqr zGa0;!+Y#N684^k#IYt#krrQwBQTSPO76Z9O*CuLn{k(Ixs5EiT3dNti*)2Yyt zS$zxNgT74&aDo;r8eF~={Y&5W z%0%9mFVF7(i*i1f;ZdB$V}1leAjYa|9kK7 z$j|?Mu+IOplE=&cs;!nQqR~U#4d_YD>$LW>K!LIZ6+w|7TH06Jtls#xwZ5Y2@pRh% z3#x!y_y57Zd;fEIu+IO#lBaI}%S8LVx4x;P9c0(1N(*Rjc=39@*B5n%)#f}}7-=kaf=?yI7I}rWf4{+yy_jdmKdUJE< zZ|d)zzioZ5{@(iAhHXv0nIiW8%zAlpxYZPf@H+~2KsA4+ohrBd8-X`ds*(UOIN1<5 zPGAPOM?^NApaRDrB@d{GAr<;u7?-FRf!E^NU-_5(=gxnQxHd!uGKM9X5L$wh!>Se? zMS4m5#_~1BVZD-w{1Hx>gFo%mo98RrVN9j#0MV&MNCqxm3)OrgQVmW|2zTs`3j3}cRxA-@CQ#-o`NarY)83{k&PdnE@WEc`w(ER>0O@k>@ z>ZhevSJS9zwD;0qT6}2X|G9Nru_XJiL)ZS}VDI#39sgk^PY3(2A+P#!=k}|w6^L7Z zhhO!jskFl=V3wRS?(lXx0mr5l#9w)jH$Cn9f9dvLdx!4*|Jwd*WlyvH*T7qUUfVCD z>iYg**r#Rx3&qSLo4>>PfA7@W{|5)_{lAh&>i^g*QvgNSVlsBre+%vV4!XS!rOo5L z4S7wlVO>&8pbGswg#7F23 zEch(T1s&ycCu14@%p;I*R6o=QY4cnC;M6oH+__&_{6@4g53Wpi zN8sl>k-GhnOqB>A4cC<3^MMriDS^GreBH5iVE5KNiOS7CGJbl6w6US_Q_*F`kc|2p zcCkPH0F{bX`l6V{B_Hx?37S8g|BFUQyBkdK#%Ha~8S-hN|5cpu14Qr~{Jy%VY99Q1;hzp*oz}Yh(52a_Egv-;7a^>Jwv=f+*o&nQz zO_Vi-{7?l3t0-wYdKg9e92)0}tlxN{?nE;-?t~>0HUm-Qy;AMhu~n=IQKJeb!KMzA z3>J@OJc-$Lbu*{qO4RoozCm?|WTlR19+!Ev?=d)|+M**2LGZ**OhNjelVtZJoR;Jb znP#PQ3q6lx_UmVIk9snLHu`_!=YKuf+gsEBRXmpcADi+?&6F>~5SZZI)OJvhR~yj0 z^6nEvyVkdFWbzLo_zU+wPUa0uijn}K>*IAVNiymn`?n9O?;)Tqu$AsDkQ?7lygx3; zM4W;Z*{*!ha zo9WmlZnfqfRL`aw3{k3Pzt+80J^h!)Qw!hzwCDfa+jsAOPEHSw*YtlCk4674)RZqu z?Dg7tvXtEz!O&zJPv9+jck^#f#S1d|2PGNUY*3--jmT?W>BM1e3N#R$+dJ9*B*Sl{Cg$KpYfpX3WuWt<%Hsr6pzNs65bjOTu#&U zlBY8lUFl-E{vb-1<)a5oSw0%64g}NXg=v}K%qz~{hAZexr%w1~FJYFdxYy>`o3}*?-N^s;mXZ8gY7PlRAxouFgR^|cGT*RXZqLj@yEbrumRv+I~-$ZDd z{>_>z#c#M;V9iZ;LTZY~D1MAnv^ZvUQ%hR`IVs8kmH=;NX+X|MI-MYXo?RSNqp`ja zcS2}EZqOnaH2^u73tI)EWLm@v0U>dvo9cupL0VBfEpYiLP0r7Hpw6i}3=Rz#&EWpL z=U}6SQso7HV2IbAnQG#?>-$TpHaLMsA{0b-}3>OlQx9edG&-@(Yqb zdQEtt(p1W(Znh@lX_`9rCY}W+cY5@&?b%C;o}U9Zv7E>$V&M|h7*>Y!c2wA~vNk#6 z4wg5Jn;Zzb)OLa=1|!#XZ0AxSE$R|EuC5Ks&`W4tD*Gp3C)G--yA8HY9eICS?E0HW zprlGK$xIN47^d-*k+|g5)sF?4=HUwiub8{0=2nV^cd@P!5cl>vSnPHX@ap-0GPl2{ z`?T=?wY>Ij?zxfhvr9*d(KJ%B>4e31sE@Q0qd`*tA?i zR?~894NZ5x=k=mwC`!HXsKRZ|J)D=HauIiy_iv1#0%?^V$&9VCVAG3R*{{g}z#qP&e!?dsCTG=)?6}r6Z})rf8(UBkJ{dW=B!CTx zXN9;&kCgig6zKOUE~*6Xe;9cuMQwqHN)9&ttI(r?VlKI(VulJDfruhl#CM4ODKCpwol|aHH|qgqV~05OZQ7M)lMiE2`qE zP@&s>Zw2f3DH8@ zv;Bm#`?-&Ut^OY;C$9eY_+TCXZzYd){`04N(ZiqL;*&iKhK4fq(J(LpD>wD^VQ?ht z0FaHAzJciWb!aw%z~jogDh{U)J=0C67h_ z*&!ClIbW3W8_Va(l6-3ngL`vGJbM9LhS%{K<8a&> zqhv7vZ95_^bd$7xp5oKY|6gBT3~&e7cK$m&J$C(n4o=qhe=B)>{{Q;&VhG;<`tssQ z^L-Bg&^%u@y!u0(?AST~C~z8&Z>mra`C$GdTPvLPbsA1&W{EW?vz})9FYo@Ad;Z%$ zIy~^se{1{C)jU4^SGUUp@PPWOUn`2Re;VikXreHS|h8`<8=bK zxn2u%U~T+0nL{)EzkL1TYsvp>{ohI+pZ;IIelY~?zkL1TNz;7}|1xMk!|zw2`IoO> z1jr`?rl{+}MN>HkU|pZ@bX zUvmJt_?N>21de?!Ae^ZhJx~6wt9v9;ynYVKVv4$u>!olR4#bvwPt&E6bB|Itq^4_% zC2^#hF*TJQYA{ySCGf9i`k%oG&-}U=3uvSN2YcTA|KXbcujUEpf8YcSLH>nH;}fR; zVgSn^|H_p$iaI%-=qet?m!7FT62EQ)8|&s%8wlqt{Z>_@4Y7Xhj@MH7H}cfee;qsR z3dIE~mlyy2AQ1n3?{J;}b0v>O|6j8y2W-xPm~`+Hrsbl{z*$I7mM3`Q7@9TU$!*nq zFte95hRQ_P23g+9jV|SD2UeSN}N z5y|qEk7J5s6oug?h3}}w>T37EU|@z$O)ZRskduuwYZ)oMnInaRD&gTIbMmOT5IITe z5Z4?=VxVCK?fM!IVRGX+ZQC(S192a}eKDtj|7WEZy~$vUuEx?J9GmV~CF$d{7Xqgx)>tLj*-eW5(-yR#c1&U<{X#*=9&JGC;u#Db!Oc2yEPU#4 zaOp=wTL)j8Gx(ZGi{7INnIRGOgXalNh#)|Do<0JS0Y;la?8p#p{Tp%4jZnueFw5xJ zUWMK7!Ov1i0f=u73PfR1R1Eew}Hv@QvGDItvHrYrd=$^Oao7yT6 zOz=>RF)6m3=8a7~iD-Hj0~ANPl1N9XvAMu*pv+Rs*Q*N{6IUI9ibsiYM2KbrXbi8h zo*;zk0P1vYM)B)>>1SS1!cJS2l}2UTG7j04as48Vf@>ukXdXT@oW z(-AF6ex9c08IgyTbWb?Z3y3BpyF!dtefjb%;<|xPn3g!Zjn1Ufg!e6UA-)iDzYR8K zTvJpHA$aoNn1z%pA}RmIy-K~$^$N3|f!hRpB1FI(e6ODVvw5@61Ivm3wSRPS>g9hp zIb75Kl{^;xza$Aza}MOBFUkhmGcr95PT-AWU}m5wg+sudZW$;R84&tTHgRDsXQ2Ld zZRFejOlO0lSS^$@aSvPR13M0781~|{?s6Cnr2z5`DsB<$@S(sZvI;bCppDyndY&ZW zcED708$991%U_Jk1{Vb}Owo^*zZlR-3y3>ZAYoRZSP2jTqZ1K*Hx)Ch)g0>3th;l} z0en8xY*nyX-_mEU_4C!!6*j{62NuI}hAHkYsAVJ|$Ex&~)=;~d2Q)&}dM4jU&EFy~>Ag|Sh@H}nf! zL?BAYL-qiRowIc*!zpwdwmjQD+_8yKqG*|C36uW{! zPsWDraoW62{-`3j^|w{%o`g$DFc+qJwqHtbS3cACGyS!)@&b4Z*qni3(}i;c)08}1 z7I=nJbcL zEkpK==rqq$G(lMjQy~aNU^6CJ46TAAznqj^j*h_o-sx7rfxC-$q5#+=`pbpc68Ywa zd0DtTKKZY$t-u*^GeIbS`TG>6t?e)#_)CU=Zz;Idlz7BBTz>GYbK{dcI75JB=_8nC z`1dIi@il3a6-qalLKx3UQNHJNv?H0jLn#vjJR*0C%1hPOe0)OzDNZ=Bx}pXTFe@on zKHw|?kY_jt|NrM;fA8Q3#CIHgcD|lw6=D0x3Vr0a`HruukY*LEqm(>=%@naQm(Kew z-ouuC`uh0}mViFexJ=anjNzOVY)&8UP^MA~8EJ*Q<7S3dB!bjm#9KRz4~K0l^Zwmj zRic3Htrlgd9N~O+G{X7E8r(-9;>$NO93*Cui|4I=H{9l7183Zu&fWxL!3c!Hdb1=~ z+|n;xB#Huiwm}gjD>f>Bev#%LY*A{H52fp~yawVdK4M6-cgtT9NsSCbO0?E8O z4%n<;KlpIYr}OjyKGFz8?>O6kgXsj8@m+IHrIyf^rkn;+(8BtzSS#HwjG zIK=SQAl_)~!*2yi*XR<9=ZP2`B&*Vr=;u>^>gj)h_(@0zUke!kw#9!qJapr~ou2Hk z<3F$DvFQJMG36=;_=2S0T0l>h>^q|vn&cbFz}0E9mFg!V!!V8d5PWMKHf7bRlKWG7 z(|trM{P0-&+H|4&!$B54#lJ-}R7BQk{uRXOv{*`VW@|KoL;4{3nFBtzFHoM6M|R+h zOw&dXU6rsz<7p}k9d}%n;wD@93N^alU<`^f`F4*#MY%SRRc=rtd2-tsp7Iw^_jY&n)PAGN@jycpwTL zvk*K&rz)=$qrC`_f-PVNs32egbGDFfxz^gtgw1TX27cSpuO)t#gP@!wuAL5-zUs|x zz3v?+6eFUSY`ns*FqN&h{te)@+8*6jZRRamFZNgSd^F4nsJB5h3=qAxyn(CIOis;6 zAPCzno}p|TKtAz|xO>LK%fnL7C0qZlrxl?wiUH)^dijsWcPN>r!ai-8`k(#7qa#=U zb9}Il|GARKlK-yMln)~NSqtdN3VzNghL-wt^UGKHTO)CdM>Q0yQ}+)Fj#X)`2I&4Y z(0^2LGt4+9)2v*C3ACO65BHDU^Z)U|TK~V2$EN>c%7L8oVYq;|jGitl2n=O#egO6T zuRP&feTdH&e0I*BgFUmZ9UR&QHt39Km#`=>n_vaVys_CTDcQF0GkdLb;?w>65vr?i z8)nLZz+prk4V^9ri9_wQ+3K_==k>V(eoYxMxz7Pil70K#&a#42Hw0FA-0|!@fh5ec60k(?s8xWCWNxWS2o!YgcT~)3(2^ld%`bsM&O5O z2|j!`y9N)as7lp^Jv6~;y6%xkT+4ZjKMnHV9W2mgL1HA79yEvXd?H}m`Tyi_&yD|m zaB#Gi|5owX@*kUWAm<$DNncn546UT6D+Pu}Gq@la>SpzcV}oEgo^oMO8Ote*atsF>i4yW;*>z!+Vk0`rhiBuo0`gl(n&$4>sggM-t< zwf*->9*h3}TunLPa}LC$13Bx9GJ?h>^<)`B%czEC47XJu%hwq|zo!2yd2IS$P5Hv4zG~{}5_WS8Lz8i%aX-`F5(v4`ovrCLK6E786+Agf>VXN7 z?ggRHO73t&6&)8AXmbZ?W=p!ND_?Y~T#{6AMQ*92ac1&LA3dg3`O8n3mNWtp4>#flb$2c1H8!iZ z+*mesrs5{IQI-2y&l_FpzuPYdxCuPB%u=xHp>C2w1_QcBk18$@pS!K#sG?w&A!A(k z=<%9&XuXx5&wS6+pn)Q;XZ^q-t8v0^8&=?iQD{qzZ&?$1~Y}!j!zE%B&XSQX%in=`mGN=yKUmce! zhu#k&Qf>9EEoX?l^t-WDM&T4^B0XDqauk7RoD#_X+L{Xs9(hp+fgqbsZct%jV|Hx= z?G2u%)>Lasgon_J*(fSF4Wq>Tx=bpb8e~ZfI`=KRXk1SznrAx_VFq&5KJyeM#}=?tfZjtaj@0? z=g_tPIXF08-~X)SvCe<>Q@;3du%_iFd^oHf(a=Z5*qDfw92M(Ufpxktp;~6%kYT|Q z$1%*)9@e_gwz5wC88rtcJBx+xk1}s42>ZpBC$DRd+*7(lJ8!;JF60JGRCkC zC;<-$#4rOeNdP4i?k0v4akT^sGR+czAbn)?cLMJbm|$AMdqhXzC-T4p5!uR{5%>&B z@;`8rg3ln6quhIn8TY@fr(XV>k#ssii|YRWPlx>fd;2Gj{{Q6YXf6M(*jxuPTDTV9m9r`P6HZH#qhf+7HN;cb(6`o+H?r$fKcR&?23Fy+st_=F zZmAKN^A-%)MVj1G8?57nnK?z}Hi+*~e9ypa@K(0Wr0eF;@t!ts7;00rbg(RUBI}wP z%FLl}wWDLzFaqYQah2w-0TAD6-t&|0W=g-wQ?7UKs>94T8pemG*|m;8Pg8&91J2j| z?c+OTp>d#Q{nsr!;jG~$rID3i2!g}*z9c%eX~os08hg#Cs68d@ZFMQ=7$OV>n3&LDAvjUh^La>D(R*kFxUL%>=LLeLMtN`jN+uA}vSIw*d=4?zC z1edq43R*#9iWemmqKy?mtFn_V1g>giS@8OK&^kJXtu-cp<)>EvBM-s5A2r=wR{Zzl z!#&sjfA45-t^ZlcW9fe`_*B1vxzq#=qX=r`++R^6B%$l26f(y$uy#l}$Q!4mO4)BI ze`GF=@JZINJ*%o;vjfcs4f{1e+%zS_F?v3emh54;TxWk_yv2<$RqeKf{Z(nXKAgZ^ z?CFt1DpWi3?n?}%O$^hN2ME^7KMJ*Rj~*jan)On%q2H~MJBh3ev~r}}BLA4E8#gB) zXw9~1ER`+mmzW@a&j{0IJFc1)R6)TlE>#3aoY^a?BmjNFw2bP3_09T>mE%WtXv$LA z7-?cF1VV6GOT2_~G8@q%jSU*9Dqe6%OEKlU8!j{jA5?9vh+-YoE22XE*5xL1QSm%j zy#a{{8owcl8K|_xMR?0gXA)Q77D4{nul_GgUB0 zX(3sm$|s>_l}?dNIc8ORm4)Yfbc;T{fn|ILqW}A0Z|A?S|2X=x5$U3XppmC`yg`fv zj7c$poc(_ISG0F}dit-(LhbL@M&HhWxSfMe-V~p*?cRvJ3v?~kOjU+M<`)W+t@WXG;HUlkClnWpm;toef1d0g zxc+~qd;9D2-zpyK{3oUwY$|>B*0ATmS{2w+I|QnM3~lJC@cy&BV{*kSlL=X6Euq8u z;!7UZ=T4%Bd%939%ylSLmBo=%V6y%^>I^A#7}eiGM^PoG-$8m=pfUagqTQ%!FPK8N zMkuNPF9{HNlDK35nN0Kmiv-XV(mU{Bx7*OPb?+T4UhuM}J!)A#hO*Oa)K0rJE@7>4 zLlU#u9rs4GLWhBJNIHYomIUljB-60)`>2FiCGBB<9i%Dc9jod-Vhos&RwI;tLb=*KcPfm>i! z^Ha^#+kk;T)@CJ7@@bd zKJCw^{A(ZFTD7xQ?R*1IJOAf)*2~QQcYNT-|2#fET=V}`JQn}wQ#~y6ud~vBYMft= zWBE3pVh-kEue|29!U5w#@=Xg1^6gvrjvrHBzTiO|UR}AtQ_!dKC<4)^F^xc!m1F9h z#5ZJHXEnMbU(3T;kgR3(I-fb6XzAKTN_4n#Vr>$*CUr2v{G{;mMr>^-%tz`d@}qispAoH0n#q zTw=6UI5&F^D1yz;4Z2|W7Fu;r=R5AG+SdSQD(6JEQH7M-w&ll|2T2Ub_EPf1$)|0w zk&$A;L%$|}H(Kg8OnG~6qHgmBQWR=+ID_GOs?j}fY_tCvT6C&|P`)062Lx^j zVA2ua-qnaApkP7c}b&nm_N;F8^oaCFg(JKRG^i?|%*sPuKGQDjrMzfBWic zSkXTmPwJ^j{d^S5zxm1MwX4XrO+_}Q?F=oiv8Bj8JBmi$o%b}M$a|PibQwnggA^4^ z{+kDfqH0U;oq1U{rY;-H4HhOk3o3Ty5KP76QW;e{{m*CdlIj29{;^O0*YA$$gSz`Q$<0CKs!|Cba z+Wu=Lk468l_*4(e0%{`-KQ%6(2D1Evz`$Yu1mNqKf5Di4V#zlI{FBqZglK=F<@)G( z8!;-%cP(wiFhv)rDDfD_utakO4y^haI+UOs;yRAtI*#Bvj^H|u;Hu*Y3i5Mi*ebnU zhZ0GM@#FOv2pmrA0S<6$w}eWE-=+*6btZrl7MP>K#Z?TDzzT+ zQw=!v0*!ZSanr(i1>z|!$wZ{!U1+$8&>Ob2YeE+^KEz|-`IZSCiqoi{skV*O^R*2B9~}dV7tQ-qzG~|LcQAhY;1ESviYv{ED4O| zuPvZ2`3cMa1ttY9A1_i!=>mekeA@2+_x7Cl-v|5q$0uv~e-%%&BrDfJ%+|p&Wmw@` zed#mh%K|YH`4f3S#ifKM0?}JELxpQGYv-5c^}^iWb2M+NXoJ?m&LxC^ZyekD$!WJI z_jZ72g18HJUz61JBc34rFK%GG`;m+E#SF*jJdVjUE9bQXZlV8&r~9t{XYX`xegD6b z$GQLK(+%W&gP#};9+LvF1+j=mh}Gw&jn!iMwk!hP|8Rbx?E!Yb2bZv*hyn>RfN}$D z^P@J;drlb}Vb#Q~hE6dKvquTg1hm^11Q9bdbG6&IeVgnfSq3L)+pQ3CD050!XKM=E z4cnUUVeQLak-^>UZ-g>-sPr=4s`HLhx<1)FT*3`<)^KXmuY}JUOjC!#0=B2vSvHWx z-r)IxivHl70=5^L`&Hq>h4Q5g^Xrz!6hN_xYO?)T`o>fwPj-x)jmG=~IIFLvvy9uE zbgjPd=tFl#&b+Zj7Ws1!0aAd-X*=2mkWze`aXO=xqC;3XHPSTJM`qU*?McCYv8CXr z24kHS6mEaM*%POdu#S=uI2ZV5C8rc;x8Ory|7_k6k|LOGZF_5-pGCH= z8*HZ}`E)Dti)ywH&Vb$BGb2!jyiMj5C07wtG`)R~*f7!Pt@;dx73Le{zhauAMP0x6 z(<1*JoSwM$pC{}1zbkqy`R_fO@!u*nzOPW9r< ziBDi4p0~IY2xsMlA@lk4?)RX=r4&l^3$MpIv?~;aFIXDzgR-)CEYR;$T%e?#O=&v78n})C|97i~1Z8Gy#(6qn z4X{px8YSF`;&2Ofq#9wJslV$w{PW(OG|>M=uYL8?M*mL__C5dagZ2IIN*+P~*`B$S z%A#RxK>1#i`lnxwi{lNxZ#q~})-|9B-tPC{HIE3J;{Qb|_?i^plyQ(6Q^&d6wudlxok{ z6LWh=Wk1D>N3w9V1vWQKyl$CY$WC4{!4-3sRv@nCO$!8*M*wx7uBNgYpMml^2LVZ+ z-zob+-dGGX#;O&ZZF*RLffT)WoJ3;xwR2R$z7T|E?cNXX(5}!dKrJT(4hn)2Aw9sp%<}Y+1zW z4ZKHyP77;9!jqOdbV)M<>kb!0_>(a*8gxwcgI$_cf?6+gA=QOVH5;i{ec9Gp;Ze8{ zNjx^&Y1M#eB9dE{f56E#_eHG2XyPmYzt?HIU3DT?3kZ32hsP9BgF4%m?%5`*W$)p3D=b|2$U0U>d+S`hR@l>Hkjl*80DdJe<6%xL?DNei1Kj z0fOJ?-z}T(=-geE4tsX1?_Jo3Kdw2L2G`C7(`taNzz5+p{X%^9xr>~*`dk~=fE3F0 znzhoC)o{347z``Z$X0wHC1{F|B*Lu~7LO(~nbif?G5f0@#%3r86AytF@CGlvOpY}} zc*XNhd?B{-kcv}tq=NF;7A7PSU5yj@b+FQMOK@0sqJUlvd9@Mt2MHCmlR6$m0|*55FG4X!1WfIn;GF*8_T zc#|SfpfM^?7Nc!O)1WY-X3Z#c8nwEyntHSiWi%iQnd4!l%-^QIir&EjB{CGiqJACX zHcN(y0HSH`IWO;lluLPz3T>2uW{7<&9}vpGWSW*ZPvwkS`c5w-LE+Ooc0qWcd+H5@jOp%z$y>^^qZ;qSBr=)#qrM;Tb9@8kOT+ zn5N`mM+|ZYGnO63L%V+38~BoUfd3;l5W%ay{s>gneN1%#AY6 zFAGwVn51Tii!#n7Wzz&M5G+aBAu-V8^{tbso&)U>@Tz>B*-g!c2<5sJyy{7Wffz3E@Fg8H6ev7=ms`4nY6z4!+R@2R^(^)PciXug30h zR)YExJaV|!blL%0SF=foZ((P4Am~b+A)Wok38#|L%vr%eg@N= zo!5AoYNACcW8y!naLT$(!>!t=xUI{Tq;?CU-#s-Rh~CPHih_RST=i$orHw;9KYmKB~XKH6ARYWd1Rke0kHds!qh5h-TX8C`Z3&3Xie}B)@|L&ij z9=g|Di4bg&4iq4Pe(J008bGK+$3GzT@4V5Awj`|BAyjhiLjL12b>XS^Tq; zIr}1=(h?P~FC!5BL}2m*Oko!DG(4JTgXra_5)~OtMRFkh^YvvgL$=HPH)|vN@y{Bp z{>Tfb$8Lz(r@N}XY7F76@*hw_K_J0Qh5~YrjW~03{u#3Q^k|#Qb5v>Y zL8S}d%A4tJ>ozs!=~^1wW72!c`YKf0R_)fizqf-UGd3yHV=*(S_tu{4Ec4}18|M<@ zH*bW#Cz7?C{q2*@4S7z@y!yy9=>_{O=>RS@5W(fy7sFhb4KYll+`Hi-0I?EDT_Mal z5dH}f7th-TQ;nbQRTyfYLGJ#5s?IofL9Wdhctus2tshcS2vz5RY=pqOUpJU&Zbz5g zeoi}zW*FUELB&I@nS%DHppLn?Ca_S%6$?=xd(?WAcQ;3R$w5X*@xfL!msRYz{m3U& zn>qjuHS$KQ7x&nq-aHoEZmsJ$J&;R0R}XMeaUI)auhYv9f_&7X;3U-H$;mnLbHJYB z{^B?X9`(zs_wCU&dJ2slAOX=&w>d)?Ux2<9zK)+a!zIICzyF)6y8%hQW6z*5@YFvF zd~btn)Ck%lE}T;t2J?esG#2ZtM%Xp#<6jb*g$UkB7e9Qz4lG@9*}e+VeE~M*0FQ6I z1F!z$h1P*%k0>JGu_yWX$c@4zuS^3JkklLgqgT@U^K0{Aqtm3P+d!dj&irFd(m$3& z;Ws{k@hID0fqp&DKd>mna z!Y>ni2WXAe6_4!8N;A)?#1lcD%uY2O*`Uu?e9$!_K9|O3(PIHd6XN{Ogl3Hf;T1Qf z`<`0ofuV+Hoqb*a$n6pds5v7FIjU*P$4_h6Gi>`?;e%j7OFTSbfvLmIzb=cr zo1^}PVAW37W!gZIFX|E-^Gz+Ynp<^7tJhZ1(LRX$<6P98@yFm=+4h)HMPWC^@Oh z-|Qsc3xrG@{!GS-T0G$waX9VwR|2}Zf(GCH+2i{_k0ri8arO$EN(zFNB;$>+gUIXX z7o^^HcD$ooXvrJ7RVdSpr|Q=3_dRNm$YZ}O&6L6+0KW_R9t+52Stn-4&2smfH(49Q z0VLOX9go0&|D3OY-O1xcKrK_B;Ot$pe|;_H`S_hL14hqP^JnwaYs$S2D$f(H^W^8=f!VQ zhic+X*DD>`D6A?*FvZKa{@79i`$SnMk`uLPh#_|awYbpO3RX$d9_l~woc-%KneTNm z0NsOzGit5$DmtMxB{iSTWvd4~RE_*5QewGhffRFpjJTB$_75w4{%%6#w2$2Yd4Ftd zKG@B5%8o9d%eYg^)R|z%{~IR$iw^c0kmR#f)mk z*S+-{aD&k93+c^04Os7rrRD$_^&D}22Y&g_0qkx--wY^gkOXY~MQn^I816N70^E2y}6bVVe0e$fseh5 z2flX~Bv-;D+UmV^NC8r9dv1o+7tsvY{ra_`LCgT3d!Vh^GaA^&BdBt4{M;Q5?fng~ zqDmMBes}sXfey0W=9hsVfC{8VH=el%iZTT9Jd6kbyv=??#6&3kEfF7R( zEBu^~1v59UJV8;4_hCPS@C+>~Yj%XW=vulZ3nr9X(OTG0Rjp=f@G2dTx|B34)LLfQ zTO_XX)e#%ciW*Pc5bru^Mo;=qCZ2OFnsy(TQh*hbf9s20f%}F*z?-@&5IV~9xr;Q# z#Q;>Q3vyCQ1a3m&YNFd0f8oiiVGLtrF>Cno|Gcoe-5y(%Y&9?uXge7n&f^n!0CNk6 zOK|*9;BLQ0i8D&FK`(h>>BhF)^4PVF?K*X(@<$*az)0QPjd{F#vKSDm_cv0A)d>2tk*z@VNtg8Fy8%?~XvuHa z6Fr~oSKv>=6q`10;#bX&ezi4_WnjnO3l*bTLPFVCz2MZ}v0y7+bh|M7IgRJO0`0Q!TH}NA*|=E!s{%7ZBe-Y8 zxfZ(*pF;TiR^4#3;3&;BP)>C~uk{0cjJ5a?Stgt4Q!k$jaI*`%yvnP614X_SotXlA zjk|M|xb|9l;rc;Mw?EoEyP_C>{cya{nfd=jx;~|bn`V|recUG;6_h{pEVSh0kAIrO zg5B~%ZWm|EWs#&xRlYTo#l*5Ho&EK+!`JE0Q)U4VIOl0kBF}@}rO5o$+{5UdGR2DC zjjierUN%fDb~IE*V?|M|>k`;!v?Rv$7oZPcv$ zv{u)o9JUS>Dw64+*!Q7L=e+`Rj-02Z7n>7c<`|aI)*$iV4y01e*Z5sk4)E^vpYsfe z@#G+BALYfpvtWt2G2WqYlHu;l`m>=g-l!9g-4-hbR&kscqimweEHs&==f_c2`A1$& zb{#0S`a_~DjB--Ccx9vq+<+Y;Yeq8oa(j^75Vp`&`V5k;hr*9fx%vbnNc9kVBPAK@ zq2!WcHa+S$G?==AJ8YvO6GG@a#8T$8^4(vLtaF6CZ??sD%BfW3GGqoDF?D+vU6urU zdP4_KcWXaA+=Y)CFaC}nqcx(mmP$w!h{ym$sL~7&0|E~!bO2Lhj|b;ZqC-X*ufUIZ zfECa@59lj_s&&`n?*YwJZ^-OEK_Ma0WD3Ds0Aqn#BIrizn-89dPl_Tap9bf}5N0>0O zcHTH!UN77z4i;h)5m-R(4BJ8}vFZBQ?WYY?DZ~8ywJ1MmwDNh) z(rMnj&aQQLNO9Cm#msQ*U z<~o3T^UIMMmHUdpq^7TM6tWG95Km@a1Kw!?I|fm`Ps$8jrkv1lc<&bkM|I3}B zvG=2gChMMEaw>XIlh;TbhS|Dyras)!*z1iZ+~gMR(U^gfNGV$SLF z+#W<*arM3wxZ1Eg&Wt@D0u`(c;{#z3#`J@VU=y#2_I-cyZ@{BGLA9Byt~r+Y0+)Bk z@EuVmX{L&D;ci6~C`1j7rVp6J)-=}*$@DPhaPe>fEKTJBUsg0$ur3k^mR(k`CW3lS zdle>-<)vPipmU-TS^0?HtJ?;rQpwk=am9n3Twv4$cv|Y`>+a~ik%-ZZ#R;vzEC)cX z*8x!MQnkh68{9X4Pef0xwCHRB_-goC^gRRjoa6TI-i?IQ7qK~x=&O)XWD;HSl9PP7 z+k%j$i05g=`$E1b}>ofldWgJ8s%mRGTbo!cPBMs`-De1e`V*_n7 zb`r*5EuC2wCubD{Iw4}HRuXw;dGCX{5y>FcIfYZ(Hy(S-twwx%3#V9VpqKB^{s}I_pT)XTwG8 z6~^0X_UjAEE4n{{7h8&?pksB3LJJ_ov!%BQ@>HIYgFg@nX8$n65&J8#8reUI$Tp0X zf`m2XnsQT`x_xF%xezBGNiI0u4t)6lHYqYMkN(lnZ5gIYCMu=Zt0<4UY>we_YV zN~mTew{L~C9iHWX?}I5L+7@h@@0_6W$mt`_?vgSYB^_Wh(VE4$^X}V387WcI4mRR# zi&~86j;=G>b+AuC zC0XJkpa}G6tGG@q%>CO`4G!ZNnTJqZ46$C?g2okOP|Yi=apJCIUM`reFiGaALux{& z1p0#xVX!q$26_|^qHi#s#Pk>_#nnz6BkV3^{S$tQ@A-VGA(us*v{>JQD46yn%Z!>O zK{&M#FJ6FGR}LSK2cxoFyzNAl6`r)_Z_3F;pFU~!7uuG7uV@*`;=Pjo7->}PR1}7M zrx1bI;gKW-fBs^!{05u(%A@V$^0e}KqYVcaDg`_XddcV;G9jk6D7q27cNA(mA#^NW zIGPr>cSXHu5YAPxtH)^BEFy&E_|JRx;p-jwuswlUoB@<`Ul!SN(M_RsmCH z$BNlgCk01Wo)h#cQuiEvYA<)tx)W8Go>8WdVG-6S6V`naa_Qn62Dz zfIG>+gTmr6gS0g!TuTyF%2BUy(SypPgsgb+MY|Y2Wxg~_3t`wBanQcywskoRqTr)$1dY97MtKfDbKCzb3PK^9_clQxDhVvR)p~8zYoOcw zBL4im9_?m#&M!X#Ph{|i;*eq`KFqu#MDTp`X#Bc9QGqV}$|=L}85hhKfc1O!?DJzC z*8Brc@$;-pB!_^T#~?j(ntG2`U;AF)82JsL9F z_ZW6WrVRtQ6&xtSr&`9dKedDZPUfcN&a?F3YL-)|tPEGxmC~_#H`r|{*0qK05{|Ex zP~UFOXHch-KrOWGkAmK%l>bR6^#BB0Xs-=aKt^M(&(kDe{m!Q{4G?60bbmt?PeZjY z-B#!iQP+<1_O6=8g0rI(ZE}Ttslc!O#i%gFQZ)FXPk#Jj|Et?+fahu4!P~Hh_d3cSfj+iV3Utph$@#r`75aiaRs| zewpp4U!9&YL9F1nL1aknzAwzDhIObnYy$Lu6U}i2K^y@XD+E{h;zj=wT`-1Ke3Lv!v{MNT5}8LYLss~0>4AoFz!ol z%{qxvx5r#WNrvd3+D&y{(0qc*#F#l?t?c6(c>6rC1d|!K1OS0O5(!8=%!GW$hNln6 zk71}q$S91ZI|%z^{6WxHd8(<6LWrqUm3ttveNoDefOviYX+e>V^_N_cFE)al9+4e> zch`yYmb2{I>Q4%;g_{#QN3h8&B>_BN9JlB^x7lxS$KNOeIjVKvh{BX-9dfsp@g#%k z8;R`rioHq`D`Jryn610~QB1A*fAt=U`45{i-tD0jMT9$MasF5w@N)7Ck2sx!u#?1En0%`f=3>&t6jt|^1!!^)-^dQ!?pagmc-9lk)1CdmXWUp8dL%) z4x9-1loqwMwbia}rJ0#8vLN!{@hn@jV-T~DhCl7|EBF&GQwqBHS%e-~8s_+xK1l11 zj}_WyQ-94|1(SUt0GSaM5a({x(mV*zgBjj6o|19y?rW}aGkEX99VyNp9cqR&U*TALn-_@+EC%f^>D(wbXP z7|nu=Y@WmP4l=PYmEk8eVfrO3yxhb!MRD`NMwf*&<4usWrEIVctOH_fp8j^nM7B@*zA>!c=hHcN?L)qK((en*I)cy27C-dTwNx^ob17{`=vQ(P zQeevOM65H`G%$<9t7ORBn^tQ;SG9o$7+s{<#&I-2)1dQxn>9poZHJycqM4_jKv;NmHV zw=IU3hg0hwLF{e+LtbQBPkLaOXcCOWE+#ZPudOk3$>gJ}G6!)@qkhMsX%KsbvU85; z+&Tpg5(zb+E!rfx_~153k><&wZnkIrH}9##GDLlrK!FgKkmQo3r+Q>~?bA!(Vub=SN_i^^`t48E8Y1;1TvyEp>%JPFE z)qG5OL4y(Y$u(l^C@ab4wpOFfkiWa4Xuj|Bi5#I)8RfN>!sKblBzZwr!`+${k9?1f zq=dLR5`&`a2_(*`HsX~T_#;EUCnx4`-T*GPy}B3S1lj&mFhqr7-r$Hf*uvklb%^t` z$jl!>r;1uJm?HMRz7sk_cmCumb-jqjU~|BI;HOhu<3cDWd`VsTeD0WM)$Jb~3b9|A zaPg#uJqUP??$1}1pS3i9fE84VUP41QGOp_KI5J<;1(tyR{y@Lxn|t6_3aCj(m0)~E z`JF61DQ~^?rt#-EzX>rkkea(NPo$X>wDOjk?Jt4vpa7flfo=}|e(YzW6n)=9`WDjx z*JYA?xF|S08D-@0Hdo*j=KPdW2b9|EK^goM0o#mhU!sUi6!FX$a%mL!0JdTG7Gz;a zo=4_BhOoun2%Wsl0FewPnWj2pbeAW++|Eb>R3aXIt+P6d+yLW|NdbEp#!;K4(Wg=> zox`?8f1Sg@=o4fA=Y-|SV&-y8BYbPuE~`c~K&m9E&t2VW!#Jl)PN_jOri=cL=;xnv zAw}su%@hK97MChR#p>H(P5oO8Eq9%+f*Ha5wRD87)z!baF^#&{IB*93o0{RLOUYn% zLqYb1y3%E>l*B0^b0jQYj10;H4&mdK&s$o4x0G91W-IgjuF-X()Q9<2vA|(Z?*2D5 zzIEIsrk{V5MQ)sDBl&` z4Pp#vTNgpsce-wLB)-_|Q7VAM-HZe-JDWpRIQMiZ>_-E09iTdtE5&M$JtptC& z$epd&tJ^DVOUjCrc^+lf8h*(=2blRk+E>s06nuZPn~fK8!Q{yQNV3YB=9H^y0dJ4_ zj3fR>-e#YOnQ9>sApHW0b)xN!xs6Nto`Gf}t!ID{&Fd5Mq|R!OF}vshZ!c0PYF!o$ zgd)Q=L5uKqw?MlbGpuLi5_m-0AFB1FM3AiV@$a9Rg@I4v1=+;2KW6u)LW7inpsYk$ z`(>6P_b3Nng_F#4e&W5nw*2~TKv5+Rr0=^0lACv^n!c&{T&x0h$+|(F{y?toz}+2H zv<_|%k@MY)SAVa^PA^aY>+AJe#?5Yjz}@283w<`Z&8MI2S(%it{ z&d$z=_YV=wp+v7+iq%(2Zcj1xR5DvmDowWcFw+))wyc3^0xcxD(;3Gf6J9s}3#A}* z!cluef8B=j&tz=;((;16+}X3w*uiu1RCj9ZD6?FclZ2)1qaf`vWqJ4{WpaAs?!=3e zO!|S#7I$M`*z-Kgm`#*YEX?Y(OM0PW>N&#aq8(+1DWl4SpguAuu11wfhu5%}_e)Dz}$urKLB5H%A72YSZhLRL>BCRdxj%DReE=IK(m80nfU}45*PutD%GeiU8 zOr8S`IBOZqv+2eOd!BRLT%dBk5i|53AMQ`=_FP>E{(N~PzqcVEOVRUr=v)ESWdjeY zMurQ{h}z`NEf+*k%sDm0eup{3>2L(@utx$uV@aJ2{W4acZ;mX&AMKfXEaAK8KF z6;`|3ZA$LY4sK(q%tq6DFftH4;QKbwvZ8fXummYs>0#)HfbX^>Of1j*91hATya7 z1SZ;#)9^oG`5cE+zyCUL3)qD$_|6OX?JEeATMFiaQ~gO z&x3+ZOd=Q)EBHL`ip(@%A{<3mc>!+ezrbePqs$f;s(Skzk#q)kX+XvGzn>PT@{tGIL$e1G zG{>AzOhG(!vX{;oS=iAa|6u&J7S}^c6+N28-SvHH>l_fT+(%pT6}q&rW9`)HHT%kYkl`<+!{E9zr8KgB)gzvpTYZEHr(NT8KtFxY&Ip3y^o=_ zVfJ>0Ob~WKQWE14{nS&Ljum5*DZRh?()5beXMZ?`&c`95LPeR3-BK zRpceqDqI*v)@)v?G9L_qqpRd^t=FfXgf2q zB6K#~X8`99wvz$NKcdSntc4=1gi52WC&vu8y8E5ff^F3fUF@E-N#UGdT&G3UF4Q^r z+Pzks-YjNKcHfM8jHK-pV;nh=(VdF*|Qaqa7R7{6|_UIJ;Xqwsi_N z{wK5b`WD^wA^6baALq$!fxGJbOE-SK+Br~68b5rh=HhvPpVl~^d(Ga62I(xoWLr*$ z{{%{|C32>#uUd5lBJr67^z4XdYOMX>pU?U& zw&}4Cjt?W>K}~j&iYLMSUkvNG*vAB!gL>-AfmJ$KX@BUb6wf>Jp_;yhd6ZzqujJ&E zuw99W;c=2fHwa>M&W6=M0*QvP3<`^}gw~@nr(xtCvlr=-f0qupsrWzr`2>S>_$I}s zDnp41cN^*;^Y;gmbk#%>`_J5RNiLevknbwJC4b2IE|{8mV)dUjztdF?LKV8HPIzJK z(GN=ezLLXh>A)s^l1kjV#erBAzOF3zpgP^^MG(rkw?FCJ$pI&>?+NZ!c+B%xO(h!9 zL|f2dxW)ZB{|b(G{IZv53rl5eay(Kl(!RO(|Ax$Ol^7vm6@{_O$l}nupJV4nbrH@^ zOy~GSkMB%twu7!+=-Qg+!aGppKpJzVF=t$Bp4c$u2>}0}e34&l23=Pd;I?|#+28>% z{KC^#!ZIrP6>mhfDTo=}o+mm2!4^x9kue1n5Bv)IQhk0{`3D9L2GV8Rw!$~eH-QlS`y9u5`b~oM`zEKta{cU#9oMb*g#w$~U-9`a zfhKXH!6+$~)m{Dj_wiRT4-6`iR{d4)V_c87tev5h=-)V<(&uKH7IWg%% z{@bH)!t+);a(nnYE z?(dk2>MNRuJdh+6)^MMl8so+<(E(&r z;on_Y@FMp`hWvs7PcxD&mNB1bA~Mw->Q+qN^V93ASs4A{8L-d2R ze6+$5Z|li;Zy_s?3s}_?1)OSsFr+x+8*#Q*!Z@%aVd8~YsXO_VWw2o4XH@Qmvxfel z#uNunh4RixfC?cHRo(QIeu$|K#m_ezT>j%3TW-sfu)b=Wl@NCa>XQls%UnN8Ks;aS zXFn)P`{4+P^!SX#7BH0Nq423@OFU?=5ts==*CLwwMHOn>(pGsqJ{A*E>SeIlA^bk< z26psY$E~=-*JEtIvU9!uQlX9*`UB6S!i&I_Bs<;-IY>9}$8EMGd9h?^Vh0uMp;Run ziMQjC(m&Z+2~Q)HUGmv31@s{!VbGWtGe`KBXPuMIKLernGf`m6r)M;P#23VdMCJp> z|5FzofnHsQ_$LQk&xT(Jd=AcTviCj&zn|MFL3u3Durk-+xLgQ?ka`g-Q?;7(qYbe=`D8ok^v9c#u z;x&mMBhf=H8p-Cq6JIX~_{9G8{zCK9eDTY8L4(w`xOMj z>SlduohLY%hN5tAEX7OU>9l`l2K#$uIYR0q)G%j)%U2P>M{9C*YDB;#Cc-u$tF{$( zu2F;zSN=(Jq-Ied{pZt{W{TYI`DTrJW+uqB84OTT*4gupegvA&{qKYMb(8~Zyu1DY zUBMqqKWx{-{`J`|@W57T1(yuuRJ$MQ3|M;%+s{%;B2?E~L9DdL?0>WN3~C96?_6qP z2lMAr)`&d}R`SXF;Vj+oDD(Rma9;8U_$isfolMq?g}ZNN9m4B-Al;EM<<8`ueOgMZ z!gfEyB_=rzxi}p05WAzNQtuGEr~)}igR z^dpR1Kj(Fwe_7E&PBuxfWU6SPs2z?iegSm4f8Ro^H0(Tr=w)?AO+k1uLjG5r&-V%x zhdrAWTR~T6shF{ch+Lr^UL~%oFJoBVpd(6er{>%x*o#X$Vu9Kp@1Ao+7pI%vytlv* z`P1IFZ%UhQHv>YzE28{*Q0pO|=~So>%qJf(QVjoaWD}j}07>ctNB9*x6elIL5Ht@K zgMU4!1h)M2w?bEE(Lfoxe#vObA+gfj5LQPT;PWDa@cI-!zvRn1A4p{h5|LTmEUy9U zZUQy$m&XE2SF>tglI(Rd1X>aJRlXgV6tZXFPp%1h%1FQG_h1R)qZ&2O8(T42firw{ zP_dr1(f* z^r#4^0+DGB;WRk4KDCT^3&5(&k5=ZKs5>C@p=-gt^VST2|8(PCg!+H9G`&JAL$4Q{ zAV{NDJy0o!hi%xA?i!3om7OXz#N9uDqWX)ALmhCsfrsS1Oe2$PCNvkP(IACIzi@k| z6g>40dSjWGpU^>EfWUtnfh3oC*Z<21w7R(qeAo(P)*>bR29MO5 zW`|QJLfb8R&7UH9Pea)V7c|k$?(^&34c$eP4qG~aoc31KRQw?WW447z2%R%_vT`#tq^79_YO3j>DC^j?)W}UASFII{#rBAK*wl&*+b`fImNJW8A zR&p;y4(g0zxGVr!8izZ+l#{wRKB)ggE`LB3$`u0-a%W%*9+pHJsGNdYc%AeUV!1W- zE`I1Xp2q;vIIg_xM}Uj})cYZTsw(KZk9KtxRFD?4ql@^wbBmuS zZ~?RIRCU5lJ!du^4WLcvJ?TfVrK!;2hxT(W|)wD8Et> zDyzj1s;g1&k#8K{`{3w*g1FvR*L>{Y%}NlG1bHem#5(j?P5JZs0_-!so3O~cjz-Q5 z|G7U=8z&v0_Yg>QNzw%X`bLibC%?-lzVFvYMWKTu0uvt;uB`zXz7oPN-h%1A)QbG( z5))A!JHkT7J0|JMjvZC@X&91ymY|i#pqANd|=T+%z`kx&a34DZvdiwZpCgpTv`5*?(^d z`Ut;pde^V`5j7?&^C03hc>4^;#W$l%=bAkXcz7A~G%T(y2(DZBhVDb;m48N-s~4Q> zrZ)-&)JVW4veF;&rS?p%sQ5_NMZ6Bn))6mT^9vW<;HB84FITeK3x5^LHJ@pT;-w1S z`xM+`jd#eCfS10|-Z5LxI9%Q*vyPl~Us|Z3aa;J7Y=jwx@<~(i)hPbm5}q8CS@OiP zc8y?U)_&dliI46hRc=Gx9Q}ECzO8r4LkxP#lvB1-$~6?fo(NPY{F59!b)zs@}Eyl#>fcS>r|ikDMxmb_Pbs5Pfo z-2PKLrs~e*$62k%R`05Tk$@*HRV}My}3aZ z-LmqZ{rb;{eTk34@7_?vy?2`LT%4=7xC)Ea-Ot)g{bd>j4jiq@+7zq%u<%R2o1Emx zD@`PuiIN;%LurSkky(FlikMzDsYi?V!u`}mBXBnIy3C5D8@0>8N$ukK!%bC&b0lMw zDo^VB-BEyCB380QB`CvEI*SvxyA^ZeJE4~M8k#gJn{VemAJp|<$odZ4&=$Shpk@qy zEXr;oj{VClrmFz2A9B*W9$fO;)B-T?* zby436PEHjAl0W^tQb+EJ+u6eN%GIoKg+VNFEl~a&Fa&p{Nm1gLfqE4B#WKQ^J5e-6 zaZKf0&cFkGNLND!a^vQBKSetyl@*18fTjK)G|H{aP#n41vpDbC5&5R{Ol*j z%@qHTcOaguiioGs&cJIxwozJXQ2Rd`47ctxqu$1qnY8e z;Re6HLDZr%m=!+)!>@1h$$RA=w#T^wABPDrzmv38DVmBa|Bqn!>}f#E)R?~`)SBMh>eKrMLdUh`KI!~PrVc&~4@ zG*|ro2Z`p->;u!Z%xDk9k0#-{T9*j6S()mhi<4zNN1#hEMrs;vIii>{Cnq-&#oVb2 ztFX84gP0l>4=z-u@8e&HU+}Q8X5wcA2j)0idlxCaI6tx^^8dWRQQtH_vSI|frl~35 zL*;q1ZDlO<`8KwcEu&b!D*yIn^r)sh449O6--h8{!q`eyMQF|eQu9DAa7EdZ4h20= z+3zVfzp4%P{Ug+?d(wB*++LXB=#x5b1e=fyb*_`>uXy8_42;3nzstRldjRqZY`I+t z#VexxH=NC9I*8MSVS5Rv;aJkhObWk;h-A0tPrz!~ z7+>;NgJj|ljem{^ZNKAB9WviimQ-6qkyy8CjGyj@V&2OL?|R$qlj8|0$63=MJ!lq3 zD7GItY=c^LUB`wr+G|RdT@))8P~`AX)ZO-e_2gu+@IKlJa6TPA{PV+9#e*u9|6#FZ zJ91#lcFqJNLz>xnd{B?^=^DjDA#zx)(|-$oY}Eaker%;sLwcAoH4WVz&(u)!4poJ< zILOmM08RKhardw|1v8IFkrT61Q{_{nNceg7!m5yzW$|#dm5TL{@preg#=n=_#|eM@6

n!-60` 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 T!1VtI00960ciOJl03Hkg|7t>L literal 0 HcmV?d00001 diff --git a/stable/nextcloud/25.0.2/charts/redis-10.0.3.tgz b/stable/nextcloud/25.0.2/charts/redis-10.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a7bdb17dd4a54d900ca001b24d37bdc29cb90672 GIT binary patch literal 101998 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

    9RDp40Za#VhcCg{^^ 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 literal 0 HcmV?d00001 diff --git a/stable/nextcloud/25.0.2/ix_values.yaml b/stable/nextcloud/25.0.2/ix_values.yaml new file mode 100644 index 0000000000..a4cf48ce19 --- /dev/null +++ b/stable/nextcloud/25.0.2/ix_values.yaml @@ -0,0 +1,512 @@ +image: + repository: tccr.io/truecharts/nextcloud-fpm + pullPolicy: IfNotPresent + tag: v28.0.0@sha256:a765a49bafef4e3e6c1f874c5ee1c4d2ce39b2bd6793b9a2e044ed75645bbc1a +nginxImage: + repository: nginxinc/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.25.3@sha256:1d026ae92e50e76c77ca776f234f154d4a1d39e33e8f813115e53c2a9b893bc9 +imaginaryImage: + repository: tccr.io/truecharts/nextcloud-imaginary + pullPolicy: IfNotPresent + tag: v20230401@sha256:6a227d1b0200d29f25028e07b8852f60e3d91a5814048933e70eccee749dc04c +hpbImage: + repository: tccr.io/truecharts/nextcloud-push-notify + pullPolicy: IfNotPresent + tag: v0.6.3@sha256:b9c35ab123354eeac3996e361f8c30b8e4de6d2ccd69e5179a7c2a101a67b46f +clamavImage: + repository: clamav/clamav + pullPolicy: IfNotPresent + tag: 1.2.1@sha256:d584c29eefc29e138eb14f243abef2f6712cffecac52194626a2b2f6bb3ec2c7 +collaboraImage: + repository: collabora/code + pullPolicy: IfNotPresent + tag: 23.05.6.3.1@sha256:6d21951e6376be4a12009b5058c57f3da7df06faf05c62406030b3652a3e78f6 +nextcloud: + # Initial Credentials + credentials: + initialAdminUser: admin + initialAdminPassword: adminpass + # General settings + general: + # Custom Nextcloud Scripts + run_optimize: true + default_phone_region: GR + # IP used for exposing nextcloud, + # often the loadbalancer IP + accessIP: "" + # Allows Nextcloud to connect to unsecure (http) endpoints + force_enable_allow_local_remote_servers: false + # File settings + files: + shared_folder_name: Shared + max_chunk_size: 10485760 + # Expiration settings + expirations: + activity_expire_days: 90 + trash_retention_obligation: auto + versions_retention_obligation: auto + # Previews settings + previews: + enabled: true + # It will also deploy the container + imaginary: true + cron: true + schedule: "*/30 * * * *" + max_x: 2048 + max_y: 2048 + max_memory: 1024 + max_file_size_image: 50 + # Setting for Imaginary + max_allowed_resolution: 18.0 + jpeg_quality: 60 + square_sizes: 32 256 + width_sizes: 256 384 + height_sizes: 256 + # Casings are important + # https://github.com/nextcloud/server/blob/master/config/config.sample.php#L1269 + # Only the last part of the provider is needed + providers: + - PNG + - JPEG + # Logging settings + logging: + log_level: 2 + log_file: /var/www/html/data/logs/nextcloud.log + log_audit_file: /var/www/html/data/logs/audit.log + log_date_format: d/m/Y H:i:s + # ClamAV settings + clamav: + # It will also deploy the container + # Note that this runs as root + enabled: false + stream_max_length: 26214400 + file_max_size: -1 + infected_action: only_log + # Notify Push settings + notify_push: + # It will also deploy the container + enabled: true + # Collabora settings + collabora: + # It will also deploy the container + enabled: false + # default|compact|tabbed + interface_mode: default + username: admin + password: changeme + dictionaries: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + onlyoffice: + # It will not deploy the container + # Only add the OnlyOffice settings + enabled: false + url: "" + internal_url: "" + verify_ssl: true + jwt: "" + jwt_header: Authorization + # PHP settings + php: + memory_limit: 1G + upload_limit: 10G + pm_max_children: 180 + pm_start_servers: 18 + pm_min_spare_servers: 12 + pm_max_spare_servers: 30 + opcache: + interned_strings_buffer: 32 + max_accelerated_files: 10000 + memory_consumption: 128 + revalidate_freq: 60 + jit_buffer_size: 128 +# Do NOT edit below this line +workload: + # Nextcloud php-fpm + main: + type: Deployment + podSpec: + containers: + main: + enabled: true + primary: true + envFrom: + - configMapRef: + name: nextcloud-config + probes: + liveness: + enabled: true + type: exec + command: /healthcheck.sh + readiness: + enabled: true + type: exec + command: /healthcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}" + nginx: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + nginx: + enabled: true + primary: true + imageSelector: nginxImage + probes: + readiness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: "{{ .Values.service.main.ports.main.port }}" + notify: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + notify: + primary: true + enabled: true + imageSelector: hpbImage + envFrom: + - configMapRef: + name: hpb-config + probes: + readiness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: 7867 + imaginary: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + imaginary: + primary: true + enabled: true + imageSelector: imaginaryImage + command: imaginary + args: + - -p + - "{{ .Values.service.imaginary.ports.imaginary.port }}" + - -concurrency + - "10" + - -max-allowed-resolution + - "{{ .Values.nextcloud.previews.max_allowed_resolution }}" + - -enable-url-source + - -return-size + probes: + readiness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + liveness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + clamav: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + clamav: + primary: true + enabled: true + imageSelector: clamavImage + # FIXME: https://github.com/Cisco-Talos/clamav/issues/478 + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + envFrom: + - configMapRef: + name: clamav-config + probes: + readiness: + enabled: true + type: exec + command: clamdcheck.sh + liveness: + enabled: true + type: exec + command: clamdcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.clamav.ports.clamav.targetPort }}" + collabora: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + collabora: + primary: true + enabled: true + imageSelector: collaboraImage + securityContext: + runAsUser: 100 + runAsGroup: 102 + readOnlyRootFilesystem: false + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + - MKNOD + envFrom: + - configMapRef: + name: collabora-config + probes: + readiness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + liveness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" +cronjobs: + # Don't change names, it's used in the persistence + - name: nextcloud-cron + enabled: true + schedule: "*/5 * * * *" + cmd: + - echo "Running [php -f /var/www/html/cron.php] ..." + - php -f /var/www/html/cron.php + - echo "Finished [php -f /var/www/html/cron.php]" + - name: preview-cron + enabled: "{{ .Values.nextcloud.previews.cron }}" + schedule: "{{ .Values.nextcloud.previews.schedule }}" + cmd: + - echo "Running [occ preview:pre-generate] ..." + - occ preview:pre-generate + - echo "Finished [occ preview:pre-generate]" +service: + # Main service links to ingress easier + # That's why the nginx is swapped with nextcloud + main: + targetSelector: nginx + ports: + main: + targetSelector: nginx + port: 8080 + nextcloud: + enabled: true + targetSelector: main + ports: + nextcloud: + enabled: true + targetSelector: main + port: 9000 + targetPort: 9000 + notify: + enabled: true + targetSelector: notify + ports: + notify: + enabled: true + primary: true + port: 7867 + targetPort: 7867 + targetSelector: notify + metrics: + enabled: true + port: 7868 + targetSelector: notify + imaginary: + enabled: true + targetSelector: imaginary + ports: + imaginary: + enabled: true + port: 9090 + targetSelector: imaginary + clamav: + enabled: true + targetSelector: clamav + ports: + clamav: + enabled: true + port: 3310 + targetPort: 3310 + targetSelector: clamav + collabora: + enabled: true + targetSelector: collabora + ports: + collabora: + enabled: true + port: 9980 + targetPort: 9980 + targetSelector: collabora +persistence: + php-tune: + enabled: true + type: configmap + objectName: php-tune + targetSelector: + main: + main: + mountPath: /usr/local/etc/php-fpm.d/zz-tune.conf + subPath: zz-tune.conf + readOnly: true + redis-session: + enabled: true + type: configmap + objectName: redis-session + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/redis-session.ini + subPath: redis-session.ini + readOnly: true + opcache-recommended: + enabled: true + type: configmap + objectName: opcache + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/opcache-recommended.ini + subPath: opcache-recommended.ini + readOnly: true + nginx: + enabled: true + type: configmap + objectName: nginx-config + targetSelector: + nginx: + nginx: + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + nginx-temp: + enabled: true + type: emptyDir + targetSelector: + nginx: + nginx: + mountPath: /tmp/nginx + html: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html + preview-cron: + preview-cron: + mountPath: /var/www/html + nginx: + nginx: + mountPath: /var/www/html + readOnly: true + config: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/config + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/config + preview-cron: + preview-cron: + mountPath: /var/www/html/config + notify: + notify: + mountPath: /var/www/html/config + readOnly: true + nginx: + nginx: + mountPath: /var/www/html/config + readOnly: true + data: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/data + init-perms: + mountPath: /var/www/html/data + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/data + preview-cron: + preview-cron: + mountPath: /var/www/html/data + nginx: + nginx: + mountPath: /var/www/html/data + readOnly: true +cnpg: + main: + enabled: true + user: nextcloud + database: nextcloud +redis: + enabled: true + username: default +portal: + open: + enabled: true +updated: true diff --git a/stable/nextcloud/25.0.2/questions.yaml b/stable/nextcloud/25.0.2/questions.yaml new file mode 100644 index 0000000000..0eb0b0a92a --- /dev/null +++ b/stable/nextcloud/25.0.2/questions.yaml @@ -0,0 +1,3853 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: nextcloud + group: App Configuration + label: Nextcloud + schema: + additional_attrs: true + type: dict + attrs: + - variable: credentials + label: Initial Credentials + schema: + additional_attrs: true + type: dict + attrs: + - variable: initialAdminUser + label: Initial Admin User + description: Sets the initial admin username + schema: + type: string + required: true + default: "" + - variable: initialAdminPassword + label: Initial Admin Password + description: Sets the initial admin password + schema: + type: string + required: true + private: true + default: "" + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: run_optimize + label: Run Optimize Scripts + description: | + Runs the following commands at startup:
    + occ db:add-missing-indices
    + occ db:add-missing-columns
    + occ db:add-missing-primary-keys
    + yes | occ db:convert-filecache-bigint
    + occ maintenance:mimetype:update-js
    + occ maintenance:mimetype:update-db
    + occ maintenance:update:htaccess
    + schema: + type: boolean + default: false + - variable: default_phone_region + label: Default Phone Region + description: | + Sets the default phone region in ISO_3166-1 format (e.g. US).
    + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + schema: + type: string + valid_chars: '^[A-Z]{2}$' + required: true + default: "" + - variable: accessIP + label: Access IP + description: Set to the IP-Address used to reach Nextcloud. + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: force_enable_allow_local_remote_servers + label: Force Enable Allow Local Remote Servers + description: + Enables 'allow_local_remote_servers' option + schema: + type: boolean + default: false + - variable: files + label: Files Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: shared_folder_name + label: Shared Folder Name + schema: + type: string + required: true + default: Shared + - variable: max_chunk_size + label: Max Chunk Size + schema: + type: int + required: true + default: 10485760 + - variable: expirations + label: Expirations Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: activity_expire_days + label: Activity Expire Days + schema: + type: int + required: true + default: 90 + - variable: trash_retention_obligation + label: Trash Retention Obligation + schema: + type: string + required: true + default: auto + - variable: versions_retention_obligation + label: Versions Retention Obligation + schema: + type: string + required: true + default: auto + - variable: previews + label: Previews Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Previews + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: imaginary + label: Enable imaginary + description: | + Enable imaginary to generate previews in the background.
    + It will also deploy the needed container. + schema: + type: boolean + default: true + - variable: cron + label: Enable cron + description: | + Enable cron to generate previews in the background. + schema: + type: boolean + default: true + - variable: schedule + label: Cron Schedule + schema: + type: string + default: "*/30 * * * *" + - variable: max_x + label: Max X + schema: + type: int + required: true + default: 2048 + - variable: max_y + label: Max Y + schema: + type: int + required: true + default: 2048 + - variable: max_memory + label: Max Memory + schema: + type: int + required: true + default: 1024 + - variable: max_allowed_resolution + label: Max Allowed Resolution + schema: + type: string + valid_chars: '^[0-9]{1,5}(\.[0-9]{1,2})?$' + show_if: [["imaginary", "=", true]] + required: true + default: "18.0" + - variable: max_file_size_image + label: Max File Size Image + schema: + type: int + required: true + default: 50 + - variable: jpeg_quality + label: JPEG Quality + schema: + type: int + required: true + default: 60 + - variable: square_sizes + label: Square Sizes + schema: + type: string + required: true + default: "32 256" + - variable: width_sizes + label: Width Sizes + schema: + type: string + required: true + default: "256 384" + - variable: height_sizes + label: Height Sizes + schema: + type: string + required: true + default: "256" + - variable: providers + label: Providers + schema: + type: list + empty: false + required: true + default: + - BMP + - GIF + - JPEG + - Krita + - MarkDown + - MP3 + - OpenDocument + - PNG + - TXT + - XBitmap + items: + - variable: provider_entry + label: Provider Entry + schema: + type: string + required: true + default: "" + enum: + - value: BMP + description: BMP + - value: Font + description: Font + - value: GIF + description: GIF + - value: HEIC + description: HEIC + - value: Illustrator + description: Illustrator + - value: JPEG + description: JPEG + - value: Krita + description: Krita + - value: MarkDown + description: MarkDown + - value: Movie + description: Movie + - value: MP3 + description: MP3 + - value: MSOffice2003 + description: MSOffice2003 + - value: MSOffice2007 + description: MSOffice2007 + - value: MSOfficeDoc + description: MSOfficeDoc + - value: OpenDocument + description: OpenDocument + - value: PDF + description: PDF + - value: Photoshop + description: Photoshop + - value: PNG + description: PNG + - value: Postscript + description: Postscript + - value: StarOffice + description: StarOffice + - value: SVG + description: SVG + - value: TIFF + description: TIFF + - value: TXT + description: TXT + - value: XBitmap + description: XBitmap + - variable: logging + label: Logging Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: log_level + label: Log Level + schema: + type: int + required: true + default: 2 + enum: + - value: 0 + description: Debug + - value: 1 + description: Info + - value: 2 + description: Warning + - value: 3 + description: Error + - value: 4 + description: Fatal + - variable: log_date_format + label: Log Date Format + schema: + type: string + required: true + default: d/m/Y H:i:s + - variable: notify_push + label: Notify Push Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Notify Push + description: | + Enable and Configure Notify Push.
    + It will also deploy the needed container + schema: + type: boolean + default: true + - variable: clamav + label: ClamAV Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable ClamAV + description: | + Enable and configure ClamAV.
    + It will also deploy the needed container.
    + Keep in mind that this will run as root.
    + https://github.com/Cisco-Talos/clamav/issues/478 + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: stream_max_length + label: Stream Max Length + schema: + type: int + required: true + default: 104857600 + - variable: file_max_size + label: File Max Size + schema: + type: int + required: true + default: -1 + - variable: infected_action + label: Infected Action + schema: + type: string + required: true + default: only_log + enum: + - value: delete + description: Delete + - value: only_log + description: Only Log + - variable: collabora + label: Collabora Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Collabora + description: | + Enable and configure Collabora.
    + It will also deploy the needed container.
    + Keep in mind that this will run as root. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: interface_mode + label: Interface Mode + schema: + type: string + required: true + default: default + enum: + - value: default + description: Default + - value: compact + description: Compact + - value: tabbed + description: Tabbed + - variable: username + label: Username + schema: + type: string + default: admin + required: true + - variable: password + label: Password + schema: + type: string + default: "" + required: true + - variable: dictionaries + label: Dictionaries + schema: + type: list + empty: false + required: true + default: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + items: + - variable: dictionary + label: Dictionary + schema: + type: string + required: true + default: "" + - variable: onlyoffice + label: Only Office Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable OnlyOffice + description: | + Enable and configure OnlyOffice.
    + This will NOT deploy the needed container.
    + You need to deploy it yourself. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: url + label: Public URL + description: | + The public FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: internal_url + label: Internal URL + description: | + The internal FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: verify_ssl + label: Verify SSL (Advanced) + description: | + Verify SSL when connecting to OnlyOffice Document Server + schema: + type: boolean + default: true + - variable: jwt + label: JWT + schema: + type: string + required: true + default: "" + - variable: jwt_header + label: JWT Header + schema: + type: string + required: true + default: Authorization + - variable: php + label: PHP Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: memory_limit + label: Memory Limit + schema: + type: string + required: true + default: 1G + - variable: upload_limit + label: Upload Limit + schema: + type: string + required: true + default: 10G + - variable: pm_max_children + label: Max Children + schema: + type: int + required: true + default: 180 + - variable: pm_start_servers + label: Start Servers + schema: + type: int + required: true + default: 18 + - variable: pm_min_spare_servers + label: Minimum Spare Servers + schema: + type: int + required: true + default: 12 + - variable: pm_max_spare_servers + label: Maximum Spare Servers + schema: + type: int + required: true + default: 30 + - variable: opcache + label: OPCache Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: interned_strings_buffer + label: Interned Strings Buffer + description: The amount of memory used to store interned strings, in megabytes. + schema: + type: int + required: true + default: 32 + - variable: max_accelerated_files + label: Max Accelerated Files + description: The maximum number of keys (and therefore scripts) in the OPcache hash table. + schema: + type: int + required: true + default: 10000 + - variable: memory_consumption + label: Memory Consumption + description: The size of the shared memory storage used by OPcache, in megabytes. + schema: + type: int + required: true + default: 128 + - variable: revalidate_freq + label: Revalidate Frequency + description: How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request. + schema: + type: int + required: true + default: 60 + - variable: jit_buffer_size + label: JIT Buffer Size + description: The amount of shared memory (in megabytes) to reserve for compiled JIT code. A zero value disables the JIT. + schema: + type: int + required: true + default: 128 + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 12000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: html + label: App HTML Storage + description: Stores the Application HTML. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
    + Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: config + label: App Config Storage + description: Stores the Application Config. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
    + Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: data + label: User Data Storage + description: Stores the User Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
    + Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
    + Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID of the user running the application + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
    https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
    https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/nextcloud/25.0.2/templates/NOTES.txt b/stable/nextcloud/25.0.2/templates/NOTES.txt new file mode 100644 index 0000000000..efcb74cb77 --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/stable/nextcloud/25.0.2/templates/_configmap.tpl b/stable/nextcloud/25.0.2/templates/_configmap.tpl new file mode 100644 index 0000000000..081cf5d71c --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_configmap.tpl @@ -0,0 +1,443 @@ +{{- define "nextcloud.accessurl" -}} + {{- $accessUrl := .Values.chartContext.appUrl -}} + {{- if or (contains "127.0.0.1" $accessUrl) (contains "localhost" $accessUrl) -}} + {{- if .Values.nextcloud.general.accessIP -}} + {{- $prot := "http" -}} + {{- $host := .Values.nextcloud.general.accessIP -}} + {{- $port := .Values.service.main.ports.main.port -}} + {{/* + Allowing here to override protocol and port + should be enough to make it work with any rev proxy + */}} + {{- $accessUrl = printf "%v://%v:%v" $prot $host $port -}} + {{- end -}} + {{- end -}} + + {{- $accessUrl -}} +{{- end -}} + +{{- define "nextcloud.accesshost" -}} + {{- $accessUrl := (include "nextcloud.accessurl" $) -}} + {{- $accessHost := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} + {{- $accessHost = regexReplaceAll "(.*):.*" $accessHost "${1}" -}} + + {{- $accessHost -}} +{{- end -}} + +{{/* Define the configmap */}} +{{- define "nextcloud.configmaps" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $fqdn := (include "tc.v1.common.lib.chart.names.fqdn" $) -}} +{{- $accessUrl := (include "nextcloud.accessurl" $) -}} +{{- $accessHost := (include "nextcloud.accesshost" $) -}} +{{- $accessHostPort := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} +{{- $accessProtocol := regexReplaceAll "(.*)://.*" $accessUrl "${1}" -}} +{{- $redisHost := .Values.redis.creds.plainhost | trimAll "\"" -}} +{{- $redisPass := .Values.redis.creds.redisPassword | trimAll "\"" -}} +{{- $healthHost := "kube.internal.healthcheck" -}} + +php-tune: + enabled: true + data: + zz-tune.conf: | + [www] + pm.max_children = {{ .Values.nextcloud.php.pm_max_children }} + pm.start_servers = {{ .Values.nextcloud.php.pm_start_servers }} + pm.min_spare_servers = {{ .Values.nextcloud.php.pm_min_spare_servers }} + pm.max_spare_servers = {{ .Values.nextcloud.php.pm_max_spare_servers }} + +opcache: + enabled: true + data: + opcache-recommended.ini: | + opcache.enable=1 + opcache.save_comments=1 + opcache.jit=1255 + opcache.interned_strings_buffer={{ .Values.nextcloud.opcache.interned_strings_buffer }} + opcache.max_accelerated_files={{ .Values.nextcloud.opcache.max_accelerated_files }} + opcache.memory_consumption={{ .Values.nextcloud.opcache.memory_consumption }} + opcache.revalidate_freq={{ .Values.nextcloud.opcache.revalidate_freq }} + opcache.jit_buffer_size={{ printf "%vM" .Values.nextcloud.opcache.jit_buffer_size }} + +redis-session: + enabled: true + data: + redis-session.ini: | + session.save_handler = redis + session.save_path = {{ printf "tcp://%v:6379?auth=%v" $redisHost $redisPass | quote }} + redis.session.locking_enabled = 1 + redis.session.lock_retries = -1 + redis.session.lock_wait_time = 10000 + +hpb-config: + enabled: {{ .Values.nextcloud.notify_push.enabled }} + data: + NEXTCLOUD_URL: {{ printf "http://%v:%v" $fullname .Values.service.main.ports.main.port }} + HPB_HOST: {{ $healthHost }} + CONFIG_FILE: {{ printf "%v/config.php" .Values.persistence.config.targetSelector.notify.notify.mountPath }} + METRICS_PORT: {{ .Values.service.notify.ports.metrics.port | quote }} + +clamav-config: + enabled: {{ .Values.nextcloud.clamav.enabled }} + data: + CLAMAV_NO_CLAMD: "false" + CLAMAV_NO_FRESHCLAMD: "true" + CLAMAV_NO_MILTERD: "true" + CLAMD_STARTUP_TIMEOUT: "1800" + +collabora-config: + enabled: {{ .Values.nextcloud.collabora.enabled }} + data: + aliasgroup1: {{ $accessUrl }} + server_name: {{ $accessHostPort }} + dictionaries: {{ join " " .Values.nextcloud.collabora.dictionaries }} + username: {{ .Values.nextcloud.collabora.username | quote }} + password: {{ .Values.nextcloud.collabora.password | quote }} + DONT_GEN_SSL_CERT: "true" + # mount_jail_tree is only used for local storage + # not needed for WOPI https://github.com/CollaboraOnline/online/issues/3604#issuecomment-989833814 + extra_params: | + --o:ssl.enable=false + --o:ssl.termination=true + --o:net.service_root=/collabora + --o:home_mode.enable=true + --o:welcome.enable=false + --o:logging.level=warning + --o:logging.level_startup=warning + --o:security.seccomp=true + --o:mount_jail_tree=false + --o:user_interface.mode={{ .Values.nextcloud.collabora.interface_mode }} + +nextcloud-config: + enabled: true + data: + {{/* Database */}} + POSTGRES_DB: {{ .Values.cnpg.main.database | quote }} + POSTGRES_USER: {{ .Values.cnpg.main.user | quote }} + POSTGRES_PASSWORD: {{ .Values.cnpg.main.creds.password | trimAll "\"" }} + POSTGRES_HOST: {{ .Values.cnpg.main.creds.host | trimAll "\"" }} + + {{/* Redis */}} + NX_REDIS_HOST: {{ $redisHost }} + NX_REDIS_PASS: {{ $redisPass }} + + {{/* Nextcloud INITIAL credentials */}} + NEXTCLOUD_ADMIN_USER: {{ .Values.nextcloud.credentials.initialAdminUser | quote }} + NEXTCLOUD_ADMIN_PASSWORD: {{ .Values.nextcloud.credentials.initialAdminPassword | quote }} + + {{/* PHP Variables */}} + PHP_MEMORY_LIMIT: {{ .Values.nextcloud.php.memory_limit | quote }} + PHP_UPLOAD_LIMIT: {{ .Values.nextcloud.php.upload_limit | quote }} + + {{/* Notify Push */}} + NX_NOTIFY_PUSH: {{ .Values.nextcloud.notify_push.enabled | quote }} + {{- if .Values.nextcloud.notify_push.enabled }} + NX_NOTIFY_PUSH_ENDPOINT: {{ $accessUrl }}/push + {{- end }} + + {{/* Previews */}} + NX_PREVIEWS: {{ .Values.nextcloud.previews.enabled | quote }} + NX_PREVIEW_PROVIDERS: {{ join " " .Values.nextcloud.previews.providers }} + NX_PREVIEW_MAX_X: {{ .Values.nextcloud.previews.max_x | quote }} + NX_PREVIEW_MAX_Y: {{ .Values.nextcloud.previews.max_y | quote }} + NX_PREVIEW_MAX_MEMORY: {{ .Values.nextcloud.previews.max_memory | quote }} + NX_PREVIEW_MAX_FILESIZE_IMAGE: {{ .Values.nextcloud.previews.max_file_size_image | quote }} + NX_JPEG_QUALITY: {{ .Values.nextcloud.previews.jpeg_quality | quote }} + NX_PREVIEW_SQUARE_SIZES: {{ .Values.nextcloud.previews.square_sizes | quote }} + NX_PREVIEW_WIDTH_SIZES: {{ .Values.nextcloud.previews.width_sizes | quote }} + NX_PREVIEW_HEIGHT_SIZES: {{ .Values.nextcloud.previews.height_sizes | quote }} + + {{/* Imaginary */}} + NX_IMAGINARY: {{ and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary | quote }} + {{- if and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary }} + NX_IMAGINARY_URL: {{ printf "http://%v-imaginary:%v" $fullname .Values.service.imaginary.ports.imaginary.port }} + {{- end }} + + {{/* Expirations */}} + NX_ACTIVITY_EXPIRE_DAYS: {{ .Values.nextcloud.expirations.activity_expire_days | quote }} + NX_TRASH_RETENTION: {{ .Values.nextcloud.expirations.trash_retention_obligation | quote }} + NX_VERSIONS_RETENTION: {{ .Values.nextcloud.expirations.versions_retention_obligation | quote }} + + {{/* General */}} + NX_RUN_OPTIMIZE: {{ .Values.nextcloud.general.run_optimize | quote }} + NX_DEFAULT_PHONE_REGION: {{ .Values.nextcloud.general.default_phone_region | quote }} + NEXTCLOUD_DATA_DIR: {{ .Values.persistence.data.targetSelector.main.main.mountPath }} + NX_FORCE_ENABLE_ALLOW_LOCAL_REMOTE_SERVERS: {{ .Values.nextcloud.general.force_enable_allow_local_remote_servers | quote }} + + {{/* Files */}} + NX_SHARED_FOLDER_NAME: {{ .Values.nextcloud.files.shared_folder_name | quote }} + NX_MAX_CHUNKSIZE: {{ .Values.nextcloud.files.max_chunk_size | mul 1 | quote }} + + {{/* Logging */}} + NX_LOG_LEVEL: {{ .Values.nextcloud.logging.log_level | quote }} + NX_LOG_FILE: {{ .Values.nextcloud.logging.log_file | quote }} + NX_LOG_FILE_AUDIT: {{ .Values.nextcloud.logging.log_audit_file | quote }} + NX_LOG_DATE_FORMAT: {{ .Values.nextcloud.logging.log_date_format | quote }} + NX_LOG_TIMEZONE: {{ .Values.TZ | quote }} + + {{/* ClamAV */}} + NX_CLAMAV: {{ .Values.nextcloud.clamav.enabled | quote }} + {{- if .Values.nextcloud.clamav.enabled }} + NX_CLAMAV_HOST: {{ printf "%v-clamav" $fullname }} + NX_CLAMAV_PORT: {{ .Values.service.clamav.ports.clamav.targetPort | quote }} + NX_CLAMAV_STREAM_MAX_LENGTH: {{ .Values.nextcloud.clamav.stream_max_length | mul 1 | quote }} + NX_CLAMAV_FILE_MAX_SIZE: {{ .Values.nextcloud.clamav.file_max_size | quote }} + NX_CLAMAV_INFECTED_ACTION: {{ .Values.nextcloud.clamav.infected_action | quote }} + {{- end }} + + {{/* Collabora */}} + NX_COLLABORA: {{ .Values.nextcloud.collabora.enabled | quote }} + {{- if .Values.nextcloud.collabora.enabled }} + NX_COLLABORA_URL: {{ printf "%v/collabora" $accessUrl | quote }} + # Ideally this would be a combo of: public ip, pod cidr, svc cidr + # But not always people have static IP. + NX_COLLABORA_ALLOWLIST: "0.0.0.0/0" + {{- end }} + + {{/* Only Office */}} + NX_ONLYOFFICE: {{ .Values.nextcloud.onlyoffice.enabled | quote }} + {{- if .Values.nextcloud.onlyoffice.enabled }} + NX_ONLYOFFICE_URL: {{ .Values.nextcloud.onlyoffice.url | quote }} + NX_ONLYOFFICE_INTERNAL_URL: {{ .Values.nextcloud.onlyoffice.internal_url | quote }} + NX_ONLYOFFICE_VERIFY_SSL: {{ .Values.nextcloud.onlyoffice.verify_ssl | quote }} + NX_ONLYOFFICE_NEXTCLOUD_INTERNAL_URL: {{ printf "http://%v.svc.cluster.local:%v" $fqdn .Values.service.main.ports.main.port }} + NX_ONLYOFFICE_JWT: {{ .Values.nextcloud.onlyoffice.jwt | quote }} + NX_ONLYOFFICE_JWT_HEADER: {{ .Values.nextcloud.onlyoffice.jwt_header | quote }} + {{- end }} + + {{/* URLs */}} + NX_OVERWRITE_HOST: {{ $accessHostPort }} + NX_OVERWRITE_CLI_URL: {{ $accessUrl }} + # Return the protocol part of the URL + NX_OVERWRITE_PROTOCOL: {{ $accessProtocol | lower }} + # IP (or range in this case) of the proxy(ies) + NX_TRUSTED_PROXIES: | + {{ .Values.chartContext.podCIDR }} + {{ .Values.chartContext.svcCIDR }} + # fullname-* will allow access from the + # other services in the same namespace + NX_TRUSTED_DOMAINS: | + 127.0.0.1 + localhost + {{ $fullname }} + {{ printf "%v-*" $fullname }} + {{ $healthHost }} + {{- if not (contains "127.0.0.1" $accessHost) }} + {{- $accessHost | nindent 6 }} + {{- end -}} + {{- with .Values.nextcloud.general.accessIP }} + {{- . | nindent 6 }} + {{- end }} + +# TODO: Replace locations with ingress +# like /push, /.well-known/carddav, /.well-known/caldav +# needs some work as nginx converts urls to pretty urls +# before matching them to locations, so ingress needs to +# take that into consideration. +nginx-config: + enabled: true + data: + nginx.conf: | + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + # Set to /tmp so it can run as non-root + pid /tmp/nginx.pid; + + events { + worker_connections 1024; + } + + http { + # Set to /tmp so it can run as non-root + client_body_temp_path /tmp/nginx/client_temp; + proxy_temp_path /tmp/nginx/proxy_temp_path; + fastcgi_temp_path /tmp/nginx/fastcgi_temp; + uwsgi_temp_path /tmp/nginx/uwsgi_temp; + scgi_temp_path /tmp/nginx/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server {{ printf "%v-nextcloud" $fullname }}:{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}; + } + + server { + listen {{ .Values.service.main.ports.main.port }}; + absolute_redirect off; + + {{- if .Values.nextcloud.notify_push.enabled }} + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + # The trailing "/" is important! + proxy_pass http://{{ printf "%v-notify" $fullname }}:{{ .Values.service.notify.ports.notify.targetPort }}/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + {{- end }} + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # Set max upload size + client_max_body_size {{ .Values.nextcloud.php.upload_limit | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + include mime.types; + types { + text/javascript js mjs; + } + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "noindex, nofollow" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root {{ .Values.persistence.html.targetSelector.nginx.nginx.mountPath }}; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + proxy_send_timeout 3600s; + proxy_read_timeout 3600s; + fastcgi_send_timeout 3600s; + fastcgi_read_timeout 3600s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/_cronjobs.tpl b/stable/nextcloud/25.0.2/templates/_cronjobs.tpl new file mode 100644 index 0000000000..0fa050dba6 --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_cronjobs.tpl @@ -0,0 +1,34 @@ +{{- define "nextcloud.cronjobs" -}} +{{- range $cj := .Values.cronjobs }} + {{- $name := $cj.name | required "Nextcloud - Expected non-empty name in cronjob" -}} + {{- $schedule := $cj.schedule | required "Nextcloud - Expected non-empty schedule in cronjob" }} + +{{ $name }}: + enabled: {{ $cj.enabled | quote }} + type: CronJob + schedule: {{ $schedule | quote }} + podSpec: + restartPolicy: Never + containers: + {{ $name }}: + enabled: true + primary: true + imageSelector: image + command: + - /bin/bash + - -c + - | + {{- range $cj.cmd }} + {{- . | nindent 12 }} + {{- else -}} + {{- fail "Nextcloud - Expected non-empty cmd in cronjob" -}} + {{- end }} + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +{{- end }} +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/_ingressInjector.tpl b/stable/nextcloud/25.0.2/templates/_ingressInjector.tpl new file mode 100644 index 0000000000..37919189e2 --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_ingressInjector.tpl @@ -0,0 +1,24 @@ +{{- define "nextcloud.ingressInjector" -}} + {{- if .Values.ingress.main.enabled -}} + {{- $injectPaths := list -}} + {{- if .Values.nextcloud.collabora.enabled -}} + {{- $injectPaths = mustAppend $injectPaths (include "nextcloud.collabora.ingress" $ | fromYaml) -}} + {{- end -}} + {{/* Append more paths here if needed */}} + + {{- range $host := .Values.ingress.main.hosts -}} + {{- $paths := $host.paths -}} + {{- $paths = concat $paths $injectPaths -}} + {{- $_ := set $host "paths" $paths -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "nextcloud.collabora.ingress" -}} +{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . }} +path: /collabora/ +pathType: Prefix +service: + name: {{ printf "%v-collabora" $fullname }} + port: {{ .Values.service.collabora.ports.collabora.port }} +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/_initPerms.tpl b/stable/nextcloud/25.0.2/templates/_initPerms.tpl new file mode 100644 index 0000000000..ed94790ad9 --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_initPerms.tpl @@ -0,0 +1,29 @@ +{{- define "nextcloud.init.perms" -}} +{{- $uid := .Values.securityContext.container.runAsUser -}} +{{- $gid := .Values.securityContext.container.runAsGroup -}} +{{- $path := .Values.persistence.data.targetSelector.main.main.mountPath }} +enabled: true +type: install +imageSelector: alpineImage +securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + capabilities: + disableS6Caps: true + add: + - DAC_OVERRIDE + - FOWNER + - CHOWN +command: /bin/sh +args: + - -c + - | + echo "Setting permissions to 700 on data directory [{{ $path }}] ..." + chmod 770 {{ $path }} | echo "Failed to set permissions on data directory [{{ $path }}]" + + echo "Setting ownership to {{ $uid }}:{{ $gid }} on data directory [{{ $path }}] ..." + chown {{ $uid }}:{{ $gid }} {{ $path }} | echo "Failed to set ownership on data directory [{{ $path }}]" + + echo "Finished." +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/_validation.tpl b/stable/nextcloud/25.0.2/templates/_validation.tpl new file mode 100644 index 0000000000..5650c0f63f --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_validation.tpl @@ -0,0 +1,42 @@ +{{- define "nextcloud.validation" -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.memory_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.memory_limit) -}} + {{- end -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.upload_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.upload_limit) -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.previews.providers (uniq .Values.nextcloud.previews.providers)) -}} + {{- fail (printf "Nextcloud - Expected preview providers to be unique but got [%v]" .Values.nextcloud.previews.providers) -}} + {{- end -}} + + {{- if and .Values.nextcloud.collabora.enabled .Values.nextcloud.onlyoffice.enabled -}} + {{- fail "Nextcloud - Expected only one of [Collabora, OnlyOffice] to be enabled" -}} + {{- end -}} + + {{- if contains "$" .Values.nextcloud.collabora.password -}} + {{- fail "Nextcloud - Collabora [Password] cannot contain [$]" -}} + {{- end -}} + + {{- if .Values.nextcloud.collabora.enabled -}} + {{- if lt (len .Values.nextcloud.collabora.password) 8 -}} + {{- fail "Nextcloud - Collabora [Password] must be at least 8 characters" -}} + {{- end -}} + + {{- $collaboraUIModes := (list "default" "compact" "tabbed") -}} + {{- if not (mustHas .Values.nextcloud.collabora.interface_mode $collaboraUIModes) -}} + {{- fail (printf "Nextcloud - Expected [Interface Mode] in Collabora to be one of [%v], but got [%v]" (join "," $collaboraUIModes) .Values.nextcloud.collabora.interface_mode) -}} + {{- end -}} + + {{- if not .Values.nextcloud.collabora.dictionaries -}} + {{- fail "Nextcloud - Expected non-empty Collabora [Dictionaries]" -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.collabora.dictionaries (uniq .Values.nextcloud.collabora.dictionaries)) -}} + {{- fail "Nextcloud - Collabora [Dictionaries] must be unique" -}} + {{- end -}} + {{- end -}} + +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/_waitNextcloud.tpl b/stable/nextcloud/25.0.2/templates/_waitNextcloud.tpl new file mode 100644 index 0000000000..24946d640e --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/_waitNextcloud.tpl @@ -0,0 +1,25 @@ +{{- define "nextcloud.wait.nextcloud" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $ncURL := printf "%v-nextcloud:%v" $fullname .Values.service.nextcloud.ports.nextcloud.targetPort }} +enabled: true +type: init +imageSelector: image +securityContext: +command: /bin/sh +args: + - -c + - | + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + until \ + REQUEST_METHOD="GET" \ + SCRIPT_NAME="status.php" \ + SCRIPT_FILENAME="status.php" \ + cgi-fcgi -bind -connect "{{ $ncURL }}" | grep -q '"installed":true'; + do + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + sleep 3 + done + + echo "Nextcloud is ready and installed..." + echo "Starting Nginx..." +{{- end -}} diff --git a/stable/nextcloud/25.0.2/templates/common.yaml b/stable/nextcloud/25.0.2/templates/common.yaml new file mode 100644 index 0000000000..1eeaf033eb --- /dev/null +++ b/stable/nextcloud/25.0.2/templates/common.yaml @@ -0,0 +1,80 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . -}} + +{{- include "nextcloud.validation" $ -}} + +{{/* Render configmaps for all pods */}} +{{- $configmaps := include "nextcloud.configmaps" . | fromYaml -}} +{{- if $configmaps -}} + {{- $_ := mustMergeOverwrite .Values.configmap $configmaps -}} +{{- end -}} + +{{/* Create hostAliases (resolve ingress host to Node/LB IP) */}} +{{- $hostAlias := (list (dict + "ip" .Values.nextcloud.general.accessIP + "hostnames" ( + list (include "nextcloud.accesshost" $) + ) + )) -}} + +{{/* Add [hostAliases] to nextcloud and collabora pod */}} +{{- $_ := set .Values.workload.main.podSpec "hostAliases" $hostAlias -}} +{{- $_ := set .Values.workload.collabora.podSpec "hostAliases" $hostAlias -}} + +{{/* Add [init perms] container to nextcloud */}} +{{- if not (get .Values.workload.main.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.main.podSpec "initContainers" dict -}} +{{- end -}} + +{{- $initPerms := (include "nextcloud.init.perms" . | fromYaml) -}} +{{- $_ := set .Values.workload.main.podSpec.initContainers "init-perms" $initPerms -}} + +{{/* Add [wait nextcloud] container to nginx */}} +{{- if not (get .Values.workload.nginx.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.nginx.podSpec "initContainers" dict -}} +{{- end -}} +{{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} +{{- $_ := set .Values.workload.nginx.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} + +{{/* Disable [notify push] if requested */}} +{{- if not .Values.nextcloud.notify_push.enabled -}} + {{- $_ := set .Values.workload.notify "enabled" false -}} + {{- $_ := set .Values.service.notify "enabled" false -}} +{{- else -}} + {{/* Add [wait nextcloud] container to notify push */}} + {{- if not (get .Values.workload.notify.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.notify.podSpec "initContainers" dict -}} + {{- end -}} + {{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} + {{- $_ := set .Values.workload.notify.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} +{{- end -}} + +{{/* Disable [clamav] if requested */}} +{{- if not .Values.nextcloud.clamav.enabled -}} + {{- $_ := set .Values.workload.clamav "enabled" false -}} + {{- $_ := set .Values.service.clamav "enabled" false -}} +{{- end -}} + +{{/* Disable [previews] if requested */}} +{{- if or (not .Values.nextcloud.previews.imaginary) (not .Values.nextcloud.previews.enabled) -}} + {{- $_ := set .Values.workload.imaginary "enabled" false -}} + {{- $_ := set .Values.service.imaginary "enabled" false -}} +{{- end -}} + +{{/* Disable [collabora] if requested */}} +{{- if not .Values.nextcloud.collabora.enabled -}} + {{- $_ := set .Values.workload.collabora "enabled" false -}} + {{- $_ := set .Values.service.collabora "enabled" false -}} +{{- end -}} + +{{/* Create [cronjobs] defined */}} +{{- $cronjobs := include "nextcloud.cronjobs" . | fromYaml -}} +{{- if $cronjobs -}} + {{- $_ := mustMergeOverwrite .Values.workload $cronjobs -}} +{{- end -}} + +{{/* TODO: Do we have to cleanup when something (eg Collabora) is disabled? */}} +{{- include "nextcloud.ingressInjector" $ -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/stable/nextcloud/25.0.2/values.yaml b/stable/nextcloud/25.0.2/values.yaml new file mode 100644 index 0000000000..e69de29bb2