IX; foreach ($messages as $id => $message) { unset($this->messages[$altDomain][$id]); $this->messages[$domain][$id] = $message; } if ([] === ($this->messages[$altDomain] ?? null)) { unset($this->messages[$altDomain]); } } public function addCatalogue(MessageCatalogueInterface $catalogue): void { if ($catalogue->getLocale() !== $this->locale) { throw new LogicException(\sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale)); } foreach ($catalogue->all() as $domain => $messages) { if ($intlMessages = $catalogue->all($domain.self::INTL_DOMAIN_SUFFIX)) { $this->add($intlMessages, $domain.self::INTL_DOMAIN_SUFFIX); $messages = array_diff_key($messages, $intlMessages); } $this->add($messages, $domain); } foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } if ($catalogue instanceof MetadataAwareInterface) { $metadata = $catalogue->getMetadata('', ''); $this->addMetadata($metadata); } if ($catalogue instanceof CatalogueMetadataAwareInterface) { $catalogueMetadata = $catalogue->getCatalogueMetadata('', ''); $this->addCatalogueMetadata($catalogueMetadata); } } public function addFallbackCatalogue(MessageCatalogueInterface $catalogue): void { // detect circular references $c = $catalogue; while ($c = $c->getFallbackCatalogue()) { if ($c->getLocale() === $this->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } } $c = $this; do { if ($c->getLocale() === $catalogue->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } foreach ($catalogue->getResources() as $resource) { $c->addResource($resource); } } while ($c = $c->parent); $catalogue->parent = $this; $this->fallbackCatalogue = $catalogue; foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } } public function getFallbackCatalogue(): ?MessageCatalogueInterface { return $this->fallbackCatalogue; } public function getResources(): array { return array_values($this->resources); } public function addResource(ResourceInterface $resource): void { $this->resources[$resource->__toString()] = $resource; } public function getMetadata(string $key = '', string $domain = 'messages'): mixed { if ('' == $domain) { return $this->metadata; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX])) { if ('' === $key) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX]; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key])) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key]; } } if (isset($this->metadata[$domain])) { if ('' == $key) { return $this->metadata[$domain]; } if (isset($this->metadata[$domain][$key])) { return $this->metadata[$domain][$key]; } } return null; } public function setMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->metadata[$domain][$key] = $value; } public function deleteMetadata(string $key = '', string $domain = 'messages'): void { if ('' == $domain) { $this->metadata = []; } elseif ('' == $key) { unset($this->metadata[$domain]); } else { unset($this->metadata[$domain][$key]); } } public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed { if (!$domain) { return $this->catalogueMetadata; } if (isset($this->catalogueMetadata[$domain])) { if (!$key) { return $this->catalogueMetadata[$domain]; } if (isset($this->catalogueMetadata[$domain][$key])) { return $this->catalogueMetadata[$domain][$key]; } } return null; } public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->catalogueMetadata[$domain][$key] = $value; } public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages'): void { if (!$domain) { $this->catalogueMetadata = []; } elseif (!$key) { unset($this->catalogueMetadata[$domain]); } else { unset($this->catalogueMetadata[$domain][$key]); } } /** * Adds current values with the new values. * * @param array $values Values to add */ private function addMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setMetadata($key, $value, $domain); } } } private function addCatalogueMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setCatalogueMetadata($key, $value, $domain); } } } } JFIF``;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 C     C    }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?R ( (9s(s(P@<4@>s@>dϭ>dϭϭ9Z3@>}hր}hZ2}hր Z9Q@>}hր}hր}hր (4P@f (4P@ P{Ҁ PN;PPM&h(s@/@z@h@ @-%\tP@(>w ( j((>-P@u :P@(Ҁ 0( :P8 2=(8(((2)\VlMڸR>iaJwB ֘ P@fހ P@E&}(ր8zLҀ@ (  P@y@=1@ zM@ z1@6 mm}@6V52Yhq^Aene"'!*W2E.D47%i8a1,o3j/|mzfY|7X}ÿ' xI챾f%BwXc9bm16 bammh@6 s@ @P@P@ (-P7JL3@M4dRHɠ'ր 2hy&}h =i?!'})*|5CF&u~iZC1^[Xs,Srnςojzl 8F#jթU^R>qtRX0T !@?zQGkI;\$W\s]Z nvyݖeo>pF?2\US/_(y< @T {c0+UWC2 j+;GtV@s@h44@rhɠ44@hɠP@ (@@PP@j(Ҁcހb" ך^(Ƞ" 3@ 3h4'm؄|v%<7}=ʚ ѱ`=E}NBVH<(L4,$HЍH7$~sξRW>'>*զnU+ 5ՕVOTri0n' \RvzQOc$bX# t`H>ہg:Z)Vq᜗jlȳ,BP)07t+aB_c~tݏMʵ"Eq@ @ @}ϵgڀ 2=((ϰ>dPjZ( ( ZJ v (mb 66661@@@ Ok1zѾˡ^f1%UTNԥ)tA'xўK -> C~ ݪGƺ2XV-2c\N}cjg;p]ً#˹ z?Z^W=_/:ARG-U9U:.F}]/6X58 89z׏\'֥.J̀ϳ IBP 6 m(oh((@@z@ ( (4P@ N & b 0h 0h 0h({0 tV%j>=>իx.o>ǧ)idBb< DžO}{R=;/#Ai?܈ oS,W/sJjhǐ$^ hJN?Z)c\yޗ}斉ךkoIAG]ӎ }-Zn_<(b;OzEc4Xj~9-5[?._1˷yYJpt'R7?cx}?~rg-R&5@4`@ M4`@ 4`@ 4`: (P@PMP@ ZJ7Pf4ww&}wPj3@jBsړ ~КڷY)QфpոK+~@1M۩fx'>=G֕[j1Zc l^ =ЭnsvF4q8\<=8ݜ{^^i n4i}Umn:|z9~-bqmݏ7^<4K.9FM=C(x8"s 5w;½F3萮9)X̋!9_E6Fzcҹ+J |NOt&1W6Һ=dتB݋ڂ>nw@ @&u& d@h P(4u(@E"(Ƞ" 3@E.E&E" 2~&;; '!5taƻP>""09伏®i~$xgRg :+45ˉ#[SOGKZöYnuI5ݰWN5J}^~ӤS?}*NY.џ:g<ҏc_/Njc*^^i(uy&}+召TJV"@E PP@E.EdPP@P@PP@ JZJZ( P1@ PP@ j0(|FgTs)ֺƉ\$>xF\OG̷Rld(s=WTOP|Y)͋xM%,ʞZ>$$};W JTԼ˩r~qvhkrZ쁗ked0@I?QTm| >:׬g$Ζ 2E嘓ӑ_a-TUQ7XሞUřkF,>Q|>S`PG=p(ǵ`P@ @@@ v ( ;@ @ @%4f 2h@J3@ @ @h4d d=|m8oS94m3Ve)p6}g޽{J1Ɠ߈Ecf$mWŗm*I<#zu^ p<Ë3-2I-y=,dDg°x7`Q#~+: 2+KկuIko5* H@8 c5ch9{{X;G,6e]0@=+ܨ6oL)8p1H&I& ƀ 72}hɠq& 2hɠ&h ( ( ;P@zLP@ C@P(3JZ8M@84d8n8i? 4MȠ:ǞQ)0h3?<+5ĆII$f>[~UjYf|^s ̬C7 JklC~۱iKMK8ŭ?SջY+!܀+24Vax|LiFIjdfflLG;͊q=){s@ YtI%{XW$ߠ yp.kb"/T.P.s@4(7 ]٠ϵ.j7{P P 3@ ( (P~ hPv.(@(0(;P@hqҀ@ @;BjVGx{R4}WqucpOn̏#85)ӕ?`ҚV?m̲~>WgO rX NO\/)Sǧa4B(#P@.(:P@=(9 r@P@P@4Ph J(E &hhdP7 2(f4hB}}%?-|ݬ+;̊؞x1m+6 kslڃiܒ!)ɦ)+"i6m5ZhCgG'ᱶO6Ϩp17?5h&٥>U{쇃J,]٦ "E.E&hs@E&h&hh ( (h(4Pht C@`Pc@ @ mhm%(h M\'EIÖd p*; n.x!7es;JmYMK9)@χudTYr?x}Nkt][B-VN:3#GO]jlӣs^"Z}v, ^rc:H2Ȭ).cqȪ% (`6w(b P`6 0=(h ( (4P@Z(1@ @ ހPr(@ v P((ҿ@L-W ֯Uf*LVs,\UPd6>#xR_۔|+>I>猟a_jW;g#[C5į4;sҊ9sF;m3F&e^+ׅLȞWŵkyBMj _V2GS5T9jX'm P&dnӁD~Ub݆熾uKLai$zzv'<:TH@;WC :4PH.N48_BP\?bpAL{Ya(E͡gkmMx TN+^]\d饩Ǐ~nn5p\Y9xK[4"H{?OZxvpXv5|E[X[.t\LVJ:>߀-5=0:WIx[}O]}D?#.[Z$}ǚg?i҆GxnkL6"8)6u9 Ƞ" 2(Ƞ" L\2(Ƞ" P@P@ ( (P7J0h4b%(hm4`zR@5[?SSA]LbtO!gqV8?bJ<˧ےX;ܣcTuZlP!2(fZLS2h++ =L00lAPoHȩOb& Fvo`ʐQ`+A``FBB vh /Fb)rfu-hY!huG dfgi!fOG\RܤA{g zB}08zתuwPdzP@G@7Pgڀ P4(@P@P@P@hhh0((@@61@mq@=ٺ<;l]3J DTU!dp \~I)z- T`0J.V*Z ' J4su^< ½Igr}$v8m.M.E! ]h@ Z( ( ( (P@799\4s@2(_ۤ|-s__AWMN T!2RP40B*R Ӕ V1ES4tXqS`!tȩVeAdkN`jL|qTw3<j|~Ҥ~G"0)Ia^L" P`h@4`P`P@t (1@ @P@u(3@ Bq@hϵh9&hɠ 3@=~ۚ+j  %~x~LwOD[|KJBef"N8b !\rGJVEp H [500oؘп>?̽;ֻQH<@v4Uf @(4( P@ (րP@zPb(0((Py(h89% [?76CI<:8ք&i[ҕP@.v۽;uRNOaTaS:ȃؚQg\zQ(egLǧz^C3 ޥ9Y=@ʹL'1u(q ZS3ctՔ^ 7 >q@`P@q@ (P@P@P@P@JCҀ`1@1@  P@(#[u rO)#0GxYJz 5;>MjD8jmV;l̒%qveG?ַHhG+^df;xߟ4X5ҽė2 1XVsmu%g(Y4Ҁ1Dw08l9jtB2 S[KF"NBi4Wi.\,}r}?9B2_!{JiQao0rW9qjՐ}[N5TXԒKTH[BAȡk2|5NFiⅯbyx n}+>wgey.gR\qg MnZRg.ເ]@TPyOӡMQ~ x"a5}ЃA]*\S˖:O6H@/Qor+Tm҇]# z咰[/BeY2[Pg[`l7" 0h(FhҀ 0h4P@P@h ( :ր 32(2(h3@h.s@&h/zLk8gM(n.ͼ8ǽLE`ϙn8rKsSgW ;RAM#I!3>k:'zhq\J'cѯl$VePzTR+kHȠȠ4f 2(Ƞ4f 3@ (P@P@P@P6m b b P@ '|P?J2yEL+ <#5-O5ݮ$4,A.3F}qBfǃL0n@H9f~+4zOnsQ{McTإ2h.? :*}åq֭绖e8¢4|{sK-tkQIPM)nĩ8#|,W՜e&}חZ$gnʀ{W:'ߋ,+*ko|A]'V] YA|3I}k O[6?*h[m69U`}gՉqvDۣ+W<IYuI3+|=omzD0h@6mh@Z6 : ( (4P( 1@ ;h92}(ɠ&M4ds@4d@dv<k#oq¹'km{Wel ~f7i15cöt-ne_1F*[JMct0xSZZ2fkd9n!zW:vg5N Us4{h5y]5fͫxwk6W[4ʁO^%|=ֲ>%e} x{pQahWLmCZ_.SH槨l 7Y}jw<-mx_Wm}h< aN?hX:V|?/+񏄵A hR,=c8#nWRYm/:Փvv}ϢFڌ ZK72"V炑`h֍{ye-f{;PVHq1?:?Zɬwm90*[>>×>g+ -4jV_Ȯ22\v99&hs@4`(hh P( (P@P@zPƀ @!4 4PO8@+R6&}9V#/J|TY%W/2C܏&smV>4K9w;T\K#JgtCGt鵩6!~Hl4|cxkY:k 9m⌳4X=ҚWФ͟7?gknZleV\V^ ʕ{ITxF|].|7IQ˩h1.$} @#D}K>i _cW[e-{U#"D0:Oz~} ?P~0<WTa7K;1/0 -:icԾ<˟ٯw*-nWG4Gtk^dH#^@BӚE%?cdc&w;`oHҩ-}A7H#VWUHzNG>ګpG~Ѳ|2gn ԟNd3׳u 43@ @ (4wPn4L<@s@P@P:@(J\ 0=( JZ4b@s@ @2(=" ]p 7uիcSKoAyE5YfG$ z}+jn.WċxR Cm=\ 3OᎥ]:ؾH9o~|ž ];o}yOѺr1xNIQ\7f]CgWjq^Ԅ"2JR+UGv{teHB퓫ME4Ovu_鳮 _8.s=ٳOht+i!Qm*H$`XtRt'^b*mƏL4 CN`[\G#W)/ $ g_/\] Wx8,W kbv*܎+t$QY~~<)WǺ 2qy~lnhz}tP@( ( p@P@J( ( fZhϭ(ր M4s@ azk ƍVH=r<:h<Ƕph?$Z_)/?ll~Qm 40¬Py9t+SE慢7Em،gj!6s{iĹ@ ps e$_t|E͗~!2>^OpOzXtj4֝ω>K{^ %YH*}=Npg&W[^7G;/$dr:qk_|ŝV6K 32.y ~pg;sI+T7cʼfvU'[lq嘩!@ǭurŋBW<!v圓YcTyV L!F3`>=}51[QNt8DG?ys@zڅ>K?yԊ0Bg[C4`Ϩ99Z9ڀhP@P@f@ ( ('u@ 3@~f f4gހ9&>a <}`Rڛ?Ziω~6xmTRͺ~ya?Zž4s d"Xέ}cԋBDR(Sq?"rܤn4pzuw-]MHpEՔeQ8TLdwsUhW_ƐN0kQ¹凄:UTiy3~ xF[!3*59N>8ㄥWsΫΊmf"d͵Da +d|ZkϞ,St$-oV'k{qJȡef>qU]c?IJ&g /AOҗA/¯VF2iYI mzW6ˬ酓O2)"~=;xmhԐ\pA95zRFΤ=RE. 6XNz@MOC&bZ6ej% g1'!p{Fh尔ARA$+>0|KLlZmyI YCNY""iv59'~0ic>psV2lVmw:L`< tvfb_>1-Qؽ(pԏJg~oXa\~rsW$q_n~ۧ+[ m= c˳DΛ {1(xEcPq@(E@ ( ( ( (Ҁ `h@6P Pt>nAx %Ye-s'{/X-Kg{d,%\R0AZ|63,>~w)3ؖT"JFI$Ujxs6Vi3nkto+k+tի!DZWYwi%ұfoܟ#cNk[}xXz5 kW΁^Pyⓒ&G74 MM..]m/chʔ(xޤT.mn+Eƕf\Ie1+/=\q`dFxZY19M4Z趾T?yڢ:hG|yr~,m(*0>t``-tWeb[4V .1@P(@d E(^hEP@P@P@P@P`1@@=ǽ#ހM`@M>ݤmO5ً MQA\v4hC#kO?4Pr*Aw_s4KpHP-ʶN *ޠ| =y2UPcqul!k+ɦʳy lM|6ҕ0M͉Sc<%hL ΃njXXj1)|xfo *|Q}M!M.}"QW˘>`ǽ@ hր ZLuP@P@ (P@P@@ ~4*OƀhhhE|S6AJ_<0t\64z0@{ wZ|YA]q15Ahށ@)Ҁj& DajX# a!C 4lg׬QpVWq= oP?JD2|4???3Z:>~4~4~4~4@P@P@P@P@Ҁ(`(H1@(8((0(䏏 Z~Z3>|3pܭf\w='­fj蒫J▭ U[ĝ^ $Tjt5@?8>Z8Z8Z^(0=hx Q@P@P@ ( (Phh P@J(@P&krur݉'R eskms-ʙ~6/һ#R:&J: @נ PR+IҠwj$Ij-j4y7#{!ȆjHviP@Z(Jp@ @P@P@P@P(Pnu@}(#4f PL(.5ˎq$Z<.VAGZ[Ht^@UQk"V;P1Z&'pu+]ƚt+#-odH<[wcHZ@|_~qW-f񞚪O{!΋*ѱq KLIcc:09-.{Ih9+.Yw2.g XhI6иr(!zⰨ)Oќ< +)}8`wf;#Ҭw&}>gڀ Pj3@ j3@ j\@ @P@ ( ( (@#t ((8q@ @/P|mr@]jX-o Q΃Do3+i!1I$θg{;oj~?|6*Z;061YrӫysڧyETɍIMW3kԱ4]t =[ۖK̔ +=1KكXSG>]?ڮֲ)>!+z#ҹ#ԏC&!Y6 [Bțyn#=~h%99> BZ:K4k4S.6a6 qUdOڝxIνԮ[Y+Pyg\2r8Q㎔~ʝbox/ԡ/xb1}[Y DQ'RWՄ˧;_`Ejf¥1/1ְWLrKbK7l5I)1X7nrJZ ln2.HN9#ڸj-.me|~D㝰,Dn$P;h}X:bCP z8\3@.}?LPy ( ( ( ( F@ 0h@(hhi 660hO(FOٛW9eUFo©ѠZ䵪%;٧s[!+\-mEk+D+6U; ,L) H!Iz}/QRq*(VZu^X1va" qr<\w:6\Oxn ;f``+Џ,!sH}+ڕIJ\ޤV w鲹Qoӆ>} K)`YE5ڑdn b <),{V^Rэ$O4N{EVI'`Ȓoݼ9N9s*>&h[]1#N{pW9FSGq'%KO Dg.h$3$Vh+fXԢu:0r;&[^3 '!3Wen.MV>B [ֿ5 kK#U>z韟`b%+TZqAHѱ2AuStԵX=ڛkKTXWy\#$9hEՌN8>c'"L)m`Y¬ 0y~BOx6i-wZg`PP@qh 8*P@P@h :@P@gڀ=(@`P@q@`Pj M'gSI4|;\cxΙzMȤQ'Kk>Wt@]I:vD'p*fr&z|ʍ8u\hEw0zsOq-*'Էͩ+c>63]e&4rs!vJG kxpƹplrwGj+Fc=i`P@z@z@`P : (@P@P@P@j?*1@=1@1@1@@Exy6f8]@Me7`>}Ob'4+N+HkfM/PDca%EQqFzc֗L QPrzuPZ"S,\*LM6ԃlW @ m1@(P@P@P@ ( (& hy P@ . & 4`LՍwşơ=O)ȵ@DU+&wkrh-Q#vi>r3\\Pgxq䑆Frqj+iy„8CZ)0O4^e8ߍ>rl:[gb!.NA^Zp\j]$E7 ^ғX."0o5DN2+'QcrHf;-.LBk;Ë |eԋc[ݛ9S> QN*멚 ?Zori0i`@ 4r( @(Ҁ ( ( ( (P@jF@@JwLZ nu@MQjRhȍpםB<9< +Ѻ-S+n(>nH .q:sYX\ e%2$471t4⻅ E Wiޞ`>6y+[w1 b8XuI!2(1p@jKs\]D#@wps!Wpܖ5 9ry$#mʱ+ ;{&fÑY8V  #PA,N1\5}'|+*I(iR~?\k.x͘S`_XLc;uX @.hhntP@ : ( ( ( ;P`P@&z6\ B`P@xǥH$|[$?gɑDLP Ǜ+ &@/etR2- j^m.~^SeY!+sSFtkd,2[|R6HǸeOLU"[9ǽ_(\ētpG+EJ^H%hqj;̲cHJUZj+K}*W Eq-K '\U2dS >"|2.Q/~)3bPU0((p((P1@P@P@( (#t>Pj3@@}>~PP>?'6\8 {c, Zͩ^s}\>9>~_Bi[CHu)W dXMvK)gJӢ$ ;5s$py+U\&.It+ 6OI.AeEg6!7>HٖO1M N!s:-;[02Px}y+3t7d`3`f&L̰flο72??Db+3LS]ϊ>;M:Sjr+Ӡ2>5suJ? 3@@}(ڀ PPP@P@P@f ( (J0hgg=88&v@ j3@ LJ:~ OHtNCeѺf1?U2i++ݭFpJj˙%dtjXL7J]!3V :`>魑6-%cc´  Y˜&#xҸX?p Ii#u+F́FujJ*/˰kl#bvZU//XI IٶuJ+u-:Ϸ=z~b>f P8@ 3<j3@hy ( (@( 3@P@(ȠȠu!" &jPhȠ@ j3@}I>jf=5)GXUNǓ>Ij*zfmd ,RC7 ?tUX9ڧ?J:ڦ@\ gɟ@\Kt@\$H?Q\:(.fܢ~Л3/̎_Z@1ޗ.j[:}V$*\ךsJM3 H%U&,.ls*-H܆2-HCN]w'1z vAq ^\ouh]؊,gM|ݩX3:TzQaszjOG=k݃QsU}7Y 9('VIlr߇>se-c$gy9ⶥ")sJW?@ڻehbb P(ǽmhǽ( ( ( (@P@!@ @M4d@M4g44lP2@K?sq)br(3i,lM-"~'/oWb'kcg?N̫1|F+4‹0'KD ?lyGE(Zœ8u JZc>Ńa٣վ[7m)f$n|OON n,<{[SZϩ&.?w.@-%P@(rMy ( ( (P@Pހ 4 9݊\ڀ}(Pϥ 9Ҁ(' NJp此굌rzVW;!;}T/Yf從x**҃M>\M]MIr}O  \\aӇ>T $pT5{#3pOJ)dҧwe+`z~Trž \t 6@"QW9ҳ>ڒq% hwJ7{PjLPj\ 9ϵ;:P@P@P@P@P@P2(uϧjk-D恜7t_8F_Vm`[ *%#R 5RF6_ݽ*VQ1EZEqnHr+KdS`R]8JdEeYtrÕ--[oG"yu=%#"GB9F=4q@q@ (ڀ @P@P@P@P@Ҁր ր 1@ P6Z0hsހ @<]Ĺbq"1QdƙMĭ ? Qljlҋa&e;i6 "#JiNM R6=#^Xa*;f(}hvZ0h4`6Z6Z( ( 1@@ @ @8s@t@ @ @@hZs nM 7=(MA4PGf@9 fP@(/ҀP4n9@&/P@P@