From e0fd11746f739d4cbf556f76638370b844cd458a Mon Sep 17 00:00:00 2001 From: Yurical Date: Tue, 4 Jun 2024 10:38:52 +0900 Subject: [PATCH 01/18] [Localization] Use proper postpositional particle for Korean (#1759) In Korean, postpositional particles vary depending on whether the preceding syllable ends in a consonant or a vowel. Currently there is no ability differentiate between the two types of particles, so both forms are being used at the same time. To remedy this problem, I added the relevant i18next processor to properly select and print the correct form of the particle. --- package-lock.json | 9 ++++++ package.json | 1 + src/locales/ko/ability-trigger.ts | 4 +-- src/locales/ko/battle.ts | 44 ++++++++++++++-------------- src/locales/ko/command-ui-handler.ts | 2 +- src/locales/ko/menu.ts | 4 +-- src/locales/ko/modifier-type.ts | 10 +++---- src/locales/ko/weather.ts | 4 +-- src/plugins/i18n.ts | 4 ++- 9 files changed, 47 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0084d2e6022..8c625694f02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "crypto-js": "^4.2.0", "i18next": "^23.11.1", "i18next-browser-languagedetector": "^7.2.1", + "i18next-korean-postposition-processor": "^1.0.0", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" @@ -3615,6 +3616,14 @@ "cross-fetch": "4.0.0" } }, + "node_modules/i18next-korean-postposition-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/i18next-korean-postposition-processor/-/i18next-korean-postposition-processor-1.0.0.tgz", + "integrity": "sha512-ruNXjI9awsFK6Ie+F9gYaMW8ciLMuCkeRjH9QkSv2Wb8xI0mnm773v3M9eua8dtvAXudIUk4p6Ho7hNkEASXDg==", + "peerDependencies": { + "i18next": ">=8.4.0" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", diff --git a/package.json b/package.json index 5d1621d3ba8..2e87525aeaf 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "crypto-js": "^4.2.0", "i18next": "^23.11.1", "i18next-browser-languagedetector": "^7.2.1", + "i18next-korean-postposition-processor": "^1.0.0", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" diff --git a/src/locales/ko/ability-trigger.ts b/src/locales/ko/ability-trigger.ts index da263358089..7fc98edce76 100644 --- a/src/locales/ko/ability-trigger.ts +++ b/src/locales/ko/ability-trigger.ts @@ -1,6 +1,6 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const abilityTriggers: SimpleTranslationEntries = { - "blockRecoilDamage" : "{{pokemonName}}(는)은 {{abilityName}} 때문에\n반동 데미지를 받지 않는다!", - "badDreams": "{{pokemonName}}(는)은\n나이트메어 때문에 시달리고 있다!", + "blockRecoilDamage" : "{{pokemonName}}[[는]] {{abilityName}} 때문에\n반동 데미지를 받지 않는다!", + "badDreams": "{{pokemonName}}[[는]]\n나이트메어 때문에 시달리고 있다!", } as const; diff --git a/src/locales/ko/battle.ts b/src/locales/ko/battle.ts index dd98a1df5fa..c6288d3d9f2 100644 --- a/src/locales/ko/battle.ts +++ b/src/locales/ko/battle.ts @@ -1,21 +1,21 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}}(이)가 나타났다.", - "trainerAppeared": "{{trainerName}}(이)가\n승부를 걸어왔다!", - "trainerAppearedDouble": "{{trainerName}}(이)가\n승부를 걸어왔다!", - "trainerSendOut": "{{trainerName}}(는)은\n{{pokemonName}}(를)을 내보냈다!", - "singleWildAppeared": "앗! 야생 {{pokemonName}}(이)가\n튀어나왔다!", - "multiWildAppeared": "야생 {{pokemonName1}}(과)와\n{{pokemonName2}}(이)가 튀어나왔다!", + "bossAppeared": "{{bossName}}[[가]] 나타났다.", + "trainerAppeared": "{{trainerName}}[[가]]\n승부를 걸어왔다!", + "trainerAppearedDouble": "{{trainerName}}[[가]]\n승부를 걸어왔다!", + "trainerSendOut": "{{trainerName}}[[는]]\n{{pokemonName}}[[를]] 내보냈다!", + "singleWildAppeared": "앗! 야생 {{pokemonName}}[[가]]\n튀어나왔다!", + "multiWildAppeared": "야생 {{pokemonName1}}[[와]]\n{{pokemonName2}}[[가]] 튀어나왔다!", "playerComeBack": "돌아와, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}}(는)은 {{pokemonName}}를(을) 넣어버렸다!", + "trainerComeBack": "{{trainerName}}[[는]] {{pokemonName}}[[를]] 넣어버렸다!", "playerGo": "가랏! {{pokemonName}}!", - "trainerGo": "{{trainerName}}(는)은 {{pokemonName}}를(을) 내보냈다!", - "switchQuestion": "{{pokemonName}}를(을)\n교체하시겠습니까?", - "trainerDefeated": "{{trainerName}}과(와)의\n승부에서 이겼다!", + "trainerGo": "{{trainerName}}[[는]] {{pokemonName}}[[를]] 내보냈다!", + "switchQuestion": "{{pokemonName}}[[를]]\n교체하시겠습니까?", + "trainerDefeated": "{{trainerName}}[[와]]의\n승부에서 이겼다!", "moneyWon": "상금으로\n₽{{moneyAmount}}을 손에 넣었다!", - "pokemonCaught": "신난다-!\n{{pokemonName}}(를)을 잡았다!", - "partyFull": "지닌 포켓몬이 가득 찼습니다. {{pokemonName}}를(을)\n대신해 포켓몬을 놓아주시겠습니까?", + "pokemonCaught": "신난다-!\n{{pokemonName}}[[를]] 잡았다!", + "partyFull": "지닌 포켓몬이 가득 찼습니다. {{pokemonName}}[[를]]\n대신해 포켓몬을 놓아주시겠습니까?", "pokemon": "포켓몬", "sendOutPokemon": "가랏! {{pokemonName}}!", "hitResultCriticalHit": "급소에 맞았다!", @@ -25,22 +25,22 @@ export const battle: SimpleTranslationEntries = { "hitResultOneHitKO": "일격필살!", "attackFailed": "하지만 실패했다!", "attackHitsCount": "{{count}}번 맞았다!", - "expGain": "{{pokemonName}}(는)은\n{{exp}} 경험치를 얻었다!", - "levelUp": "{{pokemonName}}(는)은\n레벨 {{level}}(으)로 올랐다!", - "learnMove": "{{pokemonName}}(는)은 새로\n{{moveName}}를(을) 배웠다!", - "learnMovePrompt": "{{pokemonName}}(는)은 새로\n{{moveName}}를(을) 배우고 싶다!…", - "learnMoveLimitReached": "그러나 {{pokemonName}}(는)은 기술을 4개\n알고 있으므로 더 이상 배울 수 없다!", + "expGain": "{{pokemonName}}[[는]]\n{{exp}} 경험치를 얻었다!", + "levelUp": "{{pokemonName}}[[는]]\n레벨 {{level}}[[로]] 올랐다!", + "learnMove": "{{pokemonName}}[[는]] 새로\n{{moveName}}[[를]] 배웠다!", + "learnMovePrompt": "{{pokemonName}}[[는]] 새로\n{{moveName}}[[를]] 배우고 싶다!…", + "learnMoveLimitReached": "그러나 {{pokemonName}}[[는]] 기술을 4개\n알고 있으므로 더 이상 배울 수 없다!", "learnMoveReplaceQuestion": "{{moveName}} 대신 다른 기술을 잊게 하겠습니까?", - "learnMoveStopTeaching": "그럼… {{moveName}}를(을)\n배우는 것을 포기하겠습니까?", - "learnMoveNotLearned": "{{pokemonName}}(는)은 {{moveName}}를(을)\n결국 배우지 않았다!", + "learnMoveStopTeaching": "그럼… {{moveName}}[[를]]\n배우는 것을 포기하겠습니까?", + "learnMoveNotLearned": "{{pokemonName}}[[는]] {{moveName}}[[를]]\n결국 배우지 않았다!", "learnMoveForgetQuestion": "어느 기술을 잊게 하고싶은가?", - "learnMoveForgetSuccess": "{{pokemonName}}(는)은 {{moveName}}를(을) 깨끗이 잊었다!", + "learnMoveForgetSuccess": "{{pokemonName}}[[는]] {{moveName}}[[를]] 깨끗이 잊었다!", "countdownPoof": "@d{32}1, @d{15}2, @d{15}… @d{15}… @d{30}@s{pb_bounce_1}짠!", "learnMoveAnd": "그리고…", "levelCapUp": "레벨의 최대치가\n{{levelCap}}까지 상승했다!", - "moveNotImplemented": "{{moveName}}(는)은 아직 구현되지 않아 사용할 수 없다…", + "moveNotImplemented": "{{moveName}}[[는]] 아직 구현되지 않아 사용할 수 없다…", "moveNoPP": "기술의 남은 포인트가 없다!", - "moveDisabled": "{{moveName}}를(을) 쓸 수 없다!", + "moveDisabled": "{{moveName}}[[를]] 쓸 수 없다!", "noPokeballForce": "본 적 없는 힘이\n볼을 사용하지 못하게 한다.", "noPokeballTrainer": "다른 트레이너의 포켓몬은 잡을 수 없다!", "noPokeballMulti": "안돼! 2마리 있어서\n목표를 정할 수가 없어…!", diff --git a/src/locales/ko/command-ui-handler.ts b/src/locales/ko/command-ui-handler.ts index c1d3d4b680f..b10534cfb92 100644 --- a/src/locales/ko/command-ui-handler.ts +++ b/src/locales/ko/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "볼", "pokemon": "포켓몬", "run": "도망간다", - "actionMessage": "{{pokemonName}}(는)은 무엇을 할까?", + "actionMessage": "{{pokemonName}}[[는]] 무엇을 할까?", } as const; diff --git a/src/locales/ko/menu.ts b/src/locales/ko/menu.ts index 8e9f132aa93..8d46dafc721 100644 --- a/src/locales/ko/menu.ts +++ b/src/locales/ko/menu.ts @@ -38,9 +38,9 @@ export const menu: SimpleTranslationEntries = { "girl": "여자", "evolving": "…오잉!?\n{{pokemonName}}의 모습이…!", "stoppedEvolving": "얼라리…?\n{{pokemonName}}의 변화가 멈췄다!", - "pauseEvolutionsQuestion": "{{pokemonName}}를(을) 진화하지 않게 만드시겠습니까?\n포켓몬 화면에서 다시 활성화시킬 수 있습니다.", + "pauseEvolutionsQuestion": "{{pokemonName}}[[를]] 진화하지 않게 만드시겠습니까?\n포켓몬 화면에서 다시 활성화시킬 수 있습니다.", "evolutionsPaused": "{{pokemonName}}의 진화가 비활성화되었다.", - "evolutionDone": "축하합니다! {{pokemonName}}(는)은\n{{evolvedPokemonName}}(으)로 진화했습니다!", + "evolutionDone": "축하합니다! {{pokemonName}}[[는]]\n{{evolvedPokemonName}}[[로]] 진화했습니다!", "dailyRankings": "일간 랭킹", "weeklyRankings": "주간 랭킹", "noRankings": "랭킹 정보 없음", diff --git a/src/locales/ko/modifier-type.ts b/src/locales/ko/modifier-type.ts index 3694a2ef523..f3b9ece6e81 100644 --- a/src/locales/ko/modifier-type.ts +++ b/src/locales/ko/modifier-type.ts @@ -12,8 +12,8 @@ export const modifierType: ModifierTypeTranslationEntries = { }, "PokemonHeldItemModifierType": { extra: { - "inoperable": "{{pokemonName}}(는)은\n이 아이템을 얻을 수 없다!", - "tooMany": "{{pokemonName}}(는)은\n이 아이템을 너무 많이 갖고 있다!", + "inoperable": "{{pokemonName}}[[는]]\n이 아이템을 얻을 수 없다!", + "tooMany": "{{pokemonName}}[[는]]\n이 아이템을 너무 많이 갖고 있다!", } }, "PokemonHpRestoreModifierType": { @@ -46,13 +46,13 @@ export const modifierType: ModifierTypeTranslationEntries = { }, "PokemonNatureChangeModifierType": { name: "{{natureName}}민트", - description: "포켓몬의 성격을 {{natureName}}(으)로 바꾸고 스타팅에도 등록한다.", + description: "포켓몬의 성격을 {{natureName}}[[로]] 바꾸고 스타팅에도 등록한다.", }, "DoubleBattleChanceBoosterModifierType": { description: "{{battleCount}}번의 배틀 동안 더블 배틀이 등장할 확률 두 배", }, "TempBattleStatBoosterModifierType": { - description: "자신의 모든 포켓몬이 5번의 배틀 동안 {{tempBattleStatName}}(이)가 한 단계 증가" + description: "자신의 모든 포켓몬이 5번의 배틀 동안 {{tempBattleStatName}}[[가]] 한 단계 증가" }, "AttackTypeBoosterModifierType": { description: "지니게 하면 {{moveType}}타입 기술의 위력이 20% 상승", @@ -97,7 +97,7 @@ export const modifierType: ModifierTypeTranslationEntries = { }, "TmModifierType": { name: "No.{{moveId}} {{moveName}}", - description: "포켓몬에게 {{moveName}}를(을) 가르침", + description: "포켓몬에게 {{moveName}}[[를]] 가르침", }, "EvolutionItemModifierType": { description: "어느 특정 포켓몬을 진화", diff --git a/src/locales/ko/weather.ts b/src/locales/ko/weather.ts index 6bfc6552b50..70654d247b6 100644 --- a/src/locales/ko/weather.ts +++ b/src/locales/ko/weather.ts @@ -15,12 +15,12 @@ export const weather: SimpleTranslationEntries = { "sandstormStartMessage": "모래바람이 불기 시작했다!", "sandstormLapseMessage": "모래바람이 세차게 분다", "sandstormClearMessage": "모래바람이 가라앉았다!", - "sandstormDamageMessage": "모래바람이\n{{pokemonPrefix}}{{pokemonName}}를(을) 덮쳤다!", + "sandstormDamageMessage": "모래바람이\n{{pokemonPrefix}}{{pokemonName}}[[를]] 덮쳤다!", "hailStartMessage": "싸라기눈이 내리기 시작했다!", "hailLapseMessage": "싸라기눈이 계속 내리고 있다", "hailClearMessage": "싸라기눈이 그쳤다!", - "hailDamageMessage": "싸라기눈이\n{{pokemonPrefix}}{{pokemonName}}를(을) 덮쳤다!", + "hailDamageMessage": "싸라기눈이\n{{pokemonPrefix}}{{pokemonName}}[[를]] 덮쳤다!", "snowStartMessage": "눈이 내리기 시작했다!", "snowLapseMessage": "눈이 계속 내리고 있다", diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 9bd03b501f4..3f6469904d4 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,5 +1,6 @@ import i18next from "i18next"; import LanguageDetector from "i18next-browser-languagedetector"; +import processor, { KoreanPostpositionProcessor } from "i18next-korean-postposition-processor"; import { deConfig } from "#app/locales/de/config.js"; import { enConfig } from "#app/locales/en/config.js"; @@ -148,7 +149,7 @@ export function initI18n(): void { * A: In src/system/settings.ts, add a new case to the Setting.Language switch statement. */ - i18next.use(LanguageDetector).init({ + i18next.use(LanguageDetector).use(processor).use(new KoreanPostpositionProcessor()).init({ lng: lang, nonExplicitSupportedLngs: true, fallbackLng: "en", @@ -186,6 +187,7 @@ export function initI18n(): void { ...koConfig }, }, + postProcess: ["korean-postposition"], }); } From b9575d3ffc84ec34da4a288cef13a4bd3ae62fca Mon Sep 17 00:00:00 2001 From: MrWaterT <87186129+MrWaterT@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:59:23 +0900 Subject: [PATCH 02/18] [Localization] Korean Font update (#1678) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update PokePT_Wansung.ttf https://github.com/MrWaterT/PokePT_Wansung v2.1 * Update PokePT_Wansung.ttf with é https://github.com/MrWaterT/PokePT_Wansung v2.2 --- public/fonts/PokePT_Wansung.ttf | Bin 565172 -> 564596 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/fonts/PokePT_Wansung.ttf b/public/fonts/PokePT_Wansung.ttf index 6c6e0eb5128322fd51f4f82e0147dfff297f2317..a4eca3d3242631b85db6dd013949d9fb23f67e2c 100644 GIT binary patch literal 564596 zcmeF)0d#9$UKje`IX5!|Cc|Wg009DIh5!W$1PD-|K!5@T3Iqrcpg;x+L=6xnO2CRi zt5zuxHENY2K?+u>Ql)Cuq6I4!jZ(Er#i|i17OhgHXvM<3&z(R2#mq1R_|{wNy|-4+ zU7wt@_xbI8cD}v6>-OHR?nolyrZ|nB6)tl{pDZ%+TM@-(3g!OUOUnEjbHWJuj{?;b!N(b=bZc5 zuj+ooSAOWx4=+aY>Sny;yStsQczPdm7nD>0A zvi4ELm;OxmYrp)p-}H;$U5WVeQpDd``0CdVdLQ_6vFrYV`tsMj_N%|*+kUe3p7GKj zInno%y|4Yc{`Y_QM|?-T^mHeZ%WsM2?~R}T;;;MmFMY-0FT~59cX;?ueeLu0$4`B8 z?=IqXvvimlYGxyS{fO6(iOK8Si-U+?I!}kc(y!xJj<0;)^MT(Q%kj3+idPupXLni62Pr<0WQo`StvG;oOS6QIV!ERsZ}D-&?)1@%VN|#96Iza?)t?oDf+->ZAx8`d;@M4s0j zyzmixgV(&?H$3vca_=|ld&B#0dR>0gj;Hoh0#6D2zmUM2es;g{5`O)=Z(RG-dP?9a zfu{tX5_n4BDS@X1o)UOU;3laghOYIl>e{IzZPye+meseu9^gW;Hh3tRz{A;V<^1FIr)QjtUbLY1_ z_D%2n=H?puY1PlQ{S@ox-qJCAebozA%sOFOK>D`uW9=(Qo|T-}Lk1&Hb)?bA7+rac^4prtLR3_w&9t zu6v&MTdI8H{x_|A)Ak!z|7z=v>t1-?o4!78zj(axd-uh4KJR@#*9+&@pMK5t3%xJY zyioUI{fm9ibU#=6l|2CZTF-YHC`IP=I}5zZ6P`t?=bPeZ%a!tbebATx#P|Gk!%hs( zkMghdeb9c);(6cee)@IaF#Fiq$NYG$xxHd%VYXMASkvp)NC znxFf5pWpg|FZ`m_FaDA*ZNK&npXU0@-lYA1&|LdJsC{##&&R*0?|Pd{xy&=+Mm%v;eK|9 z^N6?3vBCgrc!3+^Ibrtf7PjD6WOB3Gb+ak&$$|K)04uIA;&yls&+ zHaNrmSIkjI|0~S%3iIT%)aXXMavAlnJiz*1`55skeXmmgsxfEidppm0yH!S9Mik6Z z&{ybT?Av?x+cz-g?XBhQZzJBJih16_{dX|WJKRUSW1dAe+2tXkXk4*}c5xcSo^S#@cNe#4rd6Y;(o$}G~N&xn1_xQ=+gpu_@AdTg=B zDKj1-<_lC=p~D6fj=AJM;{Ef?v&MuRS!>~g{t4-p?;pvnpz zHkfeCCHD~vdFEK6%{tp0a?WkUM`Wo`XO#hC4w!Ni@sSzIEYhOSh<(nuj`*mcM2!Yr zHreHbD;^>i3shO5!v+(Mx#T|Lqw~zO%o;;>IO2l4h>yuJN1as$j5%P+O~l7$D6>e5 zJ|p%y<2u6dsFzrvNsle|IAz9T#K#q>u|kIpCLD9geZ}1$PmjkYkP| z+N`t9A?MsiEM=)sr$wI;`~a)Bx< ztTAMVBQCg$Sk5uW5^dJm=8$u4BR(Zdg*vMY7<0gsn}|=%P-c-9J+|26lo^i^pH`$s zgD#uwa>5l45i13%tk7YD3CCP=AMxpV=2>Qqb+$R=oZE=c$Wo!sDg(wGFy$uVGc%M~ zq(z?*`uht#IkypCkflPMRR)aN=Zx!!FAPd7(4@x} zdz>=kG2)Ag)M(IUlU+`@;vr(SK$R6bY%t-73+^JmIL91Iv{`4HL(aL4_>wFY>Z~$g z%mGtw?8TO$%pxuNjM(Rt8IKX|A~hOx*<_a!u6VFlT!AVpbl70RF_+x?+kT#TmRV!S z4o94GYfrc=73!=qV9WtiZv3@9LzzWd^ck_w8P^eC5tLY4B6p`3+^I1Ip$cR%{tp0a?VY}Z^=+*krsVM>~qF-#BU8sEYPIK z7JHmB<1ym56{*pn%O<;=aK(K@H_trFtTAMVBQCg$`05;UEYW72Z4No-HsWitRH(Dc zfH4P5xrzANpu_@AdTg=BDKj2zbyuWDgD#uwa>5l45x>1al@&T{FyWX>?jwFjjyaZS zv(7e$oO2uTby+IZS!KYO1E$C21*)vj zVS@?BTyh`r^?Bx5W{n{`9C5*2#2`n7I;#vAbHJ3Fh;PVHW|0U(4@x}dz>=kF=AMxMuRS!>~g{t4-wy7pvp394B6p`3+^I*UyeDJ zXtT~Xhn#a8@%yt>sI$s|F$YY!iP*?cW|1a6w%Fs88IKWvph%4dT{hX}gex8*{$PPB zD|Fak!ZDZJNBp5Y^DNV5oox;|=Qd(9ONBbC3>b63l$(e@oT1DjE&7bu=Zx!!KN6H! zph=fab~)jShlp<}P-TS<8%#LnlKY6QJo7BG#*iJ3xZp10TXW2@M4JI)4w!Ni@ogE( zEYhOSh<(nuj`;SV!~#uvY_Z2FGae&GMQSwYvcZI7F1e5Rqj~08W{n{`9C5*2#2?Es z#}aMU+2)XQZX^D9mI`%N88Bj>Gp-}XL5T&L^w?sLQ)WCy{D~qp8g$uYmlLjdi1?EQ zs;tmqgB^~z;4b1%<(OlMHtTG2$T_$Ei7ZQnI;#vAbHJ3Fh(Dd7%pxuNjM(Fp8IKWv zrbvwjT{hX}gex8*zN0{u6*_D%;h0PABX;u4v&4B6p`3+^KR zT#h-GXtT~XhfKMN_?`@97HQFE#6D+SN9+bA7HHCAi#<-6@fh*FMQSwYvWdapd%`96 z5#N_*o@Le;vcnM<+(rEP9CIwuW}R&gIp;QFFH40ws|*-(z?AEVzYvsIph=G{_Bdt6 zW5i!9QlmkaO?Elqiie2rFHmKL4jW83=90UJ{Ty>F(Po`(4msyG;xA>XP-m3^V-A>d z6Y-Zblv$)jpAq|} z1$PmDHA{s$s|*-(z?7SaAIwl@krsVM>~qF-#9>fkfhIk+*yEHLj}d>ZK$R6bY%t-N zOYS57dY*ZfS!2i!M_h0h@i%hJu|%77wmIaS+lZqqWfp1CXT&~dTu1!Ppu_@AdTg=B zDKj1;{#KD14Z3Wy%L!LJMEvan^DMK*kR6V=;4b1g#~e$vS!bI=&bf{Fp)3{ZtTJHC z0aI@5kDa0Xe4lKZ^w?sLQ)WCy{M{lo8g$uYmlLjdh&U-wWrYqKOgQF}`-mUTGtUxj z*4gHeb8aJkBuj-ls|*-(z?7Sazn7uRA}#ui*yoJvh|{3N0u8!svdalqJVgBc0##P% zu)&05F1e5R(LD1kv&N7ej=111;veLgV~JG;j5%P+O~hG-GK;k6Gh&}Jt|NXdD6v43 z9$V~j%8bW|e^{hOgAN-^IOdZ3h<}u4o@Le;vcnM<+(k@t%&|n9b+$R=oZE7_!3=7u-es(;Raw z(Po`(4msyG;-6)yP-m3^V-A>d6YQqA=?~s&TYg`WT{YRl>uW8m~!L46El=qq(z?*`IO2l4h^riPEYW72Z4Q`n6Y*~{ zlv$)jpAq|9NHgr_6Ya_;*EWH0ZL)F2`JQA2G`_&oXNa+2M!_?jrtu zjyaZSv(7e$oO2uTQ&}q1S!KYO1J1aP`01d;0!?~svBxPh9wV-c)M(IUlU+`@;vwQc z6sWR7hYcnibHQE2&*Ye6i8kwObI3Wj5&tnug*vMY7<0gsn~0kXWfp1CXT&~d%y^9W z*&;O>blGH=6RvoO_)i6@tk7YD3CCP=AMu~_%(KiILv}dgg4>AOEEVdkGGNRBQ*I*u zONKIwwCFQppEIr_{%cTTfhIk+*yEHL4-r3CpvnpzHkfeCCHE0`dFEMWjUhW6alu{0 zf6Fn)5^dJm=8$u4BmR4aGK;k6Gh&}Jt|NXvD6v439$V~j%8bW|`yw?OblGH=6RvoO z_=P<4EVIUt9geu*F5-XWm}7}H>uht#Ikyr2GfRa!s|*-(z?7SahYTeaXwqYgJx-bN z81cV~)M(IUlU+`@;vwP}3shO5!v+(Mx#T|Lf9IKFi8kwObI3Wj5sz6a)LCV~m;}FH@k(3LQ3>aLgt5kwl((mRV!S4o6&Y z7fF(1jykIh7<0gsn@G|OWqe;w+M>^hea^U!}1$U9WG{+oEv{`4HL(aL4e5J|p%y<2sVJ3rZ}|q{k+^oN&cMB!vQ1 zR_L(7gkvtbkL2z1%(KiILv}dgg1boGA;%m`v{`4&0aI=wdB+T87HQFE#6D+SM^X$* zEYPIK7JHmB<1vzVDpI3CmrW)dbIE-q@0@3zW!4z7!x0zUMe;5==2)W5I@=s_&TS;6 zEEVdkGGNR;XIw|}u0e?fn)KLWk5gtmM)Gb&YBcDw$u1{c@es+o7pSsAhYcnialu_A zP`P-m3^V-A>d6Ul2blv$)jpAq|>nP-_bhU{>}Ik%C#SC$HORv9qnfGIbTymy8&i?rx7VxKdv z!yn0%SfELdE%rF&iib$vr$ChzI&3iEm`m;>dEY$qEVIUt9geu*E|T}lF~<^Z*4gHe zb8aG;&roKO7JWwSbH;Tf?;n&{ph=G{_Bdt6V9NHgr_6YamIbh07Bp;rk%pxuN zjM(Rl>qr)YA~hOx*<_a!u6T&#BMMYmp~D6fj=AJMl8?+Y&oXNa+2M!_?jrf992M%U zGGNRBQ*I(z%ur^L7JWwSbH;TfA03ofph=G{_Bdt6VZ~$g%mGtwBKhPD zWfp1DV~agbneiCOa*-Mhx@@w`30FKs@+k$Xtk7YD3CCP=AIYcYnP-_c>uht#Ik%B~ zT9yiRRv9qnfGIbTtYj#&NQ*ur_BrD^l1~pxEYPIOCcB()#X}^YQJ~5S9X6P7%q91c zd}f|`mRV!S4o6&Y7fB<>980trFy??MH<5f+hBAw^=rdxUGp-}~?4ZN~O?qsx$0;)& zBl(;nH5zo;V8St%+(**PGtV+>4B6p`3+^KM+#GW((Po`(4msyGlF!Rhq0TA;M(lIO zbtIo3lvtoik1h5%WyWJ9ts*rVblGH=6RvoOQ^S)s!QI~;MrT_j(aV~!=-th3D_ z=iEl}MOiA;S!KYO1E$~P3Aw~@57RH(DcfH4P5xryYp8OkiuqR)tZ&bW@`%YqUMH0iO$ z9w%J!5XqMpsIo$b4JI6O$$cbidFEMWjUhW6alu_AUy);uCEBdB%^_26BKgV;Wfp1C zXT&~dTu1U%L5T&L^w?sLQ)WCy(kW7-L6=Q-IpLD~NPbJ6d6rpY$PPzba2LsM%`wLk zZPwZ5kaKP$`E6M$)LCV~m;fdGmrZs#;fjYyzNSEx z6*_D%;h0PABKg`Jb1czjoox;|=QfgFmI`%N88GI6DL0Y)_6%hfY0+oIK4)C>7|HJ_ zQlmkaO?Elqiib$Pu0WL)I&3iEm`m;>>F1eenKg#&aKr_7k^Igq73!=qV9WtiZX)?z z8OkiuqR)tZ&bW@`>w^*tH0iO$9;eKBjAT%t$_gDem~hM`_mO-w%Fs8 z8IO_tz9KamblGH=6RvoO`NMhUS!RtP zI~;MrT_k@b#~e$nGGNRBQ*I*pmJDSUY0+oIK4)A7_!3=7u-cM&N0UlZPwZ5kaKP$`4d?x z)LCV~m;5rmI`%N88GI6Gp-}~zM#YcO?qsx$0;)&Bl+`1YBcDw$u1{c@es*gfhsF>*kHmj z7u-ei7jn$8M4NTCIpmz%Nd97$3UyW)Fy??MH<5gQhBAw^=rdxUGiE$SvR|Y|gD#uw za>5l4k^H3sRaWS*!GvQjxsT*8=b2}jHHPeP#09sJ{6LlpbygWL=71?TksM?wvq+0R zBlbDtI+DKuht#Ik%Dgtt=JltTJHC0aI=w`P&&vEYPIK7JHmB<1v!s zA~hOx*<_a!u6T&#hYD0#p~D6fj=AJMlE0H@jwRZxv&|vr+(z~g{t50U&xfhsF>*kHmjm)uA4_wvlM%o;;>IO2l4 zNKSLiQD>C_V-A>d6UpDtP-c-9eMana#&sk=8kAU|Nsle|IAz9TB>$jDjTJg z?jt$NGtV+>4B6p`3+^KMu^e+O(Po`(4msyGl7E<`LY)?UM(lIObtL~ND6v439$V~j z%8bWIrbTKr=(5Q!CtUFm$v-YoWra0{>~O>dcai*)9CIwuW}R&gIp;Q#AJ0;u&ME`O z95Cf3lJg8@7HQFAi#<-6@fgWJEmEUFmrZs#;fjYy{#k)4D|Fak!ZDZJNAl0}%(KiI z>uht#Ik%BqWT{YRl>uW8m~s=zzsOK#krsVM>~qF-B>yrfu|Sg^o9uGJ6%Ud8M1d+R zbl70RF_+v&a+znIW!4z7!x0zUMe?t5%&|n9b;cYp~YGB$4IV<)M(IUlL^OMav#aR$urL~YYf@phzsr_`L{XdSfb53+Z=MvZ6yCL zONBbC3>dS|8P}1_f)Wcf>9NHgr_6Ya{pvnpzHkfe41$UAB zbdEWeXtT~Xhn#a8$#s?rbygWL=71?Tk^F}YWfp1CXT(0I%y^9CXNuHl&}EZdPPpPB zlK)ts$_gDem~hM`_mSM>nP-_bhU{>}Ik%DgY?cajRv9qnfGIbT{HF|M7HQFE#6D+S zNAjP85(_lxvBe&zT=5XeZGkE)bl70RF_+v&@?Y}Iv&9WZ#CtUFm=_?CVS)s!Q6OOs$KGIj^ znP-_bhU{>}1$U9YU5+`HXft5U0aI=wEo3OONQ*ur_BrD^(zg#vEYPIK7JHmB<1x~A zC{m+AmklNybIE4B6q3b8aJjk1Q4HtTJHC0aI=wtz;;(NQ*ur_BrD^()SEXEYPIK7JHm< z#Y3d;RiMfW9X6P7%q91czIUE^mRV!S4o6&Y7wKG%IhJU%&Nhckxry|BGL%`QMV}G- zoN*oL`vxTzXwqYgJx-bN80q^JsnMXzCcB()$$g~rdFEMWjUhW6alu`r@1J9iCEBdB z%^~O9M*0C+D%4qJz?cK3Tu1tWL5T&L^w?sLQ)WCyS}jteL6=Q-IpK?jrr*9CIwuW}R&gIp;Rg56M!Y&ME`O95Cf3(prWxi?rx7VxKdvd5rW!i_~b) zWs_Y_xZ)ww4=Ye*g$^4`IOdZ3NIyK!Jj<*xWQQXzxQlclONBbC3>b63l$%IDB14%) zTJ#yQ&l%T|eq>N$fhIk+*yEHLkCA>*kHmjm)u9Xm}j14))=zG5f|J=`q4S& zSfb53+Z=MvZKNNQrOYBN`i$7;jO$20HYl+`lO9{_amtLxNb5yvH0ZL)E+<^^5b4Ji zm}i+ahU{>}1$U8te2zJmXtT~Xhn#a8=_h2VP-m3^V-A>d6X{ZhG7B{6vBe&z%y^9S z6N}Vn&}EZdPPpPB(oZT-WrYqKOgQF}`$#`I&pb=CS!bI=&bf_rIZK5)s|*-(z?7Rv zKP5w%MOyS3vCkRTk$!4WVu1!-HreHbD;^^Kv;tLD=&-?rV=lRmbS2L`%d9bEha)by zi}cfT%(28O1I8RM5l4k$zr*Dl2ptvcnM<+(r8NIp$cR%{tp0a?Wj}tt=JltTJHC z0aI=w{elc-7HQFEi#<-6@fhhB7OByo%O<;=aK%HUUsRyV3LQ3>aLgt5k*?;MXPGsI zY;(vtw~>BvmI`%N88GI6DL0XRNrp0uwCFQppEIr_{nDVs0!?~svC9cpJVe?qP-TS< z8%#LnlKV(sn`fS7))=zG5f|J=`eixhSfb53+Z-_ECekm@P-c-9eMana#&!4-kP-_t z>9NHgr_6Ya^ec+gXwYSoU5>frKGLtuGtV+>4B6p`3+^KQsvL7H(Po`(4msyG(oU8N zbygWL=72M>HSfb53+Z=Mv zZKQ(?Wfp1CXT&~dTu1s1L5T&L^w?sLQ)WCy`i(_uH0ZL)E+<^^5b5vEGtV+>4B6p` z3+^Ia&oRdmZPwZ5kaKP${XJPK)LCV~m;GUGAQ-&>?cgD#uw za>5l4kq!$~S)s!Q6OOs$KGJW_GshBb*4gHeb8aL3eOW5hS!KYO1E$~O>dcai>~9COrJ zWx$vNrrbojnW4-gE&7bu=Zxz}|8P)ZfhIk+*yEHLkCFb7A~ja%u)&05F1e5NTk_1a z%o;;>IO2l4NVjs#u|%77wmIaS+ep7PONBZu`i$7;jO$3hEhw=-lO9{_amtLxNWZ;E zjRsvd+2w>Q9wHqTsItNuLv}dgg1bonXpT9SXtT~Xhn#a8=^x8dq0TA;#vCx^CelBi zq0AyJdTg=BDKj1;9T%z5pvxw^oN&cMq<^A7l@&T{FyWX>?j!w^dFEMWjdiv;QqAv+v#!Cj;~Ip$cR%{pTam~s>8cV;NFNQ*ur_BrD^(mxxNSfELdE%rEN z#$%-4Ris9PE}Kj^=92qJCwb;sW{n{`9C5*2q~D!mjwRZxv&|vr+(!E6vQ((E%78KZ zoN*oL_XH&tXwqYgJx-bN80l`28V$N^vdalqJVg4v1*)vjVS@=rTyPiZ_vM&li8kwO zbI3Wjk^cEC73!=qV9WtiZX(^wP-c-9eMana%8bWI|3Z-(4Z3Wy%L!LJMEVyCR9T_J z1{03Cq!4{P-1~5 zJ+|26lq()0{ec2iR_L(7gkvtbkMtnVJj<*xWQQXzxQq0!HW{?!a+ z7HQFE#6D+SNBV<7i3OVU*kX@UW;{lESfoaSE}QIf!WH+C{wEVIUt9geu*F4DiA zV~!=-th3D_=iEm6H?mZyv&w)m2TZw%^e8B?K$9L@>~YGB$4LKXks1xUY_iJ~g{t50U=e0##P%u)&05F1e5NB+op{tTAMVBQCg$^oMg)sI$s|F$YY! ziS$P@lv$)jpAq|} z1$UADXpT9SXtT~Xhn#a8=|9L)VUZSnM(lIOb);uOi3OVU*kX@UW;{mvV?}B-=(5Q! zCtUFm=|3z`WtlaG>~O>dcai?19CIwuW}R&gIp;RgX_g9gRv9qnfGIbT{^JZ~7HQIB zi#<-6@fhhpDN>_BmrZs#;fjYyf4o4I6*_D%;h0PABR$VE&oXV++2)XQZX^AtSt`_7 zWx$vNrrbpO&oY!*q(z?*`2-lBD|Fak!ZDZJ zNBSS~%(KiILv}dioZCo$CQF4ns|*-(z?7Rv|6_(Si?rx7VxKdvBfSYqEYPIK7JHm< z#Y3b&TcFAc9X6P7%q91c{--?iEVIUt9geu*F4F&;V~!=-th3D_Q*I)?%}{2M7JWwS zbH;U~|0O7~K$9L@>~YGB$4LKcks1xUY_iJb63lXtT~Xhn#a8>Ho-5q0TA;#vCx^Cer_zq0AyJ`i$7;jB6eveJE0+ zL6=Q-IpKCI;#vAbHJ3FNFOtl zS)@gu5&N8R9qBIxB^GGXV~agbneiCuFBhn?LWd0|9COKiq_4{}&oXNa+2M!_?&4YG zm}7}H>uht#Ik)jF$x>#K7WPt0M(lIObv#Rh5(_lxvBe&z%y^7v&x+J&&}EZdPPpPB zo@ENmv&y);XOI;#vAbHJ3Fc=lEq$}G^N#}<2> zGUG9xWsB5k&}EZdPPpPBp1pN}Dl2r@V8St%+{d%G$urLqZPwZ5kaKS1*~_w2sI$s| zF$YY!iD$VCWfp1CXT&~dT*tGQ2PGD0&}EZdPPpPBp1o~>Dl2r@V8St%+{d$5 z8Vx#ZFyWX>{x8bz2e7%UuJiwQxF-;qzy#?q1&Rcx&Q!=V6POMZCNKdC6bKNYYSpR{ zt5zu(uxQl^5vvxg8ntTGs&Tiv-QBKscdG`hShZ?}3Iz%jC=j7yWuio=(t*P4``nY{ zp4@w$`}5a%UeBL=?)h{7ocq1E&kS6MH;_ga6PQ62>uBH@ZSihSVFcqSV-aiE!4X>G zJt~P|6fli>)UbsEoQZdfUf5woab z9St0#E#6~N7{NHoSi~B3aDGWs(?10n=E(Dz~G7$#A{3O2BZQ(TI7>i}{nVirrNV;3j55N|k*EG966 zD%R1!G1}sNT?!)@M;VJ)!!{0aF5Ybl8RRjAdDO6l1DuI>yI=@om_!9D*u*}XxDsz< z5Thtz4$IiUE>3VE-q)v*#RO(h#X1@|Mq9imrZ9qWl(C34?BED3@t%~#FbbH)0#>n& z1DuJM6%1hvlc-f5O1x(dViYCJVHq3P!znJs zdsZ4*Okf68tfPTrw8gtOg%OOSj76+r2S;d$S4d(Q1x#ZBtJuaN&c%DS!VtzVi3(P* ziG4J2CEjxeF^UrAu#64t;S`tRJ$C>(6fuh>)Uk^bT!=TG#t6ny#v<0RgCn%WdtMU5 zC}0{3Sj9FDaW3BT6*9P5j$NGK zLcABIk;MdNP{leLI7VB%7o{+Q0;aKmRczxB=iQ&79#fb{4O=+CnRwHJA&g-X6)a-|dpO0Vc;7aF9EzC566)B+2`C4f(!A!D~&8BFoP=A(ZDg<;?1Nmf^n3wh&Als2rcoxJBeWwFpUMQVhaa2 z6YqNjLm0y(Dp`_W6eY}I85`KcDK5o( z%>Z&JVirrNV;3j55bw2VWHEsmRI!c*j?fbC2a*^@0n=E(Dz8XeFo_CQu!((~;!?cV4| z@fOm^VgfU$VjT?}qb=T#q%eYUl(C34?BED3@qRRkVH7Zp1*~Elhd3AS#{@$d!z3zL z!6x?6#Fco9gBV2#b6Ca(_Hc?z@qT;&ITSIACDgHt6I_V*#uP>{jxrXph8-NCCElBo z7)AlpSimZ_afoyAstOt8F@<^5u!RGhiT4wNL5!k=IV@uXdpO0VcyAs+4n@pj33cq^ z1Q+7{WExpaUpohazUNggSO{f(!AM)5u~1GpJ%64IHB_-dj=_!8poT#2R*RgqC=3 zO=1{%Oko~1Y~cWB;{B{(2xFK;1uNLZKAN}^Z)FgpC}9rE*uWl6aVg%<4IqaJ%%F;O zG;oZzct4-Q2*y#yBG#~jBecZ(g(QYiz%&-HiftU?T)dh>26;@Pf)#9HA5C0|_ltuV zMG13Q#s>Cqic9f+X#hDCF^eVCv5OO2i1*8BWHEs<7O{pM9HAxNY7)aJU>XZp#WoIc zF5a&wWRS-c=262I4sa&kuL_1RhDpp}85`KcDK5qPwE^T%#4MIj$1YBAA>LXVSxjIC zRji|dW3VhGRVGV9mFU~n8PwQu!mDziuYdzkV6r(Si(9QI7VB%|C+)G z#!<#1*06&kw8Yy;Vi*NXV*#t!#v#td`#psW@|eOrYS_d+nz$10_XjbG66Uas4ea3* zm*V}m0pw7`ES6BmE>3VE-ewwEOkf68tYZg9Xo>gVlNd$;(^$YNwsDAa@&1QG26;?j z9yM&?0B7R;Pr(qzFo_CQu!%jK;!?b=0pw7`ES6BmE>3VE-v3G?iwVr2igh$_jJ9}x zkirPYQN|+Hu!BRKi}!~L8RRjAdDO6l1DuJsEf~TWCQ-o(HnEQ;uEhJ_gBV2#b6Ca( z_Hcp=@%~R5SxjICRji|dW3@gPP~!W@>dfjyk!QoKJIKn_LBVhMHZ;skB+8Yzrm9AzwG4LdkO zOT4!wF^mGHv4B-<;}GZKyuBH@ZSmfb#4rk&#sXHcjYFJ^_vZ>3f5O1!@qKn_LBVhMHZ;sh7s{bd?iOkf68tfPTrw8i_Y6h<(PG8VCh z9UP%0-hL7pf+37y5*4gq6Z>f5O1!@r#3)Lb!!kCohf`dN_qPMc zVgfU$VjT?}qb=S+3L_Xt8H-rM4vx?g@9&ZrMgh}Uz$&(Jh;#AYsgS`KCQ-o(HnEQ; zuEcxSAVyKb9G0o2c5sB2c<)YP7zIpY z0jt=?A|dP6fuh>)Uk^bT!{C+ zG_sh$460a11IK8K_x=<{Fpg;~U=`aq#JPCK3K`@vg?ZGlg#(<4_W{8W#xRKrRMT3OMT3OTPC%6#rpVG);0yC&$9St0# zE#7$wBN#^+i&(=p4skBtKPzOA#}wvK!xj#3Cf;WRLm0y(DpCdC8aPHXZp#WoIbCf;WS zLm0y(Dp(8n8gz6*u^p0;(acK5sagZMXX^5 zM`(%n`6Px>z%&-HiftU?T)Yc~4Dy)5JZjj&0h+iH@81V8iW26qj1BDJ6qn-t#{hCD zVirrNV;3j55bq0VWHEsmRI!c*j?ohDGKpanFpUMQVjG7z7w>+B4Dy)5JZjj&0nWtx zqF@MPm_!9D*u*}XxD@Y81IVF>SuCNBU7X-TysI>_n7|CGSVsfLXp8sd6h<(PG8VCh z9UP%0-d7Yd$YTogs9_5SI1}#y!4SqUi3(P*iG4J2B}xV{iW26qj1BDJ6qllINF$30 z%%F;OG;oZzs0XDmf^n3wh&Als2rW@w62mB98Vgv(HV$zvN+}Fs43nr}1)JDM6IY@V zgBV2#b6Ca(_Hc?zQ4bzK4n@pj33cq^1Q((nlEw(eQN|+Hu!AGCL?x3LMgh}Uz$&(J zh;vb2rI0}$QQXg%OOSj76+r2S;d$dSnvAC}0Zns9_5S zI1@D>7{VAPQNao}v5zLMMBO}yQIs%;Wo%#%r??dLr~%|q#0;ufM+3)bi@GI+5sagZ zMXX^5M`(!}Okx-XOk)A7*v28wMLk*}gFL2C!3s99k0!1}J!TN2C}9rE*uWl6aVhGt z1IVF>SuCNBU7X-T)KD5(Okf6!Si=sE&=U2yB!*GIG#0RmZ5-lU)Ym9vkjE6}QNtDv za3<>Uf+37y5)~|C1A92drKrpRawuXJOQ>TPC%6#xgfz04zznKbM+3)bi~8CWMlg;t z7O{$L9O7KmtqK|BF@<^5u!RGhi5eCRVGNU~UMT3 zOdfjyk!Qq+?MkV6r(SVA2Q9HT8No5BdjQN|+Hu!AGCL|sc_7zIpY z0jt=?Alpo(=gaD3VE>ZxgDF@YIWv5p3g(H8Zz6h<(PG8VCh9US3Y)R;mBc}!s* zHEiJkXQG}i7{VAPQNao}v5zLML_K2=qbOkx%hbVLTo2c5sB2s8=L0 zi~^>yfK_bc5a*&^sgOY)lc-)Uk^b zT!{L{G_sgL8H-rM4vx?g^-W0(qkw5FU=`aq#JQ*`g$(kT!aQo&!U4`ieY0Q)W0=Go zma&07oZ?c{w+tYMB4)9KI(Bh_3sK*iMivv8K^5z0;23RD(yfK_bc5a*(1 z6*9f5O4RoaViYCJVHq3P!znIBeg6P*C}I{%sACr=xDfT~G_sh$460bi z4vx?gHJ8LN3Yf+MRF7$#A{3O2EaQ(TJrfdS-D z#4MIj$1YBAA*zx_7896373*l=7;RCnOJM}#C}R<8*uf#rMZI1jgFL1%j~cdcfHP4) zC>X*RCQ-o(HnEQ;u0+ibViYCJVHq3P!wD`#y&;V(CNP64*3rN*+M<3ag%OOSj76+r z2S;d$`r#yoQNT17u!?OQ;!Me$5z+M<3eg%OOSj76+r2S;d$T1;XX1x#ZBtJuaN&PDyWLI!zEVIDPX;Q(j2 z67|MGjG}}&EMo(EIK`!?Hw_?%B4)9KI(Bh_3sKcHvY5aOs#r$@$7qZCi6n+mz%&-H ziftU?T-2KtGRR{J^Qd792RIY;lY$|PVGM-5vzz?rCJ!4SqUi3(P*iG4J2 zCF(7M7)1$lSjGnSaEeP&Zyi7u6PQ62>uBH@ZBaj)!U)Du#v<0RgCn#=tt2sw0;aKm zRczxB=c0a2A%ihYqJkA{VjoRhiTe3LjG}}&EMo(EIK`!?Ul>3RMa*Ieb?o8<7ouuu zWHF917O{pM9HAxZ7n2x90n=E(Dz5Thtz7E7pO7bmz7^&4qqF@YIWv5p3g(H8Za zDU4toWh`P1J2*m1)Or%bC}0}%s9_5SI1}|-f+37y5*4gq6Z>f5O4M%;ViYCJVHq3P z!znIB{muY#C}I{>tfPTrv_;iZ7{NHoSi~B3aD6iG4J2CF;KpViYCJVHq3P!znIBZ44lXB4)9KI(Bh_3sJw9Mivv8K^1G*!4X=b zem{v}6flhitYRC7I2ZNb6f($T3iGI83kNt8wJ8|F7$#A{3O2BZQ(TJr?*qu8h*>P5 zj$NGKLe&3ABZ~>lpo(=gaE!L7|Cz!F#!<#1*07C3oQv90$RLj?%%g@a9Ne$5zE=2u#8d*$W z234%1fn&5q?WHh+ag?!$HSFLBEm41=kU<_(m`4p;IKY{xzZ48%43nr}1)JDM6IY`C zY7nC+VGhgKz#dL329D7db(F#g3Yf+MRNMQuy zC}R<8*ufE6qCS|!FbbH$JZjj&0nS8yNHBykOrnAnY+@fxT!}gv#3)Lb!!kCohf`dN z`tSg9C}IXxtfPTrv_*X+g%OOSj76+r2S;d$`e+ivC}0{3Sj9FDaW3jqA%i@oP{9f| zv5zLMM15=!qbOkx%hP5j$NGKLewYH$YKIBSi~B3aDXZp#WoIcF6ti?GRR{J^Qd792RIY;Nx=}tFo_DtKS}#f(f(76@u?E%|5NLr-B}tl z*cJ7UgP`AkJQnq7#`!eceVYCGG=Kgl#{Q>itYRBSxDs_vpXU>x-8rA1Ux@l=#{cIz zG(>%dIelgdwEGNWe5NhxKKj0o&+g;1`)G3?eceZ2E&6KFSBt({Z2K>1EZ|twzvi$B zw)-q|`7GOgb`kq%ifRvG4D{Px0{h*j-!|L-+c?%leU7<&ZW;|ypQpdiv)$+E^Yd(X zp-{vuHn0c!{r40`LBIdb_Wyn;>OV4A#;&L@(C!P1;PWrEMO_YpelAx)-FbMUqP~;`zvtg+QD3?ebu|pey{dz;u9(jipMQA-lUM}V zml@+L^#7F!tYA;n1N`}c638E5{~oxMgk&*~8g_94KEGiYMO3hkGf6y%&mOdZEnG;# zD`6E4G$o-1Fa`QkYuLfDBocxV&|iY~2|iC;NaDd`m;--)@RcMUQosyWuqTP6LI%^I zU6MYN`)EnxtJ2702?vsRDBC@B5#%@W`x}|}jjPy2TM{Y8O3h*e^qp!-;$bO_VhZ&0 zutP~aoVE|2$EGB1QYd2^XOc*>eYya)O*7{-^LRuOBbWr^KcWu$`D#A@>Itl1PZIq5 z6NyKbK>o;MTuEXe2gVwxfq4#`;8GGd4})!QCcByKZ$6jAqej5Ek7`Kb76EgfXqi6Pnyje-6j z$L}9E1Mv%SCV+r5E$o4^B{ZDz9h12pDmyYw#~LBacvBX zsDo{;T}tAP95^<2RIq|AoJitMg%M1mh9gPj(ijKZ<@ocH2SA@so(9`IS%21U<_ z3few}@t;DUPa%5>bG?i0?^?hv+L9Q}Vjc~gO5$z-ZSUr@yH~+>cb`e(sr30&+CFs# zjQ`X4>o+up;r_poiA&-2VP&-VE_FxNb7@@+{xlkAy!(B_$IXrLvD zXEE-xCc#{vwGR5amu>H5+k4seUOvCK4z|DdL=pw&TA)o~8f1k{(B|0+!vL)I+yjt}4}dn~71XdViRUry^Ri&B&zlE* zJ&$dl&$iEJ+voH7^B2JO&))`feF1G=Fbc94R6&~;oZ?Cn6FD&M#2T3EL{kzkq%ZzH zH}OKYeIeVvkk4Ou2DX3E5SZ(WX!D{v$X?Wv#EWV3;t9-R9gJI4V6Md?=&Q)KMYeqj z+rEU)Us3|wzhoKA^(C}DUr&0!OE6doxfh1nX++Ih&ujBLA z?V%}&*VE7IY5RJ%dp%?SAanV_SunRBY)N9CHuLm1zY4~B1HXR*F*FxHQ3fw}x>4z&5vD%g)78w9`qu^lkh zVgWOt{o zJbvv+5^D;xSOER4(ciDr->=i(Z_wXw(BE%tO5!(DsDQbxk6~RBzs3B1YX%2kOuomR z`0X7@{0`&&P8E#tJA7W}^E#i`Y5TiL%*lgAe^vO$lbhs`@>qGi+$wVST{qwQw7c)R z`_{W}z4_Lg@4DIlGoSInUAOBDl}ag{&ZYUvbbjL3O2z*yXFk)P^ZyMj@<7`Vxtafc zOiA9V{+{HDsikHtB;i4 z2R(wnC;G(rqwBHsuKQh^Uvim({vgK)?1kv#?DtdUcQ?t+@@RRSJVCy$bM)!u7Tp)W zc8;z!Ydw3vb7saU{y%!+{81kuexrZq|0wVQ4~2YjjyZoh|NMQG8Kry1{7x#g~|Hx}|RxQ=!{yaDS64SLC!$+&z2-{kaynDh=SyF2W=-p3-MQZM;q1;v?{#+;g;IfWbuYOpyQW(P?e+D} zOSEpM+v|4z>goL1^uav%@_(*y9ai{*xxbn@m}}+{!By{HExNbP9a*>LP-o1=!iCKB z##i@Rc_cFkj%fEvVLIL4cK0Nwr=WlMQ_1PQ(m&aA(f20ZUvG~(tEqR6Xwm6F9}~YL zePSvV-I2NHXZ%{m{Z8+Jrq5$0Q_-u=tUq1r^mS&fKz;7%&_7lBbaAjV{(h#pZp}Tj ze?R>ysE@fG!9QaB%G~@e^e^U%zIwmQ=#!`CnBmx!nS(V)7E4LrtF1B3dC?Ww-;?eb z-E*yHtjF*6@Biu#r!P8l;pxv9k2SzOw*UUnJ;v7TyVrj(XC~wyyyw4g7QJ z_pVn64fOn~{3sM^ew+Ta(Rpg{XVlqK-2=PAm8W+uU84)VZBacs1^L)r#J?8}v{9IiY6gp7oYmslZps zOsj7@Dn@TRe=C3P1-1$H`5|1@HwUZd7IWKlHBqVq6YsRfqPm()XH9PTw3WeSG~h zOwaxZ9IIL;Q=<1;$-jTlgE_zd>9#blmC}9V`d4%3s5ozuJVoot2G^5+x6-rI`_j9j z^bNyY1l640Z}TkGT`&H9wEHYY+un1#-a{JZ%uedx<@E14cYNt_gJaZL1>KSLHQ~=& z_dp~4Xv0^Hb*pa=dKS!qukIS~?_Qlf?Nv9fMZMS7C23}m(=*ZiWpbVA(NnNa^qYcz zJ?lGqDU+_I(^dNz=~~*Y8@hkLGrzxdwQ5~w)-#fxnLZl!uNgf9_DmlirlGGZiU+r6 z`?#1o_5XeCRCHgJ8aIceJ}iCrV11ambdFJXa{g49keQtBv^PC7L7n+C)uRM! z>i^%q>St;WZ7#=o4EpFklTk7BRb-BqK4L!qjPyN;=|=_T%N;R?4D;a}_MY)|AO2OG z%VcsjPNJD_q(1p)Qt!Tv^U?Rk9-DtcV?4QYZ(@jCHC<;2|GF%9j=yzP>wVA{;;o(i z@ej0ra2cp#2FvIrX%V=eQ^O^}Kr}nG;oEdj2;2#8zeh*|u}% z)P3lY^{-s2IeoG5GYvU@TrgIUQh3)k? zdOSUdzIgo6*j;~My9V%FWbW-&3$qdLF*W|$sCQrL?T_iXbI;au(-WhO9*QeLuV+2K zhwGmnR8>{~SefU1vj)CiuE~?-Y4Tiofyg87e!|Vqyn*jIJmLv=Kj9HK{OA8Umde1~3 zbHAqeM_ymW`i${K)n!x;PcB_4=V;nHp61;vxT}~pdh;3;PTzsL+or`FLw_~t^Q3z$ zmsw3_9=T4=9kF}8=&e}YdP8oU6+P+TUj0?fSbtBTGj{Jj&)j>rAl=lTx!*&Yg2*25 zrLWoU`q1Cg;m%?1(;QmXcda{TeQbg{# z^HJbkC^#0T9X)ie1OIAZ7lZB1InwLDGYGQ-rz~`?M_EL}2siB?o)cgLE{&Tmv|0_S~do8a9`uOk^z?WHPW(J`us*g_hZr(jw zx6r5QSMQ9TRrkxxwDTujuk@F`p3OQ6#tGIlefifQhuuH$x&=q6QYq+}^`Afeoi^4K zN3$~nJ&W$@$dx*yb1|Au^jllT@1s{QJ4diX?}W4F+$A~#5eH;|k^zQ1pbR5Is_kxHWP1pbqt z?yozFe=YWo6t!H>s%GD-s+FpJuQHi_p5$uko-w_?^#SId=HJ#j&q#XP;Cp7KMQ7~p z+0wu2*1X;7i_grY>VFrp#6_g9oc=la*9#9IRYvNrJ9`}SJpuoi>3!^t9AI z+G@|q4|?G6apShGqrNlIokRCZ?w$tyt3Mn2B&YTM@S}5<{hN_}Jp8BkZjZt7*2liP zXDnQOf^{#ov^ksI`*po@OwHXaII0{MPOyJ;>gja7M5WY6M?X1N_?}9|zIOF@Dtq^8 zeu_| z1fx{^Q8NC|CI3T);H%7@>8}dA$4J3_DH!cP@%Iq=34tFB!oKlynLqMpzO288xZZKQ zy|0S7kDIyXc`~8@=&|D)Wcp+M)jfKAkYRu9F@rsNtXN|@k6vdyE)d3~FMd?)Bbce_ z$M60_SZ0F^gW6*T&q)5?R_djt#|vK{y+3!x^{>XzzWP^6TJI{~5!1WMSH}F3<9E6W z>-E!JYo-o&z8l%SDuQR`l4;4${&$^pSNItr{9>K{j2&s@Lx@m*B?2yNy5(*fzN(yS=eqkhZ~kocI_tJ8 z>vmizOr3Atmg@eUx4*5v@0#NhjAcfucgEp5=**oh{Ug%Z(p-t`f!PPWoxZ;o^gf!W z6u!5r7g>%&-Q7oXZR&m0XP3DKXRVS;m-KOC^8!!Gb$a7@hHIkRMt>hD)Jk95+~27x zdPl9sb=|ykTuuAVS@p-H6(xxA%xM0`!ThZ)_0i;t)4R&FI3oTv=O2%Zo}JzY7Ekz? z>LWm+ms*uGSEaZL7snCycw*@t4X zlbGzoG1*6AvX8p5&N(`DWu0^Mv6$@RG1(_#vSv*74>8#%W3o@hWM{pMHOpFfnZFj^ zW~~MP^J{!(m$mRm{&oB5{x*HtKgDF{u8e@w?MLb-`rrx?nPQT`-xuE||<+7fkja{cEpNXHE8nUS^&5Yvvre>w;VlPZ`V7^D&bc$=1$80XE~pF9ET{|7ET{|7ET{|7EL0cz<{8w5XuA(OuNAX@ zAL?cH^Nh((dRes3pe{tSP+jPoXHXZccAaw+stbMXg1TU}>zu!!E=04SE=04SE=04S zE=04SE=04SE<`hTUHG%>tcAD5)CH5d>w?MLb%E7?-MV1fx$A<-+;zcZ?z&(ycU>@< zyDpf_T^CH|t_vn}*9DWg>w?MLb-`rrx?nPQT`-xuE|}~KuJv`zoTE!uc86(qe@y1C z3#OgBE|`o_9reUy?z&(ycU>@biBov~$-5 zlez1H$=r3pWbV3PGIw1tnY%8S%v~2u=B^7SbJqovx$A<-+;zcZA9h|xCi_S)vulmX z+;zd6BX?ae?LOA))4t!D%v~2u=B^7SbJqovx$A<-+;zcZ?z&(ycU}1N>#T)8jj0PJ zbJqovx$6R}__}q$v~$-5lez1H$=r3pWbV3PGIw1tnY%8S%v~2u=B^7SbJqovx$A<- z+;zcZ?z&(ycU>@*-TltBV6rd9WM7KO+;ze9>8=YVW44ZZVlsDK@Uw1R z;M(`sbM{sG%DlE0Sqm9HzwM4$o!g+vh`LvKwQvR801;nC#&(*-bH7IwpHWO!n0=*&|(9=Nt{Vvd%Se zb4>QAnCzCAY%nH!bWHY`nC!7J*-$St-_QF^e=Yol@YT6iOdb7Ze=Yo(PVWf*ej%C# zbs?Gsb-~UUsjn{BnHeu!7wowNbs^d=s0-07s0-07s0-07s0-07To>$l26Z9YE~pF9 zEL<1tK7+atZ5PyqXcn#ucAr6Au-ln)6x0PfGw103nCm5|3(7G4W>7G4W>7G4W>7G4W>7G4W>7G4W> z7G4W>7G4W>7G4W>7G4W>7G4W>7G4V`Gv_G07VLKS_wMh}^A}zVcDwLeu(R-5u(R-5 zu(R-5u(R-5u(Ix2;M({1q4U15A6W|-uGrh|(07pQy)T%|{k~u_=ljAPw7Bm3f@$Y| zUoe^beZgez_XU%=-xo~geqS)zjiGaHAD2{2=6+u=eLg&<-Ayr>`+dRm>3&}@nfrag zWX|`6&N*_wFPL`j_XU%=-xo~geqS(|`+dP=kB&Jm?)L@L?y)iLg7*cp7MAsudF`(w zYvC?`Exg9RZl4kA&(7|N$@0#O6~bD0rZY3+Ju4==Hzq5@WY3Pto)eQjHzpg8$(|RJ zJwGOUK}c;%VM%pO!o4a>=iNDD`T?B{w&K| zGi%{*B5UDI{#xKYqVL_=)I&Q9KO@;$_!-G$d0d|ecy++kIM&oS#+KsjLAOK%cA>!(#xWKemExk zNH2@_`B6V}pQF>5b|33y(Ybs)Ci_H8){M#iAtw7|O!ldm?5sb_F6%4v+TTUi!d-lR z+a0gd>7DNP1(Uho7fj}UUr73Wy5AQ}JNNs7$?ol+|22D_g_z9!zF_)vzb}}~{k~wb z@tE=4?+d1#`+dP=FNo=LA|`XcFPJ{v?+Ye#zb}|`V= zEtt%`7EI<|3np`~1(Uhgg2~)#!DQ~WU^4ewFqwNTn9RKvOy*t-CUdU^leyP|IY;ib zVA{FYg2~)#!DQ~WU^4ewFqwNTnCulX*RFdln0B4D(0y*n^1M%7;7KRc-|zAHZFl^w zPOZOpHuccXXy5nmHrUy@Gkd7t=RZ3$Gu~%0@3wFEk`+}W?-xuuc zvoYg^-xut5{}$8kb1~WHds%ef!|x0Bc;WX2I}5)r*je~}!DQwfh2IzKcH#F0I}5)r z*je~}!Op_(3w9QMU$C?A`+}W4&^w-y>*dbSHQ)K~7kIMoZ`1kj+7A5d_MI^qtH@pp zeeLMgk=^L`8G2vnYZrQ7=*!;Y?9Of`8x1^4v~cpts&U%;&6M>cUQFEkv_mEkv_mE!bHqv=;2l zj2B)D_FRIs5N#K%g=iM6g=iM6g=iM6g=iLD3-&yNwGeF=tc7S6UJG`g!CHv63)Vt3 z3$F#c&yPCKyE#YUwP3dk)tEk?eNiXCyldKO@;$_!-I0!p}%{b`dkr@H3L#F8qvSXW?fglbLfAenzs}g`bh^ zEc}dQXRIgtS>c+Ug`bh^Ec}dQXW?fgI}1M}S(){WWY&qP3#^dd9PRb<$NqI2JR?Oj zcU>^;+;u_ECi>t0n|qFF_wJavxa)#x=dKGTbJqovx$A<-+;zcZ?z&(ycU>^q2V?fn zT^CF{cU>@@-8rU@~`IFqyk9+!Rw6Ognd7Fqyk9n9N-lOy;f&Ci~akIf(ANyDpe^ z?z&(ycU>@?|Fs z3wCDu4Aq6sxii^&V&)mtg=n8aU5I8uU5I8uU5I9(y3jYzpe{t)eK2MpKGe(X>(=c1 zNiU1`8PtVn7OD$<^9<^O-Oik&P+jP27t{s2otbA)7ou5E7ou4+X8(e^5N#LKg=iMk zg=prk3*6nE^LSfKT`-xuE||<+7akE)7fd^MT`-xuE||<+7fj}^3np{d1(Uh!g2~)< z!DQ~bU@~`IFqyk9n9N-lOy;f&CUe&XlYPN?-px6>bY`aA{V|!lE|_-ix?nPQT`-xu zE||<+7fj}^3x0N;y1-TI+_$&K)CH5d>w?MLb>XXH>Vj$Kt_vn}*9DWg>w?MLb-`rr zx?nPQT`-xuE||<+7fj}^3np{d1(Uh!g2_G{bN)Wk%j{ZX+PUk3IY;igVA{Fsg2~)< z!DQ~bV6tX!p7uT5WbV3PGIw1tnY%8S%v~4wu8wmae;QL4Oy;f&CUe(?N5<3z)6QKN zOy;f&CUe&Xlez1H$=r3pWbV3PGIw1tnY%8S%v~2u=B^7SbJqovx$A<-+;zcZ?z&*k zk-ILKcK63zFJFwwz7&(W>w+22T^CH|t_vn}*9AZ8)&(wof9++zOJAASxcWkKd;*_e z@4x-GGcTr{a%Ka1#K?d9Z}<6NXS-Ry-9uusWK71tRnYgnJbS!{#$-3fWT}{p?@C^G zyobkRH^pQ;#b38io@%a}ahJbt##Qgg%sJv`M`q5$%`w@dVzOIevcZ__(J|R$VzS4^ zWJA5oub0_%e=Tsg?f?ARxA<$}&va`2I~b_wQ`mnHeu!7wqwZ zx)5y_)P-mk)P-mk)P-mk)P-mkt_$`&gSrrH7u1Dl7Oo3+pFv%SwhQV)Gz-@SyU(C5 z*zL?Y3hIKLnR67>g=qH0m}}`vF3Gz->3Gz->3 zGz+fw7x7r0VFYr)(*UhP~9b{1X>b{1X>CZkF^)`HzG zycX;%ycX;%ycXb{1X>b{1X>b{1X>b{1X>b{1X>b{1X>b{1X>b{1X> zb{1X>CNt+KycX#hYZeSe*F-WRwU zLi0Dz({uW|jr?zg*_r!&!L)O~FYr`&-S-94&i%e%GWYv}$&xYq;C^2)?cDDRCc81F z&s0qIu$b)OG1*Nqnfrag%+vk8U^4gng2~+P3+5cT-xo|fo}&8hE%r4*Rk?1)D!XpR zsMpQh?+a!wkBMpLeqS){hWguO-=eR~Yux?%KfgB0=eOOVt7-JV<*~DSV%p`M8GA*a z&va&Hyl2H^_r_#}nC#gx*>hsD=f-5?G1>ECvggNSFNnz|VzL*;WG{-zUhK@wIVw6c zbBE*`H-S@;>r z&ce?~R(7ZK&olc0e=Tt4`ai$+%l=yUEC0IX-_Yp09_%c<7VIp%7EDIfa;ycrU3e|n zS$HkjS$HkjS$HkjS$HkjS$HkjS$HkjS$HkjS$Hkj+2?!5+I-)`&cbWK&cbWK&cbWK z&cbWKWab=&*Mi+HycX;%ycX;%ycX;%ycX;%ycX;%ycX;%ycVo1vKCBT;Oz9yfqn1a z_pjS`#$@k`$qt-2RS`EUR2?4Fo*d1v-Gzt3kn zGc%t1eZgez_XU#`V)}HyFPL`EiD~D4Uoh>)W7@gj7fd_%`+~{b?+Ye#zb}}~{k~u_ z_xpm$-0utK9J${YOgs1cg2~+P3nqJ6%rPs)WG|1&UJ;YMGA5fe8JE7lp0husugq%~ z*I5g%k68;QbFT%Hx!1zi#H@57g zU}xd?1v?ABFW6c5eZkH?8*^O3?+bRje~W4NxtNR!-Fdb$&n0%B+_CzeyX-9dzF=qJ z_XRr(zb}}~oTKpjg556szF=qJ_XRr(zc1L?Rm}cTbDVzT$g zWXHYCzi#`+3%xJ&WufbN+Z9p)Sx{Zyx4z)+lRXC$tu# zS+EwOS+ExDjH=xC?rdjfyzpAE=Mt=iXuDu7M6+NmM6+NmM6+NmM6>W(u;&@9g=o8A zEkv{MTCn>J)6SPQi1?YH^9z)k*I_#^+i{d7zgenzs}g`bg3##5-{8Od%J zenzsh`(ox2enzs}g`bh^Ec}dQXP=E3FZ_&Tw+lZb*;)7*$o{eX~_NNh30n&TFLPC?NLPAneB~%Dim1KcHKqqNB zL`tlrGjw+nCr0U(61$UhlQtv)yE|jsBu=^$&HBI}K+=k)(pZzGACi!S1TK(8l}e={ z=biO_XRo{Vdiy{5eOddSd(T;S?Oj#Z?4KL@xs4tvGoK64`CMpI*UDUg&gTNy-eR3T z7ohXG0OoT6%;y4_&jm1_3t;<-d+@mcozDd@p9^3<7r=ZjV2^w*K<9G-%;y4_&jqmc z;<@--fX?Rvn9l_;p9}fhfB5IdA{W4XE`a%5_-K&}(D_^d^SJ=#a{IZh zI;=BtA+yMZ%pw;ui(JSoav`(Gh0J^|w70u`&Nmmi0OoT6%;&`~+bGwf01LS~T* znH?|gJ#r!IUMX~u3t1Prkl02pjDL^x&$}1eDH_*8ulBp$3tty6WENh?EWE(%cfW4~!V8&&7cvVkWTsx=b%qzRF1(PLdVy<(7qTwAkePacYlatChdl}} zFvA{&7cvVkWENh?EWD6ecpL_pdBN5S)((W37qCa~wG8X@ z^8%Qk7r^|y0Cs9|z0(SIdcn>pSj-FX!XNZpXm3B!v}?E7`AhxWUTWFZooy-DR?9x# zb(dL&nr9X4Y|F6D%Pm9Aa|(8D!Okn#wu0&R3wWMb%l1OIqhRM-hI{|4Ww_o21>0#E z_ULn#q2`5_VJ%k_>`Kc}b63H37i^DZSj$zG;d*T<;`hMpn~Reh*4`5Qye7{@dnDFr zkHk!SBxc$pG1DH2nf6G`j*NTA&-3VDytmjR?UA^q_DIaMM`Cu|UJvI?dnDFrkHk!S zBxc$p5o?h++1uH^?uE8<)8FU+xO<^HC3%6FdV!gG0qhgj3#?NwFjFruQ!g-6FECRt zFjFruQ!g-6FECRtFjFrud!g7P^#beE3(V9DVAvz|0_)TZ%+w3a)C*Tfz@JXqE}G8pS{504h? zv4X7^?Arx_E=Go2Th zwKvvEUE9HxOy>ozsq+FD_DJUi*6F;!Oy>n=$BT8oTriy%xaO;cPUi*EZI&~?{CBGD zX-(_R+Paz-ZtLgv_JZ9}Fqs#YH9ym9-c{&iUYM+9Z=sWUVWN|HVZvlym@t_aChUQ+ zmhRaJdvGx1FF#M27bZHH7bZ;Rg$a{+VZvlyn6QWJIvw=7mYkM~5!o`(p)L zFPO{=lk3U6Fkvz;OjyhdxWBU(C)0fU-+b7-aGiJo8fM{z%)$%I-YQ;ThU=*p_7GB6KypUOVAv5&?uQR-mb>W4~)C*iQypVO_h0N3oTr<4DI_!~pfpw3JbIUsH zUw9$2@Iq$ch0MYWnS~cJ3om3AUVvv?uhqQJ6yx5|d;DVe!u9>!K2@-%3#L61YQC-4 z)PIA)*V7(}nf6G`v`1p5JrXnRk(gU>-H7TdjDWOFDEq* z43=v~E@URTFsT{2z&h-a6%ea9ZXXc=_J3g&YGI-d(*J{Q1zE`a%50Q0%f*@|3fr`F!vEk!PX`CI_=x$v$c z7ohXG0OoT6%;y4_&jm1_3t&DMz*Kuo+3t&DMzr^g3SxI zR}L*xsY{{3z=yyaLvetuAA{5MK0u;kqencE@XDRIA<>xEOH^& zj9kbpav`yeTp0fz>0c~P=DeMvu@3ZVSM_uI^?q*KpE6C}9n8WDSr=Yl*4}&*FEGRP z)C+vQ@Iuyw7cvVkWENh?>~L}K>IGhBcp=veFJz`(;F{rutP3w>re5Hh;RV)VkHQPg zut(vA%)$$qg%>glFJu;8$Sk~&S$H9_&2r{vf6~3sPKxX~-W`8ry}(Spz)ZaW){@?M zfpzKyX6gm7ulAbi1!n36uBl#NcDQ&h>IK%R7nrFRn5h?-sTY{37nrFRn5h@Qut(|z z)~OemsTY{37nr?VJZtp=>(mR()C^8%Qk7r^|y0OscfFh4JV`FR1%&kJCFUI07MJ{Pd|MxJCaKkIfvSF-k0 zSF*K&wF6;v*dsqLV4Wvh9hjdN!2G-b=H~^l(~9fuDVU!ZP&4KQc;OEhCv$!%dExZ- z`>JpM!LIISdW)=s*;dQi&NP2rW*KUpRj{)y`%M9sf~gny>|RyqE}61E zE4gp~7pq(K?LRZ^k(g5um>(JSmnRIE?Dk$Qo3>IG)%1!n36 zX6glI>IGt(f48`I^#beU%rA4H?T*xge-?kj_WHHk3wB4r?zHUWUh^)?aJ{<+wZAhz~IQS-?uoBiS9WSVdP(Q|!yLDRSYVApiE zWm<2}Y^!Cbbe*3UP}9!~V18b}Ixn}^gU-(jVCNP(KQBPHt-0lMvl&d&?b`FR2N z?&k&QE-0?I(=zOlpBGTm&kI<~6}BeWm6oCAu7d3@*dEJpy{jz4^_KHOi-GRv+2842 zXz6P;Un#tBZQ%tl?}hd!2`gu3=)4!eyce)e?*-_*7r?w1z`Pg0ycfW{7r?gLXAQQa zVBQP3ckcz%^j-k-UcerCFF@zLfVFrpfO#*VruPDv_X3#r0DzzSwKYvLo!N7PA)A@$yueK71!g)gFw=Q~*$>8A z&_gi$;b3{4&lgPR1+LlNSd$r_S=+&t?8snwojNa|CiY0@1-_on3(Rz0V0L`0B|n#! z3#Rh|*VNgWna&HuHp}~e`TatBTGMsR+O?Y(ZtLgv_JZ9}Fqs#YHBaj`WnP$EPv(UQ z+gn^u=7ovw-a>a@!DL>T)O=v*`Wc%rnHMH(-_RkO`B}@nFwx1pFkvz;Oqk3I6ZVi@ z3-;*Y!SemdyfCRL^TLG5yf9(w<9hkI$h7GB6KypUOVAv5&?uQR-mb>W4~)C*iQ zypVO_h0N3oTr<4DI_!~pfpy^p)?xo1EzVMSA?v~mnS~cJ3om3AUdSxG0PkJgz0gkI zSUhraclf?U9)M zu(&_%kyxia60;YInm;O-_DEb)dn7RIk@iTe(;kVL_DIaMM`ETu60??_lOB*+^XN*Z zJre1tM}kj2*uBu+wxb^V=Z1c6qesfj=K^#-7vA1$Mvs(h`dmOwp9^3<7r^c2m=(p9^3<7r=ZjfE^iY>F=F6-i=^K2jhLm9{F5=&gTM{&jm1_3t&DMz7mWy*2GKxv8Jq$OV30V37-%MJ_OVXRjH#zzj7d7nXYm7P*jh zkqencE@T$DkXhtHW|9k&bw(~^-M->k?;niME$;omV7X@GLS~W+lXXTeunv19xiHa1 zF0c;kj9kbpav`(z;{GBRvMzEVv&e!(^SJ=#bK%`ZE_1?0CU^F5r4T7r=ZjfcaeLY$F%i z(eK`y{msS6oVT}_tZ^|tt@`$#*;@+T36{05T-v|Ec&lY!=&b#T-sI27_p*qMX%yqx`$?uC}x)8FTx>R$NTf~If(nME!jf0;!tFl#4a@^3Jh z;d+`2Tr+YZ>mnC2i(JSoav`(Gh0HV;c%6|8Sr@sGndSo5j9kdN$c4-_7r18R0_(6x zkqgYe*7q-RA+yMZ%#Ii5EOH_1UMX~u3t1Prkl02pjDL^xe=Y88-n!IrE%a*tcKdzP z+SmJiKUJ{sLe_;Bn6)?G#0$)DJ@o>wCA^Sz;f2h?3z>x%G7B$cre5H6h8MCfypWlC zfop~rvM#)knR&k+^8%Qk7r^|y0OscfFh4JV`FR1%&kJCFUI1$yi0RS6 z+8cQ#YbSIiYfp70^Ya3(*A9fyVUONx8FYSL06V47`FR04KQDltR@6MbU}qHU%qg4w zgT=`--~P86tw;J&Kev}oHFL15JKIvQt(LW&G2bt6&9kfy*E`!Xtn+fqpgX5v=N9a| zf^93hraclf?U9%r8TWwsk=fC~&`*P5kF-Z(o%Tq~v`1p5 zJrXnRk(g)cnc{e$J2?Y%YW?Rk&d#J7?i8Z6gr9f8qd zkJ=k@$+E7U7^A};JzB8G3btM_{d;G=_s0v}69s#6%9is&TmAI+&kkUg-S10G*!~ zaPNLzfbN3gdOIz{9{G6zHT}GRwOnCqf?a7DYVIo7?t<;H4A;BLGF)#tFSMiI-&eE0 zyEvKi=2oluNSa#~-is{>b);&9P$Yy43y_0Nart<m zalIc5me={i!O$ad&F2fI^8)K$D0Dh6u&B*m6E;)K2DD z2YzpUYF@ZbypUOVA+zuTvz_7vX1Jbuf!7jV$hz=CX5od*!V8&&7cx^X@H)c_Sr=Z& zOufK0!wXp#UdT+nz%|1Qtiv9u7g!fwU>)`^ypY*r#W@QvWLez|+$`hISoDwy_2tkWI|>?6JAcZ-_ZBXP~=3Z3>ytkWKe*BEHi^%iL zv0x_^Y*w&&!PW}a4up9w*rWGahJ84>V5b!9eFZzUV5b%A^n#sHurmkic{%&1-3u+X zr@zlX-M#R&1x?@nGmBh6{xXYPV0KBb8GpaP4A;|K;F^&OSr@sGS>!@ykqencE@Y;; z!0U`$$hzl?XRW!wH6s^t&B%q!G#9vLv3G7B$c7GB6KypWlCf!7jV$hz=CX5od* z!V8&&7cx^X@H)c_Sr=Z&OufK0!wXp#UdT+nz%|1QSr=Z&EWD6ecpglFC><{@K3uJ4kRz&-SJiH1!n36X6glI>IG)%1!n36X6glI>IG)%1!n36X6glI z>IG)%1!n36X6glI>IG)%1!n36X6glI>IG)%1!n36X6glI>IG)6%6puddV$!67uwnH zK3UES2a^}jPk(XYh4k$|Ge0jtcY>@Dx{vjmZ?z0MKQDm!c>&DN3t;WqrY{Eb^8%Qk z7r^|y0QR2ZdM6gl&kLyO=LIl7FM#=Z0jwPe^IWh;eqMm?WUB-7^8(oW3f-v%^Ya2~ zo?htADA<`(Hv2DoE*wf;X#cx5JAbL4+e@dKIoQ>mZ7JAR%Rb(9msy6IXBF&h%dpPN zEkn)rXUCI0=X*G}VCNNVTfsh5F#Udk*RrF~oo^ZL{j-+g-Y+QFPRp=IpR)`#FSHD6 zxuRfKT85gt3bwmodo06RuCff*Yf}-QiP`_VIGN_#|G(FM-?aAU3re#ydM;+#BQet+ ziJA6D%(O>hraclf?U9&$e|q0@X4)e$(;kVL_DIaMM`ETu5;N_Qm}!s1OnW3|N5;Kl zeq?rZu)Mb~7EF62uBkl|GwqR>X^+HAdn9JsBQet+iP%PuG-l`49W^gJoN{5|s#V|q zGgB`xQ!jvhqWep|z&iB;GxY*9^#U{X0yFgjGxY*9^#U{X0yFgjGxY*9^#U{X0yFgj zv!im}!LUc_1=gt-n5h?-sTY{37nrFRn5h?-sTYVPFCZ5lNnU_|zSYm|?ee^s-BGYR zE&F7zd6#9l-ra-odkk#vVEi5fyQg6H7VN%)-CwW=2FvSwaIn12eFfV;Sgv_suw1jf z(>U*!xrgU+Xs}%Kp~1K&_Ncufmo>AlotTx^d$eGW6>Pm=`uEO%ufMBte~%YB{d;HD zJvr4a=Y_WV>F>*#;LD41o4)-&v#;Zt&bC+`*jCFf@4Cw@gYK+?`FR2BY?UYb!|U|( z0^4XXk4RFMw^e>-bdR1?apN zz`Pf*&bEWb3($ElfO#)~c`tx@FMxS3fNd|=d*ru!i34Z zFkuIZdzX1(qLX=H!XC0Uu}2RN*564Joy-dp_UO=|_u#YiSi#l{CiBANdNMCen9K_k z7V`q`uk{Bl7h1Kk4!n!o|J}TBop>R$@Iq$c1!gx%GFvas zV0aX^+ILWzuAZBt|__f7UbPLUYK_uzzmo=Qetz%zQ3D z=X2r0Uh}TvdOjCW)8_)1&jm1_3t&DM!0s>B>2m=(p9^67ikdzbp!2x^=5qne=K`3| z1?-W}1?YS(fcabi^SJ=FUOX3{3()yo0Q0#3=5ygY!?asfJ@ z3t&DMzNiHx$ zP0apV0V`wKds3)mx{3()yo z0Q0#3=5qmTeXNsx3FdPF%;y4_&jm1_3++#J>^g2OaskZe0+`Q*Jw+}+=W_wf=K`3| z1u&lrU_KYXd@g|bTmbXA0OoT6%;y4_&jm1_3t&DMz@ zdOjDxd@g|bT>UMrXTjRFCx7n7Yk60}-d(Ww6zs%;om8+{!R7^9D_A=a=H9VK@3jp3aB{&; zDcJi8c51;+E7<7;JELG{4%YK>_CItlw72c__xWeK7yfiX>H7s_EVIak%pw;ui@#sU zOml&+7rBsikqencE@T$DkXhtHW||AU&d7zVd%k$qnhRVrav|4@T*ypwfon!CWL@M! zW|0e-MJ{A^ytwzsg{+HQ$SiUpv)5K%ZzC7Rzel>Rd!e18p+T?qx4IX;E?&qiypUOV zf!Xi$n&AazxSo1}*AiaHy6{3~;f2h?3z>x%GE*<`I>QTD7hcFry}&iY3t1Ol$V|P! zHNy+6!ybhfm|>5?3z>x%G7B$c7GB6KypUOVA+zv8V#y20g?3WJ3wU>Y)p~)MdV!gG zfth-NnR<@13+*(B20il^7hXu;{xf?^p*z8{kM){w zwG7wu^8%Qk7r^|y0OscfFh4JV`FR2C-Nillc>%f;3*AWtn-y$cu(g7<17YR`?2(@r za1VZ706WFj1oQI(*r|o?w1S;purmr4^8&o^UoB4NyuJNI^V{wBRp0)DUER<07OMl> zYT3uT?lQ}uJF8%4TlS@1^K#2j^PGa6Td?yAwyj_vD%kdd?I_s!mf_w%YZ>nSf`aX| z414rB%TV(|%dnO!3U;MssJW|Py9>6*GOXn)%W%C*rfl{v7pG|6(ti5;{O`BlSAF}> zOnW3|+9NU39*LRuNX)cHVx~P3GwqR>X^+ILy(K2^O=j97G1DH2nf6G`v`1p5JrXnR zk(eDB_kh`w+0nt!PczdViJA6D%(O>hraclf?U9&ikHk!SBxc$p5o?h++1uHn?uE8< z)8FU+ZTG@A7nJ@S3D1j}dV!gG0qhgKrh0*O>IG)%1!n36X6glI>IG)%1!n36X6glI z>IG)%1!n36X6glI>IG)%1u*Q&VD}X4-h$m%u=@-4z+icu4-S^s zxvyaR2g@}N43=viELeNrEwe4xd}uJPi9LFFu&jGzFxFuo9xd2o1zRuJw+r@o!Ja7C zlT$XsywKi8)8FU6-A?SLwJ$HuZTj{f?3&KDSRL3_%P#M_%PfP=&kJCFUcfqA-6&iYMxu@{Ja3&wnF!zf^9F@j)M7l0r&pdLU%#Ic3Or#^78`j-OmeH%N4dJ*p-%{ z=B|S6F4!K+aJ{Q6!}XT)LOc51&$It%aWdyEeXZszg%_?Zya2Y<*8EiA1?apNz`Pf* z&bEWb3($ElfO#)~c`tx@FMxS3fO#)~?I`ZSdja?Ey?~nD3t-+0*dy-+=)4!O7ViZx z?*-KKUI6o60P|kJ^}H9LTY6#qU0ds;n-^NQDSPn0wcl5L`_Js@LidbipI%%sef!Tf zpB*}6GqdLgLpC$hd4XBG&xuc%>Ab+~aG}$Afpt1BFl!y@%C+dcz`FLvTB*}{fpt1B zFw=Pf414rqalK;&(|Lifcf8QOTriy%xaO;cPUi*EZI&~?{CBGDX-U2Ie>X4O*3a$j z1-qkQIxnE+XL`-M3Z2diyq3L%PUi*I>Ab*9=LKduFED#xtOcHBrt<C|cp)?O0@n;LWL{<)!_+vt%p^SJ<>&xH$n&FGPGO`i*> z>2m?h=K`3|1u&lrU_KYX9w?rf&jslA6*`{_(D_^d^SJ=#a{E5i+evXSgsklkeTKJuQPIib=V`#1=d9_ zuny~tT*xePA+yMZ%pw;ui(JSoav?LH3+?T0pYzQ{E`a%50Q0%9tH=fDd@g|bTmbXA z0OoT6%;y5w;o`aYT!7B!0+`PQFrN!xFBEI>xd5Hd1+b&GCidt>%b+_}FrN$1`CI_= zxd7&K0nFzDn9qgIHp`h`=0ZEQ_TFwOaskZe0+`Q*-9;`y=W_wf=K`3|1u&lrU_KYX zd@g`JFrFE|!@+zmfcabi^SJ=#a{=t&SPQ@Zzzz+T*XeTsd*pKgHGM9C`CI_=xd664 z)|v0Y=K^#-7r=Zjfcac#f2w2GachwaU_KYXd@k%MasfJ@3t&DMzb}r*Z!g$83ii%| zZ7Nt>*W~Ydd7bYr*n0|gV!=)-*sNglf~^&-9SC!O*rWGahJ84>V5b!9eFZzUV5b%A z^n#sHurmkic{%$ZyBFHqcKZALuXiteZ9(bZY$IctJzeM`7g%>muNi;8zzo;ZT;S_P zE@WNgLS~T*nME#S7P*j_<^r!Xav|%UFP@p^0@sXO$TcGuGSgh(nvn~v!yZL0FvA{2 zE@T$DklFF#-Xj;XE^;BW$c4-z7ZTgZh4Jr^uJ2xGr)aDZz1qLqz3^w^h0MYWnS~cJ z3om4*Uf{Ka7qTwAkXd*kv+zP@;f2i93%t(oLe_;BGE*;b&G16jg%>hYFL2H9Le_;B zG7B$c7GB6KypUOVA+zv8X5od*!V8HdFCZ7%Nf9sn_3nkQS}!nDFECRtFjFruQ!g-6 zFECRtFjFruQ!g-6FECRtFjFruQ!g-6FECRtFjFruQ!g-6FECRtFjFruQ!g-6FECRt zFjFruQ!g-6FA&@C!e99-lX;z)#(|r5?{`UK-Z~wur?q_<7T#MOO%Rb(9msy6I zXBF&h%f8fWUTzs`o>Q=M3wB0V*9R)kzGTi%TEyKNEP_UhrVUIp%8ERf= z8P;+|!LGCnHFp(kcfs~phP7N}8Lro+B7P6dZd;rp^X>mN?e|sR{xf@eT5rzm8Oxdr z%=Zhd(;kVL_DIaMM`ETu5;N_Qm>stF@aO#=v`1o{_DIaMM`ETu5;N_Qm}!s1?8vwW z%#X~D4u*aj411(K66>@_Vx~P3GwqR>X^+HAdn9JsBQet+iCBxosTUsVUT8Zv{eAx5 zbuWCg@A*>&Q!lViy#V%!UQ_1<)~OemsTY{37nrFRn5h?-sTY{37nrFRn5h?-sTY{3 z7nrFRn5h?-sTaVoN9qOE9V^a+dVzK71!n36X6glI>IG)%1!Bny$c45$a&Pd@xB9ug zy`u!**=ycq8LoHtVEi5f+dCM)$H49>*u4e2uVD8V?191ZIv*S?uXA6)_79e8 z9vCdwJXo+pgXNm-UC4dHGS{(34-b}gj|`UA@@T;xE7*F$^zWVdd_G?2o+#LpQ?{HJ z+S_RQ`~3aw#IE}GA8fIj*Kgipbzoa9yS(czvkW>vFM#=Z;mf^dt326PUZ1XUxTkqP=wiIluWuNLg?*-KKUI6o6 zz&bCt*MrV`0nB>=%zFXMdjZUQ0c?A*&K(8wUckM3FW`FK3t-+0*dy-+=)4!O7ViZx z?*-KKUI6o60P|kJ^}H9LTY6#qU0dswn-^NQDSPn0x8GNN`_Js@LidbipI%%sef!Tf zpB*}6GqdLgLpC$}Ucq!;V4cnj%nlbdbzWed&I`<1M>@$bW;!o0(|LiJ&I`Z;I)JovM#)kS$H9{@Iq$ch0N3oyw31K z)`b@`Q!jAM@Iuyw7cx^XaLw=n>##@a1=fWZScm-!FJu;8$Sk~&S$H9{$BVNYUdX!e z0_KH}buToq7ohXG(59|7FGP=&Yx-P3O`i*3J{Q1z zE`a%50Q0#3=5qn;!Qy%DE11s()bzOk=5qne=K`3|1?-W}1?YS(fcabi^SJ=FUOX3{ z3()yo0Q0#3=5ygY!E#dp|H(UQ6UcW||AU&d3GUVUIKySQoj#I;=BtA+yMZ z%pw;ui(JSoav`(Gh0J^|w70u`&Nmmi0OoT6%;&gip?9q#sL3gZRJ{O?#xd7&K0nFzDn9l_; zp9`IBmNUQ1g?4J~z1>pe0+`PQFrN#%i(G)t=K`3|1u&lrU_KYXd@g|bTmbXA0OoT6 z%;y4_&jm1_3t$I}{W~-mXAN{d7qCY@7ohXG0OoT6%;y5w`dBBw!@+zmfcabi^SJ=# zbD{mIj$OyCMJ|B(TmbXAu&2lc=zK1K`CI_=xd7&K0nFzDn9l_;p9^3<7r=Zjfcabi z^SJ=#a{JpMnY~5sjoAs7UA(wr`u3l7Z?n2Dbluwv_Kt$RvtXMF_O61pHBbKjnD0Tq zy(73|c4omQ~Z3wB1q&K#`gF@J@rF-FP3!1+DXBN4D{AKoxt$9hW8GpZ!b(#xYGjbv8A{R1?T*xePA+yMZ z%rqBxoskP!_q=^Bc-EQ=Tr+YZ*Nj}qOml&2MlP@pdlb3A4C{hYFL2EliaiQ1x%5=&k{F0_*(&l&HIKeAq6re0vCUI4q)dVzK71!n36X6glI z>IG)%1!n36X6glI>IG)%1!n36X6glI>IG)%1!n36Fzk_ffpzKyX6glI>IG)%1!n36 zX6glI>IGsOUT8b^Ya3j zpBKPRwQB)8tzf4Y?2LlNyZ|r!!^O!o-~MlDzpwiCAMEOWrrUo{o+Y!bmVLbIF0%|Z z&nnp2mVK$$yxcO>Jf~pi7VNx&Z7bM^3bwsqI|_EbWw`gxT84YSpkO;K!ybLkGSs}# zGOXo_f?a7DYVIo7?t<;H3~RZ{GF|n3re#ydM;*9PwUN@ zJ!4sOf%$%cb=o5_(;kVL_DIaMM`ETu5;N_Qm}!s1OnW3|+9NU39*LRuNX)cHVs>Qg z1Lj9&M+f7*#U5#o#5(Pfm}!s1?6|!i&YAW|tkWKenf6G`v_~Sg(Ibu7`Qh$`wsW$^ z|Gs)ZUZJ{x|C$8H{z=LOumpBHew3yPXMEyEu9c>y*3ynwY_VQYe2X&GwnD%kFV z?Xe8kyUH?LZ#gftqu>2J`@O{}GT;7hX}@n;`$|7!m)d%Z^um}I4lhoo`S$>aabEc^80is{>b z);&9P$Yy5G4TfxHrt<=`?-x3q7g*Px&%|HMelS>Gr_KwkYaQvznmRAAPUi(?IxjHO zd4ZYE3t-qIoflZA^8&M%iu*fWu$K$=O2J+&n9d8d&dt&bE&rWrds*x0N zg56OtoflB^Gri_rg-+)MUd!G>cTd4|Uf`NKFEG=2ftk(=%yeF0rt<8GwjjBgTd>pdt@-YlbAhPu*V9vUND^(_x%n4K;f2i93tTh2z&h-adVzJ}1=eBz!V8&&7cvVkWENh?EWD7}6UDg>FJNBy zc=tk63=Mq#>)i|2_jCJH!L&zWo%TpzXY`u!Z}al?v`6Ba+9NU39*Noai+j)>iFMi| zG1DH2nf6G`v`1p5Jrc7QihIx=iFHSY4rhg#_DEpZBkhq`r#%ug?U9&ikHk!SBxc$p zG1DH2*=yt8(>bFasXv!xE;NS>4SVZ`er}^j%FO2ibUqi(>@}lD$~Ap1pr+3SFrN!x zJ{Q1zE`a%50Q0#3=5qmTU-7JcEdfn`}MX1o7TXN4#xYAJ@UB#ozDd@p9^3<7r=Zjfcabi z^SJ=#bD=ZJg?{hLTxea8eI_^ca~rw9&kHPaA+yK@X7BGcBNv#Vrse|n4lHsZ>mnC2 zi(JSoav`(Gh0HV;c%6|8S+}ov*82xTUUJO?gXNl$3z=yyaLvdC)?tq{7g!g$z&h+v z!@ykqepmTxf51`|jyz&|vHZ=zK0n8+V7jzes4iH|Cp?w+3O1S=z35hJyWK!G5V=zg)0iu?&0ktCnGpeyw0_u9*D2I-i#}7VJ$0dvn2l zqhP;Tu-_W2=jH5w?p|nb+v)G~f3FCb%?MJ{9(xxnn~Uh})f^)wgwdXWoU z6YGpz$SiUpv&emnC2(_G-1kqfND9z`xN!?TWD z$SiUpv*X3SM=oUDD}^p{A?qR+65Ggy@$Zpt>|SW6Xj}`u+P~ku@OAM*X5od*!VAnk zC|+QO>!}xbE#ZZ%3om3AUdSxGkXd*kGxY+mGrW*>;f2i93tTh2kaa&Q_D{XQHNy*B z6MGb1V1_*kFJu;8$Sk~&S$H9{@Iq$ch0MYWi6t)}7urdYXNh;m?^`c0Q!g-6FMyq6 zy}&y40yFgjGxY*9^#U{X0yFgjGxY*9^#U{X0yFgjGxY*9^#U{X0yFgj81_iLz&iB; zGxY*9^#U{X0yFgjGxY*9^#ZXCFSMiIeX^Vv+G!9kpvU|C;@qy77r^|y0Osd~b9+rc zFF@z#1u#D^fcbd=%+Cv8eqI3k+2XnUT)}?6V82kXHx$gz3s|S07r^|y0Oscf?2(@r zp!>CAoqk?`?u~`c&kNA`c>&DN3t)a;0E>A6Uie3glWD&F-`alPw03nrx9^wrGuu+I z_P?9VP|%&%Ykt5oT<@%cwNBR5gzkd{JEvf6=U3Kjt6j;q6|DW6$CbM61=~@u^9%Oj zf?ZIsot9ybK4KZ3^@RodXu&Qj*sg-@F4&%eU0kqBrfhb5_d-ki>F@LZynEpr3re#y zdM;+#BQbl%)@&!pe80dt?U9&ikHk!SBxc$pG1DH2nf6G`v`1p5JrXnRk(gf?)H6*7AMnu`;XrKng!kL=LN7W(|U8(wf~+xFR<1Tx0)ZY3^o0{0Oscfun!hB{k#C( zxrMHE&gLGV+g30?FF?1w(D``*y7LR2pBJFJpwRhw0ej@<1=RHO0+^o{z%DA*va4Xb z3$~|VeqO*@mh(c3f&Lzt{U_ZEEq!ghYYQ)cc`tx@FSH$9=>_P#7r?w1z`Pg0ycfW{ z7r?w1z`Pg0ycfW>7teY}!Mqnx(|ZBTdjZUQ0ej@V0G;;&nD+vh_X3#r0+{y#nD+vh z_X60`3u9hrJ#Wi})@{lj{2%T2Rp0(Id%Dm)V_DlZGcRz>XNL~i%uMG6W;!o0(|Li} zUySRaPhfVqVC~s0Gb69_hlAysts|Xe4PQ^^1!nDywNj_^0_${MV5ai|81_i#1=i`j zz)a@_X2*+rc)4IYFL2FQ3!Tmjq}wcKe);`EdseH90yCW#nCZL#*4|QP zUSQqbV=Xvi%=Qk3Gsf(mg56s%ofo*K&I`;Q7&Y@cbzWed&I`nK?9s!;{pq~GH6IAb)?ofnurQPhliq3_?U<#o%2HpvbR_VvfR z7p@a8WENh?EWE(%bnyZ+Tu;5gYY8u8U3ek0@Iq$ch0MYWnW-0eo#BP73om4*Uf`PH zg{%uNWTsx=n&Ac3VUN@ctP3x&4*M5g$Sk~&S$H9{@Iq$ch0MYWnLRnqeE00^vhIa; z`li3n-`KryeLuHP6-;|1)@hFfc1ExH-J+)UNL*8UBxc$pG1DH2*q7ohXGaAvRBl4#OvYG0OoT6%;&;y_nJNzp!2x^=5qne=K`3|1u&lr zU_KYXd@g|bTmbXA0OoT6%;y4_&jqj}V{bVZz>W^a`;I;Gxd5Hd1u&lrU_KYXd@g|b zTmbXA0OoU{Gs*?@NSGJeThl(1nrLA?qR+ zGK*ZuEOH^U$c4-_7kHhK3t6|Xc-H#|<8zC9KQLIX8M%;|<^r!Xa)EW&Bh3ZYMJ})o z>x^8;EOH^U_2T{_7qTvLA+yMZ%zQ4i(_q(eb3eB}7r=Zjfcae5(rfx$fX?Rvn9l_; zp9^3<7r=Zjfcabi^SJ=#a{>2m?h=K`3| z1u&lrU_KYXd@g|bTmbXA0OoT6%;y5w!D9ao4aQjmozDgAkbtz%S#12UND~vxSr1iFrN!xJ{LOM z$c1+FyZ2`Q=Hg_|+gnW5cw+l~)wlo5URUVapAAj^o)o&X7FXQ-6PEp6XRj~VPZsQ_ z3ii_l`0JZGVIZ>T82IPwSxV6!P?AW&ID?{ zsbFs|*l!fyt{lgkqcQDxsaLW0@sXO$hydd%rqCcX5<3vut$*# z%&;f2hOjJ?Hq z;F{rutP3w>7GB6KypUOVA+zv8X5od*!V8&&7ZOWeKrS3eUckHK_pKM0sTY{37r@Tx zHPs8OQ!g-6FECRtFjFruQ!g-6FECRtFjFruQ!g-6FECRtFjFruQ!g-6FMwf>)C;Ur zFECRtFjFruQ!g-6FECRtFjFrO+wej=``stYdEsF4!ihZ>KEF7(>Dzy1uN&_i_>P&M z7tZZ9{k(wd`FR1%&kJCFUI6>)Vx2!zFh4J#rk@wU{Ja3>=LN7g6l?MG0(5>}0Q2(# zn4cH0M}A&_&d&>Azh2zK8w>WPg1xz5eqO*@{Ja1b^8&o^g~iF7A4*>MK=;Dc{oKA^ z*1>E`!M0jX^+J0yVG^dnLRrg`den&BQet+iJA6D%(O>hraclf?U9&ikHk!SBxc$p zG1DH2nf6G`v`1p5JrXnRk(g$FEAw$USv+4<4# zg@=IG)%1+ezUG~e>DPQAcPy}(Spz)ZcsOufKNy}(Spz)ZcsOufKN zy}(Spz)ZcsOufKNy#R(iQZKMhy}(Spz)Zcs>}5Ic%+w3a)CgV=$StGNipX5EWJ1uJ+g87z*b$1UP=K|KUcQAfGfZbEDdkc17!R{~E1B2ytJ~&uj z=e~mNA1v2AFj%hHCcc&X&^q8H%Qag^V074{hX>2Lc4CYU`_SI6E7@ZOTQAtR3-)-y zo+#LpQ#Sj;;$+U->ZiZYKhS>Pw06ycrf>h5Z7FnHEo&XI`QDjpo@I4di=P+3K3M4d zya1h_7r^|y0Jg2To}U+>+g|AWya1h_7r;JT)b#TLbUUpMd*tT@=={6@=H~^li|qBl z{Ja3>=LN7mMNL01K)0M1+R^Xtmf3&Wz0llh>s?!T0nB>=%zL5j=t?g@=e+>ty#VID z0Oq{_=Dh&sy#VID0Oq{_w!L`PI|}B#fSTS5VBQO0-V4|x?*-_*7r?w1z`Pg0ycfW{ z7r?w1z`Pg0mR=b1LhEZ=F03an{GaXjRp0(Ids_C6*)x{4T{H6n>z*AtWHYnp21B2~ zOy>n=IxjHOd4bvC;(9tSu&zDVNuR*%`GV=Zz&f25nCZO0Oy>n=Ixm1>k91yOoz4r) zbY5Vl^8&M%i|6u6!Co!cYpdC2dH*lJYir$@XnwqV;kJHmZ!eh63#`+50j#~H%)G!l zofnwxE!Lv*0_*NAboUiZ=LN2*^8z!S7nte1z)a@_W;!o0(|LiJ&I`Ab+Y zM~Y|GI_}APfOV|{S;^K5rt<>V)OmrK&I`<*9M|jb+}V!B$(*-p)8FSm(Y%t3}sTa6rcp>Y; z3z?}GxMp~Pb=V{I0_(yHti%3=7cvVkWENh?EWD6ecpR!0MpWCMjracntv_}GKU8w1iSf@P_v*(JnXph7??U9&ikHqY7aXsykSf@P_GwqR> zX^+J0g<>t*Be70hraclf?U9&ik3@`mr0$bt zE;NUX`)2>#(9do3NSXOufX?Sao4Qu!0(3qXz^&n$8w*Nj}qEOH^U$c4-_7kDj^3t6|Xc-H#| zLk4rr1B2z7kqen=E^y7r1=eAYG#6MGxxl)c`rbw^WEQ!QS>!@ykqencE@T$DkeSbg z_I9_=`R0CaeqI3cxd7&KVOOvD-Qs#a7f{pZ0+`PQFrN!xJ{Q1zE`a%50Q0#3=5qne z=K`3|1u&lrU_KYXj@o^|9=&K8bjJ$ja{)S^3t&DMz=2O$c4l<|H0~-oByz2apsW=eTta3?qX=rtNrcng+J@(R%d5s;f1UVFJu;8$V|P! z*9$LXo%Tqq3om3{cp%t3}sTa6rcp>YwM`E3Nf!Wbw-@^;}dfFp# zP3@7G9WSmIUdY!AFJz`Y5?@byBw`yq()hP|$c1)NWQ}-teARk^nR} z0Q2(#*gNd?!2G-bwyDs)t6=Xg*n0|gV!_&TH~l-->E{Kod7)b?SUV8rde|dBFW`E9 zUI07A)&%qO0@$gA&d&?bonGk9DA<`(Hv4ZDCv)E3e$(IQXLT=psh`_RExWq2Ed|?Z z*~h!?GRsi2U3;=WSPR(MmSLTjTL#@Z1v|H3=M`*Q!9G;5?FHLWu=6d$y?@p+-1`Lu z+i4m0=yR5#=7pAFEmsumO3P4lSHX4{Y>#DF%T<=)dTlD=b2htkaWdyE?We!b|DgT8 zY3X^+HAdn9Js zBN1znIN96TW8DjF=cd2U|G0bMo7M}=)Ce^d&f+@z)ZcsOufKN zy}(Spz)ZcsOufKNy}(Spz)ZcsOufKNy}(Sp0ERtMFR)I%z)ZcsOufKNy}<01aVFqd zX6glI>IGuS3&@4GJ8~`f=Ue^U-d?af3f5|ycj_m5&ATka_3j>w-(z5V2jlk`*gXZi zw_x`b?EZp1Fj!vagM;OD?km{-!E((5gXNkB3wCI*T=Sv9xF+`K;lZ-*k-=DpeR#BB z?cHn61a#{K`*y(|FW3_WdveN_^Fn(YO@Cj`3twKG+s%GnxTdo$RtL7#vdg>9&kNAC z`C#(A+W+19HL$ZS!#Z2#l{!B!pys)S&d&?bZ7XzsUVv_Uq4V*x0Ng56OtoflB^GrgwH3w%AD7ntoWu6IwtbY9?^_Z2#w z7g+be(7_ALbY5V#Z|LA>W;!o0(|LiJ&I`Ab)-A04`Ue~%Sx zyo@bz?FV5ai|vzQn9{mokLwp?h{#yW7{ukT*CPP~v=cp$FE=raclf?U9)MV5|ktnVI%T%(O>hracm~7smDS9%+xn zI_;5|X^#YkJ<=YDb;pXeXph7??U9&ikHk!SBxc$pF?((GI;ltM`?t)6=8&Ob|J=~e zZS+W)`CNd`=R%vhR^|e9J{Q1zE`a%50Q0#3=5qne=K`3|1u&lrVEc+^?Q;P-p9^3I zi<&+cp!2zaJ@UB#ozDd@p9^3<7r@qwd+@mcozDd@p9^3<7rsMY;CIfAMJ|B(TmbXA z@X;a{p!2x^=5qne=K`3|1u&lrU_KYXd@g|bTmbXA0OoT6%;y4_&jqj}a>nr91Uoty z?>qL$=K^%ctPafQ0+`PQFrN!xJ{Q1zE`a%5=!|lq-}^EbS{G#R?Iy_ueqLaa3zY~bjOPG@>0Q$7tH4Z zuIF5QT_J7uXU-j)jv$x2-F+0Jsix*ei{8r1p(AnDx z_V$9kL)cre5Hh;f1UVFJz`(;F{qD)?trc9OsW2_9(oNS$H9{@Iq$ch0MYWnS~cJ3oj&= zyntM2Cq?cX?~XsRUSOtPV5VLGyVQDtb?OCX>IG)%1!n36X6glI>IG)%1!n36X6glI z>IG)%1!n36X6glI>IE?Dk$Qo3>IG)%1!n36X6glI>IG)%1!n36VjEs)N5A`IIWM%+ zAYMSv^~J@xP2c`A^Ya39C)k=F>oxtn0G*!~!2G-b=I4da_v^jWt_3p!P>Pa zd&ld%To|4gYMvvE@8R5noma4J1^ZCJwij$i!Oph~d(_@{=DFbBFDTef%dkhEvkWya zvhc4S-+^CPpPgYiCKkF-Z(o%Tq~v`1p5JrXnRk(g*so-M;f#9 zdiO%xInn${_rf==7nrFRn5h@QK4HDUI`smx=ZbZz7g(oWV5VMRre0vCUSOtPV5VMR zre0vCUSOtPV5VMRrd|NU9;p{tr(R&DUSOtPV5VMRre0w7YH=pi3#3b4KrXc1k$Ujf zxB9ugy`u!**=x4zPI8T}clTiY9>ZGp4#w{>uzL!2Z^7;>*!=~2V6eQ-2M5dR z+*h#ugXNkB2Fo=M7VOYqx#mNIaZT*e!-HkrBZILH`|xPN9xK>-!Mr(J2| z|7U=o7qHHAMaOIL^8$3+3Z0)9pxa*P{Ja32pBHfNeqMm?g5r8REyEu9c>y&qv^uQi zih^Bf8EX1@0c^MEcyHT(Pxc-AhqYW~8EP))g?9A2pJ#m%H{brF-d74QTw8bnY^zty?}ML9h^K9JTK_H7r?w1z`Pg0ycfW{7r?g5I`OQ*b`;Ee0r&2`fSTS5 zVBQPZBku+1yce(*?*%aL1=RFj0P|h|^IpL9yceKbdST29EfL!6+`3KKgMZO}U-j)j zv!@H)GnRdNam6${bIoUm4%y7?xxtXl%yeF0_WeSq^8)J*7do96Sogz1_k6*0Uf`NK zFEG=2ftk(=%yeD=!yf6pz&f25nCZO0?09kSFBeSb1+MvOp?hsL+bm~(`R`QQ(-O_= zyBBWj=l1r3-BB=|7f|yvy{66!d_A2PnC&gDr}F~q?k#lp6-?&^uBr0^Go2Th>Ab*9 z=LKduFEG=2ftk(=%pS7$jy-yKFuapkr}F}{M~4pYD`t-sY`tJQFK|tr7nte1z%1s4 zet)wMFHWZU_Wvil7p@a8;F&NBFJu;8V0OBAff=r+Uf}D67qTwAkXd*kv+zP@;f2i9 z3%t(oLe_;BGE*;b&G16jg%>hYFL2H90_(6x>IK$?7g&e=3om3AUdSxGkXd*kv+zP@ z;f2h?3z!!!?_OvM@#JrGFI?Zx?NbGNx?tKPq2?LArvCi`Ur&1^X4)e$(;kVL_DIaM zM`ETu5;N_QnEkMLF4`lpPJ1L~FBCPkM`GQPp~HD#raclE_DFjq)@hH#?4@x%xd5Hdg)@82=#g?wp9`qz za{bt-O9k_} zfSNuRz#Y5K$mHKr@b!MO zU_Vu`pDx(X6zpdU_HzaM`GWmI!QN1?Uo6-!73`M__A8cQkABrM?9s0k?AHtS#)7@6 zU~ewiZxrk|3-()s^}L+@Y4<{V+fIL<|IO}&uPrEjzkrNo7P*jFC|cp)?O0@n;L zunv0^USNhjIyTN`X5od*!V8&&7cvVkWENh?EWD6d@&a<9ofNq@ygPp1dV!gGfth*% z>>TR_)~OemsTY{37nrFRn5h?-sTY{37nrFRn5h?-sTY{37nrFRn5h?-sTaVoN9qOE zsTY{37nrFRn5h?-sTY{37nrFRh;4YG9sTZ;<-E{NgLq-yPVC0F)qY<1{NhY+_VWUm zpBK*UIzKN!_xfTjeqMm?rwW~)7ohX=0@%+MHT}E*-Om@gUntlc3g+hpT+h!7V18Zz z^Ya4s$j=MV`FR1%&kJCFUI6p+0@$02=i=uD=zg=%#k>G7{L$iMns5I<*u8LdKez9f zdd#*IY^!DG^_m~B4A(oWV6Bs#%+_TMYnIR$Gwzf#v$yOM1y*oO+Xyhraclf?U9&ij|7H2(jJL*+9NU39*LRuNX)cHVx~P3GwqR>X^%u~qemLE^S8Sf z+Rn*&_$S>9-?Uy}re0vCUI1%vOydRCsTY{37npsoxCiwD>(mR()C)&iKV1u$C+V73;( zY%PG_#l7rt1YT%#p4aWSp)S zB-8bRWV&9EOxFvN>3TsjT`x$c>jlB)k|D_PY(CdUqc!^T$;xTrG`Eg)y&##c7bH8= z%t^bHQ7_0iT`x#>j+qnf)b)al)AfR6=SOm05MdW~4CiT?Q`ZZU>3TsjT`x$c>jlYl zy&##c7bMg50vP5<*9$UE*9(&AdOFG#ka8&A|AlIeOuGF>l7rt1aCe7)f2Z^HH3 z`0Rh}v~ZNt0_I#YuZ56#El5VLJfa23a6hdDc|Wg(FwScsWL^s)^I8a**Fwm&7GyiU z7Q#5Mg^+12$edmaVVu`O$g~z@POk+ShdI((ka1oMG7j_SwGc9|g^+nIgv@IpWL^s) z^I8a**8=K=y?JF$QiRgv@=gm!yLEd*gxwfnH<^r1p~e|W-tXov4(*rhmX2ZXkW8PE zB-3Xk$@CdXGJQspOrMb?(`O{f?u_(7pOIwTU6D9_Mv`&*j3k*pBY|O#^chLU=`)gK z`ivym1Cc)HGm?zcXC%q=8A&pIMiNY%k=#0Ke1R0wwNdKl7`JXuk1*R85NG=WRb4as z0^)360JD7o%=QH^+ZVuWUjVax0nGLVFxwZvE{=?+?F)#reF4n&1u)wez^*Xcf;qB% z0dcl3fZ4tPX8Quz0<$e(wl9F$z5r(X0+{U!e-c`d`|Yt2UjVax0nGM=9V5PgINKM% zY+nGgeF4n&1u)wez-(UtvwZ=~_60E87r<;^0JD7o%=QJayVV-Q-UxP2$Kwl9D^VBQbR_60E87r<;^0JD9;G2sh1BcWcPQ;^xlyVQWR$M1)O77|n@%eRWdK z5iJOVVUGGH!yK(0Ve3TLx)HWsgsmT88${TK5w=msoL^3S*J*)v+tHs-?(ej45>xT{ z1$eAv-WNjVeL=F_TuySLW)397{j@L0`*~jo+03nA0KAai|u3o=e?K{Blc$+Q+E z(^`;BYe6!t1Olv_htp&-n z79`VJkW6bqGOY!{S}oAhcRFe61zHVC3v+12t~%#%Ubi#U3t)D=05)#s+{5Lx>jlKw z^#Yh(FM!$g0+?MdfZ6o|*lK1U!0dVf%&r%}?0Nxgt;qc*B5X3kXfBPK0QaK>VKB^* zT`wTct{1@UdI8L?7r@pt+XA+Jgl!OE8%CI~7oY`qC*!mKn>#HW;nwZ$Dj(Q;9NRd; zHZj=?UEH1~L(WYjY%`OgoqL%KIjPMfb1wU^MTBh`VOvF*{``Wx-`0`1Z6a)2lcDeX znGAj3F2c4q8RqB!lOg90CPP~ejIe`DhMdC)+d0B^F&Wx&u*q;gs*2>Am^g=5<|MiO z=+7rVNQbj3k*pBT1&uNRsI@l4N&xeL(#v**zT#=Ru#5WSl-DNv6+8lIb&&WcrLG znLZ;)rq4){=`)gGWQn6%xYlWbW^VN7lSeu&oMLK0GOY#4v=+c#Olv_h ztp&-n79`VJkW6bqGOY!{0xg{5v_P|?)(Z4~fxEGTiU%j>&xt zjM^)Gt?@6gb0h4$2s=N*E{L!TI~KO{qK?V^7VW$^!Y=7pnDf$(g*h*au**9Z=Dea~ zGAHKf%8rF`S9MIrp?_CL*fkNhAj19_VYHvmxF)WPuT27d=lr|FEE|E zyU7l9Y~u*q#AJK9IJ;gzPP<+Jv+D)4lQNHt3HpFI`hG^XMTFV)0&;E@iL>hk#BCjk zv+D)KZEMD%?{>X_xb4h1u?M51Il5kuaW{8y@Mg(w=@`6OGF>l7 z_SZ<9t`}t7ZIL)#FUUAuFGxlw(h)AfSP`A{TI*9#(UuG;^b_o>ooseHB5!f9^Zo*rRmM3}A@kaHiG zQ`Zafe!5D<8-|s*~MKP^emaK7bMg5f@Hd0 zkWAMLl3ii81#@&|$HM;UdO_yAx{C|@cTI#Xh_F9Kn64LOTXel3nXeaI|0c*I$rmVF zcQ5pNF{g#2lomqfwGc9|1<96FT96F)(^`;i@mdJuycR;{wGc9|g^+nIgiLEew$p1N zjPqIunbv~L>9r8Xc`bxYYeDApT99#=BdrA)=d~c?Fn?YPA@f=Ynb$(dycR;{wGc9| zg^+nIpk8opXngkn=}rqryLEd*rxWO0GJQsp>?SjADVOulCd2*o8A;~UXC%q~63MC0 zNHR{JktEY+B+2v{Niuy#l1!hGB>P*}2h5#hcXceBhrdUdJ|oGT`iumIInrk&8K=)k zlIb&&WcrLG*@KZj=rfXx(`O{f9-cX;I3u~SZhV0h(#1&q9OKrlKO=?A_65Y*zOb~* z>CZ@EPTLod)Aj{0+ZVuWUjVax0nGLVFxwZvY+nGoI5O6@FCfnL1u)wez-(UtvwZ<` zbY-NSwl5&3?F(SGFM!#;0A~9FnC%N-wl9F$zVIiZ1-a)O8}S7&+ZVuWUsxvM3y8CQ z0nGLVFxwZvY+nGgeF4n&1u)wez-(UtvwZ=~_60E87r<;^0J~eQY3!R|_jF9oJLbst z1;p9D0A~9FnC%N-51MTOvwZ=~_60E87aW`G_kY*-#uw-mWVYit{<^&P`SO zCCef#H`$Y1&cbB4Um0Olgw+v7&&Eeyvz2{VJi?ZUuq7jGsR&y-!j_3JI>pb}2RhZv z$Y__Jk3t#0>3tz&+81O_?+am^_l1yYUywPyFUUB|k@p43(0A_(A@jZvvIipL>3t!L^S%%= z?+YRGz7R0l4o9>;;d(Ynt7!D+lW%icI9X`{=Qzo{7D9HDnUi*n5iNvqS_|@iUJGHI z*Fwm=7DDE=5HhcYkZCQ*c6u#@ab61{(^`-@y%xeauZ56lEy$c+3o;IK_^Fg(G-n8lU~&!fD~vZrwgx z<&$jV2;0PD)GN}$b4-T&Z5m;lMc5$1Hjgms&&V9e{%sjyTSeG&BW&vk+a|)cjj-oM z*me=Ny~!{~&o>$7Xom>fF~W9=uwjJl9AUde*sc+_+bEkj*J**=e)Q*)A9GsxAyZL1 z=aXM`S~$hjf@E3?l4&h~k!umwIG?+f@E3?l4&h~VUDyGWSrK5WLgW7X)Q>mwIG?+f@E3? zl4&gn7H9#!K(nLP1N3vMTeqi2*clOarekC6XXqNQp;H=Z;jBp9*&UPnE!uKU$D~Jr zQC|$N0Xr|k&X2GQBJ9GBh3&kkV_`clj<8EQ7UsOPV`0wABJA>xg*mTq%$}nwBXL)C zENsiw5q3?4Er_r`M%c9xMtl8?YvTG*Hi3G9cB9dsPvXq{T3)wv?Ro)h<4D{lCVPg< z`5coWr(G|A+4Tb0Ad++Q2(#-2**9%~Fy#Qv{3t)D=0A|+< zm?OJhK->*9(&AdOFGzN4r0=&y*zFy|*+b^MqhmNjNOot0kwcHv<1+59 zj)ggOy&&Usy&##c7r-z_x?YfRx?Ye>*9(&AdO@-WBmMhFggq2t56{fzsx{wyet||y z#VqEuaGG1Ux?Ye>*9(%NUg)*Dn*Uu%OofnBaKf*4EunRi| zEy(-ndOFG!~A1<7>1AepWgB-8bRWT+SHInwoljJvAqJ9H`8)e&}0ge{0LT`$P{ z>3TsjT`x%H>jgJ|6Xb*B3$!x3c3@r?cUoZ8mUFxoLguv)GOq>6$dyNGXUT9stp(W@ zuZ1wqYawJ_3nBAb2$|PH$g~z@JG~adIIo3}X)VZ{UJGHI*Fwm&7GzGZ1sR7q(pr#l zUJEh~^XIh?GOvY@c`by@YawJ_3nBAb2$|Oc>Vp?|+jjSo`Z>mF;q(ZzeF1T{FYMrQ`ZH2^Kie0O)Aj{0+ZVuWUjVax0nGLVFxwZv zY+nGoI5M8LFCfnL1u)wez-(UtvwZ<`Wcvc*u8Q=*_65Y*z5uo$lGFAD#M!<8X8Qt| z?F+Pux^~F@_SlFofZ4tPX8Xd9F6W;k_p^NgIc;A6vwZ=~_60E87r<;^0JD7o%=QH^ z+ZVuWUjVax0nGLVu)DjlmOcx1PsilEV~%WJK%DIhV74!S*}ec~`vREl3t+Y{fZ4v_ znD7PH_r@1!*EGlEIOPj+yuiFKgv|SbWIHKekPJDsFTmHpyf1`t-WNjVeIaDt7eeNJ zA!OPYWIMetgmD)~#`=EVInf92 z3n5z&$?1I|jPt$_GVco^Q@${{JFm>ilV;Gu@owGP^#Yjf3t+Y{3|&s!7Z7Lr0+{U! zV74!S*}ec~`vTZ)=KO%!z5r(X0+{U!V74!S*}ec~`vREl3t;z{{lgsHYcj;$7h$$9 zAkOv$FxwZv{t>yK?F)#reZjH0YX5J1fp$OhUMIM9>+1!nEil^`z-(XG+2!>0LYUL` z1?04S0nGLVFxwZvY+nGgeF4n&1u)wez-(UtvwZ=~_64xZBJ+27$E4RF&h`b&k?jkJ zvwZ=~_60E87r+*D?F`q1?F)#reF4n&1u*3c6Z`PWoTOPb+i{{>x3({U*}ec~`@$|R zr|k=fvwZ=~_60E87r<;^0JD7o%=QH^+ZVuWUjVax0nGLVFxwZvY+nGgeF4n&1|wum>W{_66L}_60E87r<;^aIEzOTKZ0V6Nfl0&@QIh*r%VbI_Hy2ga02- z$ySKOjhk#&mvcpv;eIPc*z5>fIl@+nuvH^$wFp~1!q$keH6v`T2%Cto$q1VhVYDDd z-n)jm#T?Q12E!b!9bxN4*t!w6UWBb5VH-r)h7q<=$DChIeBWt-TzmBAldp7IpgMwH z7xTUVkCn{(Ldd)?NVc2H>3u;m+)w+0yr1`lFwXlz$hQ5a#s05HjrxGN<Ylbsgml-jisXSKIGEjTK)5HhcYka;ag_5!5^$#6fd1=$v_g)q)*A!J?) zA@f=Ynb$(dv=(GLy%xeauZ56lEy$c+3t^nsLddihWKORI8HYLYT96ELJAfIGf3zBIqfbDK-LB?qmwIG?+f@E3?l4&hSrnLZuInr8?aas$KX)Q>m zwIG?+f@E3?l4&hSrnMkgs|8y7Ze2I^!exOL=&VTf!r{DbXQ&sz?0NxgT1M%lz?d1X#s9%x}pr-dWjy4`&= zW)kc@j%^%ao0#l{E^begA?KzMwwcM$&b>^AoSR4377<2$9a#^u?^{Kf{``WB+d2}r zO@wW0GW2~vlcDe1McDQx!yFx8GUVLBWN6EQ5q6NtkaHMeJ4e_qCPP~eHW}_mRgs+A ziSu}6PF@jc;p6o4Rp<_-rh0PWin2mktEY+B+2v{Niuy#l1!hGB)dD(&U-qB^RJA%H^TH8Nyh0jl4Saf zB$+-VNv6+8lIb&&WcrLG*j!rlBU+%>8%PUR23q)<)50mH79`VJkW6a<>_sl8)`E=F zT98a@K{Blc$+Q+E(^`=1w$bsLluT$-9BD1c zIIRWAv=$`OT98a@K{Blc$+Q+E(^?QL&;oqnsz3|S+Rp03t|WM@R!nI?O&%XyZ` zaKE!VCih#gb2=vXF|czZjQT0}fX0UqcYcIj5MdW~ENtgR9ShreafDscu`uVQ9Sd_( z#W!RBF7H^FlTHLi9Oj62$cBY+v|@}njOW!6c1?sWh%o)Svs{DMM&hoEu)OZbk#=h|f4 z&0QS4S+ZL?hI4{sx?Ye>*9(&AdO@<=BKOnvf{eQ(5~u408K>(7$#lIS+214g)AfRk z)Aa%v=1A8IGEUbElIeOuvIipVd@#cP5n&HS*uyikxoZD!-ls~ZF%`48)52+P-JTv{ zXGEB;7m#xwms8gZ@_xErknEhu{dBz`<8-|snXVTk)AfR6x?Yg%qDVV+y&&Usy&##c z7bMg5f@Hd0kn9SxotUF5JBB?;#_4)Nva7o|>{pUq6JZM?OxFuCr>++y)AfR6zFu(s zn;@?vU!ZJVJJ9bXoEDB!S_qlfLdd)pBwJBwK{DJ=YeBZfYaxvDS_qlfLdd)pLguv) zGOY#KPOpV9&TAoLS_?9#*FqTQwGc9`1)0-pLB?T@v=(HX*Mf}0{CO>e%xfWJUJD`f zS_qlfLdd)pLguxAdSS|Gfg(CBK+Df`T3~kzUtf?+pOGZfXC$zdTu%K=RmR=iwFT{$ z?3Rv&?bK%^8K=)klIb&&WcrLGnLZ;)rq4){=`)gK`ivymU6H>3J;L-EN#@jNBrwd8 zJ|oFEeMXW@pOGZfXC%q=8A&pIMw0BINZ%ixnTa!!TW5_gkV3i`sh?xqx;;I@&WJGE z7iPPh{)`mf&-Mkh#r6d-+ZVuWUjVax0nGLVFxwZvY+nGoI5K9oFCfnL1u)wez-(Ut zvwZ<`Wcvc*Y+nGoI?_Me7ZA4~5@-7Y;%r|4vwZ=~_JuzQEy(@$*oZHH*}ec~`@+f* zUqGDg3t+Y{fZ4tPX8Qt|?F(SGFM!#;0A~9FnC%N-wl9F$z5r(X0@&SZjbTp(yQgDv z-Z4kEFCfnL1u)wez-(UtvwZ=~_60E87r<;^a7_4u>wDu1v}>AUa-8x7IbLAi7eeNJ zL9$hpFGz-*+7~c)VBQzPIPVJ~^S%%=?+YRGz7R6)3$mTw7s9xUBV&C@$K?4CeZRD0 zVNUN0A=ADf+v$Bl#$k@MFUUCW3o;JvygJfO?+am^_l1yoUkI7^g^+n)2$}5*w7Z+_ zKR)6MV74!S*}kx9#1{}}`vREl3t+Y{fZ4tPX8Qt|?F(SGFM!#;0A~9FnC%N-wl9F$ zz5r(X0@yv~ykm~;H5uaWi!j?45NG=WnC%N-wl9D^6lsg?3odR3U!YZM<~t$c3t+Y{ zfZ4vVTErI+XZr$}?F(SGFM!#;0A~9FnC%N-wl9F$z5r(X0+{U!V74!ST^5a0nyfP>Sc@KtUxZll@ws>C%W4WkZE6#IlV8)xHa7zd0&tWbL4#?WZoA-_CTcX z-WS3+?+YRGz7R6+3ju3=p?g2lFS*x~w2Hbm;;i-#`uVDJPIhB*Lxg!PgmGRAlF`mL zq6Nutzni=Jq5ZNgUJGHI*Fwm=7DDE=5HhcYkZCQ*c6u#@ab61{(^`-@y%xeauZ56l zEy$c+3o;IKmwE%`W(pr#lS__hCEl8%dAeq*JWLgW7X)Q>mwIEol1zP$}Cr!OTtD#$e z&<~vl$rldibsK#4U$PYjf~o zUI1Iu92YR!k&SaW7_HD58I9_UY)*vHf-vGRM|Qn{w$K_d;=t^B0nDx!!0dVfZ2idn zHi$60UO-M?FF*^Q^+Wc9ATT7jAn-PwWrCDbJGah%w%Zi zUM54%%_D4!2-`BkXdFh?gB+LVM%dO7woQa>YclkGKa-*F+eO&+Cc_*ZU^3*~!DMI) z?Y+jhfE{Eq=ao50Za@0-$@%p2nLhh3nLZ;)rq4){ z{W)^Kn>&Uxl8n=5B+2v{NwU9oIpKSfkt>eOon-oqB-!mFFe1T@Cn^(C%oa)x?=@E8Dgq>-!wO!7$OoscN-7&e3ft}N_u$|{d*m)5~ zV_^6K?sq|iUD&a(ofma1Z0E%hc1g#=oR@Yi%z0UaUEZ-U=M^23IWb39b}Wp$s$((^ zV|I0fT@zsoB22&TJfBw4s&jC^Ya?;jMcDPDY~pjgGAC&_8vXg?R_bb(AM8-a zHa6qHHZj>cE^begAFH*;+uHtp&8j)&iKV1?04~0A_0e%+><#XKMj*jTX9k zfzE{F3v}94b8rm(e5TL-OLk)3Tu1xoXWfpI^8;(83Z<3#Yktd%9|)WM@Q}t``uu zzRRiW1({RV3zD4^x!<`Fc3y;?A7K|n*o7U#8k6nR^@3yl7rt1aC zbiE+i6=qv7M^|<%?4Pa|WKLZ#NT%xr$rg0?3&%y*3o=gE3zF%2L9*++`?>y2?8qx~ zl2+#E&nK63S~yB+0b?TB8Id@z1sS)!(t>2TpVorBpVvYd=d}7?-m+HJcSsh?xqy7gzIklDU~ zxHHY1JGh+wj1=ayeE~UbUjVax0nGLVFxwZvY+nGgeF4n&1+a_FaRIY^0nGLVFxwZv zY+nGgeF1Z1`vT%@UjVax0qmMc-xoxf?F-0h`vREl3t+Y{&?@TMA@y@?#23J9UjVax zVaJFsAkOv$FxwZvY+nGgeF4n&1u)wez-(UtvwZ=~_60E87r<;^0JD7o?Cx%EvF~8t z1iPnWa^5jVwl5&g_60E87r<;^0JD7o%=QH^+ZVuWUvNzLg6n(Z3$$yRV{)AG1vy?| z-WNjVeL=FFlrKnzoZ1&KcVONZ!Z_~>A@jZvGVco^^S%%=?F+J<-WS5Siz8!wNyp^6 zMc*&&SeVoMLddi)$aZ>Pka3tJ?F%x_`+|%^JH0Q2?3zd)7DSl$g)pc0g^+n)2$}5* zv>MEI93SxoFxwZvY+o2gd;xK`FM!#;0A~9FnC%N-wl9F)78w`Y7Z7Lr0+{U!V74!S z*}ec~`vREl3t;z{{lgsHYcj;$7h$$9AkOv$FxwZvY+nGgeF5y@ncF#6t@*|mX!kQ? zPKfvdnC%N-wlC})@dd=$z5r(X0+{U!V74!S*}ec~`vREl3t+Y{fZ4tPX8Qt|?F(R+ zMdt7Fj!CaUob3ykBik1cXZr$}?F(SGFMuuR+9~&NFxwZvY+nGgeF4n&1)5c}9VbS7 z0nGLVFxwY)iTDEIY+nGgeF4n&1u)wez-(UtvwZ=~_60E87r<;^0JD7o%=QH^+ZVuW zUjVax0dr*g0^;tAte5*E?12cgeF68geF4n&1u)we9BX}nmcG;8#Orxw8lU}NhkicO zXa6NzLG?|tag*)JcMLxJFXL7+<38!)W=Gh{5w=Q%tr}sgMcC>Qra#Lg`?qE!ZmkHL zh_J~Bn-gKQAVyxxMmsS_eUo7x){ZdBVdO;Ix)HWsgsmT88${TK5w=msoL^4-&}o5O zd-Ug%2RSXA#8kXz8y+i}_l1yoUyy7!m(#z#AQ|qbeL>#umPk9jFN8V0FNDndLdd)? zgiQN_Y^V2yFz(JsAG9yXoZc70oZc5grhP%?^u8eDFh|}OB*PqeUkI7^g^)cE>AUxZ zFwXlz$hj*Fwm=7DDE=5HhcYka;bH?4iio^;!tx0xiH7E)BGRz2h^c79`VJkW6ajf~oUI1GwGA?$#fVjy> z+?)ub1!0`+F-La2fcx3?0vOG+krT|W7r@qw#H}A;8${TK5w_7NoA^AhOyjfv^!|I& z!VzxW?mikb3HBbxHjc1OO!h(-x2MUFbJGah%w%ZiUM54%%_D4!2-`Bkwu&$sqmlI> z$4q~IL9%Tkaod^nDw1uPxPVvYmwIJCYYK=*zwIG?+f@E3?l4&hSrnMlM z)&dyjNNYjHX)Q>mwIG?+f@E3?l4&hSrnMlM)`DPx7T^n41zLc9PIc?{bTzM%oe^PY zn(W0c=UFDh{m$-~+{eJq>6qNdz|M`Z^CIm02&3_lKHB&Y?ss9w!ggNNv9O&NN7yAD z3v*uDu`nl9d^5K5@{WZ$=|o_}VUB2rY*-jaE5?Y!xLh4!*F@NY2-B}S%QbjyB<{Kh zyMB~4^#Zki^yf`Y@C9DC!Ds(*zCF~jjmE zt{0GVi%6VZFCcEKNF3dJ#@Aj67!+2#*l3LA}FGjTBBIj;w#(`~Ovb`f( zK%A`wFk1^~C(WR-{t#zt0nF9{n5_jcTMJ;e7QnWSv~!yXv$cS}+giZ=Y%PGN10+_7@1AepWgB)ctgKV2`#xH}?ocSe}57i3Od zFG!~A1<7>1AlW^Uw&;36#_4)NGF>l7_CVx*4@THOBJ80Edw6CxSMC4J`&8*Prec1AepWg zB)g<*3-$rYbiE*%t`{WJ^@3zqboayF0){!dvSVRebiE*R(usS-pC!8{!WKlBt`}rZ zT`x$c>jlZEUg+h#@_R!%C1t&;w?uE*UT^(%XU*QQ{XLuiYkYis%zX`p^w;=Ue|&0; zOe}M;Q%x*Iwo$9OsP$*hnoXDYDT1yar$5KX=Z#HIO>tP##TM?4beFN=)ckp4BdkJe zW)Ynl5+0joo_4X^V%J{2Vne#&6y2&n&ex4iPxEE|KJLo(UCa1tO2@zYWAtkzCyxWh zfb&fa2lFYN%N5>tT^=32@7Q3Buk82dj|~QVUySQCjZM{CruW3&a_FVIe%)CvZZ(Qq zmt$#+2K>kP*l>(fG-+I-l9Tl~Pey%3rsbRV(Y?7pv$+k;@73t_8z8|!= z|2OPc?f8hDPVQH9Z`PsQuCRx2oZqVkL%CNm6MGd88Sg>VYm67T+N)SP<70f?$X>Wrsq=cF zNW_xlc|_=|Z3||%Q)N4;SjQ|99$fz76x4s-jUFL~RG*8c1V}@h1AWcsoky;HC|IvA zx}%Gu`_k>Fr`c%2wqutb+4ow-cUu#M^Sn_a*MlLYrTc3i6`5QQ8ugJxXy2eNxL!~! zjj8*Z=f_u`sm+OiBz8lddpB`Cm88wYY)@^SCZYwXt#;e=B|IFTi_2K5W-5Y3C zx|QCi8KHalwLZh%K>Z!|Y4q`Hn%m{)pxt?C(w+-^tdkTX4>67ZOKPO5INaC_x6`6eG$=&o)J`&{lyzq5`}I{GzDts5W7 z>GaPzk#BlxIDZPc!uxh=rb(bv*l<3nZ)|*==7863pGIwA&MM<$WE}LzIN2R%m_inp zr=Y&JV~m}ER<3IuwUB!wPb&Q1G{{r*+l{u9MEfnvgML8mV(;XYhw~4gqn7Ul-npF0 z->QV?kiOg>)9&xS`_tW&34gIzSa))sa3Xr-vrE5Okwe!J`jc+OE3!%3=WoVnjq7n~ zGV|CN1-fPqIfWY!S}gbvj1K*@8J~d~pV_^&y!UhdV0_#iXw@`-H$&vwJ&jKA zp@Ia!Rw%yu)RJ*GG2ADtdz?$%E)~pmli%%9>~<7ODaM*3jJqHDHsHSS`X6^%T8!2W z#d6zO!?gCP9dxLWdJ}4DHRn{v39%PpT+F>_oEPu>ss50f!@v4;d#8hOHTFY$@Vy_w9hj@qQvHN%K zLujMD4^6TD-59s`{NLDzw9fwJeTWtjFC6|2zh1Nt@rby6Vfw#xAL8T2wA9-p??dp` z=sq-{KJ%}^zk44VxcyY^LqnX0hK?=NJ~TzsLi?MudAHXfc61-&Lm=-%xMz4CV$SE1 zmWz=aIS=)l4cX_i_aRy$bSZNBzTm{cwdgdTat0(W8dSb7uHn6%uL;gWSa@_TpNDYf zc;sg{v=t7?aA=>V^AJxUvT(DU@3-yxXU{`C@boqA{-m6b)p;lz8852zo3lz=uL}pH zCbIeQxV2;4o(aO!Uvna$h#_x$ed-sV21GaQKK@(JG|k=Im^MSp6UObw+C=-U(<`4! z+!26k0NIB=ogvz@67`F|q!x_x47Xt@uMuic=NZnG(%e7V^Nf$F`1zxlK{{A<9qDFr zoK7-SEp}g|Wv&aR=tR`*AN)LS-q;kko7=;z>Dw$y$xoN4rl2d_iDe`nqc%p5l7`eB zk(*XDvF2G5KWQ2;=eGB|XGYx>yiZK4vPtBkF>FtbJcj&$cSvVPlueYA=a<_&dR}o4 zPKG!H@-^tQu}{zp(}NRKJk&nkC)zfmV&HaSUupifpYc+LDP(bb6V@Htg?%E_4fTd5 zX26rv=RexDHt6G-0ow71&xn0xLb0?wEcJ`^u?ey?HSiZDId0kC= zy>J%yss<@)NSc|FnsDnFn&5RztC-gDe9AQ5Y6ERE&lGsNGPG(NzW*cEHq?3^VOj-T z(oEC0Bee~WIlE)GC(t7xzbAl=>gQz3O)6OZ6!XxNdwrQL)U{`Dg zn9@04YS-ve*bliaP&413pNP_5LmJa5x?Zh4uW4F&bme@yv|D?auNgE=Nr$w+`pt+_ zYBxsXZjLd-qaM%FS*(fso0^m(j#KjAhGo$fkK({@9O9iYEMw{I2h-0XHO zJk#I|1Nu$Z(Kjy7n8*Wdv$*?o6W;%D4_Ozm{N}p>@ZRin#dAE1e!IG0*a({Y&TE@< z4P1NOE`hPN)85zXnZ}0&jWt2n@|wh0JaSz?O`s*n z8w3SNKg;}}<-Cq79DA0O$BTYaiG2mEWC?++iDZoE#Zyz2sWf+v)JxnA)4 z<9XsQZXe%wKsh>%^TEt%9E`oj^lkSlh`)y7F=nl_o7@~P&hjk8`P2uxFZX#scaL~A zHM4!KrM-4WuXYoQapat#S2xmb##-LjYr8)xZ8ye4*GBJ^Zf#Is-7ciOnn#ren7&#a zpe;VyIc=u{-klK8cTrRBPbcSp)~lyUi+ByPStDq_t>3YBZ3O!D?H<*~$T?iJoxQqg z{kZFXvoE%D@o2nynok?u8kKW8+LjTmwgXR#t80lHO&SKb7O~bwwCXhIwK}rKEKgQz zYzD0kN&58cf`);Ajr0BenUCjTX03Mf;d&8jb=>mfY2*jvb#K0oNn_FH=Fo1)&!y;Z z(jvEw_c343dw(7_`vdX{4RiH8pY~UZ<+*9OQ>ORlDY^x}jLD-h#C_Upm4+!D{i5+2 zH2Xr^9>brf#$2P>pC9XboL}4WW85g3eTaXzq6A!<5;8ATAzEI{)_HN4es+dW6ha+ z+U=>_>roAk><4@zqm&%T72=TormsFNJ6Ztj=Y3J%kNCOV5l2t)Q=DSxwDefk z*)LqdO^s<@bL9T;n2VLq-u_=ym-D`ZeUG(7m5K8$Y9r3-WE3>GbX?&s^~d@>T#qy8 zLhK_nEwt3#Nub?hd7b#PK=XD8+GDsKSf8#9%{b9M(r@<>oLzbSc2~&fdel;R7U;&E zR}OX^>?6}|!O{JAZ}NRd&)28t0DO2KHo5#Y?R~?u0FBK!r4l-5PuH9i*EfI9^jwc# z4<6^SA~m%&xYyGY&FYiqh<~nq2Hl%#?h2~N|zpgU89}~uG za%25R-fKDR)1>gcP>9nt_Fi7+GoL?VwZcEQmkgb6xV?n?&hw7_oumk7<60Qcd9aoE zy~6J!bl~9S)r=A66z35-$52h-2GNgutLN@{0ZWjd|8--6`*1FG9-(yfYuXK8H{NYO z{`Gytk7IL&Xm*iq=TS8UIdQjn$md@^y4xw*cTzcBy7rHCo5g?^0`%GTMP+bv)69`u z%e0(nwCK+%Zi9UOhkcdDIQsl=ND17&pxYfeLx{HXgi#9q>Qg(Y{W4FplG|0~SJtfN zNdPt6^VgNL!+$)NiF(SXS9 zM!S8g$XB}OU_3-a+JgFSl%(D{cU&ikz2oxIcLY#dwdWx2tIlZWyCtB z2GI-A^XZzAwchNi=tsBS-TbJBfb3zc^7-_1w0$;9y+^CL2X0cxS7~OrDfp7@QQD@q zF4DGpA2jxS8ehML|Nm;6PCP=}|EBjmPq%A=|7Ml&S+UjZBAs`mLt{UxVOE*jXa1{o z&VJCNXD-t;tGsW@cgedBU?ZaaqVt&cN!IlA&>an$&6Cy!{hFTcjtlM3IL~=J+=J&A z-b+ej7jQd2&LXUfMPoVpe{M}In)8L9bAN8g+SADBS<0VV`9Uu2B+VD?P>aTS;m4WJ zd_8)~7Cd*RvXKhM`BdWcX}fydj4Ahb%AI_=vnp2@R9~_uw`}A!YP`zD73g^D+gufK zJkIm&i`3ZjnaMpL50r2w=ls)-yQf5O1^HasEn;d0otybAj{D$Rc2##qpjTJ<*EE|a zwWzH>`P$L?(>v?dp3p|OJsSNcp2nL;nmWSE%xP`V%nh{R zUV-InhLnT_JfvLQWp^#|I2}=@?itdM2c4b?yDz%5(J=0*G(66q>vluaX}E2l(=g}d zeZfh%PZ>w^wfF9x@@fh9G71>F{_@<=SW`w<$+wx+b75}ufd8O7v48eyG}~u0&2yh- zwYuj#?YW+-mi9TZo33&9^v7lDyL3p3KWRF+AN;%&ZR5VSt#fMNyq%gUXx!zXWyFt+ z=|9Ig-uKO}DaWvc=r3ME?Xx3)Pacs`?TozcEVd(_P)fmH+!DGst-fY#xa~{08p!E` zM@NiGvnN2)+zK}?oW!jp`es1i^6&Obu9r-;Z$#T&7(Zp5YQyPo9vkS3*W8G<{d-de z>KeC#-5QqC7VCTlZ4ap|_YyUkSjpr(S z??&I$Qd{5DY}y^>^9W}9j9p|{qi#* zZo92t%ZE`9aLmm0K-)o5n7bk0ltm%i`>%O#+is^%UK{+I_A8~&R@a6=dHtd9Bl`R& zy|r#?Ehsy%|zdw zHbu`zJha(KhSYD`N1E=tK@juwulnYI_LmV|(h;IRa3(uw_0wF#?S$TFxp1LOU(^@) z6#MW0P2a@cH0qoEMZW1~7q1(_gS_h+I>r9q=b(0_vQYUwpBP`99o@;dbrJr%JwH+y zdnMOFZn5*>*S$S+k$3+8@=ly>r`?&Qd2P3;Q`r8=ex2ELCl`9Xy5GFdh8F>!ZRgRy zjeMkwZ=M^?nmv!v`~g1OF@=9SSw5ZNbHx;2!&eQC#Ah4ZJk3)a>_JT~x~@+vrqBD3 z&xd!_IPc<&Tvs+(=``E#A4yxBE3A?(hM!-dQ?uuB-9@kY9?3a}O&f7GZm!^!>+&@h z9!Zx{fBpTD%ja{I95-_$r`s>xU3K0@4II$qrW?>m4*5A-JM`4V`D24Yvj=x$-SnMC ziPVKjn#bcgZ+vVp%|lObefBY2^R_42ZoJw!*GGQu4}G`|(-Fk7f4ge1jiGztPDeJ^ z@_7escTWVkMa|OT0pT8?J#?KL>jC!>XP8;D2LozxpQgk4Og9(YM;bHkV>@f~{**q~ zD?D{vr%fG6cO|bCG5q{RMe$6!8i&?{8}v5V4Lf^V7tj4{qbUma!`<3BYT7TZZq-pWpgubFZ#m;@xo`jpy|A{3CfgZ8XJmMzP#>qVuVvj}NU4 z^jP!gIIVS)GidcN)m+<*b+aL{c5y9Bhu2J-)7DyhHLXMrXy=hedVbHX!x63Z`B>1b z3G8b#YK^8FTBFu~x%NLujxq>j#z&9iR!1oOx?nnI|ZJ@T~q^h%mKL-L`C7@c*x zv7XV_+!>OFzAs}I-q+l81hJ;CxjRia*ZQ{8xQzN5YmIt<_V9H)F2lgrXduShK0bo4 z@uUpNK)3~zk9@5+=GGYRmCYHF*BOs=`&qjw4jSiGF{B2K4d>09*LQd1d-CTVanEK} z-MN*b2mL9!3GcNutL+@2{o+bq&-712^FGTLj#EFlpFEdCe})|TIplj;XUJ)Hexb8s z(;n&>_hBBLA?fD$`H>XM>lhko>NUEtT<6?2p^Pc+JJ(_V9a>Xk-OiM2UgUl8XewIrf4^IyCH9D zbSdpE3#+v@=Off>Lt3l!Zd&BV>(g$}muJWUUDD|W``V1Y)@qH~?PDIL)ubFAu!Yjyysx4C%}U`bg|GF6uk~F&sddoWV01qIt-khOq_tKbQfsWDAuSi4 zU#~^2HJ(Rp?SwX(mju) zqt9@PuBNXc|K=xlwCbfN&a5@ z(*IKnnnd&8YR&hvc@{a3#)IWHzr8r2Ygt2XPidc6veugCkd)kIwq1iWXl>w5*v)mEGv;fpZXU_kNGn4c>c`yI zuvgf=Mp~n;`tcZW>lWVETwTs}8S9kCy{p%TkDvFaFZ%4l!hd#Q(O50~ShfB(9h_Cj zm1&<~PaQPR7HMy3D~I;U2Rk=;t2=Gbi39KBdo0Eu?P9&VXY-<6v&lobO+#)K?Eu(U zcyCykTD?!#nP(arjK`v1kC%J2-uBO)uO2Vsu&5skzZWeUtN*>RYW*ixD@XjN+3TC# z{=eLRW;o}wQH|6Ci~NTke62f+D*%2@%C9)I?|@wB&xSAZAFQfHd+Pt*p1Nqx7k?QUCm(@gJ^hX7Hbp=S=*Z#(d7SsQzIudQ|>{u~g5z{QF$p0&CZwe&)4E z!wWywi^givSS|WDr^emOkkiv+V}1Tb|Ji)GXL$XYpW$^L#+FAf%k}x089!fR&*0~4 zkNkQgBI%#v4`ONeGoH=4>!^QwlLmf*u3)Z^EB7FvRb^K*KH82^(i{@@!EZa_dU7CEVQxE zTIcsFAx6I!gI*sVa?WALn-fr5&rk7fDGOid9?<(-?Ul_ZDCW6WK=D3-k(>+jUJT@Z zEar>X&7*xrg_woiUxzee{{0+}MV}ro_uz5vyS4oY`!WqNt;xX@U7ykK@h&F%c{rLE z7v}yP;_W}Q_WeDZ6-~->&$7gOzUcpxlCFC^jWhNGw|BN$pT;Y3?dx#!NGH7JX@t3& znn&-4ra_<@h(4#}e)oE_+`sqId~T_r>)bnd=24#J{ncX)8~Hb#2K{;N%roE<2z?&A zxrXN)|FQ>X5ziCbf18N^@5=Cb+&)hw-2;Eq`~SFIZ60oii>LRg@CStCJqr4NJXyB) z)b53{i@5Y}qjYny1of}!Kd#36 z`RPp?gJ~K+`lzgH4gFuV;PqcW{ssN32}`+819YR$pAhl!!+xKp6$u6dej5m-knudW z_*^yhh3CMntkE3YXrINsp_2MLPNV6^6?y32iNid~Swd_0C-e_C4CnEX_BkUpi@(Pg zt5)E&2Gkb#2eX4DS)HO_bUbB8tZ z40%^tYlv+=FYML{&CC=9x_i46=tTP`^~0})?ySQzGd6GD^i+R9_aC_ipMMjh&+g4v zVzB92Kh}%UjLo8T+_Z93cNN`(N7{`x_YUJtOUSj2^3kvMt51#aYk}X>=l*4cjT8U6 zK&xYF@D!~belIP3iv%1_r}1_Ta6In?O{FNaEJrP(QSAOjmG;#J%H!JQ{+M?E(Qkf) zTkxNKw=n#=;IX0#fb&z%_W#F*KDxwXHb$Rd;ui8267-GMxop+Q4kG&3pVuG9?fEat zBj<87N3*Ul2hAAKO77GDkiq>)Da77E`|7&9>(Fo7p~=$b@kIl1&47B??Ju)fH?$O{ zrsoZsY`#6sNFWzq>DHKA+4H7Y7yN6SQg?meXOB%En$e@bx=pY@pnLEy)rCbKf-zs@ zA-r|b3K!afKQHo-R%8FG9x{*4J&)ueL-vlo+s5!m;~{)D<#UtrkhOV7qu;zi&Fmqx zUp1yN?f&jJ|HVJXS6`nk7J0~jkB9KO>FSW_scG`8LF<>yM(U70{mXiNzT)3shqUcz z>X51F{(q(pL4Ba>na+ZFwUcT0hrD!Yr=>rsA^wZJJaK0(Zm+CE_=vzm)9yp)kFGJZmAnkbqhH##m=Gd^Bp zd}4Q%(P$-t(;8jPrO3P~YQi`-gZ@zULD8P}yZzAZiLP3s{ZXzN*AADa=~43+%{AJ? zeHyJv`2R19MpxXEuQ6(pA^(5s^fB<1&yV|~s7a_fgK2KlkX9gn(Vz6I{bEBvO@emD zYm(uAfuFQvWz;0YA$ODBB~5>f)Fi%dqxHn-Qw{f+8Kc9Wt-=>it(wcx9J(fPV?+xS z>$AziDa1Z9Qj^d|Lc1`14a7BJO+rh7{%@}aE}>joGu0%NlKxS0Ufa#`ru7KlkJlvh z5F4XNG97U5o3EK_l6gJe5t`>(>?bsWs;_v;!dm=~`U%?6`3bGnc5VB;O8da*3K09$ zjL)_HeSR_?_z4fUoZIlwf@if$++PswBM+GYLTDtzezga6~ceY zuRhKktv|C4N8N-Apl%-=BGl`W$DdwB5zn?751^IVcnEzg+i#t`_qX@rv%r6oe~hX1$wwBL-AK1dah;d8D3jXDI+gWOtkuZ&Fd|Mza6M_zi`e`gKy zczG{E>$_Hc^Z4td_BPZ+kC%Qf>c^t@cK;{d+uha|vD)zQvi92NmE6}y`Mi=J2|Xt7 zQS=)Q86;^C85XUyxZ$7-TM)}LV&NQ^)_g}Pw3|dH{YjpuKQT?eMUb&s`);r z@Bi3*U(mY|?r**?drK$JAk8N^y%x}0kACC(r1$jR&dv8J#lExoKBJ!>-h7|a_op=9 z7rnZ7d-HusKYzHlCADd~_mGwKx_FRYVG~U~R*qq)Ty?u%8 zN8j((>uq`P^ji*j<^Bh}e*C-R>-5)IZ+wSC=IpWW>-Rf^*pLz)L>CU}!hKxWYkIHi zy`lFSO5YnEe9(Tw-S*jI-`BkE4X>g9K7=mZpWv$~`yuq7`|baRSM5vRJgOv*>f$$2 zujcgD?)Bcd&K&ylQN{AP+kHL!?%uliZuHN&AEp0J=&Fq7uAtRc(ReS`Tbx$tlJseb zrRlY`vEH)1C(vtVPonqbJegkqdJ4Ut{%Q2i^{3POY@XR$fyR5q-b%gMy_I{b^j7Vy z)?2-|MsLmDTD^(hB(-}k&C1%;gLP?U)~A)VVQ-_}vwF|&ZQR?W_nh9Qz0K%TIGgvj zpjq9j_uSsry={8i_MX?+&l{`6F zE_q7w)Z}T&^2yVaXC%)|R!GK^6_b^c*~!YuD#@zJYRT%!8p)c;TFFE*naoM%CjDgX zWSwN)WW8klWP@bGWTWI+$+MG$+pS!lI@c1 zljkQpBs(TMCBtOrWS3;uWVhr6$?nM>$qSP`lNTi~PWDRnPF|AilT0Q1CNE81mb^UK zFL_0>e{w+b%H+W0pyXA_tCQCx2Pf0XYm-Bg*Cnq{-jKX8c~kP{bIIqEFC-ny`D=1(a$9nHaz}D!^0(x!&k+xUM!x=cEjE}K3fePa5gbXNN0bh-2? z=~L6ErOT&JPoI%KGhHDaPghJ=N@u4lr>mr^rmLl^r)#8Zrfa1W>0~-5otyU4wbOOd zb<_3I_0tW~4bzR%XQj_hH%>Q6pObEyZk7(x&C@N?Ez_;i=cZey+oap3&r7#Uw@;s+ z?vU=7?vxJGozq>?UDMst7o@wVd!#Q+_e@`uzBt`0-8+3rx=%Wl?wh_eeOdbQbiec! z>Hg^f=_}I%(}U7irLRt3lOCK-r>{*9Nne+~K7B*_#`I0;o71Adva>3h=mrteGNpB|bXmVO}pVEUo-!|6xTkES0>Kc3D{KaqYi{Z#tt^fT$<=@IE? z)6b=!Prs0UG5u2d<@77*k?B{{uccp4zma}3{Z{(z^gHQy)9b2K5DrN2*4OaG9b zo}Q7OnVyxNot~4Po1T}RpI(q&m|m1#oL-V%nqHP(o?ek&nO>D%onDhJNdK5#n_ib* zpZ+PmA-yrZDgASLb9zhqm-Mgct?6y)?dcuqo$24wyVAd>cc=HH_onxy_ook}52pV} zA4(t2dRdaCS(fElk(F7M)!Aa%;@J|}lG#$((%CZEShj5TgzSmgld@Uale6Wrr({pf zo|Y}2Jw1Cy_RMUBY&=^rTPd5Jt(>irt(vWtt)8ust(mQrO=OeVoNR8^&(_Y?$=1!* z%ht~}$TrM2%AS=yJKH$hBzsP_X|`E5$TrWm$hOS3%AT8Too$nCn>{bvF55nPezrrl zW42Q^%y!Op$#%_l%U+P}p6!vnFxxYGQTF0&uWaw^CD}gNRJL#S((Gl~%d`EmS7iHV z2V}3z4$Kb9UX{H%drfw5Hl4jTJ0yEu_WJA%*&DMrWpB>jlD##1TlV(s9oajxcV+Xk zcW3X(-kZHIdw+Ilc3Ad-?1R~dvJYn;$v&EWEcJ^M!X&Fov*x3lkL-_5?4eLwp__QUK)*^jfIWIxS* zmi;_CDmywmCObAeE;~LuAv-bqMRrnla`wyYSJ|(#-(;s`r)Iy+ewY0|J1zS|c6xS3 zc4l@~c6N47c5ZfFc7Aq2c42l=c5!w|c4>B5c6oM1c4c-|c6D}5wjldsc5QZDc767z z?1t>d?56C`+0EH4*+`AhScijkN!TEIl+We6Gb@}V_H{@^3-;}>Oe@p(>{B8N$^LOO$%-@yI%io>9 zCx37LzWn|9q4{C?2l5Z*AId+Rekm| z3;7rGFXdm(zmgxBe>MMF{`LGD`8V@#<=@V~lYck=UjF_32l)^4ALT#Jf0F++|5^U? z{HXls{FwaM{J8x1{Dl0({1^F2`N{b&^Izq^&VQ4ilAoIYHve7z`~0;05Bcf&8Tpy{ zS^3%dIr+KydHMPI1^I>fMft_~CHbZKW%=d#75SC z8}pm;Kj$~+x8#4x|C-;L-4o>)Aom{mNvSgv?V@zmmJ#q!0| zi)R$iELJGSixrENirK}=#VWI~BuX z=VF&)*J8Kg1;y^g9>oibJ&P9=FD~{f_AXvh>{Cn?`xY-PURJ!k*spj+v43$u@yg=B z;-KPH#jA_g6bBd6#cPX0iq{pdFWykRv3OJQ=He~ITZ^|9Z!g|ayt8;$F|T-c@t)$n z#rul)7l#&y6(1-*SbV7XaPg7iqs7OHj~DZcPZXalK2?0W_)KwlaYXUi;&a94i!T&k zEWT8Hx%f(PWbxJFYsJ@#Zxr7wzEym?_)hWN;(NvSiyss}EPhn{xcEu&)8c2v&x@mq zql;sTV~gX8tgT+6Jhl+>GUYV3> znU#52lx10!b-7r%c)3KmWVuwibh%79RxVpUp?qTbq;gjIPcNTQ zKC@h*94}WaS1Mkn z%4e0&E;lYWDW6krT5eVj%FW9y$}P*S%IB6_m)n%vmd`7}tK7SMNx4rsRqk89w0v3l@^ZiO73Kcr0p%;p1IvTT zSCy|WUsE1jPM5DO4=G<)zP@}z`Nr~1<(td5ly5EHR=&M_NBPe3UFE#;-Q|1A_m=M~ z-(MbD9#(#!{9yT^^26mv%8!;GD?eV&FF#R!viwx}>GCt>;pGwKXUor(pD({qezE*g z`Q`E}<&ouA%deGRFTYWKv;0>1?eaV2cgydU-!Feq{;>Q}`Q!2@l|L_!DvvIY zDUU6WD~~TvC{HYZQJz$uT>i5BRr%}kH{~hispW6W-<7{FPb>dWo?f0&o>`t%o?V_( zo?D(*o?l*2URYjKUR+*MURqvOUS3{NURhpMUR_>OE-3$4URz#QUSIyHyrI0Yys7+i zd2@M7`Iqvq<*nsy)sodx)zZ~6)mXJ`^@Qq))sw1O)sw5`s;5*>t)5mbUp>8gM)k~U zg=)N7v0AB`U9DWLQmtC8R;^yGQLS06RZUcr)tqW>)vwmB)~VL5)~nX9HmEkNHmaUg zJ-gbt+N63;wQ03kHK;bPwy3tOwyK_6ZC!0sZCgFB+OFEZdVaM-wPUqYHLP~7cByu) zcB@`c?OyFsy|CJ|dQtV_YOiYV>Lt}a)l{`__0sBP)yu2>s#jF|R|izDtPZRWs$NyS zx_V7@a5Y`MwmPJGUG@6v4b>Z~H&t)0-cr4_dRz7O>K)ZPt9MoNs&`lKsoqSADQ~jTtKU?oRHs(It$tVizB;Y?Lv?y}Ms;R&R&{oDPIYc| zUUhzTL3LquQFU>3Np)#;S#^1JMRjF$RdscBO|_uU2Ci`9$QOVmr&OVvx)%hY4_vh@?{C)Q7@XVp)xm#d#rKec{Zy?p)j`Wf{z>lNzp zdc}IBdUm~Xy-K}my;{9`y+*xey;eO@Pu6qlxplu@yI!YWw_dMazuutUu->SCR{iXH z<9d_&IrXOXX7!-nyxyYTvfiqGZoPHAO}%aXyn4HO`}+Cy4)u=pPW7o?SItlw0>xqeIi*7|Mr+v|7K@2uZd&#T{Ezo&k0{l5DB^`Z4) z^#|$?)*q@rTz{ngX#KJJo3(`uD?mSuWu76VhwEkKB^ZKaz==zxY*!sBo z`1*wU#QGQYN%hI~FY8~`zpj5%pHiP%|F-^J{rmc~`VaN#^%?b<^;z}V^*Qyq^?CLA z^#%2X^+ol?^(FPC^=0+t^%eD%^;PxN^)>Z^`j7Rs^>y|2^`Gh+>Kp$bL-(K<#u7kb zxNdf4IcpoWZQHhO+qP}nwr$%^lhjGwd*9=n?~i#K^DZVf=6y_DOngj2%!indF`r^S z$9#$T8uKkCF(xVId(4lRpE18;e#iWY`5W^OONJ%KQeY{uR9I>(4VD&*!7vP95W_J7 zBQXl2F$O~zi*Xo_37CjUn2afyifNdR8JLM#n2kA@i+Pxj1z3nhSUM~{mI2F%Wx_IJ zS+J~FHY_`q1Ivl!!g6DIu)J74EI(END~J`s3S&jEqF6DkI938HiIu`iV`Z?iSUIdb zRspMsRl+J`Rj{g9HLN;T1FMPE!fIo6u)0`1tUlHNYlt<%8e>hcrdTtqIo1MeiM7I7 zV{NduSUape)&c8?b;3GhU9hfLH>^9>1M7+P!g^zUu)bJ7tUopY8;A|U24h38q1Z5N zI5q+siH*WWV`H$f*f?xFHUXQ6O~NK)Q?RMnG;BIH1DlD>!e(Q0u({YgY(BOCTZk>f z7Gq1WrPwlTIko~@iLJs`V{5Rr*g9-IwgKCSZNfHVTd=LzHf%e#1KWx1!ggbOu)Wwm zY(I7YJBS^^4r52Kqu4R*ICcU%iJihuV`s3l*g5Pxb^*JHUBWJ7SFo$tHS9We1G|ac z!fs=Cu)Ekj>^}AYdx$;49%E0ir`R*>Iraj3iM_&JV{fpx*gGs1dymCo@mK=(0sDx3 z!aiePu&>xRED=k>zGFYIpV%+#H}(hni~R%1Kyr`*qy(uzYLEt`1u*~v06>5P0+4_L zG++P%EZ_hS1Rw$l$Up%q(0~pMU;+!+zyU7sfDZx?f(WDo=|KjN5o7|HK^Bk|WCPhj z4v-V%0=YpRkQd|w`9T3t5EKH1K@m_C6a&RU2~ZN00;NG2P!^N}!bOYT%56~0z0=+>W&=>Rr{lNe*5DWr?!4NPM3%j)F5o`jR!4|L;Yy;cD4zLsK0=vN;uovtD`@sQl5F7%B!4Ys290SL}32+je0;j8HgYYImkl+ico?wRGy*SOHdqm0)F91y+UCV0Bmn)`YcSZCD4^h4o;4*Z?+!jbLNg1U7}uU~||4 zwuG%FZdh&fq&sYJQBG3(t+` z!Smwz@ceiIydYi(FN_z#i{i!b;&=(XBwh+HjhDg8;^px2cm=#7UJ0*^SHY{|)$rA-U;uF zcfq^j-SF;s54}puAB+#dhvLKV;rIxABt8lsjgP^{;^Xk~ z_yl|+J_(9r$Kwh32mB-c3IB|L!N20)@I*Wb|BnB_ zf8xLJ-}oQ=FaD26MkFUv5GjdNL~0@pk(P)dFai*ezzKpN35uWzhCl>Ma0E{Xgh)t) zOelm(XoOA}gh^P0O*n*0c!W;`L`XzLIwC!hfyhW?A~F+Mh^$05B0G_T$VucPaua!o zyhJ`CKT&`vNE9Lp6Ge!kL@}Z`QGzH*lp;zKWr(swIifsKfv8ASA}SMAh^j<2qB>E7 zs7cf!Y7=#cxKJkEfNIW7Q z6Hkbz#53YK@q&0sydqu`Z-}?VJ0g~NPs9=NL;~@F_(*&rJ`-Pvuf#VZkw_xG6F-Qb z#4qAE@rU?J{3DZ*$;lLCN-`ChnoL8cC1Xg81SBMJk|0TvB59H#5y_Gq$&&&pk`gJC z3aOGBsgnk2k``%`4(XB}>5~B&k`bAXOiyMYGm@Fe%w!faE18YVPUawUlDWv-WF9gv znUBm*79b0fg~-BW5wa**j4V!;AWM>^$kJpPvMgDSEKgP-E0UGS%48L?Dp`%JPSzl6 zlC{X%WF4|DS&ytwHXs|4jmXAi6S67UjBHM}AX}2H$kt>VvMt$;Y)^I|JCdEq&SV#| zE7^_gPWB*slD){@WFN9G*^lf`4j>1TgUG?;5OOFvj2upmAV-p;$kF5&ax6KH98XRl zCz6xM$>bDrDmjguPR<}_lC#L!~5^^cIj9gBxAXk#B$kpT; zaxJ-zTu*KwH@-6v}j3wWbab!H1Kz<-UlAp-WsxVcADoPcjic=-1l2j?GG*yNwOO>O_Qx&L+R3)l1RfVcbRimm?HK>|Y zEvhzEhpJ1}qv}%)sD@M{sxj4sYDzVuno}*PmQ*XMHPwb{OSPlgQyr*|R41x4)rIOx zb)&jdJ*b{kFRC}yhw4l9qxw?=sDacVYA`i~8cGeLhEpS`k<=(^G&P1AOO2z(Qxm9( z)Ff&$HHDf=O{1n$GpL!=ENV72hnh>xqvlf!sD;!bYB9BhT1qXWmQyRJmDDO~HMNFX zORb~UQyZv_)Fx^(wT0SBZKJkRJE)!1E^0TmhuTZ+qxMq=sDsoY>M(VLI!Ya*j#DS7 zlhi5dGjJ`E$TLPhq_DMqwZ4=sE5=e>M`|% zdP+T`o>MQVm((ljHT8yiOTD9FsrOVI6;CBlAE=MiC+aixh5AZ;qY|kk>O1v=`bqtw zep7#_ztlfE8J(O?L8qis(W&V)bXq!w#%Mr88m9@Gq^bW06%37NmgZ=l7HE-{Xqi@M zmDXsTHfZzzO^QuBv`c%mPX}~JM|3(mJ)MEhNN1um(^>w%p=P7A(>dszbS^qKorlg# z=cDt}1?YlwA-XVK~K|x)I%&Zt_3I){JgWx1d|nt?1Tt8@essj&4tPpgYo?=+1PP z|Ie`9=?oIch`_ldB{`3HPAU%j4Ob_{=#27{or$^8u=~47(dJH|59!HO- zC(sk=N%UlT3O$vcMo*__&@<^-^lW+#J(r$G&!-pA3+YAlVtNU^lwL+Jr&rJ`=~eV< zdJVmnUPrH|H_#jDP4s4Z3%!-zMsKHg&^zf}^lo|&y_eoc@23yY2kArfVfqMtls-lu zr%%u)=~MJ+`V4)RK1ZLYFVGk1OY~*>3VoHnMqj6I&^PH@^lkbMeV4vR-=`nY59vqr zWBLjGlzv7(r(e)7=~wh?`VIY-en-dB@98)?o=%`Y&>!hf^k@1D{gwVkC(=puclrnY zlm12jrvK1?>3>WzCOMOWNy(&QQZs3ov`h?xF@S*#&JYaAPz=p53}RS@V|YejL`Gs{ zMqyM&V|2z~OvYkt#$jB>V|*rHLMCF;G3l8MOhzUXlbOlFWM#53*_j+nP9_(Vo5{oE zW%4oknF35frVvw@DZ&(GiZR8R5==>^6jPch!<1#pG3A*GOhu*=Q<F`!;EFdG2@vD z%tU4qGntvfOl77q)0r8}OlB4{o0-GRW#%#SnFY*3W)ZWPS;8!3mNCnj70gOz6|nc2G3%KP%tmGtvzgh#Y-P4F+nF8APG%Rgo7uzcW%e=qnFGv0<`8q3Il>%ejxooX z6U<5G6myz6!<=Q#G3S{J%thuBbD6oqTxG5?*O?p4P39JJo4Lc>W$rQenFq{6<`MIl zdBQwpo-xmv7tBlM74w>T!@OnQF|o{hCXR_`5||InN9GgrnfbzeWxg?qOcL{*`N8~T zelfq9Kg?g|A4-OjqZBA5N`+FRG$<{KK^OuEA{-HjL=>VCgAig7hj=6)5lKi!3R01V zbYvhCS;$5Xa*>C86rd1AC>=_VGN6no6UvOTpsXkx%8qiNoG2H{jq;$pC?Cp?3ZR0h z5Gss{prWW4DvnB^lBg6ajmn_1s2nPfDxiv}5~_@W+G#o~Retrm1q@Ojn<&GXdPOQHlU4Y6WWZnpsi>d+KzUh zooE-@jrO3uXdl{-4xoeR5IT&Gprhy*I*v}DljsyWjn1I6=o~taE})C(61t48psVN_ zx{hw3o9Gt0jqaek=pMR{9-xQl5qgZCpr_~=dX8S8m*^FGjozTQ=pBkh?@=6zM+xWy z`iMTE&*%&KioT&ll!U&cALu9gg?^(y=r8)mCS#McDcF>3DmFEnhE2=Huow$i$l@%) zk}Sp2EW;v}WjU5-1y*DwR%R7eWi?i34c25W)@B{nWj)qs12$wMHXWOu&A?`4GqIW3 zENoUb8=IZY!RBOhvANkiY+g1Wo1ZPf7Gw*th1nu(QMMRcoGrnYWJ|H7*)nWdwj5iY zt-w}fE3uW?Dr{A@8e5&M!PaDJv9;McY+be+DeP2s8athx!Omo7v9sAZ>|AypJD**^E@T(6 zi`gaYQg#`;oL#}LWLL4P*){B1b{)H(-N0^SH?f=9E$miy8@rv|!R};tvAfwl>|S;s zyPrM49%K)(huI_SQT7;noISywWKXfD*)!}}_8fbjy}({%FR_=|E9_PF8hf3+!QNzV zvA5Yf>|ORAd!K#4K4c%UkJ%^eQ}!AAoPEK*WM8qb**EN4_8l9`zGvgucs7Ckz{s?1o5&`y-`OARPxcr4oBhN7W&d%>xa3?4E+v(sD5z#sLm;I7e_K zM{zXAaEN0$j^jCj6FG^KIfYX>jng@UGdYX1IfrvOkMp^J3%Q6($ED{oa2dHwTxKo{ zmzB%LW#@8mIk{Y1ZY~d(m&?cH=L&EIxk6lFt_W9@E5;S)N^m8)Qe0`S3|E#b$Cc+Q za22^qTxG5bSCy;ARp)AOHMv?`ZLSVim#fFs=NfPgxkg-Lt_jzaYsNL_T5v77R$ObY z4cC@y$F=7=a2>f$TxYHe*OlwWb?16;J-J?7Z>|s5m+Qy%=LT>Cxk21uZU{G&8^#Ui zMsOp!QQT;53^$e=$BpMEa1*&n++=PFHlP3LBCGr3vZY;F!Wmz&4U=N51axkcP! zZV9)PTgENtR&Xo1RorTB4Y!tC$F1i!a2vTz+-7bIx0Tz*ZRd7yJGoulZf*~^m)pnf z=MHcOxkKDx?g)33JH{R7PH-o=Q`~9p40o10$DQXca2L5t+-2?xca^)wUFU9aH@REf zZSD?tm%GQ^=N@nmxkub%?g{sld&WKIUT`nDSKMpv4fmFN$Hj8*xi~JKOW;0mAGuH5 zXYLF4mHWmea!K5G?g#gi`^Ej{{&0V}e|$1NIiG@0$*1B|^J)0Bd<>8AfQLNJ6FkXN zJk2va;#r>Kd0yZ}UgBk5;Z84j-r{ZE;a%S2eLmnrKH}5y>G=$NMm`gtna{#! z<+JhG`5b&sJ{O;x&%@{C^YQul0(?Qf5MP)t!WZR>@x}QPd`Z3(Uz#t&m*vax<@pMH zMZOYWnXkfE<*V`4`5Jspz7}7bufx~n>+$vZ27E)l5#N|^!Z+oc@y+=bd`rF+-XM?fDLTN4^u^neW1P<-76S`5t^vz8Bw{@5A@y`|k7!Vl$#@x%EM z{78NjKbjxIkLAbl<)`t}`5F97eilEQpTp1P=kfFT1^hyO5x-i1*Mt&2&ncu>1<+t(M`5pXDeiy%+-^1_a_woDr z1N=e$5Pz6I!XM?2@yGcS{7L>4f0{qTpXJZ-=lKi#Mg9_hnZLqc<*)JA`5XLA{uY0m zzr)|<@A3Ef2mC|+5&xKf!awDo@z41e{7e27|C)cpzvbWYvHW{Jj*sUP_z(O?{uBS1 z|H6OezwwED691k5!T;oc@xS>${9pc`kW5G}q!3aHsf5%*8X>I^BVYm$pnwa6Knj#V z3ygpSR^S9)5Cl<>1X)l7RnP=oFa%Su1Y2+fSMUU12!v3GgmglBA%l=n$RuPIvItp) zY(jP+hmcdqCFBpi9p@L9R zs3cStst8quYC?6PhEP+eCDaz`2z7;eLVclu&`@Y3G!~i&O@(GcbD@RMQfMW#7TO4H zg?2)Fp@Yy-=p=L&x(Ho`ZbEmVhtN~#CG-~h2z`ZqLVsa^Fi;pI3>Jn6Lxo|&aAAZn zQWzzS7RCr;g>k}oVS+GGm?TUVrU+AoX~J}2hA>l@CCnD)2y=yb!hB(YuuxbeEEbjs zONC{^a$$wAQdlLd7S;%Bg>}MuVS}(y*d%Ngwg_8=ZNhe8hp%Ar;ev2cxFlQ_t_W9!Yr=KmhHz83CEOP7 z2zP~h!hPX^@KAUpJQkh^Plac~bK!;XQg|i27TySNg?B=%@Lq@$;)Mj^gYZ%KBzzXW z2w#P7LZXl)d>4KQKZReyZ{d&dSNJC;6O)T6#FSzxF}0XROe@BSm@xy3wUUNN7TUo0RN6bp%k#Uf%+v6xs~EFqQ@ONph$GGbY=oLFA0AXXGB ziIv4FVpXx4SY50k))Z@rwZ%GOU9p~6Uu+;Y6dQ?+#U^4?v6q$#UliJQeO;#P5+xLw>K?i6>4yTv`?UU8qeUpycl z6c34q#UtWT@tAmAJRzPGPl>0+GvZnCoOoWmAYK$NiI>GI;#KjQcwM|9-V|?%x5Yc+ zUGbiHUwj}w6d#F?#V6uZ@tOEsd?CIRUx}~9H{x6Iofs>=7vscuF+uzweiT26pT#fY zSMi&eC?<*D#UJ8N@t62p{3HGq|4GTDU;w3>6B}tMcMN%bA(j`MOB}=j;M{*@k@})ourASIArI#{D8Kq28W+{u5Rmvu1 zmvTrsrCd^ODUXy_$|vQQ3P=T|LQ-L=h*VT6CKZ=TNF}9GQfaA-R8}e{m6s|=6{Sj2 zWvPl(RjMXcmug5grCL&Lsg6`vswdT#8b}SLMp9#`iPThTCN-B@NG+vSQfsM=)K+RI zwU;_b9i>iEXQ_+SRq7^nmwHG&rCw5RsgKlG>L>M=21o;?LDFDph%{6hCJmQHNF$|D z(r9UnG*%iXjh7}!6QxPgWNC^tRhlMEmu5&arCHK!X^u2knkUVd7Dx-FMbctviL_K& zCM}m%NGqjP(rRgqv{qUtt(P`P8>LOsW@(GGRoW(Pmv%@yrCri)X^*s5+9&Oo4oC;3 zL(*aCh;&psCLNbfNGGLJ(rM|8bXGbiotG|17o|(mW$B7^Rk|i!mu^TmrCZW%>5g<) zx+mS29!L+RN77^IiS$%@COwy4NH3*V(rf9B^j3N&#Y*p`I4NFAkUmHsrBBjl>5KGL z`X(hxNz!-ehxAkWCHtWjEu=ZhB7V_GAUCsEi*Eb zS(%f0S&&6pl4V(uRaujD*^o`yl5N?MUD=a;Igmp+lGDlQo&E*zyOSzTYT5cn^mD|bf z!{rh3NO_bz zS{@^hmB-2B$@}F4@Kb4=!&*c~LOZk=jT7DzHmEXy+@_RW>j+YbU5AsL(ll)o!B7c>? z$%%53{9XPb|CE2pzvVyjU-_SsOi8Y!P*N(Xl+;QZC9M*pUK(G*=V6jQMjTX7Uu@f2SPlu(J3bV_<9gOX9nq-0jIC|Q+kN_HiO zl2gg0Kebq*PX_ zC{>keN_C}%Qd6m=)K=;!b(MNbeWiiYP-&zzR+=bHm1atFrG?T`X{EGQ+9++6c1nAt zgVIsyq;yugC|#9qN_VA)(o^ZB^j7*PeU*Mne`SC&P#L5QR)#1;m0`+oWrQ+P8KsO? z#wcTzamsjQf-+H=q)b+(C{vYb%5-IhGEMP+6obR+cDBm1W9u zWrea*S*5I2)+lS0b;^2WgR)WCq-<8UC|i|n%64UkvQycm>{j+DdzF34e&v92P&uR= zR*on~m1D|r<%DulIi;Ld&M0Shn&nbj<6RyCWNUCp89 zRCB4h)jVomHJ_SaEua=u3#ox-eCTdf)nc7@!p|(_8sjbyEYFo9P+FtFT zc2qm5oz*UCSGAkkUG1UvRC}qt)jn!pwV&Ew9iR?W2dRVAA?i?dm^xe?p^j8XsiV~~ z>R5H0I$oWiPE;qUlhrBeRCSsRNT3x?bI&Zd5m^o7FAqR&|@YUEQJXRClSn)jjH7b)ULlJ)j;`52=UM zBkEE0n0j12p`KJvsi)O5>RI)idS1PtUQ{osm(?rkRrQ*BUA>{+RBx%b)jR54^`3fP zeV{&6AE}SkC+bu6nfhFPp}tgKsjt;H>Ra`l8mqonu_m-<`%qyAO@Y00$YS_&M3W zH9-?KNs~22Q#DP~HA6EsOS3gcb2U%%wLlBCNK2=s*D`1swM<%OEsK^_%cf=5a%efV zTv~1|kCs=LbzHP>2bEwxr!YpspeR%@rV*E(n& zwN6@Rt&7%G>!x+rdT2ehURrOhkJeY~r}ftcXaluD+F)&nHdGs?4cA6!BehZ5Xl;x( zRvV{{*CuEawMp7!ZHhKko2E_IW@t0DS=wxEjy6}Dr_I+EXbZJP+G1^qwp3fDE!S3P zE45YHYHf|SR$Hg7*EVPywN2V)ZHu;5+oo;Tc4#}bUD|GKkG5Car|s7cXa}`J+F|X8 zc2qm29oJ51C$&@BY3+=5Ry(Ji*Dh!mwM*J%?TU6)yQW>&ZfG~PTiR{yj&@hOr`^{c zXb-hV+GFjB_EdYOJ=b1nFSS?NYweBpR(q$#YVWl;EnZ8|K4>4cPugegi}qFfrX^}g z+IQ`T_EY<%{nq|yf3<&lGCjGTLQkou(o^ec^t5`6j_E*$I<6BssZ%Dl!hdQLr; zo?FkO=hgG+`Sk*NLA{V(STCX%)r;xH^%8nXy_8;BFQb>$%jxCy3VKDol3rP_qF2?c z>DBcbdQH8SUR$rD*VXIk_4NjNL%osSSZ|^?)tl+f^%i+v)A~4thtu zlipeHqIcE1>D~1ndQZKV-dpdZ_tpF9{q+I*Kz)!tSRbMf)raZB^%43=eUv_0AES@e z$LZts3Hn5Rl0I3VqEFSQ>C^QY`b>S6K3kuo&(-JY^YsP#LVc0GSYM(q)tBkZ^%eR` zeU-jiU!$+p*Xir^4f;lXlfGHsqHoo=>D%=k`c8e9zFXg;@74F|`}G6*LH&?^SU;j4 z)sN}N^%MF@{gi%MKck=3&*|s&3;IRdo>DToe`c3_oep|nz-_`Hw_w@(* zL;aEdSbw5F)t~9l^%wd}{gwV&f1|(E-|4aXdp%B%*Aw&)`bYhf{#pN`f7QR~iF%U$ zUH_r~)PL!}^*{Pw{hyJ{NN%JsQW~j@)J7U3tr25j1~8z38-zg`ltCMefehB*4Bik7 z(U1(;Pz=@34Bapc)36NNa17V*4BrTh(1?t5MtUQIkWsEk)7-Nlb z#&~0bG0~W0Og5$%Q;liHbYq4w)0kzoI{)3{~aHtraAjeEv@ncW-2qanZ`_O#+aB1OlaaJVUi|g(k5dflQlV$Hw9BP zB~vyPQ#CbHHx1J?Ez>p~(=|QQHv=;?BQu?u-ppWTG&7l*%`9eCGn<*+%wgsK@4S==mPmNZM5rOh&CS+ks3-mG9&G%J~v%_?S9vzl4m ztYOwPYnippI%Zw7o>|{)U^X-xnT^dRW>d47+1zYlwlrIrt<5%OTeF?n-t1s@G&`A{ z%`RqFvzyu7>|ypadzrn>K4xFDpV{9WU=B0~nS;$C=1_B(Ioup!jx%`N6ubDO!{++prCcbU7*J?36>pSj;WU>-CNnTO3I=27#Q zdE7iT`P_VAzBFH%ugy2+Tl1Y6YrZ$*%y=`w{9t}GKbfD+FXmVCo0(`PncvMH z=1=pN`P=+s{x$zu$*km73M-|R%1UjevC>*G7G?npTDV16q(%KtPB0d-Sc|iGORz*s zvSdrKR7{0~xhv$|V7te#dctGCt1>TC70`db66fz}{vur=g=P-B=i+!|qxv_@H@tufYE zYn(OSnqW<|CRvlMDb`eLnl;^;Va>E=S+lJ<)?90zHQ!obEwmO{i>)QrQfryD+*)C+ zv{qTGtu@x#|CxmK)&^^%waMCSZLzjm+pO)@4r`~i%i3-2vG!W~to_yj>!5YWI&2-W zj#|g8!J0?dTc$ho?6eW=hh4BrS-~sZN0JHTJNk_>%A3c#ajv12kWEt$@*-4vA$a0tVAox z`fmNOep#%;nTZOW!?#zr=4b2e`a zwrESXY%8{EYqoA1wrN|oZ9BGWd$w-}c4$X-Iy=3c!Om!BvNPLR?5uV+JG-63&S~ee zbK80Bymmf2zg@sCXcw{z+ePf6b}_rSUBWJDm$FOSW$dzcIlH`F!LDdmvMbwF?5cJ( zySiP&u4&h@Yuk0~x^_LgzTLoXXg9JO+fD4Ib~C%V-NJ5Zx3XK?ZS1yoJG;Hz!R}~x zvOC*d?5=hgGZ`*h5yY@Z%zWu;{ zXg{(a+fVGL_A~pr{lb1}zp`K3Z|t}BJ3H2XZ^zm3c7pxE{%C))KigmIul6@P(N40z z+du4|_AmRl{m1@m|8tT#$(<2!*9I+2skN$+HEGCG-@%uW_3tCP*i?&NTCI=P(O zP97((lh4WT6mSYUg`C1p5vQnA%qi}aa7sF*oYGDir>s-XDeqKpDms;%%1#xhs#DFW z?$mH)b@Y43D!Iy#-4 z&Q2GntJBTt?(}eaI=!6UP9LYQ)6ePe3~&ZIgPg(65ND_}%o*;Ca7H?#oYBr0XRI^M z8ShMRCOVUx$<7pKsx!@*?#yszIXghn&OC5$C9L z%sK9ya85d>oYT%3=d5$iIqzI>E;^T-%gz<&s&mb`?%Z&0I=7tL&K>8jbI-Z&Ja8U5 zkDSNO6X&V(%z5s-a9%pEoY&49=dJV3iFMvPaZbFG;CygCI-i`+&KKva^UXO_Aj`i zE4i|(xT>qUx@)+mYq_@TxUTEDz8koq8@cJ+^lk<>qnpXi>}GMZy4l?9ZVor6o6F7Z z=5h17`P}?&0k@!A$Sv#^af`ae+~RHtx1?LjE$x{fBBy4Bq3 zZVk7lTg$EO)^Y2)_1yYy1Gk~u$ZhO4ahtl$+~#fzx24<4ZSA&k+q&)C_HGBaqua^t z>~?Xxy4~FFZV$Jo+sp0k_Hp~V{oMZU0C%7}$Q|qsafiCY+~MvBcceSY9qo>B$GYR( z@$Lk7qC3f*>`rl~y3^e0?hJRPJIkHz&T;3u^W6FF0(YUi$X)C%ahJNw+~w{Hccr_^ zUG1)M*ShQ6_3j3Dqr1u7>~3+ly4&3C?hbdSyUX3}?s50J``rER0r#ML$UW>HagVyk z+~e*E_oREuJ?)-x&${Q_^X>)rqI=1`>|SxNy4T$6?hW^*d&|A;-f{1`_uTvL1NWi( z$bIZSai6-++~@8K_oe&FeeJ$+-@5PISoggf=f=AU?g#gy`^o+6esRCL-`qqu$^GvB zaDTeL+~4jW_pkfUOXel_Qg|u7R9v10M37+Ul zp6n@}>S>v^8<1zzYyUOF$mm%+>EW%4q6S-h-XHZQxE!^`RA@^X85 zyu4mMFTYp7E9e#S3VTJoqFyntxL3j}>6P+Idu6<`UOBJ4SHY|3Rq`r(RlKTRHLto? z!>j4l@@ji^yt-aJufEs7Yv?ud8hcH=rd~6zx!1yL>9z7&du_b7UOTV7*TL)Pb@DoU zUA(SdH?O5cM6dtyZ@#y{Tj(wF7JEy)rQR}cxwpbw>87DXUduP0}-Z}5Qcfq^pUGgq_SG=pAmt^dvCnA-a9YWd+)`0@m_-W!Taca@;-ZCyszFjFVRc#zI#8s zpWZL;xA({U>;3bS`N{nheo8-;pW093r}ble%m+U7ai8!>pYmy+@sZE^oX`7$FZz-% z`--pnny>qYZ~B&R`;PDWp6~mCANrA>&QI@W@H6_E{LFq9KdYb3&+g~&bNadb+F!p`i=a?eiOf`-^_3BxA0r~t^C%08^5jJ&TsE`@H_gQ{LX$C zzpLNP@9y{Td-}cn-hLmyuiww_?+@??`h)zz{t$ntKg=KQkMKwOqx{kS7=Nrk&L8hj z@F)6{{K@_lf2u#tpYG4_XZo}J+5Q}Vu0PM8?=SEd`iuO<{t|zwzsz6mukcs;tNhje z8h@?7&R_3u@HhIK{LTIrf2+UE-|p}5clx{h-ToebufNaV?;r3F`iK0({t^GEf6PDb zpYTumr~K3Y8UL(*&Oh&8@Gtt8{LB6o|Ehn@zwY1gZ~C|V+x{K@u7A(J??3P#`j7m_ z{uBSH|IB~xzwlrBul(2k8~?5U&X4uq`*D7}pWuJ+Kl-2i&;A$xtN+bU^ppJW{ty4B z|I7dF|MCC&|AJ&e@*qW!GDsDq4$=f^gO~sdKmY?gAObR=0yp`dV3Bq$mb3yKFNf|5b0pmb0sC>xXu$_EvKib18Ia!@6x8dM9a2Q`A4 zL9L*6P$#Gx)C=kd4T6S2qo8rnBxo8m3z`Qlf|fz6pmoqDXdAQ(+6NtijzOoObI>K| z8gvV~2R(wGL9d{9&?o2{^b7h21A>9UpkQz?Bp4bD3x)?Hf|0?fV017h7#oZW#s?FE ziNT~`axf*B8cYkO2Qz}1!K`3*FejKB%nRlR3xb8gqF`~bBv=|O3zi2ff|bFlV0Ex2 zSR1Sh)(0Dcjlrg1bFd}Y8f*);2RnkD!LDF;uqW6X>2ZDpaq2O?EBsdxz3yudT zf|J3i;B;^%I2)V`&IcEQi@~Mfa&RTM8e9vm2RDM7!L8tSa3{DM+zajp4}yomqu_Dy zBzPJ;3!Vorf|tRo;C1jOcpJP6VuSZVTo4~51RsKr!KdJJ@Fn;fdCd5Jz!VnLMkPNAi4w(>zY{-RtD1>4tg>tBb zYN&;JXoO~Hg?8wKZs>)67=&RMh3UfdVTLecm?_L0W(l)~*~08$jxcAKE6g3{3G;^e z!u(-@uwYmyEF2aIi-yI*;$exfWLPRJ9hM2phULQYVTG__SShR=Rtc+y)xzpwjj(1| zE36&X3G0US!unx@uwmFJY#cTTn}*H8=3$GlW!Nfg9kvPEhV8=kVTZ6|*eUEBb_u(N z-NNo+kFaOhE9@Qi3Hyfq!v5iaa9}tn92^b_hlaz#;o*pIWH>4u9gYddhU3EV;e>Ev zI4PVQP6?-m)57WDjBsW+E1Vt93Fn6M!ujEXaACM8TpTV5mxjy2<>88OWw!h;f8QyxGCHmZV9)B+rsVPj&NtVE8HFK3HOHk!u{ca@L+f-JRBYgkA}y>lRr zpN7xE=i!U+W%w$59liB;#)k>vhwx+gDf}FM3BQKl!o)Bs{2u-Ye}=!p z-{GI|Z}=}t7A22TL@A?GQR*m7ls1Zqun0sj!XqLgBPyaJCPEP#aS3ETe$*gp7&VF-M@^!pQM0Id)FNsbwTfCtZKAeOyQqECA?g@)iaJMKqOMW5 zsC(2S>KXNldPjYtzEQuZe>5N(7!8UBM?<2a(XeQEG$I-qjfzG`W1_LqxM+MdA(|LX ziY7->qN&leXnHgwni)^7#)fZM@OQg(Xr@wbRs$# zor+FJXQH#wx#)a!A-Wh{iY`Z2qN~xh=z4S`x*6SyZbx^byV1Sqe)J%E7(I#}M^B=s z(X;4z^dfp0y^3B(Z=$!+yC^n#AH_xSQ9|?~`WStRK1W}ouhF+CF-nTQNB_}uk3q0B z3HrC!-dWq8YMw-CT~(R6wyl}<&a7?Qwr$(CZQJI*-c#56DdUdw;nx`_I*@0! zkNnR^{?{Y_`;q_i$p3xh|8o~L`>?)kds?_QvL z!S02+M|NFz>dxJzyLPwk-aY6-7rWHuuJ49!?51w+UbuUa?nS#7>t4KjiS8x4rCYnL zD_!kc_fp+UcQ4buZ1-~A%XhEPy<+!D-79ym(!FZ;YTc`MuhG3`_gdX+cdygEZuffK z>vwO^yD^|AJ%<%_YvJk zb|2M!boVjc$95mreSG%`-6wXR)O~XIDcz@bpVobP_Zi)1cAwRKcK12m=XRgheSY@^ z-4}LW)O~UHCEb^HU)Ftj_Z8h&c3;(fb@w&h*LGjmeSP;0-8XjM)O~aJE#0?v-`0J5 z_Z{7LcHh-~clSNr_jcdceSh}@-4Av@)ctVxBi)a7Ki2(t_Y>Vuc0bkqboVpe&vrl8 z{e1Te-7j{()ctbzE8VYlzt;VF_Z!`BcE8pAcK18o?{>e}{eJfc-5+*;)ctYyC*7ZR zf7bnZ_ZQt?c7N6Vb@w;j-*$i3{eAZj-9L8!)cte!FWtX(|JMC`_aEJVcK_A=clSTt z|91a(dYseao*wV?_@^g0J>ltzPEUM#lGBr(p6vAGr>8hQ<>?Wpr#e0L>1j?+dwROl z)1RK<^o*xxIz990Sx(P-dbZQEpPu9NoTukHJ@@H(PS1OKzSHxcUf}eCrx!Xs^3uEccQ$4lQ zOPyZ&^fITHJ-yuNu^>FrPNaC*nn zJDuM7^e(4&J-yrM-B0gvde75)o!ElnIaQej4C!Id|^eLxLJ$>5g(@&pq`pna3oj&{YIj7G( zectKwPhW8Q!qXR>zWDSdr!PHy+3CwqUvc`%(^s9o`t&uYuRVR;>FZD5aQep6H=Vxu z^ev}vJ$>8h+fUzd`p(mLoxc0@J*V$Iec$Q(Pd{+_!P5_&e)#kwryo82*y+blKXLlW z(@&j#`t&oWpFRED>E}F-bfaQes7Kb`*h^e?A> zJ^kD1-%tN>`p?sUo&NjuKd1ja{ona<&X0S3yz}FqpWyt2=O;Qp@%c&4PkMf`^OK*S z;{257N1UJP{M6^CIX~_B>CR7oeuncio}cOb%;#r0KkNC~&d+{+j`MS#pX>bG=jS;; z@A>)8&wqY_^9!C|=={iYcRroZ=gawezMb#q2j_5(=XB2J{ydz=^K_oiFMNKH^NXHe z?EK>AmpH%Vc{#7=?Oe|F+|Dm`e(CeeoL~0*a_5&nzry(y&#!cT<@2kYU-kTI=T|?! z#`!hRuXTRy^Xr^n_xyV2*FV3(`3=u+bbjOWo1EYD{ATAzogaOE^YdGr-}3xc=eIt; z&G~K5Z+Cvo`LXA>KflBI9nbG{e&_SMoZt2QZs&JDzsLDK&+m19@ALbd-}n4}=l4H< z!1)8uA9ViU^M{;2^!#Dx4?lmz`6JICb^hq{$DBX*{Bh@xKYzmc6VIP?{^awgoImya zY3ENrf5!PU&!2Vv?DOZGKll83=g&WX!TAf%Uv&QB^Ou~z^!#P#FF$|9`76&~b^hw} z*POrh{B`HAKYzpd8_(Z#{^s+yoWJ$_ZRc-4f5-Vd&);?a?(_GYzxVuo=kGuN!1)Ky zKXm@#^N*Z=^!#JzA3y)Z`6tgmb^ht|&zyhu{B!4@KmWq{7tgvuC%HW7<;gBjetC+^Q(hi%d8*4(U!Lajw3ny5JpJVvF3)&*rpq&5p5^ka zmuI^?`{g+<&v|*S%X43z=kmOl=es=ra2YStWxl-d(Si(g*i@{*V3vR<}JxztO$ywv5TFE4X>*~`maUjFh5 zmsh;J(&d#euX1_S%d1^p{qh=@*Sx&e<+U%bb9vp%>s?;|@&=bTyu8unjW2I*5$J=pL6-#%jaD_|MCTwFT8xw<%=(0 za{1EBmtDU6@)eh_ynNN=t1n-3`P$3ZUB3SE4VQ1ceADHdFW++c*2}kDzWwqYm+!oM z*X6q}-*fri%lBQr|MCNuAH4j~<%cgna{1BAk6nKJ@)MVzy!_PVr!PNq`Ps|QU4H)Z z3zuKK{LeZ=*tu1|e^n(NbE zpYHnf*Jrps$6^;?fUH3=eR!S^|`LkeSMzm^Io6t`ux`yxW3@^g|3gh zcGuJOe7#(+*W2}eeQ*uecum)Q?XSaiyiV8o`oh;2xxVQ2#jY=YeTnN!UYF~7-LBnmJe@%l>FSH8Z=^;NI0c765hYg}LR`dZi5zP`@&b+4~? zef{ejT;K5eM%OpKzRC4XuWxpJ)b-KVH^08c^)0V&b$#pW+g#uF`gYgHTpxRV`|CSg z-|_lR*LS|Y%k^Ea?{w8?^^ZH)b_rAW*^?k4JcYXis2V6h!`a#zZzJAE{L$4op z{qXBYTtD*qQP+>Ye$4e_uOD~)`0FQJKk@oW*H6BF%JoyPpLYH9>t|d)^ZHrW&%S=n z^>eSEcm4e97hJ#a`bF0-zJAH|ORryc{qpNqT)*=ARoAb+e$Dl3uU~il`s+7bzw!D_ z*KfXl%k^8Y-*)}>>vvqg^ZH%a@4kM|^?R@1cm4kB4_trn`a{=4fuRnMF`RgxSfARWD*I&N=%Jo;Tzjpog>u+3t^ZHxY-@g9N^>?qo zcm4hAA6)tX=SJ%J3{>}AouYY&_`|Cek|MB`y*MGkL z%k^Kc|91WN>wjGT^ZH-c|Gxgu^?$GbcYB=M~5Yx2L*2_3deHPkVd1+tc5k;r5KTXSzM}?OATmdV99pv)`WM_MErpx;^*p zd2Y{pd%oNA-(KMMg0~mCJ@VGwPPg;za=YGcxBKnEE!^TQ-SVx!4Y%<&-R9d1-(KYQ zqPG{jz4+}VZZCOTZtHEkm0P{F+e_VE`t~xnm%Y8*?d5N;aC^nuE8SlC_A0kmy}jD) z)o-tHd(GQx-Cq0lI=9!oz25EhZ*OpW!`mC(-uU(=w>Q1L+3iucN8jH3_7=CdyuH=! zt#5C0d)wRF-5zs$?CtGu?{Is^+dJLf`SvcicfGya?cHzhaeL3(d)?mq_CB}wy}jS< z{cj&|`@q`=-9GsCA-4~`ec0{8Zy#~{$lFKVKKk}Cw~xJj-0kCUpK$xc+b7*V`SvNd zPrZHG?bC0car?~MXWc&g_BprDy?x&8^KV~p`@-87-M;wtCATlVecA2HZ(niy%G+1n zzWVkxx39f@-R z?bmO=ar@2NZ{2?T_B*%Vz5U+p_iul2`@`EG-TwIYC$~Sn{n_o$Z+~(7%iCYw{`&Se zx4*sp-Ri*RCr@24v{ps#ce}9JiGv1%+{>=Ah zxj*au+3wGNe~$Ze-kz^?{9a1%>A+Vx4*x`{T=V`bbsgjyWHRP{%-eo zzrV-*J@4;zfA9PI+~4>9e)spkf580%?;mvk;QNQ%KlJ`#_Yc2+#Qh`hA9ere`^Vfr z_Wp7AkH3Gy{S)t>bpPc0r`$jF{%QA5zkkO4Gw+{u|Lptc+&}mJdH2u1f5H6=?_YHP z;`^7}zx4iP_bZL``6sR_WpJEufKo8{TuJ!bpPi2x7@$={%!YfzkkR5 zJMZ6h|L*(u+`sq!efRIb|G@nR?>}_^;rox=fAs!i_aDFi#Qi7lKXw1<`_J5e_WpDC zpTGaY{TJ`QbpPf1uiSt2{%iMNzyHSlH}Ai7|Lyzl+<*7}d-vbJ|H1ta?|*dv<^yf!E-)%t_RQk;CUWA?}O)i z@ca*6;K2(%c%cW6e9%2OJ>s#CdGw!>%{o!GM*&aOn^Zk7I=ll8a&-e5H|MQ2hZ{H7J z-+n%Pef#PP*kAN8Yt)Q|d6Kk7&Qs2}yCe$qeQAIp~X zlYY`q`bj_OC;gf4o2Tt$(~f_N{-sKlZJEyg&A> zf4o2Tt$(~f_N{-sKbGxyf9$9GAMcNSyZ`b2*th#1?~i@E|MC9VxBDOOkA1uU@&4Gi z`ycO*Wjo#<`|1A2`(xkkKj;tcKj;tcKj;tcKj;tcKj;tcKj;tcKl=M0^+)#~^+)|t zf7BoKNBvQM)F1Un{ZW6^AN42wNq^Fx^e6pEf6|}yC;dr((x3Dv{Yih)pY&(_S%21_ z^=JKAf7YM%XZ=}!)}Qrf{aJt3pY<30MSsy>^cVd_f6-s`7yU(l(O>iz{Y8J#U-Vb~ zRe#lA^;i8>f7M_0SN&Cg)nD~j{Z)U}U-dWrO@Gth^f&!Yf79ReH~me2)8F(r{Y`(< z-}H-q(J%T%zvvhJqF?lje$g-bMZf45{i0v=tA5q5`c=Q`SN*DA^{al>uliNL>R0`$ zU-g@Q({K7szv(yqrr-3Ne$#LIO~2_k{iffJe&K)Nf8l@Oe|d293;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM3;zrM z3;zrM3;zrM3;zrM3;zrM3;zrM3;!$sEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1EB`D1 zEB`D1EB`D1EB`D1EB_n+8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s+u{HE;P8JxAAbL^pAWx(*w2UGKkVnj|Ng(955Ird&xhYX?B~PpANKR%_YeE| z@cW1TeE9vtem?yEVLu;!|FEAAzkk@zhu=T!=fm$G)(40G`>B8Uzi<7+|9$Hp{_k7= z@PFU>hyVN5Km6af{^9?=^$-8o2Z#Ur>HdfR`*#1s|9!jv;s3tf|L}j`?tl2dZ}&g^ z-?#f8{;v-X|M%1V5C8Y={)hkjcK^fweY^kR|GwS-@PFU#fB3&|_dopKxBDOduMZCY z_tX6k|M%_whyVL_|HJ=%yZ_<;zTN-uf8XwZ_`h%WKm1=G9RBa8`yc-A+x-v!_wD|N z|ND0T!~cD||Kb0>-T&}^-|m0-zi;QHzn|`Z_`h%W zKm6af`yc-A+x-v!_wD|N|ND0T!~cD||Kb0>-T&}^eQ@}{pYDJ7zi;-T&}^ z-|m0-zi;x0Ap{dE7s|9!jv;s3tf|L}j`?tl2dZ}&g^ z-?#f8{_orU5C8Xl+&}O?@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB z@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB@IUZB z@IUZB@IUb1^Ra8-f8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-Mf8c-M zf8c-Mf8c-Qf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AU zf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AUf8>AU zfAsl3@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@qhmxM*qM6Z*xujPyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyEmP z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&;0NC-}Arcf6xD( z|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqP zJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn z|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}n zd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE z{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D z_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T z{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q z@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv z`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq z-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS z^S|eR&;OqPJ^y?D_xvCDKk$Fx|G@u&{{#OA{tx^g_&@M};Qzq?f&T;l2mTNIANW7; zf8hVX|AGGl{|EjL{2%x~@PFX{!2f~&1OEs95BwkaKk$Fx|G@u&{{#OA{tx^g_&@M} z;Qzq?f&T;l2mTNIANW7;f8hVX|AGGl{|EjL{2%x~@PFX{!2f~&1OEs95BwkaKk$Fx z|G@u&{{#OA{tx^g_&@M};Qzq?f&T;l2mTNIANW7;f8hVX|AGGl{|EjL{2%x~@PFX{ z!2f~&1OEs95BwkaKk$Fx|G@u&{{#OA{tx^g_&@M};Qzq?f&T;l2mTNIANW7;f8hVX z|AGGl{|EjL{2%x~@PFX{!2f~&1OEs95BwkaKk$Fx|G@u&{{#OA{tx^g_&@M};Qzq? zf&T;l2mTNIANW7;f8hVX|AGGl{|EjL{2%x~@PFX{!2f~&1OEs95BwkaKk$Fx|G@u& z{{#OA{tx^g_&@M};Qzq?f&T;l2mTNIANW7;f8hVX|AGGl{|EjL{2%x~@PFX{!2f~& z1OEs95BwkaKk$Fx|G@u&{{#OA{tx^g_&@M};Qzq?f&T;l2mTNIANW7;f8hVX|AGGl z{|EjL{2%x~@PFX{!2f~&1OEs95BwkaKk$Fx|G@u&{{#OA{tx^g_&@M};Qzq?f&T;l z2mTNIANW7;f8hVX|AGGl{|EjL{2%x~@PFX{!2f~&1OEs95BwkbKk|R%|H%K5|0DlL z{*U}0`9Jc1f8_tj|B?SA|406h{2%#0@_*$2$p4Z5BmYPK zkNh9`Kk|R%|H%K5|0DlL{*U}0`9Jc1f8_tj|B?SA|406h z{2%#0@_*$2$p4Z5BmYPKkNh9`Kk|R%|H%K5|0DlL{*U}0`9Jc1f8_tj|B?SA|406h{2%#0@_*$2$p4Z5BmYPKkNh9`Kk|R%|H%K5|0DlL{*U}0 z`9Jc1f8_tj|B?SA|406h{2%#0@_*$2$p4Z5BmYPKkNh9` zKk|R%|H%K5|0DlL{*U}0`9Jc1f8_tj|B?SA|406h{2%#0 z@_*$2$p4Z5BmYPKkNh9`Kk|R%|H%K5|0DlL{*U}0`9Jc1 zf8_tj|B?SA|406h{2%#0@_*$2$p4Z5BmYPKkNh9`Kk|R%|H%K5|0DlL{*U}0`9Jc1 zf8_tj|B?SA|406h{2%#0@_*$2$p4Z5BmYPKkNh9`Kk|R% z|H%K5|0DlL{*U}0`9Jc1f8_tj|B?SA|406h{2%#0@_*$2 z$p4Z5BmYPKkNltbKkSAHGyiA)&-|bH zKl6X)|IGiH|1SAHGyiA)&-|bHKl6X)|IGiH|1SAHGyiA)&-|bHKl6X)|IGiH|1SAHGyiA)&-|bHKl6X) z|IGiH|1SAHGyiA)&-|bHKl6X)|IGiH|1SAHGyiA)&-|bHKl6X)|IGiH|1SAHGyiA)&-|bHKl6X)|IGiH z|1SAH zGyiA)&-`Ebzwm$I|HA);{|o;Y{xAGr_`mRf;s3(_h5rlx7yd8&U--Z9f8qba|Aqex z{}=u*{9pLL@PFa|!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y{xAGr_`mRf;s3(_h5rlx z7yd8&U--Z9f8qba|Aqex{}=u*{9pLL@PFa|!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y z{xAGr_`mRf;s3(_h5rlx7yd8&U--Z9f8qba|Aqex{}=u*{9pLL@PFa|!vBT;3;!4X zFZ^Hlzwm$I|HA);{|o;Y{xAGr_`mRf;s3(_h5rlx7yd8&U--Z9f8qba|Aqex{}=u* z{9pLL@PFa|!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y{xAGr_`mRf;s3(_h5rlx7yd8& zU--Z9f8qba|Aqex{}=u*{9pLL@PFa|!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y{xAGr z_`mRf;s3(_h5rlx7yd8&U--Z9f8qba|Aqex{}=u*{9pLL@PFa|!vBT;3;!4XFZ|#C zA=ZcgpY{F^u{w|6zuW&IQv3M*yZs-|w2$AvTll~5f8qba|Aqex{}=u*{9pLL@PFa| z!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y{xAGr_`mRf;s3(_h5rlx7yd8&U--Z9f8qba z|Aqex{}=u*{9pLL@PFa|!vBT;3;!4XFZ^Hlzwm$I|HA);{|o;Y{xAGr_`m-U@58^> z{ReTK$KU_{1F`n;_rL#Os(t+Z?>``FAHRRN|DdLQ{Qlwo1C#dg`-l4vF51WMAMQUu zcx?W!{9pOM{}7%(*XRGr|CRqM|5yI6{9pOM@_*(3%Kw%BEB{yiul!&6zw&?O|H}WB z|11Aj{;&LB`M>gi<^Rh6mH#XM_a8bq?#us`|11Aj{;&LB`M>gi<^Rh6mH#XMSN^a3 zU-`fCf93zm|CRqM|5yI6{9pOM@_*(3%Kw%BEB{yiul!&6zw&?O|H}WB|11Aj{;&LB z`M>gi<^Rh6mH#XMSN^a3U-`fCf93zm|CRqM|5yI6{9pOM@_*(3%Kw%BEB{yiul!&6 zzw&?O|H}WB|11Aj{;&LB`M>gi<^Rh6mH#XMSN^a3U-`fCf93zm|CRqM|5yI6{9pOM z@_*(3%Kw%BEB{yiul!&6zw&?O|H}WB|11Aj{;&LB`M>gi<^Rh6mH#XMSN^a3U-`fC zf93zm|CRqM|5yI6{9pOM@_*(3%Kw%BEB{yiul!&6zw&?O|H}WB|11Aj{;&LB`M>gi z<^Rh6mH#XMSN^a3U-`fCf93z`^Z&~K)#v|}|EtgcEB{yiul!&6zw&?O|H}WB|11Aj z{;&LB`M>gi<^Rh6mH#XMSN^a3U-`fCf93zm|CRqM|5yI6{9pOM@_*(3%Kw%BEB{yi zul!&6zw&?O|H}WB|11Aj{;&LB`M>gi<^Rh6mH#XMSN^a3U-`fCf93zm|CRqM|2O_` z{NH^3-}t}z{J-&k^Z9?{|K{`m#{bRd|Be5f&;J|$H=qAE{%`!>_`mUg_`mUg_`mUg_`mUg_`mUg_`mUg_`mUg z_`mUg_`mUgs8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s8~+>s z8~@wk|Niy=!{`6@^WpPn`}y$szx{mp{M~*&eEx1fA3p!LpAVn^+s}v3|Ly0)=l}Ne z;q!m{`SAI_{e1ZR-+n%P{%=1YKL59$51;?r&xgmUB_TmSHX-};CD`_@1F-?#qZ|GxDP|M#tb z_`g49p?~hyVN5Km6af{^9@rSc(4O|GxDP|M#tb_`h%c!~cEjAO7!K|L}j` z`iKAf)<68;A7{}&{NK0!;s3t%5C8YAfB3&|{lou#>mUB_TmSHX-};CD`(rfvhyVN5 zKm6af{^9?=^$-8|t$+BxZ~epned{0o?_2-ye}8;O|L}j``iKAf)<68;xBlV(zV#3P z_pN{Uzi<7+|9$Hp{_l?s=^y^@TmSHX-};CD`_@1F-?#qZ|GxDP|M#tb_`h%c!~gwp zCH=$yed{0o?_2-yf8Y9t|NGWI{NK0!;s3t%5C8YAfB3&YCZ&J)zi<7+|9$Hp{_k7= z@PFU>hyVN5Km6af{^9?=^$-8|$FuYg|M#tb_`h%c!~cEjAO7!K|L}j``iKAf)<68; zxBlV({#cm);s3t%5C8YAfB3&|{lou#>mUB_TmSHX-};CD`_@1F-ycWQKm6af{^9?= z^$-8|t$+BxZ~epned{0o?_2-yf8Y9t|NCQb`iKAf)<68;xBlV(zV#3P_pN{Uzi<7+ z|9$Hp{_k6#|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3|AGI3 z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ z|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B?TZ|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J z|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|B3&J|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p z|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|C#@p|2_YE{`dUv`QP)u=YRkIYPw^b33}s9 zz`wK$IC1RISJ-VfStP?|lYNH0f)m?`LkG@%Cttufup^&fZ{Ved&k7JmZ%II5YW|N8 zs6qAczwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2C zzwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwp2Czwkf!AN&vg2mgcr!T;cY@IUw; z{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr z!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx} zAN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq z|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx z_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-L zga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{ zKlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I z|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY z@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fAGKZzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EG zzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EGzw*EFzwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8E zzwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Ezwy8Gzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KIzw^KI zzw^KIzw^KIzw^KIzw^KIzw^KIzw`g$|HJ=>{}2Bk{y+SG`2X<#;s3+`hyM@%AO1i5 zfB66K|Kb0`|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A|M36e|HJ=>{}2Bk{y+SG z`2X<#;s3+`hyM@%AO1i5fB66K|Kb0`|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A z|M36e|HJ=>{}2Bk{y+SG`2X<#;s3+`hyM@%AO1i5fB66K|Kb0`|A+q%{~!K8{D1iW z@c-fe!~ci>5C0$jKm33A|M36e|HJ=>{}2Bk{y+SG`2X<#;s3+`hyM@%AO1i5fB66K z|Kb0`|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A|M36e|HJ=>{}2Bk{y+SG`2X<# z;s3+`hyM@%AO1i5fB66K|Kb0`|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A|M36e z|HJ=>{}2Bk{y+SG`2X<#;s3+`hyM@%AO1i5fB66K|Kb0`|A+q%{~!K8{D1iW@c-fe z!~ci>5C0$jKm33A|M36e|HJ=>{}2Bk{y+SG`2X<#;s3+`hyM@%AO1i5fB66K|Kb0` z|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A|M36e|HJ=>{}2Bk{y+SG`2X<#;s3+` zhyM@%AO1i5fB66K|Kb0`|A+q%{~!K8{D1iW@c-fe!~ci>5C0$jKm33A|L}kCfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|s zfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD|sfAD`li2twt>F@t;{|xkb z{{MbJy?mbkzaQ8xpXdMY2bjy}`TzTY-tu|=|9-%=e4hWmANVYv=l|~qAj{|Z|1bYv z{=fWx`Tz3&<^Rk7m;W#SU;e-RfBFCN|K5r~Cip|8)PK{GaaslmFBGfAW92|4;r;{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7 z{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{xAM7{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!Oq zwo;;S^wkz&iWt!_tzczAOCmO|MT5F^*{datpD+UXZ?@=JL`Y^-&z0T|Nfdq z|KtD8`XB#y*8ljwv;N2bo%KKd@2vmve`o!V|2yk{{NG>i=zsj*S^wkz&iWt!ch>*- zzq9_w|DE+e{_m{+@qcIikN^8?CH;^8JL`Y^-&z0T|IYd!|995^_`kFM$N!!6KmPBm z|M7o+ou&Wre`o!V|2yk{{NGvsT5F^*{dauhH~B{_m{+@qcIi zkN-RCfBfHB|KtD8`XB#y*8ljwv;N2b{q>#x$N!!6KmPBm|M7ok{g3}U>wo;;S^wkz z&iWt!ch>*-zrQxr|MT5F^*{datpD+UXZ?@=JL`Y^-&z0T|IYd!|M%CG`XB#y z*8ljwv;N2bo%KKd@2vmve`o!V|2yk{{NGvs*-zq9_w|DE+e z{_m{+@qcIikN-RCfBfHH&+32t-&z0T|IYd!|995^_`kFM$N!!6KmPBm|M7ok{g40q zYhnG5|2yk{{NGvsT5F^*{datpD+Ue;uv=@qcIikN-RCfBfHB z|KtD8`XB#y*8ljwv;N2bo%KKd@2|o2KmPBm|M7ok{g3}U>wo;;S^wkz&iWt!ch>*- zzq9`QzxaRg|Kk6}|BL?@|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+ z{$KpR_zxjXj|K|VA|C|3e|8M@^ z{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou> zzxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+ z`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M% zfAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s z^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>zxjXj z|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O z=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5 z|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m z&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h35B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@ zfABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa z{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(* z;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~ z5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU* z|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw; z{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr z!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx} zAN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq z|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~ul%q4ul%q4ul%q4 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඲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 (=!dkeO2 zu)Jpb-kQt=d`4~JTgh4nykvRJ))AOGoKgFRTv^v{jH$yJ9WL0@1$(AoYXy6@V9yoo z`6*k@3vKt)zb|KkuP*Lw`tAQY?XT&Hnb{X3kq$ZOzyEy}iP+8;dM}`7E@5Nmw~Mqt0gm z%x3}n^jSci&jOgw0+`PNn9l;3&jQ%C;`7{IFrNjyyUzli=d%Fjvw$=5SwNl70`}sw z0OqrRHGLMqd=|ib7Vtcu1=KCGFn;_0O3y;GlbpdHw!g3X?LV^@i@KLAJ9F{G^xJ=4 z^W{+or!#B&ow%8q&I`pOP^8(ksR@CXdz;#DP zUEZh83#h{x>Ab*e>b$^A=LKfR$6oU1@@BzwUf?y~F6!PXn9d8o*|V^wS(vr;TNdu= z_x9fDdJ}eE!DL=o)}7VYlzCyYrpyZyCiB9C$-FROj}-fSv|utXOxApS)b%?yVKOgF zn9K_kCiB9C$-FROGA~S+%nK9t6*gWFfQ2LS~VL%pwb!X%={&k%e3rS;$PYz-vYpa$RI0GtC088Cl>uoRMaM>mmzW zhx3apWcGA%&ms%CF0znWWFfQ2LS~T#WcKo&g?9VK9^tNE=vlbA-`f`oracnZX^#Z< ziN5A{iZ!)I;x%6>>a<7VI_;5|X^+HAdn9JsBQet+iP@{gJ7|x@b*~k5KPZ^?NW7-@ zNMJZ4?UA@ndn9JsBQet+iJA6D%(O>h)?CKUm@{knUCE+HLQXdKEVOUiQN#JUrQh4= zkuvjMK%Mu(#eL1_k@A|}3s}>80nB>=%zFXs(c;~`7f|QD0Oq{_wzqhm_X6s?7r?w1 zz`Pg0yccjr-V3PnUI6o60P|h|^Iia3D?T&t1=M*jfO#*pTQr`j{3tWdY5-&{Z!V6r7eTEk@3om3AUdU{%c=zx^t_v?@=DpBv zgMHTR{oZ;nfO#)~c`xkhYkDuB&U*pOdjZUQ0nB>=%zFXMdjZUQ0nB>=%zFXMdjZUQ z0nB>=%zFXss6BU_(d(9>?pVRR7f|QD0Oq{_=Dh&sy#VID0Oq~WzWwaG-BEY}%zFXM zdtrCs1=M*jfO#)~c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`tw+D9-QTVC)*yc`x9M zycbaCy#VID0Oq{_=Dh&6Hr|21-@&{Wz`Pg0ycgQ3+GpKacmd3N0nB@0PvHgBc`tx@ zFMxS3fO#)~c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`tx@FW`*47f^SsxG!%M?0CVv z7w|mq1u*XgFz*Ghr5D=O@A;bjtBadye*6ES_V-o4{b%+*c{gS!Sa#Xsi5pI|>`R@! zzhECI*ar*N_BHvpHQwik3%0IcA1T;L1v|N5rxfheg3SsxFW7p^a7G&}!x^1cu+s~6 zM#0W3*jWWTyI|)O?A*b+FK7Ql&qA~I^zZY}^(@@Apy{{&%)$%sFSGChv&;LMF)uK~ z^VAExW_Tgjg%>glFJu;8$Sk~&nR%t3}yd(=6~lBMZ4MvXGf(f!B;IioO_=H~@4KQDl_XPbEe%+Cv8eqI3c^8(mO#q&-sn4cH0rk@wU{Ja3>=LIl7FW`*) zynwpXig)ny0_x5v>dq{fpBJ#^*+tzs1v_`jX8+~lW}4srxBt5~JAb9$+bgCubFk|> z+gPwomVK(%U1=HCJg;EqTZVmJWf|7oT(B(#yP#lO3wB|_wiRr9!7j24@BRhL@a{Vb zw$n14(bbk=&5JF=Ual$FwU%McT?N}+usxPxFV|Uy=e4PbzaMA+@8V{f-~Rud_V;z` z|7byJc1F*|OnW3|+9NU39*LRuNX)cHVx~P3v+qvdd(KRIBxc$pG1DH2nf6G`v`1p5 zJrXnRk(gjt-X3_Vt2kkHl+gkHk!SBxc$pG1DH2nf6G`v`1p5^Fr&6 zS{4qa9%+%PRlogbrdeR7SpfTV&zEL_>og0@Gz-i$3(PbN%rpzkGz-i$3(PbN%rpzk zGz-i$3(PbN%rpzkj>>%p!x?E7xK6XcOtZjDv%pNVz)Z8iOtZjDv%pNV053e1vVi>D z-S6$a@_8}4uVD9E_L;us1D4@=4-UrPV_**r#@}OL4;So_f<0QW#|rlNV0oWU43_t~ zw_y7Q%WLi*EU($V)7bY*@8NSfI9Oiu$-#I{oKgFRT&|hx+KpNHyu$^1x?s-~Y^`9= z7EJ%U^WW*;@%UVxpVlqsg|_?Y-dq^e zpBJ#tw({hBc%PdKwxwWxUcf%L7Il7JK;5>Y&d&>|^Ya4U-OmfC+fh7kr)4-JKQCa- zi)|hDa!tXmwG3&DN3t)a;z+U{kfV$?Hi<@bF`;U9{wSI5??0jR9 z1+Y!_y+2!I0d+nLU_J}jXFEZY1=RU0fcY$d`7D6>EP(kefNd-GxxHXM3wU>*1w7AZ z0nBFsXXLYhI-dpX#b*J`X8~*aEP(kefcY%oc|HrMTV`SWx3<<}w=6U}$r*gT{e9JM z|Czm5)V*Zc=N3;)zy0SmUmkUEGqYC)gVUMmyueK71!g)gFw=Q~na&H$bY5Vl^8z!S z7nte1z)a@_W;!o0J8C~qoYCu+{c%4(ofmjbofnuLFV=jsU~d)d?SkpNz`A*O&gjr!{X1z=C-cID9UgV)J@_s? zT`-v!CTq4E%FdrKnHMHZ=7kB1c>(X&`h%8*w%T|W{@yavvT&1RA+yLrW|0MEJ0%Ou z@I1`|?mm!8MHVuPEMyj0$V{`q`;08)y2wIingw1nvXJW{3z=yac+JQH*Wrvb z3tSgj;5wXNWFfQ2LT1ktcQCS$>mm!8MHVuPEFiPL)w9ql#y-${{9@0-&HdiKP%!P0 zxK4W{uut?g_1{#v?&a~kzW+J1R|d=b)EAe8vy#VID0Oq{__E_<` zcrT#NdjV{3v8ML|>bw`gycfW{7r?w1a7Nw>sPkR`^Iib+UI6o609z|QGw%h|c`tx@ zFMOM_z~4Ey7G41JUI6o6xTNp`>bw`gycfW{7r?w1z`Pg0ycfW{7r?w1z`Pg0{(O4o z%kMET?*%aL1+XKPyboaEgj{3%PD@ z@mcR1jC&-!`~Jc5n&E}a#0!&sh8MUFXCz*j)P)zg4*Lu*WENh?EWD6ecpeB;#~HnD8S0J|%zFWK-V0#f3t-+0VBQO0-V0#f3+>k0ce|tT0+{y# znD@f&!V9SLUI6o60P|h|^Iib+UI6o60P|h|^Iib+UI6o60P|h|J5Ze8!NJ%ysPkUH z8F??D&U*pOdjZUQ0nB>=Y;C*)f4_ryFMxS3fO#*pf7P+iy0h>CnD+vh_rjjS3#jv6 z0P|h|^Iib+UI6o60P|h|^Iib+UI6o60P|h|^Iib+UI6o60P|kJ8F??D?pSeO-YD4d zf_X3CdEN_P-V0#f3t&qxw5#9qHM@FoGw1F0$sRx4{=VwB|IFT3)SY12Ws4_nIMK2% zb@u*(eV||;EZBz%*4}6G?{55l>k9Uff}K>blM8lA!A>pMtYGtkt+xzkw81i*(P;%c zyQl+PCfW@AJ?1Ed0TO((f1GSZ3jc%)$$q#eZMO zOufL*3oqol@Iq$ch0MYWnS~cJQ!ns7!wb3Y)#9^OFYub-g}i2XAv5&?uNhv*b>W4~ z!V8&&7cx6uynA>d*M%1{3om5$PVqdQ7jEiVXt!w8pdb6UdltSSS;#E1kXdAb*>CkV zBMZ#%Jk0{{C9;s~A`6*C7BY)0WENS-OtZlIj4b53$Udi!5XoS;#E1kXd9QGtI(3=~-wuMY4eJj<4G+Fw-nB(=0I4 zEHKk7Fw-nB(=0I4EHKk7Fw-nB(=0I4EHKk7Fw-nB(=0I4EHKk7Fw-nB(=0I4EHKk7 zFw-nB(=0I4EHKk7Fng!C*M44Tw?S&qGkP{}|PAS-_1)CLYUNAo|;EepdfOqio0@&%r^ZdMk zx-*NqvkG>0!OkgI%nRKav;V4lp?&*F&2O~7ulnsj*!BHRZ?tt_n=JcOue;JR)SXwb z^DX;IU-K%0J%3k$ZbVA~6Jk!5)IFIa|m-%+rgmf?)9whU`tY#H`) zO~J0U3~TNx*zSVuu?%~;&N4jj@+q7B@!}TEo9(B6pZ{m=@2h_M&rEwHX4)e$(;kVL z_DIaMM`ETu5;N_Qm}!s1OnW3|+9NU39*LRuNX)cHVx~P3GwqR>9T{hf*^=4O!O%}L z(;kVL_DIaMM`ETu5;N_Qm}!s1OnW3|+9NU3dEsEsLOVJ6O#a)Rg>Nk={W}sqFJ_tr zW|{@CPxm!73tXpJV5V7MrdeR7SzxAFV5V7MrdeR7SzxAFV5V7MrdeR7SzxAFV5V6B z!x_C^+zHJBuc=vJrdeR7SzxAFV5V7MrdeR7S%4SX>BxH{KX>8;v4TB5Sl;IogXMkhE!e)n@|ybx%WEDeSo^-? z|84Tp`S{G99E{h*866rd@8zk%xDIO`F4)rrd!}G(1$(w&&lT+XDO=79?b~Sj_xW$M z8@q1(R~Pp-{q`U1hR!zHI~o7Jrr-YanlFz!xS822gTc+r zbY5WA-gA-@W;!o0(|LiJ&I`xQ1-q|cGA}IG z{Cr>Yfuc_4g~?uIUYIbM7bZ;Rg$a{+VZvlyn6SskJM_#>n9K_kCiB9C$-FROGA~Tn zfw33(p3hI_g-P9$whm`>Xt4Z#GA~TlJUr_1UY;(P%nOq>*NQrs7bbNwFHBg>3wXcQ z1GFr()yA{%UEKcvTNZATEMyj0$SktJY^P*_8J;IunDbsD3%M?`kXd9Qv&cebk%i18 z3zL0D7IIx=Av4LsWX;Gzu8S;WCRv!Q8Cl>uoRMT23%$oL^(@@n@9hf((;kWIv_}H_L|;??O_l4kM`HF$u@~); zxK4W{W`A0&sXY?cX^+HAdn9JsBQet+iP>w#KD9^Ux@P@lZ-x87OnW3SoRRiOT&Fz} zGwqR>X^+HAdn9JsBQet+iP<~j-SfR}?&Qy91~0UPO#i<84!EV?+vt%vTVUP`VBQNC z_cfzO%4=%zFXMdjV{%_{_W)Q0Kh>=DqN3$^z%-*1`*5-V0#f3zrmLK%MsjnD+vh z_X3#r0+{y#nD+vh_X3#r0+{y#nD+wMYvVrTGxAnS~daT`FE+hBeg-a2{BA zA=iZ$G7B$c7GB6KypWlCf%h3+$aQ;*&wAfrd~fmY`v=Qwh8HqZFYrFY3tWdYQZH~_ zc!BG%&+tNK;f2h?3z>x%G7B$c7GB8Ad!c>1+t2y-!V6&D3t-+0y9zI$&U*pOdjZUQ z0nB>=%zFXMdjZUQ0nB>=%zFXMdjagV;*7i(Q0Kh>cGRwkGkV=J)Ez6B_X6s?7r?w1 zz`Pg0ycfW{7r?w1+O4(kc1Pg_Fz*F0?}gok7f|QD0Oq{_=Dh&sy#VID0Oq{__W1bB z_&XfTdjZUQ0nB>=%zFXsz}O3a|A8GGEbr5M0cYgBfHl1rz`Pg0ycfW{7r@rWJLLEC zUO=7q0+{zg`&S+NtUC)YfO#)~c`xiKyns6I1u*XgFz*F0?*%aL1u*XgFz*F0?*%aL z1u*XgFz*F0?*%aL1u*XgoRRke>W&rn<&Ag@dm`#`}ySg;Qj?860X?=$&tz5IS3 zDcDH`JGo$|6ztT3%?dUz*m}!wMjI@{8J$+J(+hS+!Okq$Sp_@0VCNL<+`+mpXa8f* zLi@Iz{(b&0^(@@Ap!C1lhGUt%Sk#3VxbE`4X8iXBW_X@@fu9#%$aUd`%)$$qg%>gl zFJz`(;C+S{a^0)NXQp1@HNy*e&G15I>IGgiyufuhqwoSVoKbiov+zP@$BTClFXX!L zLT2HG%)$$q{l(Y|yl`{RLc2xNzt8`jo`pY@ETC6o7FozFvXEJ1Av4VaKQFS7>mm!8 zMHVuPEMyj0$V{`q`;08)y2wIie?HCuXUA(s7IIx=Av4VauNhg$b&-Y4A`6*C7BY)0 zWENS-EV7VUWFfQ2LS~u;c%j{taR#WtcgNRl7MN)km}wT6X%?7i7MN)km}wT6X%?7i z7MN)km}wT6X%?7i7MN)km}wT6X%?7i7MN)km}wT6X%?7i7MN)km}wT6X%?7i7MN)k znEeIre7pMn&M)VMb{ixM=!?I+$U^$&DN3t)a; z0Q2(#SbJA9FM#=Z0qmrr?&N}x?*;o3S zS6PNNHy3P6!7eD+)`DGFux$m~Ua*TS!@GaMGQ9hag6*^nXLPk?So31bu$OBJcCBSt zb63H37i^DZ*voa6;dyN;;_tcHJ&Rjpe*1qz`}?Zj{xf@Vy55}GOO~}1nBOmOo%Tq~ zv`1p5JrXnRk(gP_17;9rM+ZZ1 z42Cn(9*OI;M`ETu5;N_Qm}!s1OnW3|+9NU39*NnqM;gE7d9r7rot%6o|6R|*xB9(( zpog0@Gz-i$3(PbN%rpzkGz-i$3(PbN%rpzkGz-i$3(PbN%rpzk zGz(xjBh3QW9V_mHW`XN83(PbN%rpzkGz-i$3(PbN@IpHsc{k+e?tX9YE!cepyWg_U z^fe!_49|OTF#a9`duTBJ9s_&0V2>2+(Skizu*V0>`+Q=sywAM_+c#KVbN^s@%>xBH zI9Oh@eHR+<;fxLqmg}AxEbrxT!JaPIGX+~K*s}$Du3*nk+3X)IZsxpw8%_T{|7iRB zs^9*DEzioQb zx@|?BpBGSfk*&kK`*{I%J8T`;PRnpcS6hZUKQCY}*VsC+Yc0c?eqI3EUDWNd49~mH zGOW3r7uwbDd7k}8i(6!V`;U9{wSLF0uV`z+vjJ_}$z3pgX61=RU0U@txkU_J|2(`Nz9 zX93J-0nhVUK;1G6V_s;za?3*NHsuWd_xATyzx`+SVo~>!WuIF-G5z+R*L-=@!OhHG z84PY__9q3?d4cP6USRfT#hN-VaGlNz%vwh}@fS0l7nte1z)a@_W;!o0(|G|5XQcB2 z*BvX~;f;bFFW8#}(|LjS@^(?D^8(lDywJY)S{B-;CF`~S|CWV&`n|okVD}a5e#<`J z*VK7|pQrNzvxn@O*r(15T&ME_Go2Th>Ab*9=LKduFEG=2ftk(=%yeF0rt<=`gX1&9 zcMG#82g7#@7|!U>V7X4`1zz*;sN*$pMo$+^=LKGKt*Fy^f$MZ$U>5U2f4^Dte9J;x zZ9EI_{X;zqH%S&Ui!5XoSzxwPvcL?_(=6~_A`7`LvXEJ1A+yLrW|4)=Gz+}X$U?4* zEM%rx;58!)xh}GhnP!34j4W^+&PcPsb&&=%zFXMdjaf;;`7{FFz*Gd>Ae8vy#VID0Oq}bGxA?*%aL1u*XgFz*F0?*%aL1u*XgFz*F0 z?*%aL1u*Xgupf-OlF#qRVEEp__a^F&4#ssjBku*&c`tx@FMxS3fO#)~c`tx@FMxS3 zfQ1+OyDz=ax*+?R+$LV&&kHQPkXd+v*`?wIW>{0bfU^S&FXX!LLT2HG%)$$qg%>hY zFYrE}C_c}<1=}|m-&?%<{=xEI!V8(H7kHoH1+K#xsTa5|yufwXXLupA@Iq$ch0MYW znS~cJ3om5mz0khh?dN=Z;RP`71u*Z0U4<7==e+>ty#VID0Oq{_=Dh&sy#VID0Oq{_ z=Dh&sy#VID0QQ68{Ja-XchuJ5j9#}4b;key%9S$F}=djZUQ zVNc-&)Ojy}c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`x9MycbY+ zthg_46zq7xych61?*%aL1u*Xgu%#E;)$jS5U9-5E=C}VJX@6h!+ka;7lXqiwf@PO2 zp19#e%f8gv`wRAgf_<=HA1c^~3%0Ic?OiAT{g~fff6K${p*qH@8t6*mr?3{v~J6QMS?0@Q6Xy3Nezt8__&%#{`ntuDwEW7~! zGJDCcd3j$m{`*3%Q!ntE;e}imUdSxGkXd*kv+zP@>IL3scp=xlYCjiz*6IabGrW-3 z3@>D+Uf?yu3tWdY3NJ9jKEn%{g%>hAUc7sFA=iZ$G7B$c7GB6q=Y?B(7TPTudqh9> z@AfQwL$Z)rWFfQ20<+(eEHK0KGz+|!$U?4*EMyj0$SksuS!5wI%>wT;vXJW{3z=ya zc+J;}Gm0$aH8l&oW@Lfua7K{@W;mnBLS~VL%pwb!MHVuPEMyj0$SksunPvfAXg5VZ z=fB#s@Vhn(%rpzkGz(x?*er0JW`UVzfthB3nP!2RW`UVzfthB3nP!2RW`UVzfthB3 znP!2RW`UVz0SsrPS>QU&0yE75GtB}s%>pyc0yE75GtB}sKQFY~AXz|v`{l*GO~3tT z=H~^}`FY`!ea#b#=lOX7Yx;Qs%+Cv8eqI3c^8%Qk7r@%*VCDrdKQDm!c>(N{V$D+v zHY?b?VCyZz8Toku`}Feyn4cHG{Ja2mrritJSp_@0VCNJp=7sKz*?+ybndZ0u8{6Mk z{q`U1`hKU||9f&Dm~FD`Q@!p=%dqBo1v}reuk8}2cmINAc=sIz+i4lj=xWQb=Eas_FV__8TFbEJu7d3@*dEKUm+LIU^DdvV+5fk= zMdr8vH@3g8TmQ`krP&!h7qb_q>&=h zraclf?U9&ikHk!SBxc$pG1DH2*^zM$m>-!P9gNQwXQVw6*J+Q$OnW3|$L;fQ&$LJ4 zI_;5|X^+HAdn9H$FC6MwXeTFo{O@}fzGbt(?8Tx^vw*r!+br;!ngwQ>1!kHBW|{?N zngwQ>1!kHBW|{?NngwQ>1!kHBW|{?NngwQ>1+Y)|Gtw+@oo0dA8^xW_EO4D>fthB3 znP!2RW`UVz0bXdQBl|~w?(Uz-y#>3kVE0@0nZD)&mf?914#wYOU=Iz(-(z487wnOO zJzB8G3ikM5d7n=VmiM{0VEYEkYwjN`uX&(g2M5b*J~ysFnV3!6Cu zYx;Qs%+Cv7?Q6D`SFX9aU|S02=LPI#Yfb4im&kJ~WKQG{UJBl@TT81<7 z^8(iN^8)sAja?J$TFbDepBKP(7j=6q!}I*SfHjx%Lc97s&$HiN+#>Va|BdbM>(+m* z-?1y~vlix9l?AX(w(hgN&SwF2J_}$z3)p8nL6Zg4`7D6>EP(kefcY$d`7D5KEB3j) zU_J|Ycb^43&u0P5X8~vAvw%9E1?EZ})Q3#eOWVf^;L^}{U- zt=p6{_@nmsRlogb_F_@@l4YM;JTd+DpVxeO)WOZnUKtE-W~TE3v+ovlIxlct`+O$( zVy5!~Go2ThwT^V{@ zx?nml@S1By-LnPLd4boAd7;1Gthu~pp{+L7!+XE0XW=HvLS~VL%pwcS&Xz1N!}Bx? zyqCyAu8S;W7FozFvXEJ1Av4Va?=!NH>mm!8X%=|R$U?4*EM%rx;58!)T!%B#EO1?9 zf$MO7k%i163z)^%(O>hraclf?U9&ikHk!SBxdi7chC1MdZhljEWOYYGHN(m zxAc1(JyK@g3#jv6IJd7EJyKrNdjV^DFMxS3fO#)~c`tx@FMxS3fO#)~?JYiQ?*-I( zFMxS3fO#)~c`x9MycbaCy#VID0Oq{_=Dh&6R(xjO3#jv60P|k>Hf4eHb8F!RFz*F0 z?}gteyns6I1u*XgFz*F0?*%aL1u*XgFz*F0?*%aL1u*XgFz*F0?**_Ua*uwcoxr;F zU`GezbH^EZFQCqQ0nB>=%zFXMdjZUQ0nB>=%zFVWywKl$>4nw>+0W#*es9AI{CRwSa4m%Qfw z!Sb5nh0N3oyk>ZT>u^Tu1+EJ(a2?JlypUOVA+zv8X5od*!V8&&7c%o+Xy5MkbH2Ub zTR$&=c`tx@FKp~<`gs9$-V0#f3t-+0VBQO0-V0#f3t-+0VBQO0-V0#f3t-+0VBQO0 zN5%%zFXMdjZUQ0nB>=%zFXMdjZUQ0c>yaS$i*_&U*puK(Xe*!8i-3^IpIi zc`u;OdjZUQ0nB>=%zFWBZM*|#7R-AA%zFXMd!ct zy#VID0Oq{_=Dh&sy#VID0Oq{_=Dh&sy#VID0Oq{_=Dh&sy?`_FUO?Tk;=a65u;T^u zUcmFb7r?w1z`Pg0mR@LAzvpXq?c!#d-~OM}{=RPgZ!hSEACmnudso4J*s}Bbnm=M0 zp7)~#`>}%kc)@<6U_V)~pDNf-7wl&W_Ok{1%LV(ng8h8KexYE$Xc^Avmn_2>{c^$D zTrv6Y>U>|`U9k5Q?7ap1)q?$6!G3+P?#tQ#+_TWWZKr>q|I0lKcP%LWegTeU7GB6K zyuj@IzUFs|=cyO?dEo_K6Z;G=WENh?EWD6ecp)?O0`D`tkn6$=nW-0e&G1653om4* zUf?yu3tWdY3NJ9jXB}S1EWD7}@#5UW3%TyCqAt9U>%t3}>AY}j&qBLJ<5}p({=J@s zZ%7t0i!5XoSzz{?k_BdXo@Rmf5?RP~k%i163z#yvXEJ1A+yLrW|4)=A`6*C7BY)0WTshw7urpc&l2Aq zzhkq&OtZjDvjDc)W`XN83(PbN%rpzkGz-i$3(PbN%rpzkGz-i$3(PbN%rpzkGz-i$ z3(PbNU^pYq0@rC4m}wT6X%?7i7MN)km}wT6X%?6*v(T=7&&hILXtzPKfFAFQi+j6b zUI6p+0+^o{w)8dqyns4CFM#=Z0nE<}V18Zz^Ya4OPZgibPZ#WG3ih)F^Ya4s;^zf0 zKQDm!c>&DN3pgV`FQD$1i+Awz0_xsf)cJVtDVyEf zv(Rim{rmhs?^*cfg3|1ao{O3GNX%ZcYqlF?e!swV+9NU39*LRuNX)cHVx~P3GwqR> zX^+HAdn9JsBQet+iJA6D%(O>hraclf?UBH6M%p8Bo%Tq~v`1p5Jrc7w?R~)=)Ew`>-eX%?8hWY=upm?jHcr&(a8SzxAFV5V7MrdeR7 zSzxAFV5V7MrdeR7SzxAFV5V7MrdeR7SpdTsX%@Inv%pNV!0foa6S!xZ1+LR9Fw-nB z(=0I4EWiuxbYzdn&)xmrw*Q-n@0s0Ku=_1*9YV{(1D4@=4-STZ2jk~GG#EPybq^Qp zk%B#1u*VAa_+WXTPYjm#xwl~Z2Fq*iA1tqVpkN0F%WFP47_W&lIy6|WYu}+O@5JGP zJzcP83bt0TXAAaR!JeP8**{#|%z67Zn*M!`-u{LK-Qed1u#H7sTVwKhVa?VNw>3Xz z8P@dk0+^o{!2G-bwz+uTmV&j;*}MbR+*&X{FQ9H)QRn9c)Lm56`FR0#JBm6#FW`*) zynr?Rya49s1u#D^fbA;wxw~L{3U*n+mh(cp`u%%g_8<2wH2d0`8;dM}`7D6>EVL6{ znFZAOEP(kefcY$d`7D6>EP(kefcY$d`7D5KD?aP(1@l?Jnm!9)J_}$z3pgX61=RU0 zfcY$d`7D6>EP(kefcY$d`7D4fvoL=9-+JEWh1PA#8T=pZ@2h_M&+Nsb?j_6GshN3! z*L-=@!OhHcUSOv40yCW#nEmN^9{L1kIxjG5pWV_Kd7s}OEU(!*(ur$$&1UG8YqoE! zm32BV@R~X=Fw=Pf3}>YC0@vxhz)a@_X2*+nc(Y(SFYuag7j-%>aGlNzeM&OF{eM@_ z!ae=o>b$^A=LKduFMzdgDKjr{-Gk%ZaL1VGyuj??QHT4-?2&@$yufvj6?KmfmiMXi z0n=IxjHOc>xS(bf|bgofmk`!=o;rgU$*j?v$&MPF>ks!V+$34ZEV7VUWP#b)k_BdXo@Rmf5?RP~k%i163zhracm~=#l#8vh+gxwjG}d=jWFGnM9A2nfC(f zycf>xYc>;2`eJ%%zFXMdjZUQ0nB>=%zFXMdjZUQ0c>ya?)wVny?`~n7r?w1 zz`Pf5M&1jk^Iib+UI6o60P|h|TPr>n?*-I(FMxS3v|BWu#orIN_IvBS0Oq{_=DqM6 zeNFEL)Ojy}c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`tx@FMxS3fE^iU%U%FGIvAfj z&d7TKb>0hL-V0#f3t-+0VBQO0-V0#f3t-^|^hlT&+P9|tOl}h|@aF{@!?)wMJYlasx zQ!ns7!wX!8Gg2>bU3h`(u+Q*9X5od*!V8(L74IHi$aUd`%)A%cZLrU}z295!1u*Xg zFz$d1jd_8y1?If~=Do0~uNm_~ zUekL4YkDt$c`tx@FMxS3fO#)~c`tx@FMxS3fO#)~c`tw+D9-QTVC)*yc`x9MycbaC zy#VID0Oq{_=Dh&6Hr^rM7w-ksc`tx@FSJv&&$_el0+{y#nD@fR3NN6}djZUQ0nB>= z%zFXMdjZUQ0nB>=%zFXMdjZUQ0nB>=%zFXMdjZUQ0cYgBfVyMFeR-o`#|!4YfaiHH zfO#)~c`tx1z0j_H&)4ibL*Q-c{7Ke;b1!kHBW|{?NngwQ>1!kHBW|{?NngwQ>1!kHBW|{?NnguYN zk!FGGGz-i$3(PbN%rpzkGz-i$3(PbN%>2A?AZ6j??u9Qd?rr+*KeKm@?;PZgnV%Q7 z^fmpwfam#n0nE<}V18Zz`-x(oKUpw8FJMhSFM#=Z0nE<}V18Zz^Ya3jpBKRVya49s z1)Pze7f|Qt1+ZT!KF@a->^%j0Z^8V$fW7#60W9W)es^bITHMU}!N1i0zsXGVv7UwN z`@Q{W!8R6blVun5HQV|tpVub0m8^BLE7@-rY;(cd$*)|q?RF*GTCfWX*8cnE$~Cta z?4p8wykI*Dw$n14(I+g!ow&GQmlW*Mg6%5U?t<+p*kuK~e9C6`^(;J@vhZK@Ed0@e z((H`yerDPuG1DH2*>|SX^+HAdn9H$FC6Y!IFz#R zwVs7<*(@;AEHKk7fVFQ-^IIOS(=0I4EHKk7Fw-nB(=0I4EHKk7Fw-nB(=0I4EHKk7 zFw-nB(=0I4EP&yRGz(m(SzxAFV5V7M_U8Bw#CI+;%>pyc0yE75GtC0L@KnkI@^g2; zxA)2(nYH?f@0s0iS?dtYZ+W=x!BNLvz+N62j2#8`aKRoa*rNq|tYD81miPI@V0oW= z3$|~tyypJF@|tbpTX_zx175PcX6pz{9nR>`V7ac{7*mIHXy30Z+0zAkreJFYd$wTD z73}#bTh0q@_tU@6Kh|#Sy7f0K?rr+*KeLTR-6qRgM{IuY%xj)!>#!F;FM#=Z0c>-z zrk@v3=jR2mt;L#tUO?TpqR!6?sPppz*vE@C{k(v>owg2VUS@Arb7r3r{u9H52na&H$bY5Vl^8z!S7nte1z)a@_Fr1Oj3tXr3 z0yCW#nCZO0?9Jjcd#hk?7wnya{l%0mf7iB_vhc$_3-|Oprt<Ab*oIxjHOd4ZYE3(Rz0V5ai|Go2Th>Ab*9=LKduFM#2U zbY9@Pr;5+Bb=;Hh0j_Hu$V%3}kyo;ILsv4L7x;NPFED$4tl8(G+4jZFoVV4cf1m$I z&%#ZT1QDz3%M?`keOzI*NiN19nMIzz;%%YuEY677BY)0WENS-EV7VUWFfQ2LS~T#%nP6H zS!fj_3-~vR_w+2>-0$rR1=Ajh>$FD#Yh9@6k+@EKBxbJ^d(j?=>$FE=racm~KP#T6 zJrdVxkHk!SBxc$pF?+4pi}pxdr#%ug?UBH6Mz0so(;kV})E0hL-U~P*?*-I(FMxS3fO#)~c`tyi74Po7fI9C5 zFz6lJ;HY**wMlG+;K*)TZTIC1u*XgFz*F0?*%aL1u*XgFz*Gh@B(@y%nPjx zvhRJHc!57Ju<$}=;RR-wiWit+P4&WiTE(j0{xb_Nx% zGV@+&-|qHvzP-PjpBKQq7r?w1cJ(#CQ#{Xm0c(0MfO#)~c`tx@FMxS3fO#)~c`tx@ zFMxS3fO#)~c`tx@FMu7j=YTVM-7?f2E135J>bw`gycfW{7r?w1z`Pg0ycgQ7weNOE zzqc_jaJIm_7r?w1cK0bw_F=e+>ty#VID0Oq{_=Dh&sy#VID0Jgt) z_X7nxI2gMIYkDu>jJy|6=e+>ty#VID0Oq{_wl>}&-$CyM)Ojy}c`vkYY5S}@3on3q zFMxS3>?yo}I`0KA?*%aL1u*XgFz*F0?*%aL1u*XgFz*F0?*%aL1u*XgFz*F0?**KZ z_X6sU75C+hf*miI_X3{hy#VID0Oq{_w)8@~`aNH>e`9eo=k4~%9#3h1U$_2C3%cR2 z6zqKkJHfKc`kE(NhUdM%U>_*h2MhM0f_=DP>k9Uff}K>blMB{9_sM@#;&V8)V6%eF z3%1@eoY4l$a7L#U?DT@2QLr-$c2>d8F4#E*J9n_|%h~_hv(Ub6r+=USwVs8$7Lx%GCN+pdw3z&g%>glFJu;8$V}&jK1Iyi zEgE}7KlV3!7XDDOkXd9Qv&cebk%i1O3%r-eLavJ}WENS-EV7VUWFa%n0`D`jkn17~ znQ0by&B#Koi!5ZOS>QE~7Uv#W$ZJLxGK(x^7FozFvXEJ1A+yLrW|4)=Gz;)TyD9RS z;Jf4NHVe!&3(PbN%rpzkGz-i$3(PbN%rpzkGz-i$3(PbN%rpzkGz-i$3(PbN%rpzk zGz-i$3(PbN%rpzkGz-i$3(PbN%rpzkGz-i$3(Wky&~Afd;gs%$FE6sNVqO6A^8%Qk z7e3k7Jh6D5pBJ#EpBKPBSgh&i1=RU@0nE<}V18ZzJE_>q$pvelyO|fT=BWjn6>MHG zKQG{n{Jem@_;~@$&kJCFUI06@*r%TtPWO_qJC*Ij8D)@;w7+z0Fh?0n0x&#Np$-R6RADcA)C+gh*-3%0Fb+Y5G) zWq9{5ScZ4sQLvqs;f$`f3~OF&8TN8b!LGFoYwjx8?t<;H412lGGCZ$MMSRa@_b+bd zyxD&G_xay#e_yx$j~0|>XY^dmv`1p5JrXnRk(j+a_JVnb*(-zPy=afbb=o5_(;kVL z_DIaMM`ETu5;N_Qm}!s1OnW3|+9NSLGCs5Xc^(}sf1cVS@tWErG1DH2nf6G`v`1p5 zJrXnRk(g2+(Skizu*V0>`+Q=sywAM_+c#KVbN^s@%>xBHI9Oiu$-#I{oYA4da@|vd zaUIU#aKYMluelSbd!}G(1$(w&&lT+XDO=79?b~Sj_c?m>uP*NG20t&{(Ah>?2e!$w zt9qTE7f{!pJ^8$_7qIg!!#>-}E9*8FY)irXynwxIE$aNdfVyo(ou3y_=jR2yyPp?O zx1)I8PRnpceqO+u7u!1Q<(h(BYZ=zuRj}O!+hZB_;^zfCZ#gfttKaiH`<=zjoHzU0 z^}beQ;l?5hV4LikpDnV0I-dnFp9So*ouJ7A>UAb+~c<~Nz7VNEpy_ai+E_w;*vZ^7;>n9d7W^YeX8ofr6dIxjHOd4bu(#a?t?;JQbP zI-M7|?(tEFEHKk~ftk(=%yeF0rt<h_Pwzee9p|YM`ETu5;N_Qn7uZh zm(NIhB(BpQiJA6DU^pY~k+|+yu@~);xK4W{X4)e$(;kVL_DIa$DfSsXQa`_?7g|C_ z4d>^Ues7~k%FKHKb>0hY>RRaq)Ojy}c`tx@FMxS3fO#)~c`tx@FMxS3fbA_lYwrcr zc`tw+DAx2|K%Msj&d7TKb>0hL-V0#f3t-+0U~9$uc`u;OdjZUQ;oFo2{?56z@B*0k z0+{#0C50DI=e+>ty#VID0Oq{_=Dh&sy#VID0Oq{_=Dh&sy#VID0Oq{_c0}$GzBj>+ z4#ww>GxA%t3Mhkb?@G7B$c7GB6KypUOVA+zv8X5I_!+ueSaw-;Uj^Iib+ zUf5N50d?LBVBQO0-V0#f3t-+0VBQO0-V0#f3t-+0VBQO0-V0#f3t-+0U`Oq_=%zI&X;RV!rFMxS3fO#)~ zc`tx@FMxS3fO#)~c`tx@FMxS3fO#)~9VpK4;9%?;)Oj!9jJy|6=e+>ty#VID0Oq{_ zwl>~@zu&>U7r?w1z`PgQzv|d$-C1}6%zFXMdtp!E1=M*jfO#)~c`tx@FMxS3fO#)~ zc`tx@FMxS3fO#)~c`tx@FMxS3fO#+AjJy|6cdWQCZxrl!!MqpnJnscC?*%aL1+b+T z+STv*n*EK%%{0ILKehdR)o=fqy-(ha*$I|iws_)(6D|8vXYViA2MYGVf_Is zf_96L*f|9| zcd+iu*+1=BXy3Nezt6wWvvAjf((f1GSZ3jc%)$%IF7Io`e_vpR=cyO?dEtdz_b0_W zgcovMcpi@d7*bs=C}WUt7qXGk_Gf?%pwb!MHZO-mSlk$o~K#h=S3EB zU1TA%$UioR$$-d@^#q<2UfHnQR0Oscfun!f_ z^Ya4g))jSrUO=6n7r^|y0Cr08y!N@9c>#5^g3Sx&=LMXRpBL~vKQDm!c>&DN3t(p! z`#h^)XBX_8f}J~MvwyU>ndZ0u=eNJFTmO}QZ?Blv%)zejY-7PTS@x-3cco=m^Spw! zXHV_}@AE3lu;%81Z7J9V1>0J%3k$ZbVA~6Jk!3ie_I+nQ7rgt9g6*^nXLPk?So31b zu$OBJcCBStb63H37i^DZ*voa6;dz%&+3bPE%{0IL|9kE4>(+mBL1}hI&&5o8Bxc$p zfwdI0HDh+pYif_gYrZnw|D2ijNX)cHVx~P3GwqR>X^+HAdn9JsBQet+iJA6D%(O>h zc4T~Jm>-!P9gNQbXQVw6*J+Q$OnW3|+9NU39*LRuNX)cHV)l-GKiq4b7oO=^XeTE% zzu&X)Et>^qngwQ>1+Y)sEO4D>f!Qm?J~azmr&(a8SzxAFV5V7MrdeR7SzxAFV5V7M zrdeR7SzxAF0K*w+7PwBcz)Z8iOtZjDv%pNV!0hefPG}amPO|_nw9}FGkgdD>y}h?! z_Z94Z%RbZBY|ouIouBvMVEjFXy*xA+e~*DZT(Cz9_GrN#E7;?M<$XReSl;K}g6$hD zuepD)yyk&|9ULsL`Q%`{CeG;4V7cz8!MG0RaJXPk7p#3Rue=j$1$(w&&lT+XDO=79 z?b~Sj_vK9R)y2I{zx_v#enV#)Z5`Mq%dYBm&BBxS<~7eNSo^;-b=YTH*)Z&7bHTP0 z%+Cv0b8AuO=LOVlE9(5bfI2@f;NAVafVv&U^LAQ>GxGBS*1Xu(VK3Jd>{`pPrk@wU zb{BPfEW=*>ynr>A^Fq7&JEZ~fM7EtH2fW7!EfcY$7 zO`ioYp9L_V1w7AZ0d>nPjNkq@BeX2EZd1Ab+~yG5PO3tXr30yCW#n0>!^Uh7CFndLg27nte1z)a@_W;!o0(|G|5 zXQcB2*Xg{#Oy>n=$BTD=vtT+e@S1NIb?+2R=Y{rN)3VS$Evfm@o`rk*y}h?!_Z3X% z1+4k`zNXF#{5+i(nCZO0Oy>n=j}-gVd4cP6USOv40yCW#nCZO0Oy>n=IxjHOd4ZYE z3(TIhp9{|D&|vsZ;yRrdm>nK<_`YKHbis69;JUSmm!8 zX%=|R$U?4*EM%rx;58!)T!%B#EO1?9f$MO7k%i163zhraclf z?U9&$zxZ6VN8&o|k(j+!tf@T`*Bu#kxDU*~b4CGC;8PJ1L~ z+9NU39*NmI#a^OE>YvNf3oRj|hVyevzqipNW#+wrI`4&Z`bw`gycfPrS>P<+T6h7>djZUQ;Wr8|pw4>%%zFXMdjZUQ0nB>=%zFXMdjZUQ z0nB>=%zFXMdjZUQ0qls}BYbay9UY9%9cSddfI9C5us7_QVBQO0-V0#f3t-+0VBQO0 z;f4P0OE0u8$nO6(@dAHdVBv+#!VAnkDqdiQHPs6^JFxIVt_v?@7GB6KypUOVAv5&? z?=!rR>-H9(^}fO2OI~yTV0q2(LS_d?U0yT1z;z$(XQW=>y@VII4rdfz$Sk~&S$H9{ z@Iq$ch0MYWnRzd?Z};(ean0@hGx75RnD+vh_rk`$rk@v3=e+>ty#VID0Oq{_=Dh&s zy#VID0Oq{_=Dh&sy#VID0Oq{_=Dh%R)Sf%e=yl6bcdTG<6wG@8YkDt$c`tx@FMxS3 zfO#*pTWj}!N58i*FK|x4ycfW{7dG`ZV_wK>dM{v2?*%aL1u*XgFz*F0?*%aL1u*Xg zFz*F0?*%aL1+W9f`5hdLy?{FJ1)P!h0_waMz`Pg0ycfW{7r@rWJLLP~y?{FJ1u*Z0 z_APCnb!XuPFz*F0?}d*QUO=7q0+{y#nD+vh_X3#r0+{y#nD+vh_X3#r0+{y#nD+vh z_X3#r0+{y#&d7TKb;pYP@?aHMQw96!g8fXv zezstLxnMt6u%9p3FBI$-EyEf8l4UrfUoP0M6ztsvdr!gMTd-d(*sm4r*9Ysqoc%%1 zLi@Iz{(b(}dlv3mQ2PA>9Lp@ckXd+v+4+6Vm=~DgdFlmzUU(tbg%>jWZt;HMgIGgiypZd{3z?}Gc+Kzv*Wrx93(Rmv;f2h?3z;1+&LO;z>)tBr z!V9@BypWmB3*8pxxBq{;XW<)?1@vmnA`6*C7MT5}WPur;r&-|VMHX^hWFfQ2LS~VL z%pwb!X%={&k%e3rS;$PYz-vYpa$RI0GtC088Cl>uoKa+f8P4d~xSN?p7BY)0WENS- zEV7VUWFfQ2LS~u;c%j`Cc{hA_{Ep26GtB}s%>vkFn+2}ZEHKk7Fw-nB(=0I4EHKk7 zFw-nB(=0I4EHKk7Fw-nB(=0I4EHKk7fZ>cZ3tXpJV5V7MrdeR7SzxAFV5V7MrdeRN z%tE{RJtxa~q1^__!mQocb?d*lxVJ0j1u#D^fcbf0OJCE^3#j|iVlRGPK;4fQb$(tz zou3!LeyUj0&kLygnWFAz3+Cqqtm)?kFh4JV`FR1%&kHysKQExp&kJCFUI6p+0+^o{ zz}{PYW`15k-LDmOF)ttszq`1Z=C}U~ORiggeZRLKmGziyEZ8Q?F6e81%rZRhyn?k( zb~0D)^%(O>hraclf?U9&ikHk!SBxc$pG5d?@xzE;m7TU>8|33f6JqzEmSzxAFV5V6B zYu}hA3tXpJV5V7M_9w+VXco9mv%pNVz)Z8iOtZjDv%pNVz)Z8iOtZjDv%pNV0ERQt zEO4D>fthB3nP!2RW`UVzfthB3**nFZ&@8|U?R2CD`MJB_+j|RkU%~FTtaS)23lCU^ z=e0d8zo+rtf;~TFGt3L^+i3dtdF#E~yl}(f z-fr;o0+^o{!2G<>I^wpbpBGT)=LN9yi+#2|PkJ4Ghs_1^^8%jd=LN8>#hQLzK;5>Y z&d&>|^Ya3jpBKRVya49s1)R|*ihcTd0c&1T)cJVD)td5l<8e3kOHKJBF+vIDmj4VaQQj6hu&Q#hlNa^;FCWbIyW-U;q^fO3vvJ1wj!I z$-#fs`*!!MsaN{|1Al&a>xE@MUDYpr-}hC|%n4>|0c=}ye!#YiFk1_Vv$X(bYXQvG z0_Mop0^)2ffZ19Av$X(bYXQvG0+_7@Fk1^?jTXAk{?i%M{Otet>E|3TsjT`x%X7xR9(7$#lIS*)5U#kwcH24`m$9 z)tK)|rt1aCbiE*%t{1>CN4j2+ak^fROxFvN>3TsjT`x$c>jlYly&##c7bN@V_;@y- zU!c(%|M|SqY2j42j&!{snXVTkJHyOLyOdEc$T(duNT%xr$#lISnXVTkJI8D%`hISN zo!2p(r)5rEFG!~A1<7>1AepWgB-8bRWV&9EOxFuwm?K>;$T(duNT%xr$#lIS*;UU@I80WPRGOvY@c`by@YawJ>3$mSF3t^nsLddihWKOSzFwScsWLgU{r`Ljv!yIWX z$T+VB8Hf4vS_qlfLdd)pLguv)GOvY@c`by@YXSAbfxI&3QADQ&XmSOog&(NY_TGpJUy+JuSj)UqGDg3siN@=nIImeF4n&1u)wez-(UtvwZ=~_60E87r<;^ z0J|VEp0+O_&h`Z`+ZVuWUjVz*YzyYd_65Y*z5r(X0+{U!V74!SEi&5)X8Qt|?F(SG zFZ@wxLGHK5MSKCw_60E87j};L0^)360JD7o%=QH^+ZVuWUjVax0nGLVFxwZvY+nGg zeF4n&1u)wez;09P2zw*g?H!ZzjybY@0dcl3fZ4tPcDH#yFxwZvY+nGgeF4n&1u*Xm zuJ4U6&?(4lP1z-(UtvwZ=~_60E87r<;^ z0JD7o%=QH^+ZVuWUjVax0nGLVFxwZvZa3#0b99Hv5O-&U*}j0dyCZS7FCfnL1u)we zz-(UtvweY9t=Y!oBfbD;`vREl3!{iHAkOv$FxwZvY+nGgeF4n&1u)wez-(UtvwZ=~ z_60E87r<;^0J}Icf0uMjdJW=iU%(vMzJNH}7r<;^0JD7o%=QJaMO`1{{tjmQ0+{U! zV74#(c?K<<5b*^t+ZVuWU)U|;3y8CQ0nGLVFxwZvY+nGgeF4n&1u)wez-(UtvwZ=~ z_60E87r<;^0JD7o%=QJ$k?jkJyVG2oV0T5>-4SN{0&?2E0A~9FnC%N-jW5vJclw(9 zVqTfXXaDEX&*#klAk*Og$5XPERo^6A#bmp?oRcQQ{Z@^z)go+mgsmQ7Yed+b2wOA4 z){3yTBW#@rTQ|byMi|Y>*z47Dj^>*TbF`kxFh_$3TR*}!h_DSKY@-O-A#bL6!Uvb!Q{!fPRn^I8a**Fwm=7DDE=5HhU=_yVmI)qd<9N1IxZOlv_h ztp%{XOfASbtp&-n79`VJkW6bqGOY#4v=$`OT98a@K{Blc$+Q+E(^`;BYe6!t1iWV0OI# zX4eaQyPT7e``PsZa@zF*m|ZV`+4TaLT`z#miL}$M7Z7LH3t)D=0Jcu#e(Ofq+z6w& zH0lN1&#o6RM|Qn{IJ;f|v+D&gyIug>Fw)MAB5dOb+a$t#z2H1!u4{$y+5e%_!bjb@ z-Am;Idy`|EMcC#h+sDQ2Yck~ABEq&b8QOV($&i!UJhmQWAGV6Hts`uk2-BZmkoVg* z61QE1ZErI4{ScF(?>j`;jwZt#9cD7*+{t8U%i$4rgvpR|*9aR$*ls36TaGjt?nhOT zToZGD&nt5tx&8Rh=e?JHK4<>7n2OpNXD-REjl}6Ql8p1UbC^?~kz|}cBT1&uNRs_E z(oTIwl5zTsB$+-VNv6+8lIb&&WcrLGnLZ;)rq4){-PZLT^`m6BcPyL-eMXXT`ivx* zJ|jt{&q$K#Gm>Qbj3k*pBT1&uNRsJ#;cBM^nmIKlpL1F`+0=q$S__hCEr9Lka%wHe zIIRWAv=$`OT9E9ok^X5d$T+P9$+Q+E(^`;BYe6!t1zLffz{tm>uZ^|ytOz?h!p@1Xb0h4$j)m*!MvExbLV1+dM{b{rVd0^)2ffZ19=J81@u z^^Q1O3t+Yuz-%pm*;)XzwE(tlq@CMEn5_l$-PQu`XKMk>)&l0p)&k;eEuby77Qk#R zAg8SbFk1^?wia+dTMLM5w9tL_pU#=21^QFX!4K%?Gkx}7vTGx8*O}~De8>5^UXVGj z@8aOilHJfTc(Y`>UXV=J3zF%2K{8!0NOn`#mav_=UXXEgA|2DLWPk5im{ZpaGEUbE zlIeOuGF>l#VUBdYAmensAepWgB)hxoUpRmFM3}A@WX}5{ak^fRak^fhJ%hABqowjy zP79~Hb$eQbogQJjUO>)+Tuxmt$ouJfK{8!0NOo4FExKNiak^fR?A%CBT`$NuT`x$c z>jlYly&##c7bMg5f@Hd0knB>kf0(1oItE?JI9)GDc10J5^)A_!5vJ<}8Mi1Br|Sh7 zr|SjDe7)fMH-JBbPM~wi^chLA>&&>NT+Tn6 z4ENJ#B$-p6ktF*|B&R+j$vAyRl1!hGB-3Xk$@CdXGJQsp?C)J4Fn5yO+OcpR{t;pN zj3jgFGZGl)NS~2poIWE-rq4){=`)gK_eA=j&qy*(pOGZHKa$g*k=$4}zCa4;Vx)eK zb?erjkwRws0^)36SlZ?EXQVKv?F-0h`vREl3t+Y{fZ4tPX8Qt|?F(SGFMwST8Ee}Y z5NG=WnC%N-wl9F$zJNKpEYeQf7m(BT1u)wez-(UtvwZ=~_60E87r<;^_@mH*+;fhL z_yU;i3t+Y{EEDks#M!<8X8Qt|?F(SGFM!#;0A~9FnC%N-wl9F$z5r(X0+{U!V74!S z-KN$w_D!(cJ0|BHb7cDh;%r|4vwZ=~_64we%(j5pz5r(X0+{U!VBQy8-y2_`Q;^w? zA1hyw;|1n@A!ObcBzuhV1<8<8`vT?;%=Dc}1u)wez-(UtYkYy0zSGy-XZakmF?_D*b))8WP~jh zVM|BYG7(0n_!;{^r!e&L-<0EYO2zx?=Ju$*oh_EMh z%=zWquRAT!Zae<-dEDbU^G{?dKED8umCXA>$gVSU(kPC-2P2Hrz98@CeIbnVz7R6+ z3nBBq5VF6SeZaVAUy$wez7Xd0z7R6)3o@tog)q+hLddi)$ei96WE|$m`+{WXyZ42V zd0z3o@tILKx?@5HhU=nbT`Q z#$k@U79_)(@LC9&*FwndHrE7ldM$);UJD`fS_qlfLddih;0v@;R2#8(9ARofGOY#4 zv=+d~B@HdeIIRWAv=$`OT98a@K{Blc$+Q+E(^`;BYe6!t1jkhX(g(X0{URr3t)D= z0A|+aGo*uqr5VW&;D=a zwD3Z=Zl9v^Nw!&pZEiB^6=~tACd2)}e4;j4jf~o zUI4S}1@AN$PExa;~&;COTFNtUY z%+>;!t%a2$T0oqw1u$C+V73;(Y%PG;!tpzY!3t+Yuz-%pm*;)Xz zwSYOYwSYKV3t+Yuz-%pm*;)XzwE(u8x!%ESEr2yzXwNNk=`2ZFpwp(x_e1*mOrQOi zOxFvN>3RWdWxiwZ*?$?Q>jlYly&##c7bMg5f@C*F`mXB*8Fy0`hqH%dH+KwY2+3}V zFmmXzdR)fc+OaUFt`}sSt`{WJ^#T~?NY@K8PS*>P>3TsjT`x#>Po#hMM%aB3c7KHF zdV%%@(gKZ^im9CzPIc>6*9(%J9*IM}&}(%!4{@uwoVs3+Id#1tnXVTk)AfR6XGhw3 zPK2EsVdr%WT9EhC^@3!&UXV=J3zF%2K{8!0NT%xr$xtuYbENA98FzWtcj!{GDxbEJJi#$6t1i}wYY z6MgW$5HjxzAzKu=pZA3@&ig{hY+s<&VBYH|5nlkaeF4n&gP1z-(UtvwZ=~ z_60E87r<;^0JD7o%=QH^+ZVuWUjVax0nGLVFxwZvZa3#0b99Hv5O-&U*}i}{+ZVuW zUjVx|azEP_5NG=WnC%O+`{twl9F$zA%dT0^)360JD7o%=QH^+ZVuWUjVax z0nGLVFxwZvY+nGgeF4n&1+a@F^LI(dq}L$M_65w5?F)#reF4n&1u)wez-(UtTh#SI z?(bl>FM!#;0A~9F&8m5?6C%C`GVco^yF1c%?+am^_l1yoUkI7^g^=lb;UuR8I;D1P#ChzsP796-EriT#A!J?) zlI^LqAQ|qbwIJK#wGhU6EriT#A!J?)A@f=Ynbv}Ar`JLl=d}xGL0E#PeU5ni`5)C*vC zy#Qv{3wyhqlS<3-es;ZpoOZncX4eZ~cD(>**9%~Fy#Qv{3t($S`e)Y*h+8KTXV(je zv+D&gyIugZ>jlga&52PjAkMBA!0dVf%&r%}HjLbFqX^qL!ZwMpO~={XkMYW!cS)dy zt?B1;=6}?!+r7qP=7GJ*vCSfEbCd1k;`TKea&8e}Tbc~*JiuhgIgGHaB8>VvwjN~P zw}~+Q`2`ubZ6t2H2;1Id==&iiL*I9ZupLc?IXcW_$hnir(3Zm^>3V@)Zy+sP7HHw~P75cST98a@K{Blc zu>D+4tpypUwIG?+f@E3?l4&hSrnMm1-_&}LOlv_htp&-n79`VJkW6bqGOY#4v=$`O zS^&cwX)VY&tp&-n79`VJkW6bqGOY#4v=$`OT98a@0lsi~patmX6t`|qQ|m#p(8DUpN*rEu#I>P=CVb_ea zre2`dkN>=>2|mf|c0IdZc$;IJnQ>s7o9qA=XV(je+ro?kv+D)4lQNIZ56Jt``tz*9+*oT`wSRhsgbQG#Tc|t{0GVCo>LhIXuFSFd1^% z^#a%^5@**7Xv>k2xTap9rSJBZxo_o_Igiw8#(XNGg||nv0JgcA^T3D}5NB%v%+>k^AX-LB`!2iPQChjMMdkWV&9E>>rW) z>3TuN>3RVSbENA98K>(7$#lIS+1-(L-VM%aB3c7KHFdf}N)3yT6R^qm$?b?f#t zl~1zMBTUx|h&#yT)b)bQsp|#FbiE*%t`{WJ^@3!&UXV=J3zF%2L9+8B(7 z$#lISnXVTk)AfR6mzwRw99`Bi>`5|C*9($e(ZylElI+R|)AfRkqZK;l`I6~+K{8!0 zNapJW*T1>sb>s__t-BZcy@b=k50w@|=Cu$quLa2_l@=t!{j?TjTf7#+IIo3}c`by@ zYawJ_3n9~5knQwZ2;;mKLZ-DKb9ya=ab61{(^`-@y%uB~=16Nn#(6EsILx2dLdd)p zLguv)vPF^g>9r8Xc`by@YXSAbvz-SwAl z?)t7RXuo7PbS!MAJ|oFEeMXW@pOGZfXC%q=8A&pIMv_dQktEY+B*|`#^!*TrVUF|}Nyh0jl4SafB$+-VNv6+8lIb&&WcNk-et(4dGm=|pjW3Wwx)`aSW8Jzv zEy7NZFxwYab2 zwl9F$z5r(X0_Mo}1;p9D0Cq*Bf3`0m&h`bcMUkAgFCfnL1u)we{wTB{_uJzlz5r(X z0+{U!vm?HMINKM%Y+nGgeF4n&1u)wez-(UtvwZ=~_60E87r<;^0JD7o%=QJa+tfP3 zo(gt*$Kwl9F$z5r(X0+{U!V74!S*}eegeZlp;@r6IlpoJeRUy$Pk z=6xY#-WMcWUHO7!$f3t!LyTDw3=--7M zljlRQi#itO^u7=>?F+J<-WOyX=1BX3jPt%Ax76e zfZ4tPX8XdL5nn)@?F(SGFM!#;0A~9FnC%N-wl9F$z5r(X0+{U!V74!S*}ec~`vREl z3t+Y{V2*5GK-`^?^>SB)-5p`JFW`Q*FM!#;0A~9FSmO({^qs!u9>ptj9<4sr#sU3& zrqBLMwsItH6_c&ScU*7MWFK^lp6HFet|IS8PdH{|RPoKo=mb0?qZ7f5jCRNw8LgNZ z8TE2TwswTA6JhH{*xU%47h&^FhB;c#WSAqGlNtNBeuQlhVH-x+MiI7ggl!UGn|93k z<=k&NEzoW|{_}Ztp&-n7QoguwIJiJ@7f}@jJ9Yk$T+P9$+Q+E(^`;BYe6!t1**9%~Fy#Qv{ z3t($U`c6CYmjkilBKO-k z!t8nhIeoq0*8JR$^U9n@yPwLpjnl$M-MZb&WN&h8vk2SVWHd9RuYFC1oLfZLmL@|x z4=@>W4kK)<2-`ZsXpF|z1I7&ZdwPUz8)4f;*!Ctv-w!bv+Ok80?PxO0(P1V-&Yet# zw$R>dj0@NiCPU6$BWx65yO|94JJMvh-yY*^?m4_N=aJiw|9svD=;t$i_Fpo6Mv_dQ zktF+bQbj3k*pBT1&uNRsI@l4QDG z_@mPT&72yOFE}ln%v3x_!gxuhwIG?+0@!*kr`Cdu(^`;BYe6!t18k0L38SeMHj>&xt?DriD+j&-mogHB` z28J)-e&-Yml@WGTge{7&t0U|W5q8ZuYw88sjmCdIZyQ>%bLM}N*KP3Gf3UYXwwW0RwzN0VWW?0Nw??Ro)iIo!+%c7(~0bJqwPMc8g8!~N`f0rzX_1zP$}&vV^R=aKuG z`92lV!rLQS0JF8QK|~9Pv$X(bYXR-FwSYKV3t+Yuz-%pm*;)XzwE(uQIo4p?MVPGx z^xf71a@tw|v$cRZvbBIXTMKB5tpzY!3&?3}0nF9{n5_le&(;Fs8ZC66{iib_)y{O< zRC91F{d}g+{!4akB9Og*Z3o@s!7bMg5f@F7h zZ3)Nao(R+Rg3PJw1<7>1AepWgNZ+J|+X5{t;k0n7TeqjFHcEDSgz0(#aT~duXGY?5 zy&&(W>jlYly&&1yk^7w!VdqBJc^$(VllRm0f@BwTaaa$M>3TsjT`x$c>jlYly&&18 zW?L{vmvt=cpRN~VPF*iZrt1aCbiE+iqOL9BnCW^!#_4)NvTM4Wu77iPc3Pm7IsWr` zOFAw5P-y{UBH8JYIIjg6x1-X6WVoN!g1n#CLKx?@5HhcYka;bH%xfWJS_`tBUJGHI z*Fwm&7GzGZg)q)*A!J$$GN;#qjKdshEyy^p1sR9=^I8a**Fwm=7DDE=5HhcYka;bH z%xl5vYwncO0>v$GUav&qyJ&eF1T2m^t04 zY`#Aug*k0sKu+5iz-(UtvwZ=~_60E87r<;^0JD7o>;iLKz-(UtvwZ=~_60E87r<;^ zz#Q4WfH>P1z-(UtyE4*u+ZPbGC=zG;0^)360JD98R#A5^sh{H_z5r(X0+{U!J4bv0 zakejj*}ec~`vREl3t+Y{fZ4tPX8Qt|?F(SGFM!#;0A~9FnC%N-w{>%ieFys{*zFyY z^Nu;PeF1T{FM!#;0A~9FnC%N-wl9F$z5r(X0+{y&*Z0O3XxB8yR6c5`$EXHFUWR!UyyN_Bkc<^&ijIlLp!}MgzU;lAG|Mwaf>2x-WS3+?+YQbeSubk zd9R;Dd;!e%1u)wec8&M~;%r|4vwZ=~_60E87r<;^0JD7o%=QH^+ZVuWUjVax0nGLV zFxwZvY+nGo-JEyK(H$m3+?^3-`vT%@UjVax0nGLVFxwZv?vJ$7_66Gg%$VaNz5r(X z0+{U!qlhmc&h`Z`+ZVuWUjVax0nGLVFxwZvY+nGgeF4n&1u)wez-(UtyErm`mvl^e z4dQHHz#Q4WfH>P1z-(UtvwZ=~_64v-T_5EB4rcoTnC%N-wlC1En)f;(;tOE5FM!#; zuv^3z5NG=WnC%N-wl9F$z5r(X0+{U!V74!S*}ec~`vREl3t+Y{fZ4tPX8Qt|?F*PA z+ZPabXJozH6=8QrnC%O=pY01^wl9F$z5v$v0xf-~uemSfl{t@gG1bQP>E|*lH0rJHl3vur(rVPK2!)VfwQ?a?I9_#H|xy>qgkz2%8sS z^G$|1TF+#dqd|mGU&me_mwn$L!ZwVsjUsI02-_sWHtm@6%emijS|HaR|M|QloEA=G zD&DgVkCn{(Ldd)?NVbQ|>0e)v4ENK%An$iWq@CUu!kpe0LgsxTWZoA-rhP%S)B8dg zcT1!X+81O_?+am0?+YQ*z94gYUyyN_Bkv26VUD~ngv|Rw$nK8x-TOiq=Y1h$-WNjV zeIaDJUii7w0-aL3HsU9r8Xc`bxYYeDApT99#=Bd-O?PIB|-wGc9|g^+nI zgv@IpWL^s)yDzeKy%xeatp)hPMS&KucN}eMK{Blc$+Q;0_A<2~R6bQD!v)pc}d5@ zoOB{E;xI?FLpCgoqZMPsVO*|=uqz|%st8*YVOK}kA0q6Uan{re)cWzCH#Na0dEEw| z{m1$CZH{eb#(`~avIAV4T`wSR3o{PPt{2cw$~-ndvYo>S+bY8BdI4?OCK5;Yp0O?4 zMwneM;C^(DPTMNi(YXQvG z0+_7@+|Skm;u3TutyuOQrH%oRy z$8b)NOxFvN>3TsjT`x$c>jlYly&&1mk#^n^VY*(BId#1tnXVTk)AfR6w@2Ed>jfF7 z>jlYly&&1$k^9{fVfRMZeGztlgz0)=XQzclffkl@S~%5d;WU*`veP3>*9(X{$mP`a zg3PJw1<7>1AepWgB-8bRWamWspz8%0r|SjDbiE*%t`{V`uxktU0m*c|AepWgB-8bR zWS4gL!`=dhIl8Q4VOw;)Aal}*d(59DyE4Lby&&Ugh0d5$*9$UE*9($Sz0k{f<@ZK( zO3HdwZ^_=Wz23$f&YHbx`+GM3*W~2ng!>wf= %!Q|8g8CB+DrK!qOH6heAZR4DyW^Cr(sfVKDEguqpYI|8b>S` zZZHigO_BSq$vr*}l)D+va2znt;aCi&2QDGCokwFtw;Rjdwp`?vqkxsor&}YMs!Pd^P>1Wj$o&@paUflsnYpIp&_w_&0fZwa}orwKp}K zbOLNOND8MfXrb-D+bbxxT@~$en;cNj_}732blUwFeLrk({~y?|+VK%Po!qbJ-mF8p zU11O5IKNj7M{=)XCiW^GGTwuz*BCEwwO6rpCMWp1vAv3~ReKesqhBMMC@}|o-Pm3= z8Vzah7~8Alef?fVdFV>NS79H=eR(fnRq@qbM6*lLQs?zTk%%S9^N7$_+ZN1jr^ zw(qry@3tli=Xs+P_-*^A_OF5eUT zeK(>_K0UJBGHM!)tlQp(+*V$OjaRpM|CPM~>%+}$yEo9PbSr&8GeY<9Ykh{jf%-cd z(CFjWG`GvoLA&$P$nl67djoZhI_Cz8M$P>f{o(h9q&Lx<>@9#!dC!|QdwObmg3cW1 z|IjhkjCod}k)!b%3>MHmMicxWL+sz27qQe@Y8&OHeQtW;kUGt5;PR6Gx!sP^A!m9a zCEzjfoK)Rj;r7aD@=ZRh&|Tdc_PN}ZerKJabo6VQS~oeC)9IgcBH#4XXyFuch4<~$ zOp`#Tu+c(N-^Ao3%>l370gc*&Ijc-gka5r-lVo?CVG3DXo`U+?jxlxuTDh)u)I#o! zJgM-1(;!dLZ#UXb679Dv5BdSMi@lRq9?m~}j(Sor@XqB`{#GSChxFzCn09{;+@J2I zO!$k%!n%|5gcH#NpIrvciX6F)(4TZGUXe}O0e>?=Yg~^@lbOfH7#Fv4DbO`@#3|f( z&|<-VV07rG&G-z}_{{FD>%E`z2jk=JK&z(tyBQ+a?rC&_4;3T;wnFhWpq5O!iQztB z-Q!&9cBx>loBVE_k{9p7slkYv!@mY}d#8g*Hj&=_O&`QQgg!o~eTa0%wU*l+#9lML5AhDqWA~rjhtNiQADUwQyD@I>`MQvHCyd*VwTbpyr&m6exFZ170J0AQIzzN)CF&P_ zNi7)X8E(T!UL(|?&NG}VrMZ8o=NTVU@$*M9gLJU!I?~PLB%NfaTI{|^%Ul;s(TS+r zKlpjvf{7_^H@Amb)3;falAkV7O+i<<6U$gUMs0!~C5@;%A~&sQV$HKAe$q5#&TSub z&y2b&c%PV7Ws}H7W7wV=c?|gh?}*NhD4QrJ&o8%m{Ji2GoQ!Y?vzS8_{KjWngQ^?}>CagQO3;RT<8|n>B%#bH%z<;!BZ8*R)1GM7- zpAq}Y$Z25I?ku!qU2Z;zj0SWZ=4ZKW-_WMzsqT_%s7=-W%`2*XdPjLFKmAEb!+MCv zZ77~;i)SUA#8rv(H?0X;Ph;BzW#q2`HJftKs%+ZW_FFu)?J`lG_8AVZP+wM2pC|Cp zw(B~5Ljyo*-Q3DHif1rg=1xN6?Ho{-+v(wZuzYEa^17P#df_bYRSi(KtS$zCRhF2go!fkHXw%Y@nJ-mC8;uPklYl4T_eGO?#aM~EU zdE&nK`;Wa+#MyXF@vnjVbBgbd9RO!U-`DUA!0WtODQ>KJ5_P*H+7@l+2^+b_yLM3f zWgc$7$iuB3S9IG0mjYd&22n?lr=3$Cg$K~FY||uVz^>Q~Fr{<8)UMH`u^)0-5g_v$332=%qxt308Sq&1e!^`WIo)-drtO9lJ4Am+Zr>{0x!LVnc&5P_hV+}Rqixo!2(!8oKtnT>@jzSJU8g#%VW3 z-1hdKhTjiq1SprkroFG%GmQ@m8f${C+FNUfLg*+ zFUJFWl+dX3NSaCQ<4tF%6}vDa zKhT~TbUsb?JsM0=5BS$4-yc3Q-FTf+dDjK%1Wzdca=qa7$MeKr+&;eVkaBby=YyHk zI2e14>D%sA5PuEDW6WAjJ3S4*Y;ps+HQZIkz)5s6T>)w1Flg47e&7s|ppG(o-q(yEU?_<86_x?O;_6Ot@ z8s_SGA?>de%X8Cmr%dn9Q*;Y{8Iwn2g!{DDDh*RQ`bFb4Z1#n=J%&F|O}Iw0KR?{{ zIKQ^#$GA~6`w;(b%U%APMtX?Brtj!`8f^YO8sHh$WK-ipk$CO0JH_i<{NFCufQC`z z9Zn7@C(?FxIiDST)(26SPhyQyYklrX`Y*a8HF&_^Of+ZiX}70xug5hwwjc0`j8bwS zSBN9}o4y9L>}Ub7pASTRKj!ChM;t%JPjQNo)6&CPm$z$mY`<^?H#Met&5`@VV=h)c zd;24(F6Vs*`yOkFDih~h)JB}u$tY-W>A1pO8cYm&xE^QF2eFUPw9ry_CxLd4<#poE z0?peYXpiA`V12qaG~-13$e`UvaCYVO+g%}_>rqSPS)dztUOCuxu#Zf;1xNSey~+0- zJ>Qs~1MuN})a3HlwD%3q0yH+0luGEJJzaB7T;KdX({nv~J$RDGiqzEB;9gJ5nbjxH z5&h=g`Das^I$9SdxhUe=)l3ts~IECDb6Ew zj-i^u4Wb|SR?pq@0+t{@|LevC_u*XXJVNQ{*R&hHZoJ!m{QLWeAIIhl(d;7K&ZBAy za^i0Dkk7w-bhlHq@1%0NbnTz$Hj5!I1n9Hvi^|~UrkNwRmT5WDXwjcj+y?pl5Bn;Q zarF7$h!VJcLAN_{h7fJ%38NJJHK2A-`(>VHCAX`}udG?klK^VC>%oW(5+ZF2C*`s@}Wx2M=StlR*vqqXCiIjduG~k*{>m!FY&9v;_^^ zC`r9@?zrA*dJsh;MJE6^JoFR#LR~P`TR=Hz)yVfN(L&<$cgsjUpv{?rw$&m1ruR!y zMjD%hu8qAfpnd(_JzL^l@rOaC7gBq0pO*7|h<5#+ZeH-CNpJ?uZEEj>Yk7p=FoPjq zJ)Gvw()7Fb1^NznujNN2*}R>F|OV7eeN^=?tF;8rw)(W zgSLBJhi8n(i_Zb<4DIU!cwZ#;ER}=vE#KsxpxL6YX--04?hpPi|3%61ERffOt^3K* z$ZazzCBQms$EAA~81$#{MA@g{wSPG-&67Zp$7N{yLjA&=H~koJcU+GK<6WZ8 zjje;m6*({GaDVa)it#od1p4(oRx9BBi8K=Y5PbX^%7}GL4WbvK7t%FjYrWZ3(T{Gu zyZKQM0olV?ls5&pe`a&VJCNXD-t;tGsW@cgedB zU?ZaaqVt&cN!IlA$Q=!u&6Cy!{hFTcjtlM3IL~=B+=J&A-b+ej7jQd2&LXUf#bY`9 ze{M}Ip7X_XzIf04U)cNkY{ivRcOK>{hH6;${g#cr4vtsSxXPVu&jxKgYKHcOaQF%{ z=_`0>g>ygWpLX0miGuUUXW!0i*~$4i!>DN|u4U(T=MZ`Ymw!2frWUm|F5h>&#&r+C zhg5EjUBhQRcD?Q?6dV12?R_p7>v)YT9=f>FhX;YmQ1=WAYj-PuaWbdwQUG%Y&R?2dq@U!yP&M4Xg+gbj@-Wn!RL;) z0_9T~_hNbao1$IoNBCx%{%XH4*Ss#!p7CdEV|8rv*uX4foAWKVWvq^+g-Xx&r|51& zxz70-*FJYj8qp&SdIn2hSfiMq8J<^7(+rGwq2i0%k2;pyKT{ox2UPu=8>k3@G^5+8#Z$TZMau?`I-?WVF8aQ7kAlR zi#$$8l&O18HR3_1=g#hn`w9)?o=U@${Mm6gGz0gTO5}AK=DfTwI0+9Z<9NRI-d@8> z!nEFao$$SRZfLA2qkCG=W>(LhxzR)ZgYLv0{oDFuZuXu30^O!S{a`ipb3VVZFgb(BzLL}r@wh@pfB#{n6~}yHO}g2k)_2d>xffzz>NGxb8mBgMZtOLY_n{6ZyXVkTPS2djdo-`U2lnW8pLQB^ zJ71&42`z9uhvt10ZE|;Now{5r6C-=DNwbEy+YeS&C{?PX^eg2Ey+s;4j?mYJ1i`-FY zYB<@A1CRS7(R;Z~t)IG+)hz0TKQfDb$mvn`QOnU?3tw@1WHq#BW-Ui?ZRoenky%{R z-uu7fx9o=)gHDg!&sI^bzc%_E@TzVXxHHuM%YK@PzB_G-o{xEGvy+Ud@3fCh(_ihE zn5Tc&H;1&pjOlVfUqgQ;=5tGP4Yw0|qvbLfF67owU*J>hzyCLV6MNIRZw?mwrkh>7 zHVF^%u50KN`~QH0+Lg*e<@c3hd~tSkC*RgZ`0w`oNMY=iR03hK^WoRM1$41@{{Qk$ zoNcGwnPvQ4Rb;%hQPFll6WE{^Ijfa1bnt#K>z;oF)qG2lg^sGfYHJsK0h*r zf1jE54aa$Zp#pIB6ko$v4UfU+C)+&Db=ZTNTy))l*3E$TA)gQL+;QH;8M&@(vQoJ^ z7#u@eoGYx7E{309p;NOLaNR|(D<8u-M@<`XHg2xqmFw~~7al{GQh)vZk;~_El^i#7 zET`Kq-CcFwMhzU$XVY3H!W8L(fMv2sgNm{_;xnOc)IL$*( zZ?E<-3*EkrCllRxwQ;VG{Qe^P03D_yh-LqF)nFS#_rjfyX|Cn-4%+UX2ylzgDn2U? zxCdwtUFXJn$bCdjF>Cg4NG%@FbU2^s=7Rf3W5#`KXN}$iLr(;Fpogwbn>vQ>N?t2s zxR)x5XVN{yp!MJey$yE5&feC=b3fZ?io*SHw|0)2_KPcd_3^*FM1A0145=UOcua8X zxDN{#wm#b2tE-oIcU(Z@IX%7b7~W1BP4S#jEVrHLLh9(FLu*4l);u~+Yu)4wTRluQ z*EVC_Y)GtKT+7noHPhy_wbouuE0F`*d8CnE*mLV}Olt!^7Bp)D``V0Jqv?j$s5M>8 zL)Ds&HMQpMbPV^J?$fTV0jm;iZ?#6d4yYgPc>M2a&HI*{Jyy~JTECsIwYms>jaCSW z!Clylb(>3TjfR*qLOTDR*4#QA)0$lS|L3$udr7FZf7{o1_UO|&|C-j?;0LWW4tOMJ ztvA`j{HrtMfcGgna}meBYMvo^r*hXVX!7tHb_ds4qzHe8qy^7U>gWvFJnM#E;H=_K zrQ>HvJ`~Z3cY^jk-v)h#9FYld&XIU+p;M#tHM%QnZEAx4d7P=STv}^x=jNjgeNYTJ z+kQ9ubL)UzUY8jG(-cDO?2)G}q*v0^8Ili8#OSQkjrEMa=FX5b^aC05;C; z+mlKAdA=zQn&ee6q6STj7A#mWaChW;@@Fe?&t_KLxs}%6a4KSPfE9P+)aGvu^8ztCB+X%F>`SIYuAL((&_wK*T4UK`O`rFZNi zH(sB1d%iqF4(XCkH`v!^^tD!N)NUX15Va;^2c%NogRxV}=P+aoq-xssJFW4xqfl!D zs@J#&-E|Xmoq2|w#NNQ1_wE_%HO@sD2lNv30veZp-`9G2{##$;t%og??&f_B?Qd2J zUnzWTAbf4$`bn*W)`sKr@gMcIN08Q9eMqgbibk|tcz(SWwbpoA=|UFeL)2QE)7Bd2 zb(u%}cbgmDFcq93>5_-4wSkWrHfz_tYlr3?`$*?+bo3cb(be=d;@|wlj#j<&#F@3G zeQnCt8Yk|w#(U+ze1;@(yJWoj#TgR&?}Iu+Qsj^hpY;C*gC^1Zw_5Z4Y@S6fpz&b2 zEo?7N=vvm0+f&*nmaMhrIV2@_S@}91_lM~W`F}ub|9M{<@lZSc{vYsT zU*n>OuWi@h3|bqy6LxbQ=ZyJUtD6V%HPXt6hWcUmHS86(uaVZMtA0F&+`0$vYpyQm zx{P(occdcoENtFu1xy` zd+M-xwn%$RTRF5(KG?a*Tit1cP8@h2-^1~lDYT3A?w-wycFiUaYg zmG{r)UheuSzR#mYyFA9c-}87q*w)bnd7Em5~t&y*tXxP}l=`j3Eoa0~i z;4E}UzANu8?Z2JC|Cea^Jnn#}lJ0@O>HUB5Ufd2BPY<#A148m11^vIOEZcixd&Srt zT-*6yAQ=p&IXx$L?|tWQ=!;ey<)Zh#Q+to0by@^@C<9u~?dCjFh~r3Vi2tIsy2{m&f#G z$$W5E**BVC>Yp1Om#P^bKTplL(vY}Si3}7(H=}mYuSveUpF6CPmE>J%H6vE86PlSR z3Uv2&DbR`bPwEHO9Iu7$tiz)^v0%aU)L=;WAG-z~-kb~Eb>!ZBB?g3<)dHi*MJ(~*8;z%&;82?nk8gnaq z!4&I)e@#;At`Gd|vFSrIdh}Pf2@ZyI5B{aP!0lh`A&WhPY>d_ut#F|&`14{9X*Kr0 z>LCl9*Tp?##NIJ*+Zg_6JcRcac;%Rftlu~pZ%{LP2<=ymX-vDn2hD%+kMT9oXN$!i z^2qTJUN>DGGCeg-o;7U!lG#`tGMJp^12i3l2h!jF6Lm=2j;0QonjZXj>JZcix}NDQ zcox|)nf74BOP6+9`jZ;szsSoIcjn^u$~uIP2s||HK7{`0I)n-(`dk!ChOVVtI9IjT zF58`a-RYz`Yg22c=tMQ5qnL{uBDC=U#K!6nil_OaNkanVA&7sVI)roZ&3zWAoV^HV zV~p#At3yP+IG~)Ix%r}eq7FgZVs(h?8%-3=ksBSCsu>@zF+Q=o%7~6ZU+6K>Vu*^?RO`0WRW!qwP8fTt{pB7r}AGk*Juy-X}l)k|4%L&U2#vo z#;8d~{QuiCz`#>JKkg5qCZQG$r@2`pYAS!xpY*H!VnaYpf_6Ug{iGc$qb3=RxSRAY zY5HTVCh>h6uP4U-zkVrX)cPeq*1{K0t(wd69J(fPIcRZUeKuJ*h1f^NY7*K=Xcwlh zp|~cjNoXn1|Fzc8C6sGxrkaFO(mzVhYr9$Av>xI6@tTAlVq+9ZrbF(1^EFdVvY^L1 zLi1dU{e;$+>MNeIuonNTeu8#%enNBEu5G_pX&)G00b-w;@wwK2&QB%-KjGn)a~uA9 z%ZvSl>vJ(rtg~UWMCq^p1wWZI{Dk%!wNEYf6aF_zX=%{Nhy_B!L@Q>@ds&C$Zo&mn zw-1guMCy{qpI$`~&$hZ#M(ZK;v24~dzIgAKXMsnOe@wPd_qfZm#3_jfkNl(Qg7UAX z_Y^aBjvfr?dJ?1?^Cr@Hn)NJ;J$cMG=&1Ss$2ZW9&NrwNk8IyqT!*-QUYv*9XJQZZ zddUB_Z!E4uXt(;0J=gl*s6+5Ph@AnizE1Q1zb|d@(hmm@;34FM{A-e|;9;#n9xd-h zXrDh>_06NNkNO!KpQ9c}o^{KaRMhofDK@A1gmPZ!U};`vzo87x$8*1vPHSRae^ zu~;9A^}#Rd(i>s5Es6I?`dap(A$@ClF zC%qMW`!wIDl;^F@_Zj{C)6MreeScc>eL?SzxxM+mq@Vw@`F`o%WHPt6P4C6@ukgLP zcU152-eJAx_g+Ttg;=Zi+}_&s_XhO()&{+e=)0YX&!@W{O#D##e$QTSn-@>N`l!PX zd;ZHN*Lv>SlN$^+*l2R+qvr2(@XHQ8is*>azJM+r(WTFJfk*aUO2cv_-J~~q@e2+e z?fL9|4nFdwFF%t0`zX5bFoG|n{72D$9(vfzUwANm^N^A}q>EqCTff(P1^s?VQQOdH z4QMo;L*r$S$u@(@=e$~u1I-$L_Kd#%`R3k+_-_2q_1;VWozPVo%~L^@TGgxR9gIuR zbAhGklRC@L>$(%YWqXgM*J~d~?+JT6y%+xp^jVG-=u;Cb(tEsCrhiFuvbSn)wchOB z>b*63b9!si{H@(vr?+lzZf_pV+IrOH^=TeAq?z2fw@GhPT1!u%)w+4_sl6?FTlStt zp8(scw>9Ah`x+x52ZJ)^fnZ^zyWRlckcSlVy^}BooQ9$zzk{lE)>p zlE){@Cr?P8n5>XIDOoXDDOovLC7DcCO;$^0C#xrGBy*BAleLnylXa4Hlex*fWPY+< zGDy}>Hb^#1HcB>5Hc2*3o}4@-*(}*Sd1|snvSsqLWSDG~Y@KYAJU!Vq*)G{Wc}B8B zvSaehWT#~3WS3;uWR&cd?4InA?3wJ9?49hB?3?VD?4KNv9GE;SIVgE{GL;;hJSTZ> za!7J$^1S4*oLu zcarZW-%Gxq{2=*Z@}uO~LsTBcQ6r~Pz^bjft7bm?@N^fBo~x@`K`bh-3#>8$ke z>GJ6l(kG@Xq)$p$Ojk-*PFG1M(^b>e(%I?i=^E*rbj@_FbnSGVblr4rIxn4{u9ptd z_0tW~4bzR%jnhriP17f*Pf0gRH&36MZjo-8J}n)lTcum4+oVrVw@tT8w@;su?vU=7 zJ~Q1Z-8tPQ-8CJhyQRCQd!&1&d!>7)`=tA(`=$G*2c!q4&q@zUpPf#n2dB?TpPL?% z9-2NcJuH2GdU$$7`hxU@>5I}M(-)`H=}Xe1(wC+$OJAP8B7J50s`S08scrEgE)k-js1SNiVsJ?VSX_oeSoKaeg=KbU?f{cw78`jPab z>BrKKr=LhanSLt$bo!a}v+3v3W75y3Ur4{0ekuKO`jzyn>DSV)r{74wnSLw%cKV(4 zyXp7R@25XVf0+I#JvKcq{c-w}^!W6I^rz{G=}GC&(x0clNPn50oSu^YD*bi(oAlK5 zx9Mr=>FF8ind$G+-=}A#XQ$_+=cebS=cgB>7p51b7pIq`m!_Acm#0^xSEg5`i_)vp zKcv^Be@y?BUYlN*{yDuqy&?Te`q%Wv^l#}+>CNda>EF{^(|@G5rMIVdq<5xwrFWv`j?5OOe*~_w*XRpX!nY}7|b@rOk*Jp3Y z-k2@O-juyLdrS7#>}}cGvv*|g%-)r~J9|&|-t2wZ`?C*Z3$qVqAId(Q9i4q7`)KyD z?Bm%dvQK88%08WaCi`smx$Kzi^Vt`&FJ@oLzMOp}`)c;J?CaS#vTtVJ%D$a_C;M*p zz3lth53(O-Kgy2Hj>~?W{Ukd+J0bgNc4Br?_OtBg*)OtRW+!K-WWUOOo&6>|HT!LL zT6TJNMs{ZQyX^PbS=rgyIoY|{dD;2d1=)q!McKvKCE2CfW!dG~71@>9RoSBK>g*5M zHQ67tKV{cu*JXdsuFr1B{*wJQyD|G)c2jn9c1!m6?AGib*=^bF*&W%P*Gm&+fQ&&nU4FP}dl ze`3Bu{-k`xe5HKle3g7MUo~GXpPjFsuaVEm*UZ<-*Us0;*UjhV^YZ!mdifw)AC`yRlaq;P5$(J+kCrx`}`UC4*8DxGxMGD zo%3DtUGq`CTfTd~N4{siSH5??Prh%yU%r2SKz?BUto)$-+4)p{aQ>Y9x%naaq51Rj z!}90nhv!G+FUVh*zbHR4e{nvYza&2@e`)@*{N?#8@>k}s%3qzoCVy@Iy8QL|8}c{i z3-UMRZ_eM6zcqhb{`UMG`8)G>8m+~*?U&+6ke=Yxd{*C;b`M2_K=ikY{n}09= ze*S~}hxw24WAo$kALl>GkIzrYf100|pOpVB|9Sq4{FnL3`6>CY@?Yn_$xqFHo1d1S zo}ZDQng1^TeSTJcc79HNZhl^VettoIVSZ75aehgDX?|ILd45HHWqwt@D8D-YLw-&E z$NW$EwfS}VpY!YU8}h&8f6Z^q|CZmB-<;o)|2@Ao|3`jXetUjLerJAHes_LPes6wX zet-VYqE{qET4Y6D6h&E7MP2lZC5k1BrHZACWs1iX6UDN{V~gdA#}%`R#}~^NPbi*P ztWZ3uSg}~CSh-lGm@HN;Rx4%~s~2k&bBZ;KwTiWib&7S1xy8IzSUjsZsCafURUBMAr+990NO5TKyyCFp z`NiSI5ycCN7Zxunjx1hWOcyUHjw)VSysUV6@rvS=#jA=}7q2N^TfDA#ees6kjm3iE zO~spww-j$J-d4Q5ct`Qh;$6kNi}w`oE#6nWzxY70u=rr{q2j~E(ZxrKj}{**K3;sH z_+;^^;?u=viq96GD~>5XUwonXV)3Qo%f(lUuNGe`zFvHz_-65~;@ib{itiTRE52X+ zp!i|&qvF`&xZ=mfPm1G<6N;Y}Cl)6aKP!G-{G#|}adL4=@vGw3#czsJi{BQf6{ienU_UbmQ`7o{c?$N$#SW3>2jI!G37+LZ28!7x$<%4tn%^Y^5qlCCzdOe zPbya|S1MO7S1BjURm;`N+2!ix8s(gF&2p`B?Q)%R-EwX@ubf}5R}RYc%MHp6%Z3(ZmHU?mln0j2Di123T~3t;m(MAmTOLv#T0XBltbBfX zczHzmg7Sssi^?O*7njrJOUk3lmzFOpUtYeVd}aBn^3~;Q%GZ{!D_>u}p?qVxpnOyL z=JGA&Tg$hVZ!h0bzO#H+`R?*P<$KHbmG3V$&{%FmZyD8E>Ksr+*JmGZ0Q*UGP#-zdLXeyjX;`JM8+<@d_(mp>?f zSpKLywmh!Km*{B`-8^3?LT5mKT*5mzR{6mY0>6msgZmmRFUF%B#yil-HDhEdNwq zTV7ZGxxBu-q5Mnv*Yd{lZ{~Qrg}^@Q7v0Nwpy-wTs5nDe6@V_gzAaa3e}UU z6|0r1m8(^%$!gVVwQ6>?dbLJ1r&_aGt6IBSr&_m~Tg|KHSL;=SYW-@1YQt)yYU65? zYSZe;)l;g?s?DpXR$EkCR!^&j)mGKk)i%}Bt8J_8s_m<1R6A5VR?n<V4Jws}EEQs}EKmsyX_>D)fcKSR$r>VTz#ebYW211>(w`^Z&u%`zFmE%`fl~T>ig9XsvlNA zs*bIWtA1Slq&mJjq55fcVs%pWv+C#7FREWwCs(Ibzp8#+{iZs#`fYVub$WG1b!PRu z>i5-I)!EfK)w$Jq)%n#0)rHkX)y35%)uq*C)#cR{)s@v%)uQU^>JQa5)gP-rRo7P6 zRe!FouWqRRQvJ2MvHDweQ+0E7OZE5a*6JVCZPo479o3!HUDe&yJ=ML{ebxQdKkHtd z)M=g7d0o_HUDb8nua~Hote2{nu9vAFQ%}^(){m{1s~=a-svlo3Uq7LKV!cBBq@PB>iPA0^`KtA-k{#F-l*QV-lX2N zescYkdb4`-`lS4WAy>-1!{q%az(SI>s{(y>ruU1 zy?eb!y=T2wy?4D&y>Go=y?=c`ePI2p`k?yR^;CUu{ha!_^&$14_4De(>gU&o*GJSZ zs9#vWs6MiOaXnqXq&}*CY5lVL<@GD-SJtnpUtPbZer^4_`t|i2>NnO4>NnMIuHRC> zwSHUu_WB+5JL`AV@2=ldzqfv0{r>s`^}_mt^@r*Y*GJbMsXtnOtp0fYiTacEr|M7F zpQ%4vf37~J{(Sv~`iu3K>Mz${slQr(t^RubjryDQx9V@#->JV_f3N<2{e$|4^^fXf z>*MMl*FUL`uTQ9dTAx^-RR660dHsv}m-Wf@DfO@FU)R5>PpyAjpH`n^>y{1 z>+9c7-~t#7RVR^L?LT;Edvy}q^nM}1p;dwoZJXMITP@&HGR7Z_(ef|Fr(Fzg2(h{xyGundSbn>-dG>3FV+w1j}5>EVuP^3*br?(E*yN=z!Zeq8v z+t?lKE_M&Qk3GO1Vvn%L*c0q2_6&QDy}({#udvtH8|*Fi4ttM%z&>K1u+P{R>?`&S z`;PspfzIEhm@jWallb2yI+xQI)* zj4QZ`Yq*XZxQSc1jXSuD1Kh)X9O40v@DPvi7*C0(!c*gE@U(b3JUyNP&xmKjGvitC ztavs&JDvm2iRZ#|<9YDBcs@KoUH~tM7s3nUMew3{F}yfl0xyY|!b{_2@UnP0ygXh3 zuZUN|E8|u0s(3ZLI$i^>iPyqw<8|=5cs;y6-T-fiH^Lj^P4K38GrT$80&j`8!dv5Q z@V0n6ygl9l?}&H8JL6sOu6Q@RJKh8DiTA>L<9+bHct5;9J^&wx55foIL-3*aFnl;Z z0w0Nw!bjs{@Ui$fd^|n@pNLPwC*xD_srWQ}Iz9uRiO<4k<8$!2_&j_*z5ri{FTxk& zOYo)mGJH9{0$+)*!dK&K@U{3ld_BGa--vI*H{)CIt@t*4JH7+oiSNR9<9qPE_&$6; zegHp+AHomgNARQgG5k1w0zZkL!cXI8@U!?i{5*aEzldMLFXLD6tN1niI(`GciQmF+ z<9G18_&xkS{s4c7Kf)j5Pw=PsGyFOJ0)L6W!e8TW@VEFo{5}2w|A>FWKjUBUulP6o zJN^UziT}cX@lzVkNPPSWT=U))MQ8^~45ZBe99tOl%>x65ELF#13L7v5VME>>>6N`-uI- z0pcKWh&W6fA&wHqh~vZw;v{j3I8B@(&JyQ{^TY+>B5{ehOk5$Z64!|9#0}ymaf`T3 z+#&7~_lWz%1L7g^hZC!Mq($1KL%Jj&J<=y38IXt!$%u@}lw>M0HJOG?OQs{!lNrd2WF|5*nT5n_HG&zPGOO7MQlM~2^soJII~nE^;@yhullBIqPL-faQl+TUR2ix)RgNl8RiG+T zm8i;86{;##jjB%7plVXJsM=H=sxDQJs!uhb8d8m@##9rkDbPPL#~Qmv@gR2!-- z)sAXUb)Y&@ov6-K7pg1Ojp|PIpn6ihsNPf`sxQ@#>Q4=z22z8l!PF3HC^d{4PK}^O zQlqHR)EH_kHI5ojO`s-Hlc>qm6ly9pjhar)pk`9DsM*vUYA!X8noljD7E+6-#ncjN zDYcARPOYF;Qmd%d)Ea6nwT@a(ZJ;(%o2bpy7HTWCjoMD_pmtKbsNK{aYA>~q+D{#z z4pN7x!_*P#D0PfFPMx4mQm3fX)EVk5b&fhuU7#*fm#E9s73wN=jk-?Vpl(vPsN2*X z>MnJUx=%fz9#W5}$J7(*DfNtcPQ9RBQm?4j)Enw8^^ST^eV{&4pQz8&7wRkZjrvag zpng)nsNd8d>M!+=PCzH56VZw3By>_b8J(O?L1Q#d6EsOvG)*%!OLH_&3$#c}v`j0s zN^7)E8?;GVv`ss-O9R@YeHzjMjp&e$=$KAPr=nBSY3Q_cIyya_fzC*0qBGN3=&W=$ zIy;?%&PnH@bJKa~ymUS~KV5(>NEf0D(?#f_bTPU(U4kx2m!eD4W$3bWIl4Sufv!kb zqASx?=&E!zx;kBhu1VLTYtwb;x^z9dKHY$BNH?Mz(@p56bThg+-GXjOx1w9qZRoai zJGwpHf$m6mqC3-F=&p1(x;x#2?n(Eed((aBzH~pjKRtjRNDrb1(?jT?^e}ojJ%S!d zkD^D@W9YH;IC?xifu2ZDq9@Z+=&AHHdOAIWo=MN5XVY`&x%51GKD~fmNH3xn(@W^3 z^fG!my@FmzucBAeYv{G~I(j|5f!;`OqBql9=&kfNdON*?-bwGGchh_5z4ShMKYf5c zNFSmP(?{r|^fCH4eS$topQ2CGXXvx^Ir=<(fxbvzqA$}|=&STK`Z|4szDeJrZ_{_^ zyYxN!KK+1xNI#+<(@*H9^fUT7{epf;zoK8$Z|Jx5JNiBSf&NH;qCeAL=&$rQ`aAuD z{z?C$f75^Hzw|#Q0h5qP#3W{tFiDwYOmZd#gE2TmFeF1UG{Z0~!!bM~Fd`!{GNUjm zqcJ*TFeYO$HsdfZ0~n9-8OQ_-VnQZjVkRY%ib>6+VbU_`nDk5rCL@!H$;@P7vNGA2 z>`V?OCzFfG&E#S7GWnSNOaZ1KQ-~?d6k&=o#hBtu38o}diYd*MVahV)nDR^orXo{` zsmxSisxsA>>P!u$CR2;4&D3G)GWD4HOarDN(}-!zG+~-D&6ws)3#KL0ifPTXVcIh7 znD$HurX$md>CALtx-#9E?o1D+C)11R&GcdVGX0qT%m8K}Gl&_?3}J>c!C6mfCNqnf&CFruGV_@E%mQX1vxr&DEMb;1 z%b4ZN3T7p6xy)Q)t}@q{>&y-2CUc9q&D>$` zGWVGK%md~j^N4xOJYk+P&zR@T3+5&Bih0evVcs(DnD@*F<|Ffo`OJJ_zB1pK@5~S8 zC-aN>&HQ2hGXL2BrwVK$HZhxoP0A)?ld~yUjKx`kC0UB4S?2#0GRN|)z>2KI%B;ew ztj6lB!J4ea+N|?`Tm@K<^;yUUEMh}8Vq-QXn~F`%reV{v>HhC=Gq4%iOl)R03!9bA z#%5=8usPXWY;HCWo0rY^e;r+bEyxyP3$sPoqHHm?I9q}($(CYEvt`(_Y`OnQjS6f< zwh~*Jt-@AitFhJD8f;Cr7F(OG!`5Z%{m%e4U>mZH*v4!Vwkg|;ZO*n}Te7X#)@&QL zE!*z@lDGrgk?q8GX1lOm*=}riwg=mj?Zx(H`>=i4e*a@E1K5G=Aa*c2gdNHbV~4XN z*pcigb~HPN9m|em$FmdIiR>hHGCPHx%1&davoqM4>@0RRJBOXi&SU4Z3)qG1B6cym zgk8!mW0$il*p=)mb~U?(UCXXx*RvbgjqE0NGrNV|%5Gz~vpd+G>@IdUyNBJ&?qm0} z2iSw`A@(qPggwe0V~?{Z*puuj_B4BjJ@D^- zdxyQt-ed2x57>w7Bla=-gni0BW1q7x*q7`p_BH#4eapUM-?JaskL)M*Gy8@8%6?@W5=`-lC@{^JsG3AsdEVlD}nluO1X=TdMOhjRo+aui2%499XD$8!QFauO$V z3a4@!r*j5pau#QE4(D=!^EjV_T)-hN2;a+$cyTox`X zmyOHL<=}F1xwzb19xgAJkIT;$;0khuxWZf!t|(WGE6$bRN^+&R(p(v?ELV;z&sE?m za+SEsTotY=SB|8}m*0rhGHLIp2bB$+zNL^KJOH zd^^59-+}MQcj7zqUHGniH@-XHgYU`r;(POb_`ZBUzCS;JAIJ~l2lGStq5Lp@I6s0P z$&cbk^JDn2{5XC*KY^dfPvR%@Q~0U;G=4figP+OI;%D=7___Q%em=i|U&t@w7xPQ_ zrTj8}IlqEm$*=cIDdja$)Dm+^Jn<8{5k$Se}TWqU*a$GSNN;^HU2t(gTKk&;&1bJ z_`Cc){yzVJf5<=LAM;Q6r~EViIsbxx$-m-X^KbaK{5$?V|AGI=f8sy$U-+;5H~u^S zga66@;(zmh_`m!=A%T!kNF*c{k_btKWI}Qwg@6gTKnSEj3ADfntiTDpAPAx$39_IF zs-OwFU4fw`1|g%6Nysc@5wZ%| zgzQ2NA*YZ_$Svd%@(THc{6YbtpioFCEEExn3dMxtLJ6UyP)aB*lo84b<%IG=1)-u) zNvJGT5vmH+gz7>Kp{7tvs4dhH>I(IQ`a%Ptq0mTZEHn|C3eAM(LJOg#&`M}6v=Q10 z?S%G12ce_TN$4ze5xNT9gziEQp{LMG=q>aS`U?Go{=xuZpfE@nEDRBb3d4lq!U$oc zFiIFLj1k5PxA{f24SPHN!ToG5w;53gzdr(VW+T5*e&c4_6qxi{lWp^ zpm0byEF2Mz3de-w!U^G|a7s8WoDt3n=Y;dZ1>vG_Nw_Rr5v~f?gzLf$;ihm)xGmff z?h5yW`@#d^q3}p}EIbjO3eSY+!VBT0@Je_syb<0C?}Ycl2jQdeN%$;$5xxrFgzv%+ z;ivFR_$~Yq{tExZ1Y$xlk(gLaA|@4+iOIzjA|~P@A(A2`(jp_WA}8{qAc~?S%Az8w zq9*F1A)2Bk+M*-6A`m^%7oix4NDReDjK!2?(E>yNf-qnMjR`S6UU1a#EIf0ak4l?oGMNer;9Vhnc^&Qwm3(eE6x+=iwnes;v#XexI|nk zE)$oFE5w!JDsi>AMqDed6W5Cy#Es%6akIEZ+$wGpw~IT(o#HNWx41{#EAA8biwDGm z;vw;{ctkuZ9utp?C&ZKDDe<&;Mm#H?6VHnm#Ear3@v?YDyeeK3uZuUto8m3;ws=Rp zE8Y|Dix0$y;v?~~_(XgvJ`IzMDU>29mQqToq|{OxDXo-FN-t%QGD?}G%u*I9tCUU3 zF6EGNO1Y%mQXVO6RD}xOlmH*kXlNuq}Ea!sjbvb zYAEF7=RlO1-4sQXi?W)KBU!4Uh&(gQUUI5NW71Od2kYkVZQsx(cSF3pf;O0%Td(i~~7G*6l@Esz#Ui=@TU5^1Tl zOj<6jkXA~oq}9?IX|1$QS}$#oHcFeM&C(WWtF%qpF71$ZO1q@p(jIBAv`^YE9gq%6 zhor;O5$ULOOgb)|kWNacq|?$F>8x~4Ixk(2E=rfA%hDC;s&q}dF5QrBO1Grj(jDop zbWgf3J&+zskEF-a6X~h+OnNT8kX}l!q}S3L>8x zO24Gv(jV!s^iNJ8CzKP(iRC16QaPENTuvclGA$qSPAR97Q_E@Ov~oH*y_`YLC})y0%UR^CayB`; zoI}nj=aO^FdE~ruJ~_W!KrSd3k_*d4zBoJ-NQzKyD~Ek{ioS1ygWgkC{L0n%Twg3@-%t6JVTx-&yr`$bL6@5JbAvnKwc;>k{8QMpf8@XNKP7>ZP)VdDR+1=5m1IhCC53`1xI!qTLMgPuD6GOMydo%~A}O+>D5|0< zx?(7%Vkx%bD6Rq&Pw^F~1PW3@B~oG~rIJcXt)x-XD(RH;N(LpPl1a&|WKpsz*_7-` z4kf3OOUbR|QSvJJl>ABorJzzsDXbJxiYmpF;z|jnq*6*Lt&~y9D&>^&N(H5&Qc0<- zR8gub)s*T=4W*`1OR25YQR*u7l=?~orJ>SDX{W*9WuP)h8LSLZhAP99;mQbQq%ukw zt&CB|D&v&#$^>PiGD(@NOi`vP)0FAT3}vP=OPQ_AQRXW1l=;d6WudZ2S*$EkmMY7X z<;n_WrLsy{t*lYjD(jT>$_8blvPs#jY*Dr<+m!9f4rQmZOWCdLQT8hPl>N#9<)Cs% zIjkH}jw;8L5p9<)QLOd8|B9o+{6j=gJG^rSeL7t-Mj*D({r{$_M46@=5uud{MqC-<0pl59O!w zOZlz*QT{6b)C6imHIbTFO`;}Mlc~wo6e_0TDxs1prP3;+vMQ(Ys-TLhq{^zIs;Z{y zs-c>yrP`{ax++jT)mNb!s7MXfNR8E$YAQ9gnnq2lrc=|a8PtqwCN;B~Ma`;aQ?si% z)SPNAHMg2a&8y~9^Q#5af@&ePuv$bdsuoj=t0mNuYALm}T1G9amQ%~C71WAqCAG3z zMXjn&{r)S7B7wYFMEt*h2k>#GgahH4|VvD!p!sy0)bt1Z-)YAdz1+D2`wwo}`y z9n_9$C$+QMMeV9~Q@g7@)ShZDwYSO-gf$AW2usTE?st!|!t0UBr>L_)z zIz}CUvl)S2omb+$T3ovY4M=c^0Uh3X=8vARTEsxDKP zt1Hx%>MC`$x<*~Au2a{m8`O>JCUvvAMct}yQ@5)-)Sc=sb+@`l-K*|X_p1lggX$sm zuzEy2svc91t0&Zx>M8ZKdPY5~o>R}O7u1XDCH1m;MZKzCQ?IKx)SK!p^|pFPy{q0+ z@2d~ghw3BsvHC=PsyMQlN`bK@LzEj_;AJmWPC-t-XMg6LNQ@^V})Sv1v z^|$&*{j2`d5@-pvL|S4kiI!ALrX|->Xqbj;ghpzVMr(}5YMjPvf+lK`CTohOYMQ2N zhGuG(W^0b-YC!WeUxQkpAuZG*E!I+MskGEu8ZE7sPD`(4&@yV7w9Hx-EvuGI%dX|n za%#D>+*%$jua-~CuNBY=YK64IS`n?NR!l3dmC#CRrL@vo8Lg~VPAjif&?;(`w8~l) zt*TZ{tFG11YHGE#+FBj0u2xU0uQkvbYK^qUS`)3Q)=X=zwa{8>t+du!8?CL@PHV4q z&^l_Jw9Z-=t*h2e>#p_CdTPD2-dZ26uhviNuMN-!YJ;@F+7NB1HcT6?jnGDFqqNc5 z7;UUJP8+XH&?ah=w8`2OZK^g+o372!W@@vv+1ea!t~O7buPx9PYKyeR+7fN4woF^D zty@aermt8 z-`XGTul7$*peNK5>526udQv@^o?K6%V>+%AI;m4Stus2Sb2_gJx~NOKtSh>zYr3u* zx~W^btvkA_1Krbo9qNIO^iYrVSWl^^(o^ec^t5_9J-wbm&!}h8GwWIOta>&*yPiYO zspryj>v{CNdOkhBUO+FX7t#ysMf9S2F}=86LNBS8(o5@Q^s;(6y}VvQuc%kjE9+JC zs(LlOx?V%Csn^nL>viwWaTdOy9tK0qI+57GzgL-e8gFnzc_LLaG*(nsrK z^s)LleY`$FpQumLC+k!6srod1x;{gnsn619>vQzE`aFHUzCd57FVYw5OZ27sGJUze zLSLz`(pT$i^tJjreZ9Ux->7fWH|tyUt@<{7yS_u;sqfNv>wEOQ`aXTXen3B{AJPx& zNA#omG5xrHLO-dW(ogGW^t1Xo{k(obzo=i*FY8zItNJzlx_(2yso&CX>v#0K`aS)= z{y=}IKhhuTPxPnyGyS>#LVu~h(qHRu^tbvu{k{G{|EPb`KkHxgulhIryZ%G}ssGY{ z>womW`adIqk(aY#<^fCGx{fz#`0Arvr$QW!4F@_q$jN!%zW27<47;TI( z#v0>{@x}yWqA|&sY)mnx8q@oHl`;7g@0pp-?$T(~q zF^(F?jN`@$8^Tq|^qH)Q%Y+Ny}8rO{L#tq}9am%=E+%fJN_l*0- z1LL9b$ari#F`gRFjOWG+*i2$3HItdi%@ihP;wE8|CS}qlW3nb^@}^*lrew;dVydQQ>ZW0u zre)fuW4b0VJ<~U#8JNfn&B%<+lx8Y3wVB3DYo;^Pn;FcEW+pSUnZ?X%W;3&!In119 zE;F~8$INTyGxM7T%z|biv#?pjENT`ri<>3Pl4dEhv{}Y1YnC(1n-$E8W+k(-S;ees zRx_)cHO!i3Ewi>+$E<7CGwYiT%!Xzov$5I4Y-%<$o0~1nmS!unwb{mOYqm4nn;p!K zW+$_=*~RQ?b~C%1J)6Kv^mBc zYmPI=n-k25<|K2nImMi6PBW*QGt8OhEOWLw$DC`emzyih zmF6mQwYkPzYpyfbn;XoH<|cEqxy9USZZo%=JItNtE_1iJ$J}e~GxwVZ%!B43^RRiu zJZc^@kDDjVljbS&w0XunYo0UDn-|QB<|Xs8dBwbHUNf(oH_V&nE%UZ{$GmIaGw+)Z z%!lS9^RfBFd}=;3pPMhtm*y+;wfV+;YrZqzn;*=N<|p&B`NjNdelx$DKg^%zFY~wg z$NX#lvl3VdtwdI0D~XlVN@gXuQdpRUTZBbglto*N#af)jTY@E8k|kS;rCOS$TZUy? zmStOx4wU?D5CA}h91TB)qmRvIgTeCO23mux!PXFKs5Q(QZjG=;TBEGd));H7 zHO?AuO|T|fldQ?s6l&7Hg}u&Dw75uy$IztlicgYp=D>+HW1O4qAt-!`2b& zsCCRbZk@1BTBoej)*0)pbX&AM*gux?tntlQQd>#lXrx^F$O z9$JsA$JP_;srAfyZoRNxTCc3v)*I`s_0D>4eXu@SpRCW;7wfC_&H8Truzp&#z0CPGBdr6WNLFBz96enVsBDVPiIK6EgGZ`*h5yY@Z%zWu;{ zXg{(a+fVGL_A~pr{lb1}zp`K3Z|t}BJNv!;!TxA}vOn8j?63AW`@8+a{%QZRf7^fT zzxF>Tfs@cl8!#TVoIHDstvZFYvqdB@`IHqGc zw&OUi102us9q0rOazZC^Vkf1O%1P~{and^Job*lxC!>?e$?RltvO3wE>`o3Rr<2Rc z?c{OtI{BRZP64N&Q^+ao6mg0=#hl_!38$n}$|>!XamqU7obpZur=nBIsq9p7syfx2 z>P`)(rc=wQ?bLDVI`y3TP6MZ*)5vM;G;x|b&79^=3#X;i%4zMiaoRfVoc2x!r=!!! z>FjiIx;ovQ?oJPCXQDI7ne0q)raIG{>COyirZdZ#?aXoJI`f?Q&H`tlv&dQOEOC}P%bexT3TLIW z%31BKan?HPob}EIXQQ*p+3aj_wmRFK?amHor?bo1?d);(I{Tdc&H?A3bI3XD9C401 z$DHHN3FoA9$~o&^}5rgO`=?c8zhI`^FW&I9M6 z^T>JZJaL{n&z$GZ3+JWt%6aX)ao#%bocGQL=cDt<`RsggzB=EW@6HeBr}NAC?fh~6 zI{)1NDFHW;o7hd_CUuj!$=wt#=Hf2lk}l=aF7rQW&$+xSxS}h$va7hNtGT*sxTb5l zw(IwS+}KU&rgBreY237Ky8plBGPoJtOm1d3i<{NW=4N+uxH;Wi zZf-Y^o7c_v|Dj_6x1d|dE$kL?i@L?!;%*7Iq+7}@?Ur%Ny5;_V#i-y`bSt@)-70QX zx0+kst>M;mYq_=EI&NLJ-v3X94cvxqBe${J#BJ&}bDO&@+?H-Dx3$~GZR@uCpF;28 zc62+ro!u^OSGSwn-RVX654nfk zBkoc6n0wqk;huC)xu@MT?pgPod)~d^UUV2mk^hh(HWdf>abRa#*05XD1AT!7UvVv?NJIDcYf?Oas$OH0% zd>}t401ARapfD%`ih^RGI4A*1f>NL~Cxk4Xam}UcA!1z06KzBpfl(Kx`J+?JLmy= zf?l9E=mYwKexN@X00x3VU@#a0hJs;WI2Zv&f>B^J7z4(FabP@{049P-U^18jrh;i; zI+y`wf>~fTm;>g5d0;+R02YEpU@=$%mV#wqIamQ!f>mHOSOeCAbznW%05*b6U^CbP zwt{V7JJj)G(0I5+`Lf>Yo$I0MdtbKpF<04{<{ z;4-)Zu7YdeI=BIDf?MD=xC8Ejd*D8J03L!z;4ydto`PrKId}nHf>+=*cmv*oci=tv z06v0G;4}CFzJhPyJNN;9f?wb__yhiee_jGFp_j-@>?QG%dda-xUJ4KMaF6gvkMd}b z@mP=Zcu(*|Px53>@l;RqbkFci&+=@~@mvphp67ee3q0h7UgX7IN-vd{+Dqf5_0oCi zy$oJPFO!$q%i?AAvU%CP99~W@mzUei~HT9Z# z&Ak?0ORtsJ+H2#r_1byuy$)VSuano=>*96wx_RBb9$rtcm)G0tDYx7b_aE%lap%e@ueN^h07+FRqT_11aoy$#+*Zci21P9rccR$GsEYN$-?*+B@T&_0D&%GDkOYfEU+I!=@_1<~!y${|; z@00i0`{I4|zIorhAKp*zm-pNIHw!-|}tW@m(MIp6~n64}9c@e&ok~NJ-`H>BH}#wO z&HWaBOTU%h+Hd2x_1pRF{SJOdzmwnD@8Wm$yZPPy9)3^1m*3m(%zv5r@ zuld*g8~#oImVev7} z|C9gO|Kfl3zxm(&AO27Om;c-U(1*%YkIy9gOEoegrx)4AQ`VhhZA{fF5#xNyJ1yjQ`FfB|6)58ofBg_Od z!z?f>%m%Z=955%$1#`nZFfYsp^TPtLAS?t6!y>RKEC!3i60jsJ1xv#+uq-SG%fkw= zBCG@}!z!>UtOl#Y8n7m;1#81Pur90z>%#`HA#4O2!zQpPYzCXd7O*931zW>5uq|u{ z+rtj9BkTk_!!EEZ>;}8T9ue7 z1y{p0a4lR1*TW5PBisZx!!2+t+y=M99dIYy1$V@GLwB&%+DwBD@4I!z=JAyauns8}KH)1#iPU@GiUu@52Z1A$$ZM!zb`5 zdgCarEpjc2mC=rwlN(H5ZGC|p(Tu?r!5L65*1(ky;LDisIP(7#-)C_6`wSziA z-Jo7jKWGp%3>pQEgC;@Kpjps7Xc4pwS_Q3xHbL8*gCW7tU|29b7!iyNMg^mTF~QhiTrfVE5KIgv1(Sm* z!PH<{Fg=(N%nW7)vx7Oo++bcXKUfef3>F28gC)VzU|Fy{SP`rYRt2krHNo0oU9djb z5Nr%K1)GB{!Pa0~uszrj>!PVeea6PyY+zf67w}U&u-QZquKX?#43?2oKgD1h$;92lI zcoDn|UInj%H^JNBUGP5m5PS?i1)qa2!Pnqh@ICku{0x2tzk@%)-{2ogfD)oaC^1Tc zlA>fNIZA;rgd+lxh(a`C5Q{j(BLRs>LNZd2iZrAn1DVJ|Hgb@Q0P>KJAPNvdA&O9p zQleBSHA;ihqI4)d%78MWOeizTg0iA)C_Bo5a-v))H_C(ZqI@VnDu4>2LZ~n*f{LPI zs5mNtN}^JzG%AD2qH?G_s(>n@N~kibf~ulws5+{FYNA@GHmZZ_qI#%4YJeJ|MyN4r zf|{acs5xqZTB25{HEM&}qIRe~>VP_;PN*~Lg1Vw^s5|O`dZJ#aH|m4>qJF498h{3( zL1-`ff~KNrXgZpKW};bWHkyOxqIqaO zT7VX!MQAZvf|jCXXgOMeR-#pCHClt#qIGCJ+JH8qO=vUPg0`Y8*dVn6HN9Zwnf}Wyh=s9|UUZPj%HF|^IqIc*$`hY&7Pv|rHg1(|}=sWs> zexhIKH~NGAqJLq6FkzS|OdKW&lZMH{B9_R#xPTuIm{Af4YP&W z!yIAGFjts6%oFAf^M(1t0%5_hP*^xD5*7`Mg~h`XVac#mSUM~dmJQ2=<--bL#jsLX zIjj;^4XcIK!x~}DuvS<*tP|D^>xK2h24TanQP?p*g9+zwhh~b z?ZXaX$FNh_IqVX44ZDTi!yaMJuvgeS>=X74`-T0(0pY-KP&hao5)KWAg~P)U;mB}Q zI652?jt$3!wSQQMfo<5-tsw zh0DVg;mUATxH?=Dt_|0P>%$G<#&A=(IouL%4Y!5c!yVzya96lH+!O8%_l5hz1L48& zPag-!V8YPR8M=2sK!XqLgBPyaJCSoHl;v*pvBPo(2B~l|T z(jy}>BP+5aCvqbYd66H%D2PxLMo|<;DWgL^W=HcA(zk1|9VqfAleC`*(z$`)mh zazr_!Tv6^QPn0*x7v+x%L8MOpHYyjDk19kJqe@Zb zs7h2dsuop`YD6`oT2bw&PE!?lCHfk5O zk2*vhqfSxhs7ur}>K1j6dPF^=UQzF;Pt-T+7xj+@L<6Hi(coxEG&C9(4Ua}dBcoB# z=x9tdHX0X=k0wMDqe;=^Xi79SnifruW<)ciS<&ohPBb@~7tN0rL<^%u(c)-Hv@}{4 zEss`2E2CA>>S#^0Hd+_0k2XXbqfOD~XiKy;+7@k(c0@a)UD57nPqa7M7wwM@LF7*!HaZubk1j+Pqf61{=t^`ox)xoJZbUbuThZ<4PINcA z7u}B@L=U4!(c|bz^fY=FJ&#^QFQZq{>*!7NHhLGmk3K{nqfgQ2=u7l9`WAhUendZ` zU(xUAPxLqX7bl1l#);y@agsP`oGeZrr--o_kBOL!shEzLn2ouZkA+x_rC5%YSdFz< zkB!)jt=Nv8*o{H##eNLqAVzT*M{yjdj8ny_<1}&FI9;4R&JbseGsT(XEOFL2Tbw=4 z5$B9^#ku1=ao#vzoIfrQ7mN$Vh2tV|(YRP#JT4KJj7!C(<1%sCxLjO5t`Jv@E5()L zDsk1gT3kJ@5!Z}s#kJ!)aoxCHTt99QH;fy_jpHV9)3{mOJZ=%Uj9bO6<2G^IxLw>n z?htp3JH?&jE^*hmTiiYF5%-LH#l7P`ao@OK{2xvC7z9g`pnrQk%URpruGUGE)>W06 zYulPx@66h^ZQHhO+qP}~>pgY7pEB+^AAX&2qT`Bwx}HAofBJya2cACY^uebOIeqBq z!%iQ5`iRpgm%?pMLs`(`TMO>-5>D z&pCbW>GMvXfBJ&c7oNW8^u?zyIeqEr%T8Z@`ij$6p1$hz)u*pHeeLP%PG5iehSN8m zzUlPMr*AoZ>*?E0-+uaz(|4Y}>-62H?>T+%>HALKfBJ#b51xML^uwngIsNGA$4)gm@`zkd3S({G-B>-5{F-#Pv6 z>Gw{*fBJ*dAD;f`^v9<^IsNJB&rW}S`is+Fp8o3e*QdWZ{q5=RPJe&;htofv{^|73 zr++#9>*?Q4|9<+9(|?}+>-68J|2h5d>HoUN=^nRxyzcS4C+MEAd!p_U-4l0D(miSS zWZjc@PtiTHd&=&qx~J}*rhD4%>AI)yo}qij?wPu0?w+N4*6!K5XYZb)d(Q5;y65hm zr+eP+`MT%tUZ8uy?uEKj*LCOa(p|e-ckdo_p^IJWa@Ti5H+EAucQ4$%NcW=Mi*+yF zy+rqt-O{by)|IYyt$V5NrMs8uUbcI=?&Z5z=w7jVrS6rxSLt50d$sP>yVvMmvwN-X zwY%5pUblO_?)AGj=-#k)yZnfbIjk59&U+`;hKK zyASI=y!(jmBfF34KDzsu?qj=;>ps5wgzgi&PwGCo`;_ieyHD#rz59&rGrP~~KD+yz z?sL1(>ps8xg6<2uFY3Oy`;zWUyD#g$y!(poE4#1izPkIG?rXcR>%PAGhVC1?Z|c6e z`%PDHf$j&pAL@R%`;qQPyC3U*y!(mnC%d2O ze!Baa?q|E7>wdobh3*%-U+R9j`<3ojyI<>mz59*sH@n~Je!Kgf?svQ2>wdrcgYFNz zKkELt`;+cZyFcsxy!(spFT20${<`~{?r*!l>;As`hwdM{f9n3Z`u zKfC|x{=561?ti=gJ3r3(anFx;e*E(joS*RgMCV7GpZNSF=O;Zs+4;%OPjPgu%ekK0`K8V;eSVqq%bs8E{PO2lIKSfgmCmnxewFj9o?q?!>gU%uzvlV1&aZub zo%8FSU+?_-=QlXN;rWfuZ+w1}^P8UE?EI+nqt9=Cev9*4p5N;H*5|i5zwP<$&W|}i z_WbtecR0V}`JK-1e14bnyPn_e{O;%XIKSulz0U7_exLLEp5O2M{^t)kf8hCp&L4dK zkn@M0KkWSB=Z`plrRPdI<#`IF9{eEyX4r=CCU{ORY%V zZ#aMB`J2w)eEyd6x1PW4{O#xOIDhB)yUyQz{+{#qp1<$>{pTMz|KRzD&Odzqk@Jt9 zf9(9@=bt$LxTUpW8b`IpYWeEya5ubzMH{Ojl6IREDPx6Z$P z{+;vho`3KB`{zG6|Ka(M&VPLVlk=aR|Lpwd=f61r<@vA9e|`R&^WUET?)>-Xe>nf+ z`Jc}JeEyg7zn=f?{O{-gIREGQzs~=C{-5*zp8xOiIG4x0Jl^H;FHdlJ!pjp~9&vf% z%adH5^zvkvC%-(!<&l@Cygb$AsV`4+dD_d1Z*X6k{&vSX+%ky2H|MCKt7reaC<#g#T=gZ}Cz1%MM%Y#d}#7ny5OMe+I<7K+c zmlwXg$mK;ZFLrtH%S&8d^0Hjk%XTT3dTE!Jy1ew|WiBs!dAZBWUtZzzikDZqyz=E$ zF0XodwacqtUgPqbm)E+y_T_ahuX}mD%j;j>;PQr-H@dv>dAG~EU*6;Lo|pH!y!YjO zF7JDJzsvhyKH&0!mk+vp@a01;AA0$)%ZFb+;_{J~kGg#HvYE}wh(yvyfbzTonOmoK_}@#RY{UwZkn%a>oi z;_{W3ueyBo&3d-=P|-(UXW@{gB)y8QFyUoQW8`M1lzU;g9rpO^o-{P*R5F8_P^zw6^% zANTrr*T=s;!SxBRPjr36^@*=fa(&Y4lU<+u`V`kkUZ3*%RM)4zKF#%MuTOV<`s*`X zpYi%k*Jr*y%k^2W&vt$G>vLS6^ZH!Z=e|DA^?9$)cYXfr3tV6D`a;*!wY#3Lm+SR< zyWX!4uHhQ5>6)+ob-0e#={jFu`1&H(7rnmN^~J9*aec|_a$T?6wOs49U0>?@($|-{ zzU=kot}lOmh3hL`U+MbF*H^i|>h;yGuYP@v>uX+L>-yT)*SWs#_4Tf=e|>}N8(!b& z`o`BcxxVT3&90BSKKlCR*SEO7<@K$uZ+(56>)T%6?)sSPW3O+2eTVBiUf=2Z&ewOj zzU%efuJ3+*kL!D0-|PC`*Y~-;@Adtz?|=P(>jz#x==#Ce54nEm^~0_oe*K8+M_xbb z`q9^qxqj^Rla?X==#OiFS&l{^~#kpa{f6r|Ucc%3&DU?ae(Uwy zuHSzBj_Y?`zw7$l*YCN0@Adnx-+%pq>knRk==#IgAG!YM^~bJ1e*KB-PhNlO`qS5+ zx&G|+=dM40{e|lmOeK z==#UkKe_(t_0O(AE+ z2j4#A_Mx{AyM6fWBW@pg`>5MT-#+H{vA2)Aef;ecZl8Gjq}wOoKIQhQw@AK;7vH|*_NBKkyM6iXD{fzT`>NYl-@fMdwYRUk zef{klZr^zOrrS5)zUB6AH-58r;| z_M^8SyZ!j>CvHD^`>ESc-+t!yv$vnS{rv40Zohc@rQ0vxe&zP7w_m&c`t3Jvzj^zu z+i%}~=k~j|-@E<(?GJ8$c>ANWeu-~Q(Ix3|B${r&A9 zZvS}ur`tc@{^jbH--r8n zpYHShh3_wNf6@Dk-Cz9v68D$9FZcDn-OIh++x?~PFMWTR`^(;6?*8)kSGd38{gv*o ze1DbutKMJj{_6MFxWDH8weGKdf1Ug5-e2$j`u8`uzv2Cj?r(g5llzsnES`xKkokV_fNQg z;{B8EpM3w6`={PN?f&Wa&$xf){j=_$egB;M=iWc>{`vPWxPRgOi|${1|C0Nc-oNbr z<@c|+f93tF?q7ZXn)}z@zwZ9^_iwm=G{k!hpegB^O z_ujwn{{8nKxc}h&hweXo|B?HT-hb@=)=A?f&cc-?;zg{kQJFegB>N@7{m!{`>boxc}k(kM4hb|C9Tl-v8|W=l8$3 z|K{lD)2egB{P|K9)a z!Q(u5+y{^M;PD?k!GkA!@I((D@!*LcJjsJ6eeh%tp8Ua6Jb2`Tr`-QR?Wcb5G!LHk z!P7l>`UlVO;29r0(}QPz@GK9W^}(|}c=iX+@!&ZhJlBKge(*dGp7+7?J$U{HFYw?6 zAH2|m(}V7jkA2LeANAOGe)MDB_R(+hs7Jr!Bi`jPZTJiEA2{{1e%8Ek*YEXv{a(M<@AZ5AUccAx z^?UtZzt`{ed;LLw&>!@Nhy7)H@bJ&~^WmTG=fgkW&;S3=AHKeQKYV@r`SA7a=fl^x zpATQ(em;DC`}y$o?dQYSx1SGR-+n%Pef#PP*kAN8Yt)Q|c}|9F2aThdSZNk8c){iL7t zlYY`q`bj_OC;g;L_U-=1`(xkkf4o2T?f%F6W8dz7yg!!hcz^7t z`ycO*eY^jlKe+#(Ke+#(Ke+#(Ke+#(Ke+#(Ke+$s?|;-E-G9^{^+)|tf7BoKNBvQM z)F1Un{ZW6^pY$jFNq^Fx^e6pEf6|}yC;dr((x3Dv{Yih)pY><`S%21_^=JKAf7YM% zXZ=}!)}Qrf{aJt3U-TFKMSsy>^cVd_f6-s`7yU(l(O>iz{Y8J#U-ei0Re#lA^;i8> zf7M_0SN&Cg)nD~j{Z)U}-}E>AO@Gth^f&!Yf79ReH~me2)8F(r{Y`( zU-XN9(J%T%zvvhJqF?lje$lV`Rln+2{iZ~9HY={NnR z-}IY)({K7szv(yqrr-3NemnYw|AqgB|AqhM!O<`LFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4Z~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk 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 z{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC z{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC z{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC z{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC z{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;aC{s;a?{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{N{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMxt{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8L8{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE z{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D z_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T z{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv`QP)u=YP-tp8q}nd;a(Q z@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq-}Arcf6xD(|2_YE{`dUv z`QP)u=YP-tp8q}nd;a(Q@A=>Jzvq9?|DOLn|9k%T{O|eS^S|eR&;OqPJ^y?D_x$hq z-}Arcf6xD(|NZ}~>5g$H*pd4H?+ON-C|0N|*v%%3WJor<&!8(Pks?Kc5~t2|AzeT> zkfOcFns4}dfrr^&ZBUq+_vZ)hpnCXU_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6 z_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6 z_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6 z_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6 z_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_+R*6_#gZa{s;eq|H1#@ zfABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa z{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(* z;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~ z5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU* z|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw; z{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr z!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx} zAN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq z|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx z_+R;7`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8 z`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`Cs{8`QP~8_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7 z_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}>7_}}^8`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29 z`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`QQ29`9JtS_&@kR_&@kR_&@kR_&@kR_&@kR z_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR z_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR z_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR z_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR z_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR_&@kR 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 zH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e z|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuce zZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{ z{@?t+`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+` z-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou>zxjXj|K|VA|C|3e|8M@^ z{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?t+`G52O=KszAoBuceZ~ou> zzxjXj|K|VA|C|3e|8M@^{J;5s^Z(}m&HtPKH~(+`-~7M%fAjz5|IPoK|2O|{{@?u1 z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ) z{LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlQ){LlO^{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3 z{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e}3{4e|u{s;eq|H1#@fABx}AN&vg z2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@ zfABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa z{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(* z;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~ z5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw;{15&I|AYU* z|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr!T;cY@IUw; z{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx}AN&vg2mgcr z!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gZa{s;eq|H1#@fABx} zAN&vg2mgcr!T;cY@IUw;{15&I|AYU*|KNY{KlmT~5B>-Lga5(*;D7Kx_#gbQ{IC44 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 From 98cff12fd1f625d826c6d4e6eb4da549978b661f Mon Sep 17 00:00:00 2001 From: Benjamin Odom Date: Mon, 3 Jun 2024 21:18:09 -0500 Subject: [PATCH 03/18] [QoL] Add Arena Info Flyout for Weather, Terrain, etc. (#1734) * Initial Commit * Add Time of Day Icons and Remove Fight UI Dependancy * Rename to Match * Update battle-scene.ts * Add Settings * Add Comments --- public/images/ui/dawn_icon.png | Bin 0 -> 581 bytes public/images/ui/day_icon.png | Bin 0 -> 593 bytes public/images/ui/dusk_icon.png | Bin 0 -> 534 bytes public/images/ui/legacy/dawn_icon.png | Bin 0 -> 327 bytes public/images/ui/legacy/day_icon.png | Bin 0 -> 285 bytes public/images/ui/legacy/dusk_icon.png | Bin 0 -> 300 bytes public/images/ui/legacy/night_icon.png | Bin 0 -> 288 bytes public/images/ui/night_icon.png | Bin 0 -> 686 bytes src/battle-scene.ts | 15 + src/field/arena-events.ts | 31 +- src/field/arena.ts | 12 +- src/loading-scene.ts | 5 + src/system/settings/settings.ts | 11 + src/ui-inputs.ts | 12 +- src/ui/arena-flyout.ts | 384 +++++++++++++++++++++++++ src/ui/ui.ts | 15 + 16 files changed, 472 insertions(+), 13 deletions(-) create mode 100644 public/images/ui/dawn_icon.png create mode 100644 public/images/ui/day_icon.png create mode 100644 public/images/ui/dusk_icon.png create mode 100644 public/images/ui/legacy/dawn_icon.png create mode 100644 public/images/ui/legacy/day_icon.png create mode 100644 public/images/ui/legacy/dusk_icon.png create mode 100644 public/images/ui/legacy/night_icon.png create mode 100644 public/images/ui/night_icon.png create mode 100644 src/ui/arena-flyout.ts diff --git a/public/images/ui/dawn_icon.png b/public/images/ui/dawn_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e04e6024aa0b097dff236c4b4a1ca56e24bd4531 GIT binary patch literal 581 zcmV-L0=oT)P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0oqAKK~y+Tjgw7F z+)xyT-z3KIYf#5lXmn6ysHiY4rh?E`L2PFyYFF*bh4TYusNk>AAK=EFZrluX;ihf` z1(niL3$4;BiYZmckCExL(ZrmSA2^(Ia_4>TxpNZL^A#r@6w^~U;zcVG<9rvtKhI!m^CQgsn#9(Ms+}HZe|Bkp5;l z?D7Z;eB|sVj34tXc1T;M;l9cQAI1Bag46iy?X37hBJJ$XACoZf2^!sk5V`=D1CXre ThUT}f00000NkvXXu0mjfz();` literal 0 HcmV?d00001 diff --git a/public/images/ui/day_icon.png b/public/images/ui/day_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fe41acffd9cfb2096a87a86cadbbc7f57ea136a8 GIT binary patch literal 593 zcmV-X0Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T|WK~y+TV`M-B ztSZKZK&lVI!vICU@0{(2vcUju0J28!qzndI{}2!p4i0Zz!?1PU3@8s_5ZC~iX6L9B z2G{TikPuF=d*up-z02l+m|#PgK`dq=spIIHRrx+L_(&aP&=;4!@HjxU~y#~ z9fto*Yz+4=pL75B?s+3K)OPpC(q;yB4i>N?kY?*wa~Zg=En#4Lc#J`k;UmLWAuYHe zqOz(Chu1FyS^S9!$Ok(e8CVLRVc>eTn}PBDTQCN(L1M@Ns;3WR0E4+lAc!If!1RC( zKnKU)nlOA5b7lB1C=A9RHb@K`z-qwlPy7r=#gZAm*q4AYhz%0M22c$6^zkQ@1uTAV>bk`KybV0iKT6T{M@FByKWEnr~y$4~@GiL%E3nKe8a zSQMK{C;?r5t0)5r9S0kT0@ f09+#kFfafBum-cC{w~Yc00000NkvXXu0mjf3PJjV literal 0 HcmV?d00001 diff --git a/public/images/ui/dusk_icon.png b/public/images/ui/dusk_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e848fa313459ce44809049ffe80f8a0ce298da7c GIT binary patch literal 534 zcmV+x0_pvUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0jo(wK~y+Tjg!kt z!%z^0|J-OmisGeGQ9-*EM2ZVVUA73~6Da5-vnB%CR}p2kH{Vt{ur@=C(bPW6(Vf9i9@dVitK?fa!ot~o5cNzb&O5LAnTt{_I8`Z zN{_#$v(qOw5eAaX)x}(sSbhN3mLW~YSr`-(^9y~#(dk_Bs{hw|P%QU4W8>NHLMEq9 z#M(HZPe>e;dtJ!xd|RlpHY~O)oZz6`>!u@vc64MwYc|U^P&?wFoSqRf9Sk}oP1H0V z>aWhJA>3>#BVC4ZdjE|?tswrcuH*3Cgs6yJl-lL77`>jjlBOe1qm9p5)?WB YKRnE+uEonOR{#J207*qoM6N<$g63c9P5=M^ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/dawn_icon.png b/public/images/ui/legacy/dawn_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb24a799ab96cdd032ef8a57595bd602482bc62b GIT binary patch literal 327 zcmV-N0l5B&P)Px#|4BqaR5(v#WWWyo;}B;=7e^NWYdloaj-u}J-REF__WDUMakxHY1O7joJQ=R> z&ciQoHp~E+0MsC`UYG$WnqdlwF$7`2;>ipQA5eXWZa`p;D#Q9Iw~@WW2r}URGmvH& zKr#fM3t(XaHsHth5U}=lZ|ot)Kn)?ufPjM6V7<@Yy#v!z;-j#}1hOC~Fu^YHP`8I` zM2}~XLFlmn3k$dbdZM~G(hWp7-Nq5CJlp_FWm~v{ub&_Rz|ALsqA5nt5X@h4={#Kg z_}#;ZbbxFKUgtn1L7GA72%ZioH2`GVe_{=R*$#FBnsdRK370`ojVSssvM1C)qO&sq ZXBK-4;%UQk00000NkvXXu0mjf008%?gY^Ia literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/day_icon.png b/public/images/ui/legacy/day_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..310ba50dcf306bc4fb559b4a96ae9da8d53bc40b GIT binary patch literal 285 zcmV+&0pk9NP)Px#*GWV{R5(v#WWWNXm0bQ~6MuSd4Lki*gF1_po zv-QNwQM@3Ur2*!@o^}H+etu0q13Vg$4I$`x1_lO@W>8|HjsdXLNUSShwuAIx%}lrq j0%^pVnNUKXgzO9eAn$t--D6GR00000NkvXXu0mjfSW0br literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/dusk_icon.png b/public/images/ui/legacy/dusk_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f383ebf52463d1dbe123698d570ef84645f209ba GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|o_M-AhFJI~ zryO8fV%hpHS-Ae!Us>f{7F`TJ$y57S%>MG^hQ~D=oyglH&2Xv5d-1YO8eNSWrS%W< zGDzD(vPBlle_=Ij|i#u**btO<>n`h6yTW&MwS94z}&R_d(F-aBRZD zWY+CZA1$s<*tSn5tKlnKmr(;xNB4f_@ajjW4B0A7l%$(3pY;$@IJ-c^QbO8@`> literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/night_icon.png b/public/images/ui/legacy/night_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1796081c05bf64e52bb85513f3f59c65f1d23efd GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Zg{#lhFJI~ zrySt>_gEm^MciGSA)Dt@#=%wfcl)GfSj5P0V*Fp28MEV1r=new{GEUmjtP4WmwjJPUkYp-i46Ji6XKZ6^@Aq^6xNdE! zn%?`xENVAc7wx%ZA)0K=A?CNBKp}(SL`uxMMrj504BqmC-|hJiPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940z*keK~y+Tjgw7G z6HySy|Ld})w8R#%SgRFjfY?|yp%)U2(Sz(wC4rj>Q9P?`ylB+mO%thJ^lH3#FkHPE zB|S)uDORQ0sA(!32Q^=kB% zz9&q9=0tnD6KxJJ-a|*^` z>BVPrF;*py@$r+mGkqFD%NB}#SuCNWvlYI6H(o{(;9ZF9F~_S*QY&V{*YWWFEG1i5 zZ{oN|i^COp*N`Y_`p0NnrZMZH%57 zqHp9#76)o7aCBJ4V97bNM6umd$gO1LPIos7`Jc3U1Ag=m?4`9@Eh3jmLumY_#G#R6aCvuP_R#~brD%h+ zHK^|B*$1!B&t2G^HnJRVw@=>z>BS`3#C#NAQ*4k{*dXzMX!8_`xvZ?RpW^6nu?efw zvREavE56FP3X*SMQ!+zoRP<5iurAEY)ZC3hI{D5>(this.arenaFlyout, this.fieldOverlay); + this.updateUIPositions(); this.damageNumberHandler = new DamageNumberHandler(); @@ -1272,6 +1280,13 @@ export default class BattleScene extends SceneBase { return sprite; } + moveBelowOverlay(gameObject: T) { + this.fieldUI.moveBelow(gameObject, this.fieldOverlay); + } + processInfoButton(pressed: boolean): void { + this.arenaFlyout.toggleFlyout(pressed); + } + showFieldOverlay(duration: integer): Promise { return new Promise(resolve => { this.tweens.add({ diff --git a/src/field/arena-events.ts b/src/field/arena-events.ts index 1cc632030a5..b3d03fdfcae 100644 --- a/src/field/arena-events.ts +++ b/src/field/arena-events.ts @@ -10,8 +10,10 @@ export enum ArenaEventType { /** Triggers when a {@linkcode TerrainType} is added, overlapped, or removed */ TERRAIN_CHANGED = "onTerrainChanged", - /** Triggers when a {@linkcode ArenaTagType} is added or removed */ - TAG_CHANGED = "onTagChanged", + /** Triggers when a {@linkcode ArenaTagType} is added */ + TAG_ADDED = "onTagAdded", + /** Triggers when a {@linkcode ArenaTagType} is removed */ + TAG_REMOVED = "onTagRemoved", } /** @@ -59,17 +61,34 @@ export class TerrainChangedEvent extends ArenaEvent { this.newTerrainType = newTerrainType; } } + /** - * Container class for {@linkcode ArenaEventType.TAG_CHANGED} events + * Container class for {@linkcode ArenaEventType.TAG_ADDED} events * @extends ArenaEvent */ -export class TagChangedEvent extends ArenaEvent { - /** The {@linkcode ArenaTagType} being set */ +export class TagAddedEvent extends ArenaEvent { + /** The {@linkcode ArenaTagType} being added */ public arenaTagType: ArenaTagType; /** The {@linkcode ArenaTagSide} the tag is being placed on */ public arenaTagSide: ArenaTagSide; constructor(arenaTagType: ArenaTagType, arenaTagSide: ArenaTagSide, duration: number) { - super(ArenaEventType.TAG_CHANGED, duration); + super(ArenaEventType.TAG_ADDED, duration); + + this.arenaTagType = arenaTagType; + this.arenaTagSide = arenaTagSide; + } +} +/** + * Container class for {@linkcode ArenaEventType.TAG_REMOVED} events + * @extends ArenaEvent +*/ +export class TagRemovedEvent extends ArenaEvent { + /** The {@linkcode ArenaTagType} being removed */ + public arenaTagType: ArenaTagType; + /** The {@linkcode ArenaTagSide} the tag was being placed on */ + public arenaTagSide: ArenaTagSide; + constructor(arenaTagType: ArenaTagType, arenaTagSide: ArenaTagSide, duration: number) { + super(ArenaEventType.TAG_REMOVED, duration); this.arenaTagType = arenaTagType; this.arenaTagSide = arenaTagSide; diff --git a/src/field/arena.ts b/src/field/arena.ts index eac2eafb265..f6390e40db5 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -19,7 +19,7 @@ import { Terrain, TerrainType } from "../data/terrain"; import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability"; import Pokemon from "./pokemon"; import * as Overrides from "../overrides"; -import { WeatherChangedEvent, TerrainChangedEvent, TagChangedEvent } from "./arena-events"; +import { WeatherChangedEvent, TerrainChangedEvent, TagAddedEvent, TagRemovedEvent } from "./arena-events"; export class Arena { public scene: BattleScene; @@ -550,7 +550,7 @@ export class Arena { this.tags.push(newTag); newTag.onAdd(this); - this.eventTarget.dispatchEvent(new TagChangedEvent(newTag.tagType, newTag.side, newTag.turnCount)); + this.eventTarget.dispatchEvent(new TagAddedEvent(newTag.tagType, newTag.side, newTag.turnCount)); return true; } @@ -577,6 +577,8 @@ export class Arena { this.tags.filter(t => !(t.lapse(this))).forEach(t => { t.onRemove(this); this.tags.splice(this.tags.indexOf(t), 1); + + this.eventTarget.dispatchEvent(new TagRemovedEvent(t.tagType, t.side, t.turnCount)); }); } @@ -586,6 +588,8 @@ export class Arena { if (tag) { tag.onRemove(this); tags.splice(tags.indexOf(tag), 1); + + this.eventTarget.dispatchEvent(new TagRemovedEvent(tag.tagType, tag.side, tag.turnCount)); } return !!tag; } @@ -595,6 +599,8 @@ export class Arena { if (tag) { tag.onRemove(this); this.tags.splice(this.tags.indexOf(tag), 1); + + this.eventTarget.dispatchEvent(new TagRemovedEvent(tag.tagType, tag.side, tag.turnCount)); } return !!tag; } @@ -603,6 +609,8 @@ export class Arena { removeAllTags(): void { while (this.tags.length) { this.tags[0].onRemove(this); + this.eventTarget.dispatchEvent(new TagRemovedEvent(this.tags[0].tagType, this.tags[0].side, this.tags[0].turnCount)); + this.tags.splice(0, 1); } } diff --git a/src/loading-scene.ts b/src/loading-scene.ts index fe63b39f805..0b15358c4bc 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -95,6 +95,11 @@ export class LoadingScene extends SceneBase { this.loadImage("type_tera", "ui"); this.loadAtlas("type_bgs", "ui"); + this.loadImage("dawn_icon", "ui"); + this.loadImage("day_icon", "ui"); + this.loadImage("dusk_icon", "ui"); + this.loadImage("night_icon", "ui"); + this.loadImage("pb_tray_overlay_player", "ui"); this.loadImage("pb_tray_overlay_enemy", "ui"); this.loadAtlas("pb_tray_ball", "ui"); diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index e68e5ea8704..cf657d0e828 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -52,6 +52,7 @@ export const SettingKeys = { Sprite_Set: "SPRITE_SET", Move_Animations: "MOVE_ANIMATIONS", Show_Moveset_Flyout: "SHOW_MOVESET_FLYOUT", + Show_Arena_Flyout: "SHOW_ARENA_FLYOUT", Show_Stats_on_Level_Up: "SHOW_LEVEL_UP_STATS", EXP_Gains_Speed: "EXP_GAINS_SPEED", EXP_Party_Display: "EXP_PARTY_DISPLAY", @@ -189,6 +190,13 @@ export const Setting: Array = [ default: 1, type: SettingType.ACCESSIBILITY }, + { + key: SettingKeys.Show_Arena_Flyout, + label: "Show Battle Effects Flyout", + options: OFF_ON, + default: 1, + type: SettingType.ACCESSIBILITY + }, { key: SettingKeys.Show_Stats_on_Level_Up, label: "Show Stats on Level Up", @@ -343,6 +351,9 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): case SettingKeys.Show_Moveset_Flyout: scene.showMovesetFlyout = Setting[index].options[value] === "On"; break; + case SettingKeys.Show_Arena_Flyout: + scene.showArenaFlyout = Setting[index].options[value] === "On"; + break; case SettingKeys.Show_Stats_on_Level_Up: scene.showLevelUpStats = Setting[index].options[value] === "On"; break; diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index c9bdc5feaf5..d4815ad5a7c 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -69,7 +69,7 @@ export class UiInputs { [Button.CYCLE_GENDER]: () => this.buttonCycleOption(Button.CYCLE_GENDER), [Button.CYCLE_ABILITY]: () => this.buttonCycleOption(Button.CYCLE_ABILITY), [Button.CYCLE_NATURE]: () => this.buttonCycleOption(Button.CYCLE_NATURE), - [Button.V]: () => this.buttonCycleOption(Button.V), + [Button.V]: () => this.buttonCycleOption(Button.V), [Button.SPEED_UP]: () => this.buttonSpeedChange(), [Button.SLOW_DOWN]: () => this.buttonSpeedChange(false), }; @@ -119,12 +119,14 @@ export class UiInputs { } } buttonInfo(pressed: boolean = true): void { - if (!this.scene.showMovesetFlyout) { - return; + if (this.scene.showMovesetFlyout ) { + for (const p of this.scene.getField().filter(p => p?.isActive(true))) { + p.toggleFlyout(pressed); + } } - for (const p of this.scene.getField().filter(p => p?.isActive(true))) { - p.toggleFlyout(pressed); + if (this.scene.showArenaFlyout) { + this.scene.ui.processInfoButton(pressed); } } diff --git a/src/ui/arena-flyout.ts b/src/ui/arena-flyout.ts new file mode 100644 index 00000000000..73660ca4457 --- /dev/null +++ b/src/ui/arena-flyout.ts @@ -0,0 +1,384 @@ +import * as Utils from "../utils"; +import { addTextObject, TextStyle } from "./text"; +import BattleScene from "#app/battle-scene.js"; +import { ArenaTagSide } from "#app/data/arena-tag.js"; +import { WeatherType } from "#app/data/weather.js"; +import { TerrainType } from "#app/data/terrain.js"; +import { addWindow, WindowVariant } from "./ui-theme"; +import { ArenaEvent, ArenaEventType, TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/field/arena-events.js"; +import { BattleSceneEventType, TurnEndEvent } from "#app/battle-scene-events.js"; +import { ArenaTagType } from "#app/data/enums/arena-tag-type.js"; +import { TimeOfDay } from "#app/data/enums/time-of-day.js"; + +/** Enum used to differentiate {@linkcode Arena} effects */ +enum ArenaEffectType { + PLAYER, + WEATHER, + TERRAIN, + FIELD, + ENEMY, +} +/** Container for info about an {@linkcode Arena}'s effects */ +interface ArenaEffectInfo { + /** The enum string representation of the effect */ + name: string; + /** {@linkcode ArenaEffectType} type of effect */ + type: ArenaEffectType, + + /** The maximum duration set by the effect */ + maxDuration: number; + /** The current duration left on the effect */ + duration: number; +} + +export default class ArenaFlyout extends Phaser.GameObjects.Container { + /** An alias for the scene typecast to a {@linkcode BattleScene} */ + private battleScene: BattleScene; + + /** The restricted width of the flyout which should be drawn to */ + private flyoutWidth = 170; + /** The restricted height of the flyout which should be drawn to */ + private flyoutHeight = 51; + + /** The amount of translation animation on the x-axis */ + private translationX: number; + /** The x-axis point where the flyout should sit when activated */ + private anchorX: number; + /** The y-axis point where the flyout should sit when activated */ + private anchorY: number; + + /** The initial container which defines where the flyout should be attached */ + private flyoutParent: Phaser.GameObjects.Container; + /** The container which defines the drawable dimensions of the flyout */ + private flyoutContainer: Phaser.GameObjects.Container; + + /** The background {@linkcode Phaser.GameObjects.NineSlice} window for the flyout */ + private flyoutWindow: Phaser.GameObjects.NineSlice; + + /** The header {@linkcode Phaser.GameObjects.NineSlice} window for the flyout */ + private flyoutWindowHeader: Phaser.GameObjects.NineSlice; + /** The {@linkcode Phaser.GameObjects.Text} that goes inside of the header */ + private flyoutTextHeader: Phaser.GameObjects.Text; + + /** The {@linkcode Phaser.GameObjects.Sprite} that represents the current time of day */ + private timeOfDayIcon: Phaser.GameObjects.Sprite; + + /** The {@linkcode Phaser.GameObjects.Text} header used to indicate the player's effects */ + private flyoutTextHeaderPlayer: Phaser.GameObjects.Text; + /** The {@linkcode Phaser.GameObjects.Text} header used to indicate the enemy's effects */ + private flyoutTextHeaderEnemy: Phaser.GameObjects.Text; + /** The {@linkcode Phaser.GameObjects.Text} header used to indicate neutral effects */ + private flyoutTextHeaderField: Phaser.GameObjects.Text; + + /** The {@linkcode Phaser.GameObjects.Text} used to indicate the player's effects */ + private flyoutTextPlayer: Phaser.GameObjects.Text; + /** The {@linkcode Phaser.GameObjects.Text} used to indicate the enemy's effects */ + private flyoutTextEnemy: Phaser.GameObjects.Text; + /** The {@linkcode Phaser.GameObjects.Text} used to indicate neutral effects */ + private flyoutTextField: Phaser.GameObjects.Text; + + /** Container for all field effects observed by this object */ + private readonly fieldEffectInfo: ArenaEffectInfo[] = []; + + // Stores callbacks in a variable so they can be unsubscribed from when destroyed + private onNewArenaEvent = (event: Event) => this.onNewArena(event); + private onTurnInitEvent = (event: Event) => this.onTurnInit(event); + private onTurnEndEvent = (event: Event) => this.onTurnEnd(event); + + private onFieldEffectChangedEvent = (event: Event) => this.onFieldEffectChanged(event); + + constructor(scene: Phaser.Scene) { + super(scene, 0, 0); + this.battleScene = this.scene as BattleScene; + + this.translationX = this.flyoutWidth; + this.anchorX = 0; + this.anchorY = -98; + + this.flyoutParent = this.scene.add.container(this.anchorX - this.translationX, this.anchorY); + this.flyoutParent.setAlpha(0); + this.add(this.flyoutParent); + + this.flyoutContainer = this.scene.add.container(0, 0); + this.flyoutParent.add(this.flyoutContainer); + + this.flyoutWindow = addWindow(this.scene as BattleScene, 0, 0, this.flyoutWidth, this.flyoutHeight, false, false, 0, 0, WindowVariant.THIN); + this.flyoutContainer.add(this.flyoutWindow); + + this.flyoutWindowHeader = addWindow(this.scene as BattleScene, this.flyoutWidth / 2, 0, this.flyoutWidth / 2, 14, false, false, 0, 0, WindowVariant.XTHIN); + this.flyoutWindowHeader.setOrigin(); + + this.flyoutContainer.add(this.flyoutWindowHeader); + + this.flyoutTextHeader = addTextObject(this.scene, this.flyoutWidth / 2, 0, "Active Battle Effects", TextStyle.BATTLE_INFO); + this.flyoutTextHeader.setFontSize(54); + this.flyoutTextHeader.setAlign("center"); + this.flyoutTextHeader.setOrigin(); + + this.flyoutContainer.add(this.flyoutTextHeader); + + this.timeOfDayIcon = this.scene.add.sprite((this.flyoutWidth / 2) + (this.flyoutWindowHeader.displayWidth / 2), 0, "dawn_icon").setOrigin(); + this.timeOfDayIcon.setVisible(false); + + this.flyoutContainer.add(this.timeOfDayIcon); + + this.flyoutTextHeaderPlayer = addTextObject(this.scene, 6, 5, "Player", TextStyle.SUMMARY_BLUE); + this.flyoutTextHeaderPlayer.setFontSize(54); + this.flyoutTextHeaderPlayer.setAlign("left"); + this.flyoutTextHeaderPlayer.setOrigin(0, 0); + + this.flyoutContainer.add(this.flyoutTextHeaderPlayer); + + this.flyoutTextHeaderField = addTextObject(this.scene, this.flyoutWidth / 2, 5, "Neutral", TextStyle.SUMMARY_GREEN); + this.flyoutTextHeaderField.setFontSize(54); + this.flyoutTextHeaderField.setAlign("center"); + this.flyoutTextHeaderField.setOrigin(0.5, 0); + + this.flyoutContainer.add(this.flyoutTextHeaderField); + + this.flyoutTextHeaderEnemy = addTextObject(this.scene, this.flyoutWidth - 6, 5, "Enemy", TextStyle.SUMMARY_RED); + this.flyoutTextHeaderEnemy.setFontSize(54); + this.flyoutTextHeaderEnemy.setAlign("right"); + this.flyoutTextHeaderEnemy.setOrigin(1, 0); + + this.flyoutContainer.add(this.flyoutTextHeaderEnemy); + + this.flyoutTextPlayer = addTextObject(this.scene, 6, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextPlayer.setLineSpacing(-1); + this.flyoutTextPlayer.setFontSize(48); + this.flyoutTextPlayer.setAlign("left"); + this.flyoutTextPlayer.setOrigin(0, 0); + + this.flyoutContainer.add(this.flyoutTextPlayer); + + this.flyoutTextField = addTextObject(this.scene, this.flyoutWidth / 2, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextField.setLineSpacing(-1); + this.flyoutTextField.setFontSize(48); + this.flyoutTextField.setAlign("center"); + this.flyoutTextField.setOrigin(0.5, 0); + + this.flyoutContainer.add(this.flyoutTextField); + + this.flyoutTextEnemy = addTextObject(this.scene, this.flyoutWidth - 6, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextEnemy.setLineSpacing(-1); + this.flyoutTextEnemy.setFontSize(48); + this.flyoutTextEnemy.setAlign("right"); + this.flyoutTextEnemy.setOrigin(1, 0); + + this.flyoutContainer.add(this.flyoutTextEnemy); + + this.name = "Fight Flyout"; + this.flyoutParent.name = "Fight Flyout Parent"; + + // Subscribes to required events available on game start + this.battleScene.eventTarget.addEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); + this.battleScene.eventTarget.addEventListener(BattleSceneEventType.TURN_INIT, this.onTurnInitEvent); + this.battleScene.eventTarget.addEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); + } + + private setTimeOfDayIcon() { + this.timeOfDayIcon.setTexture(TimeOfDay[this.battleScene.arena.getTimeOfDay()].toLowerCase() + "_icon"); + } + + private onTurnInit(event: Event) { + this.setTimeOfDayIcon(); + } + + private onNewArena(event: Event) { + this.fieldEffectInfo.length = 0; + + // Subscribes to required events available on battle start + this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); + + this.setTimeOfDayIcon(); + } + + /** + * Formats a string to title case + * @param unformattedText Text to be formatted + * @returns the formatted string + */ + private formatText(unformattedText: string): string { + const text = unformattedText.split("_"); + for (let i = 0; i < text.length; i++) { + text[i] = text[i].charAt(0).toUpperCase() + text[i].substring(1).toLowerCase(); + } + + return text.join(" "); + } + + /** Clears out the current string stored in all arena effect texts */ + private clearText() { + this.flyoutTextPlayer.text = ""; + this.flyoutTextField.text = ""; + this.flyoutTextEnemy.text = ""; + } + + /** Parses through all set Arena Effects and puts them into the proper {@linkcode Phaser.GameObjects.Text} object */ + private updateFieldText() { + this.clearText(); + + this.fieldEffectInfo.sort((infoA, infoB) => infoA.duration - infoB.duration); + + for (let i = 0; i < this.fieldEffectInfo.length; i++) { + const fieldEffectInfo = this.fieldEffectInfo[i]; + + // Creates a proxy object to decide which text object needs to be updated + let textObject: Phaser.GameObjects.Text; + switch (fieldEffectInfo.type) { + case ArenaEffectType.PLAYER: + textObject = this.flyoutTextPlayer; + break; + + case ArenaEffectType.WEATHER: + case ArenaEffectType.TERRAIN: + case ArenaEffectType.FIELD: + textObject = this.flyoutTextField; + + break; + + case ArenaEffectType.ENEMY: + textObject = this.flyoutTextEnemy; + break; + } + + textObject.text += this.formatText(fieldEffectInfo.name); + if (fieldEffectInfo.type === ArenaEffectType.TERRAIN) { + textObject.text += " Terrain"; // Adds 'Terrain' since the enum does not contain it + } + + if (fieldEffectInfo.maxDuration !== 0) { + textObject.text += " " + fieldEffectInfo.duration + "/" + fieldEffectInfo.maxDuration; + } + + textObject.text += "\n"; + } + } + + /** + * Parses the {@linkcode Event} being passed and updates the state of the fieldEffectInfo array + * @param event {@linkcode Event} being sent + */ + private onFieldEffectChanged(event: Event) { + const arenaEffectChangedEvent = event as ArenaEvent; + if (!arenaEffectChangedEvent) { + return; + } + + let foundIndex: number; + switch (arenaEffectChangedEvent.constructor) { + case TagAddedEvent: + const tagAddedEvent = arenaEffectChangedEvent as TagAddedEvent; + this.fieldEffectInfo.push({ + name: ArenaTagType[tagAddedEvent.arenaTagType], + type: tagAddedEvent.arenaTagSide === ArenaTagSide.BOTH + ? ArenaEffectType.FIELD + : tagAddedEvent.arenaTagSide === ArenaTagSide.PLAYER + ? ArenaEffectType.PLAYER + : ArenaEffectType.ENEMY, + maxDuration: tagAddedEvent.duration, + duration: tagAddedEvent.duration}); + break; + case TagRemovedEvent: + const tagRemovedEvent = arenaEffectChangedEvent as TagRemovedEvent; + foundIndex = this.fieldEffectInfo.findIndex(info => info.name === ArenaTagType[tagRemovedEvent.arenaTagType]); + if (foundIndex !== -1) { // If the tag was being tracked, remove it + this.fieldEffectInfo.splice(foundIndex, 1); + } + break; + + case WeatherChangedEvent: + case TerrainChangedEvent: + const fieldEffectChangedEvent = arenaEffectChangedEvent as WeatherChangedEvent | TerrainChangedEvent; + + // Stores the old Weather/Terrain name in case it's in the array already + const oldName = + fieldEffectChangedEvent instanceof WeatherChangedEvent + ? WeatherType[fieldEffectChangedEvent.oldWeatherType] + : TerrainType[fieldEffectChangedEvent.oldTerrainType]; + // Stores the new Weather/Terrain info + const newInfo = { + name: + fieldEffectChangedEvent instanceof WeatherChangedEvent + ? WeatherType[fieldEffectChangedEvent.newWeatherType] + : TerrainType[fieldEffectChangedEvent.newTerrainType], + type: fieldEffectChangedEvent instanceof WeatherChangedEvent + ? ArenaEffectType.WEATHER + : ArenaEffectType.TERRAIN, + maxDuration: fieldEffectChangedEvent.duration, + duration: fieldEffectChangedEvent.duration}; + + foundIndex = this.fieldEffectInfo.findIndex(info => [newInfo.name, oldName].includes(info.name)); + if (foundIndex === -1) { + if (newInfo.name !== undefined) { + this.fieldEffectInfo.push(newInfo); // Adds the info to the array if it doesn't already exist and is defined + } + } else if (!newInfo.name) { + this.fieldEffectInfo.splice(foundIndex, 1); // Removes the old info if the new one is undefined + } else { + this.fieldEffectInfo[foundIndex] = newInfo; // Otherwise, replace the old info + } + break; + } + + this.updateFieldText(); + } + + /** + * Iterates through the fieldEffectInfo array and decrements the duration of each item + * @param event {@linkcode Event} being sent + */ + private onTurnEnd(event: Event) { + const turnEndEvent = event as TurnEndEvent; + if (!turnEndEvent) { + return; + } + + const fieldEffectInfo: ArenaEffectInfo[] = []; + this.fieldEffectInfo.forEach(i => fieldEffectInfo.push(i)); + + for (let i = 0; i < fieldEffectInfo.length; i++) { + const info = fieldEffectInfo[i]; + + if (info.maxDuration === 0) { + continue; + } + + --info.duration; + if (info.duration <= 0) { // Removes the item if the duration has expired + this.fieldEffectInfo.splice(this.fieldEffectInfo.indexOf(info), 1); + } + } + + this.updateFieldText(); + } + + /** + * Animates the flyout to either show or hide it by applying a fade and translation + * @param visible Should the flyout be shown? + */ + toggleFlyout(visible: boolean): void { + this.scene.tweens.add({ + targets: this.flyoutParent, + x: visible ? this.anchorX : this.anchorX - this.translationX, + duration: Utils.fixedInt(125), + ease: "Sine.easeInOut", + alpha: visible ? 1 : 0, + }); + } + + destroy(fromScene?: boolean): void { + this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); + this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); + + this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); + this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); + + super.destroy(); + } +} diff --git a/src/ui/ui.ts b/src/ui/ui.ts index b2df4d22259..0f33a9cb6c7 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -222,6 +222,21 @@ export default class UI extends Phaser.GameObjects.Container { return this.handlers[Mode.MESSAGE] as BattleMessageUiHandler; } + processInfoButton(pressed: boolean) { + if (this.overlayActive) { + return false; + } + + const battleScene = this.scene as BattleScene; + if ([Mode.CONFIRM, Mode.COMMAND, Mode.FIGHT, Mode.MESSAGE].includes(this.mode)) { + battleScene?.processInfoButton(pressed); + return true; + } + + battleScene?.processInfoButton(false); + return true; + } + processInput(button: Button): boolean { if (this.overlayActive) { return false; From f503080167b5041a04756a72466d81b6c6942d91 Mon Sep 17 00:00:00 2001 From: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:33:26 -0400 Subject: [PATCH 04/18] [Bug] Curse should do at least 1 damage (#1740) * [Bug] Curse should do at least 1 damage * Used the wrong math function lol --- src/data/battler-tags.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index c4fd5dfb45b..63ac9fd895d 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1341,7 +1341,7 @@ export class CursedTag extends BattlerTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - pokemon.damageAndUpdate(Math.floor(pokemon.getMaxHp() / 4)); + pokemon.damageAndUpdate(Math.max(Math.floor(pokemon.getMaxHp() / 4), 1)); pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` is hurt by the ${this.getMoveName()}!`)); } } From 041519a78ff0b981afb8a558e845fe85f9615c90 Mon Sep 17 00:00:00 2001 From: returntoice Date: Tue, 4 Jun 2024 12:46:42 +0900 Subject: [PATCH 05/18] [Localization] #1761 Korean double trainer dialogue (#1765) * Your commit message * localization --- src/locales/ko/dialogue.ts | 258 ++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/src/locales/ko/dialogue.ts b/src/locales/ko/dialogue.ts index 37c4d67936e..a2b0b2f28bc 100644 --- a/src/locales/ko/dialogue.ts +++ b/src/locales/ko/dialogue.ts @@ -1,4 +1,4 @@ -import {DialogueTranslationEntries, SimpleTranslationEntries} from "#app/plugins/i18n"; +import { DialogueTranslationEntries, SimpleTranslationEntries } from "#app/plugins/i18n"; // Dialogue of the NPCs in the game when the player character is male (or unset) export const PGMdialogue: DialogueTranslationEntries = { @@ -285,7 +285,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "worker_female": { "encounter": { - 1: `It bothers me that people always misunderstand me. + 1: `It bothers me that people always misunderstand me. $I'm a lot more pure than everyone thinks.` }, "victory": { @@ -788,7 +788,7 @@ export const PGMdialogue: DialogueTranslationEntries = { "cheren": { "encounter": { 1: "You remind me of an old friend. That makes me excited about this Pokémon battle!", - 2: `Pokémon battles have no meaning if you don't think why you battle. + 2: `Pokémon battles have no meaning if you don't think why you battle. $Or better said, it makes battling together with Pokémon meaningless.`, 3: "My name's Cheren! I'm a Gym Leader and a teacher! Pleasure to meet you." }, @@ -829,13 +829,13 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "victory": { 1: "Er… Is it over now?", - 2: `…What a surprise. You are very strong, aren't you? + 2: `…What a surprise. You are very strong, aren't you? $I guess my brothers wouldn't have been able to defeat you either…`, 3: "…Huh. Looks like my timing was, um, off?" }, "defeat": { 1: "Huh? Did I win?", - 2: `I guess… + 2: `I guess… $I suppose I won, because I've been competing with my brothers Chili and Cress, and we all were able to get tougher.`, 3: "It…it was quite a thrilling experience…" } @@ -864,9 +864,9 @@ export const PGMdialogue: DialogueTranslationEntries = { "encounter": { 1: `With a little more, I could see a future in which I meet the legendary Pokémon. $You're going to help me reach that level!`, - 2: `It's said that a rainbow-hued Pokémon will come down to appear before a truly powerful Trainer. - $I believed that tale, so I have secretly trained here all my life. As a result, I can now see what others cannot. - $I see a shadow of the person who will make the Pokémon appear. + 2: `It's said that a rainbow-hued Pokémon will come down to appear before a truly powerful Trainer. + $I believed that tale, so I have secretly trained here all my life. As a result, I can now see what others cannot. + $I see a shadow of the person who will make the Pokémon appear. $I believe that person is me! You're going to help me reach that level!`, 3: "Whether you choose to believe or not, mystic power does exist.", 4: "You can bear witness to the fruits of my training.", @@ -931,7 +931,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "drayton": { "encounter": { - 1: `Man, I love chairs. Don't you love chairs? What lifesavers. + 1: `Man, I love chairs. Don't you love chairs? What lifesavers. $I don't get why everyone doesn't just sit all the time. Standing up's tiring work!`, }, "victory": { @@ -956,7 +956,7 @@ export const PGMdialogue: DialogueTranslationEntries = { "viola": { "encounter": { 1: `Whether it's the tears of frustration that follow a loss or the blossoming of joy that comes with victory… - $They're both great subjects for my camera! Fantastic! This'll be just fantastic! + $They're both great subjects for my camera! Fantastic! This'll be just fantastic! $Now come at me!`, 2: "My lens is always focused on victory--I won't let anything ruin this shot!" }, @@ -972,14 +972,14 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "candice": { "encounter": { - 1: `You want to challenge Candice? Sure thing! I was waiting for someone tough! + 1: `You want to challenge Candice? Sure thing! I was waiting for someone tough! $But I should tell you, I'm tough because I know how to focus.`, - 2: `Pokémon, fashion, romance… It's all about focus! + 2: `Pokémon, fashion, romance… It's all about focus! $I'll show you just what I mean. Get ready to lose!` }, "victory": { 1: "I must say, I'm warmed up to you! I might even admire you a little.", - 2: `Wow! You're great! You've earned my respect! + 2: `Wow! You're great! You've earned my respect! $I think your focus and will bowled us over totally. ` }, "defeat": { @@ -1040,7 +1040,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Man oh man… It feels good to go all out and still be defeated!" }, "defeat": { - 1: `What's important is how ya react to losin'. + 1: `What's important is how ya react to losin'. $That's why folks who use losin' as fuel to get better are tough.`, } }, @@ -1081,8 +1081,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "phoebe": { "encounter": { - 1: `While I trained, I gained the ability to commune with Ghost-type Pokémon. - $Yes, the bond I developed with Pokémon is extremely tight. + 1: `While I trained, I gained the ability to commune with Ghost-type Pokémon. + $Yes, the bond I developed with Pokémon is extremely tight. $So, come on, just try and see if you can even inflict damage on my Pokémon!`, }, "victory": { @@ -1094,12 +1094,12 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "glacia": { "encounter": { - 1: `All I have seen are challenges by weak Trainers and their Pokémon. + 1: `All I have seen are challenges by weak Trainers and their Pokémon. $What about you? It would please me to no end if I could go all out against you!`, }, "victory": { 1: `You and your Pokémon… How hot your spirits burn! - $The all-consuming heat overwhelms. + $The all-consuming heat overwhelms. $It's no surprise that my icy skills failed to harm you.`, }, "defeat": { @@ -1108,7 +1108,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "drake": { "encounter": { - 1: `For us to battle with Pokémon as partners, do you know what it takes? Do you know what is needed? + 1: `For us to battle with Pokémon as partners, do you know what it takes? Do you know what is needed? $If you don't, then you will never prevail over me!`, }, "victory": { @@ -1120,12 +1120,12 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "wallace": { "encounter": { - 1: `There's something about you… A difference in your demeanor. - $I think I sense that in you. Now, show me. Show me the power you wield with your Pokémon. + 1: `There's something about you… A difference in your demeanor. + $I think I sense that in you. Now, show me. Show me the power you wield with your Pokémon. $And I, in turn, shall present you with a performance of illusions in water by me and my Pokémon!`, }, "victory": { - 1: `Bravo. I realize now your authenticity and magnificence as a Pokémon Trainer. + 1: `Bravo. I realize now your authenticity and magnificence as a Pokémon Trainer. $I find much joy in having met you and your Pokémon. You have proven yourself worthy.`, }, "defeat": { @@ -1158,7 +1158,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "malva": { "encounter": { - 1: `I feel like my heart might just burst into flames. + 1: `I feel like my heart might just burst into flames. $I'm burning up with my hatred for you, runt!`, }, "victory": { @@ -1181,7 +1181,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "molayne": { "encounter": { - 1: `I gave the captain position to my cousin Sophocles, but I'm confident in my ability. + 1: `I gave the captain position to my cousin Sophocles, but I'm confident in my ability. $My strength is like that of a supernova!`, }, "victory": { @@ -1240,8 +1240,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Well, would you show this old lady how much you've learned?" }, "victory": { - 1: `Well! Dear child, I must say, that was most impressive. - $Your Pokémon believed in you and did their best to earn you the win. + 1: `Well! Dear child, I must say, that was most impressive. + $Your Pokémon believed in you and did their best to earn you the win. $Even though I've lost, I find myself with this silly grin!`, }, "defeat": { @@ -1267,7 +1267,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I shall store my memory of you and your Pokémon forever away within my heart." }, "defeat": { - 1: `Our Pokémon battle was like food for my soul. It shall keep me going. + 1: `Our Pokémon battle was like food for my soul. It shall keep me going. $That is how I will pay my respects to you for giving your all in battle!`, } }, @@ -1301,7 +1301,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Uagh?! Mmmuuuggghhh…" }, "defeat": { - 1: `Yaaay! I did it! I de-feet-ed you! You can come for… For… An avenge match? + 1: `Yaaay! I did it! I de-feet-ed you! You can come for… For… An avenge match? $Come for an avenge match anytime you want!`, } }, @@ -1341,8 +1341,8 @@ export const PGMdialogue: DialogueTranslationEntries = { "caitlin": { "encounter": { 1: `It's me who appeared when the flower opened up. You who have been waiting… - $You look like a Pokémon Trainer with refined strength and deepened kindness. - $What I look for in my opponent is superb strength… + $You look like a Pokémon Trainer with refined strength and deepened kindness. + $What I look for in my opponent is superb strength… $Please unleash your power to the fullest!`, }, "victory": { @@ -1354,7 +1354,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "diantha": { "encounter": { - 1: `Battling against you and your Pokémon, all of you brimming with hope for the future… + 1: `Battling against you and your Pokémon, all of you brimming with hope for the future… $Honestly, it just fills me up with energy I need to keep facing each new day! It does!`, }, "victory": { @@ -1366,14 +1366,14 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "wikstrom": { "encounter": { - 1: `Well met, young challenger! Verily am I the famed blade of hardened steel, Duke Wikstrom! + 1: `Well met, young challenger! Verily am I the famed blade of hardened steel, Duke Wikstrom! $Let the battle begin! En garde!`, }, "victory": { 1: "Glorious! The trust that you share with your honorable Pokémon surpasses even mine!" }, "defeat": { - 1: `What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! + 1: `What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! $Winning against such a worthy opponent doth give my soul wings--thus do I soar!`, } }, @@ -1433,8 +1433,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "milo": { "encounter": { - 1: `Sure seems like you understand Pokémon real well. - $This is gonna be a doozy of a battle! + 1: `Sure seems like you understand Pokémon real well. + $This is gonna be a doozy of a battle! $I'll have to Dynamax my Pokémon if I want to win!`, }, "victory": { @@ -1446,9 +1446,9 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "lucian": { "encounter": { - 1: `Just a moment, please. The book I'm reading has nearly reached its thrilling climax… - $The hero has obtained a mystic sword and is about to face their final trial… Ah, never mind. - $Since you've made it this far, I'll put that aside and battle you. + 1: `Just a moment, please. The book I'm reading has nearly reached its thrilling climax… + $The hero has obtained a mystic sword and is about to face their final trial… Ah, never mind. + $Since you've made it this far, I'll put that aside and battle you. $Let me see if you'll achieve as much glory as the hero of my book!,` }, "victory": { @@ -1486,7 +1486,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Prepare to learn firsthand how the fiery breath of ferocious battle feels!" }, "victory": { - 1: `Fortune smiled on me this time, but… + 1: `Fortune smiled on me this time, but… $Judging from how the match went, who knows if I will be so lucky next time.`, }, "defeat": { @@ -1550,10 +1550,10 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "steven": { "encounter": { - 1: `Tell me… What have you seen on your journey with your Pokémon? - $What have you felt, meeting so many other Trainers out there? - $Traveling this rich land… Has it awoken something inside you? - $I want you to come at me with all that you've learned. + 1: `Tell me… What have you seen on your journey with your Pokémon? + $What have you felt, meeting so many other Trainers out there? + $Traveling this rich land… Has it awoken something inside you? + $I want you to come at me with all that you've learned. $My Pokémon and I will respond in turn with all that we know!`, }, "victory": { @@ -1576,11 +1576,11 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "iris": { "encounter": { - 1: `Know what? I really look forward to having serious battles with strong Trainers! - $I mean, come on! The Trainers who make it here are Trainers who desire victory with every fiber of their being! - #And they are battling alongside Pokémon that have been through countless difficult battles! - $If I battle with people like that, not only will I get stronger, my Pokémon will, too! - $And we'll get to know each other even better! OK! Brace yourself! + 1: `Know what? I really look forward to having serious battles with strong Trainers! + $I mean, come on! The Trainers who make it here are Trainers who desire victory with every fiber of their being! + #And they are battling alongside Pokémon that have been through countless difficult battles! + $If I battle with people like that, not only will I get stronger, my Pokémon will, too! + $And we'll get to know each other even better! OK! Brace yourself! $I'm Iris, the Pokémon League Champion, and I'm going to defeat you!`, }, "victory": { @@ -1604,7 +1604,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "geeta": { "encounter": { - 1: `I decided to throw my hat in the ring once more. + 1: `I decided to throw my hat in the ring once more. $Come now… Show me the fruits of your training.`, }, "victory": { @@ -1630,8 +1630,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "We're gonna have an absolutely champion time!" }, "victory": { - 1: `My time as Champion is over… - $But what a champion time it's been! + 1: `My time as Champion is over… + $But what a champion time it's been! $Thank you for the greatest battle I've ever had!`, }, "defeat": { @@ -1695,7 +1695,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "maylene": { "encounter": { - 1: `I've come to challenge you now, and I won't hold anything back. + 1: `I've come to challenge you now, and I won't hold anything back. $Please prepare yourself for battle!`, }, "victory": { @@ -1707,7 +1707,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "fantina": { "encounter": { - 1: `You shall challenge me, yes? But I shall win. + 1: `You shall challenge me, yes? But I shall win. $That is what the Gym Leader of Hearthome does, non?`, }, "victory": { @@ -1719,8 +1719,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "byron": { "encounter": { - 1: `Trainer! You're young, just like my son, Roark. - $With more young Trainers taking charge, the future of Pokémon is bright! + 1: `Trainer! You're young, just like my son, Roark. + $With more young Trainers taking charge, the future of Pokémon is bright! $So, as a wall for young people, I'll take your challenge!`, }, "victory": { @@ -1748,19 +1748,19 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "victory": { 1: `You've got me beat… - $Your desire and the noble way your Pokémon battled for you… + $Your desire and the noble way your Pokémon battled for you… $I even felt thrilled during our match. That was a very good battle.`, }, "defeat": { - 1: `It was not shocking at all… + 1: `It was not shocking at all… $That is not what I wanted!`, } }, "burgh": { "encounter": { - 1: `M'hm… If I win this battle, I feel like I can draw a picture unlike any before it. + 1: `M'hm… If I win this battle, I feel like I can draw a picture unlike any before it. $OK! I can hear my battle muse loud and clear. Let's get straight to it!`, - 2: `Of course, I'm really proud of all of my Pokémon! + 2: `Of course, I'm really proud of all of my Pokémon! $Well now… Let's get right to it!` }, "victory": { @@ -1769,13 +1769,13 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "defeat": { 1: "Wow… It's beautiful somehow, isn't it…", - 2: `Sometimes I hear people say something was an ugly win. + 2: `Sometimes I hear people say something was an ugly win. $I think if you're trying your best, any win is beautiful.` } }, "elesa": { "encounter": { - 1: `C'est fini! When I'm certain of that, I feel an electric jolt run through my body! + 1: `C'est fini! When I'm certain of that, I feel an electric jolt run through my body! $I want to feel the sensation, so now my beloved Pokémon are going to make your head spin!`, }, "victory": { @@ -1787,8 +1787,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "skyla": { "encounter": { - 1: `It's finally time for a showdown! That means the Pokémon battle that decides who's at the top, right? - $I love being on the summit! 'Cause you can see forever and ever from high places! + 1: `It's finally time for a showdown! That means the Pokémon battle that decides who's at the top, right? + $I love being on the summit! 'Cause you can see forever and ever from high places! $So, how about you and I have some fun?`, }, "victory": { @@ -1800,7 +1800,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "brycen": { "encounter": { - 1: `There is also strength in being with other people and Pokémon. + 1: `There is also strength in being with other people and Pokémon. $Receiving their support makes you stronger. I'll show you this power!`, }, "victory": { @@ -1812,7 +1812,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "drayden": { "encounter": { - 1: `What I want to find is a young Trainer who can show me a bright future. + 1: `What I want to find is a young Trainer who can show me a bright future. $Let's battle with everything we have: your skill, my experience, and the love we've raised our Pokémon with!`, }, "victory": { @@ -1824,15 +1824,15 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "grant": { "encounter": { - 1: `There is only one thing I wish for. + 1: `There is only one thing I wish for. $That by surpassing one another, we find a way to even greater heights.`, }, "victory": { 1: "You are a wall that I am unable to surmount!" }, "defeat": { - 1: `Do not give up. - $That is all there really is to it. + 1: `Do not give up. + $That is all there really is to it. $The most important lessons in life are simple.`, } }, @@ -1860,8 +1860,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "valerie": { "encounter": { - 1: `Oh, if it isn't a young Trainer… It is lovely to get to meet you like this. - $Then I suppose you have earned yourself the right to a battle, as a reward for your efforts. + 1: `Oh, if it isn't a young Trainer… It is lovely to get to meet you like this. + $Then I suppose you have earned yourself the right to a battle, as a reward for your efforts. $The elusive Fairy may appear frail as the breeze and delicate as a bloom, but it is strong.`, }, "victory": { @@ -1874,7 +1874,7 @@ export const PGMdialogue: DialogueTranslationEntries = { "wulfric": { "encounter": { 1: `You know what? We all talk big about what you learn from battling and bonds and all that… - $But really, I just do it 'cause it's fun. + $But really, I just do it 'cause it's fun. $Who cares about the grandstanding? Let's get to battling!`, }, "victory": { @@ -1886,8 +1886,8 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "kabu": { "encounter": { - 1: `Every Trainer and Pokémon trains hard in pursuit of victory. - $But that means your opponent is also working hard to win. + 1: `Every Trainer and Pokémon trains hard in pursuit of victory. + $But that means your opponent is also working hard to win. $In the end, the match is decided by which side is able to unleash their true potential.`, }, "victory": { @@ -1899,7 +1899,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "bea": { "encounter": { - 1: `Do you have an unshakable spirit that won't be moved, no matter how you are attacked? + 1: `Do you have an unshakable spirit that won't be moved, no matter how you are attacked? $I think I'll just test that out, shall I?`, }, "victory": { @@ -1944,7 +1944,7 @@ export const PGMdialogue: DialogueTranslationEntries = { }, "marnie": { "encounter": { - 1: `The truth is, when all's said and done… I really just wanna become Champion for myself! + 1: `The truth is, when all's said and done… I really just wanna become Champion for myself! $So don't take it personal when I kick your butt!`, }, "victory": { @@ -1959,8 +1959,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'm going to defeat the Champion, win the whole tournament, and prove to the world just how strong the great Raihan really is!" }, "victory": { - 1: `I look this good even when I lose. - $It's a real curse. + 1: `I look this good even when I lose. + $It's a real curse. $Guess it's time for another selfie!`, }, "defeat": { @@ -1982,7 +1982,7 @@ export const PGMdialogue: DialogueTranslationEntries = { "encounter": { 1: `How're ya feelin' about this battle? $... - $Let's get this show on the road! How strong is our challenger? + $Let's get this show on the road! How strong is our challenger? $I 'unno! Let's find out together!`, }, "victory": { @@ -2335,113 +2335,113 @@ export const PGFmiscDialogue: SimpleTranslationEntries = PGMmiscDialogue; export const PGMdoubleBattleDialogue: DialogueTranslationEntries = { "blue_red_double": { "encounter": { - 1: `Blue: Hey Red, let's show them what we're made of! - $Red: ... - $Blue: This is Pallet Town Power!`, + 1: `그린: 어이 레드! 우리가 누군지 보여주자고! + $레드: ... + $그린: 태초마을의 힘을 보여주지!`, }, "victory": { - 1: `Blue: That was a great battle! - $Red: ...`, + 1: `그린: 훌륭한 승부였어! + $레드: ...`, }, }, "red_blue_double": { "encounter": { - 1: `Red: ...! - $Blue: He never talks much. - $Blue: But dont let that fool you! He is a champ after all!`, + 1: `레드: ...! + $그린: 이 녀석은 여전히 말이 없구나. + $그린: 그렇지만 방심해선 안 돼! 그래도 챔피언이라고!`, }, "victory": { - 1: `Red: ...! - $Blue: Next time we will beat you!`, + 1: `레드: ...! + $그린: 다음에는 우리가 이길 테다!`, }, }, "tate_liza_double": { "encounter": { - 1: `Tate: Are you suprised? - $Liza: We are two gym leaders at once! - $Tate: We are twins! - $Liza: We dont need to talk to understand each other! - $Tate: Twice the power... - $Liza: Can you handle it?`, + 1: `풍: 에헤헤... 체육관 관장이 + $란: 두 명이나 있어서 놀랐지? + $풍: 우리는 쌍둥이! + $란: 굳이 말을 하지 않아도 서로가 무슨 생각을 하고 있는지 + $풍: 자동으로 머릿속에 떠오르니까 + $란: 호흡을 척척 맞출 수가 있지!`, }, "victory": { - 1: `Tate: What? Our combination was perfect! - $Liza: Looks like we need to train more...`, + 1: `풍: 우, 우리들의 + $란: 팀워크가...!`, }, }, "liza_tate_double": { "encounter": { - 1: `Liza: Hihihi... Are you suprised? - $Tate: Yes, we are really two gym leaders at once! - $Liza: This is my twin brother Tate! - $Tate: And this is my twin sister Liza! - $Liza: Don't you think we are a perfect combination?` + 1: `란: 우후후... 체육관 관장이 + $풍: 두 명이나 있어서 놀랐어? + $란: 우리는 쌍둥이! + $풍: 완벽한 우리의 콤비네이션을 + $란: 과연 네가 깨뜨릴 수 있을까?` }, "victory": { - 1: `Liza: Are we... - $Tate: ...not as strong as we thought?`, + 1: `란: 우리들이 생각한 만큼 + $풍: 우리가 강하지 않았던 걸까?`, }, }, "wallace_steven_double": { "encounter": { - 1: `Steven: Wallace, let's show them the power of the champions! - $Wallace: We will show you the power of Hoenn! - $Steven: Let's go!`, + 1: `성호: 윤진! 우리 챔피언의 힘을 보여주자! + $윤진: 호연의 힘을 보여주마! + $성호: 간다!`, }, "victory": { - 1: `Steven: That was a great battle! - $Wallace: We will win next time!`, + 1: `성호: 훌륭한 승부였어! + $윤진: 다음엔 우리가 이길 거다!`, }, }, "steven_wallace_double": { "encounter": { - 1: `Steven: Do you have any rare pokémon? - $Wallace: Steven... We are here for a battle, not to show off our pokémon. - $Steven: Oh... I see... Let's go then!`, + 1: `성호: 너 혹시 희귀한 포켓몬 가지고 있니? + $윤진: 성호야... 우리는 포켓몬을 자랑하러 온 게 아니라 승부하러 온 거야. + $성호: 오... 그렇지... 그럼 간다!`, }, "victory": { - 1: `Steven: Now that we are done with the battle, let's show off our pokémon! - $Wallace: Steven...`, + 1: `성호: 이제 승부는 끝났으니 포켓몬을 자랑해 볼까! + $윤진: 성호야...`, }, }, "alder_iris_double": { "encounter": { - 1: `Alder: We are the strongest trainers in Unova! - $Iris: Fights against strong trainers are the best!`, + 1: `노간주: 우리는 하나 지방 최강의 트레이너들이란다! + $아이리스: 이렇게 강한 트레이너와 싸울 수 있어서 정말 기뻐~!!`, }, "victory": { - 1: `Alder: Wow! You are super strong! - $Iris: We will win next time!`, + 1: `노간주: 장하구나! 실로 견줄 자가 천하에 없도다! + $아이리스: 다음 번엔 우리가 꼭 이길 거야~!`, }, }, "iris_alder_double": { "encounter": { - 1: `Iris: Welcome Challenger! I am THE Unova Champion! - $Alder: Iris, aren't you a bit too excited?`, + 1: `아이리스: 어서 와, 도전자! 내가 바로 하나 지방 챔피언이야~! + $노간주: 아이리스야, 너무 흥분한 것 아니냐?`, }, "victory": { - 1: `Iris: A loss like this is not easy to take... - $Alder: But we will only get stronger with every loss!`, + 1: `아이리스: 후와아아아아... 최선을 다했는데도... 우리가 져버렸네! + $노간주: 하지만 우리의 패배를 발판 삼아 나아가리라!`, }, }, "piers_marnie_double": { "encounter": { - 1: `Marnie: Brother, let's show them the power of Spikemuth! - $Piers: We bring darkness!`, + 1: `마리: 오빠, 스파이크마을의 힘을 보여주자! + $두송: 우리가 어둠을 불러올 것이다!`, }, "victory": { - 1: `Marnie: You brought light to our darkness! - $Piers: Its too bright...`, + 1: `마리: 네가 우리의 어둠에 빛을 불러왔구나! + $두송: 여긴 너무 밝네...`, }, }, "marnie_piers_double": { "encounter": { - 1: `Piers: Ready for a concert? - $Marnie: Brother... They are here to fight, not to sing...`, + 1: `두송: 큰서트 즐길 준비 됐어? + $마리: 오빠... 얘들은 노래가 아니라 승부를 하러 왔어...`, }, "victory": { - 1: `Piers: Now that was a great concert! - $Marnie: Brother...`, + 1: `두송: 훌륭한 콘서트였다! + $마리: 오빠...`, }, }, }; From c499f351d1972397695b00398a81e5c4897406e1 Mon Sep 17 00:00:00 2001 From: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Date: Tue, 4 Jun 2024 00:51:36 -0400 Subject: [PATCH 06/18] [Bug] Add missing snowscape TM mons (#1742) --- src/data/tms.ts | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/data/tms.ts b/src/data/tms.ts index 6e55ea496ba..dfde4ef948e 100644 --- a/src/data/tms.ts +++ b/src/data/tms.ts @@ -63123,9 +63123,12 @@ export const tmSpecies: TmSpecies = { [Moves.SNOWSCAPE]: [ Species.SLOWPOKE, Species.SLOWBRO, + Species.SEEL, + Species.DEWGONG, Species.SHELLDER, Species.CLOYSTER, Species.CHANSEY, + Species.LAPRAS, Species.ARTICUNO, Species.DRAGONITE, Species.MEW, @@ -63140,6 +63143,7 @@ export const tmSpecies: TmSpecies = { Species.PILOSWINE, Species.DELIBIRD, Species.BLISSEY, + Species.SUICUNE, Species.WINGULL, Species.PELIPPER, Species.SPOINK, @@ -63148,11 +63152,20 @@ export const tmSpecies: TmSpecies = { Species.SNORUNT, Species.GLALIE, Species.LUVDISC, + Species.REGICE, Species.PIPLUP, Species.PRINPLUP, Species.EMPOLEON, - Species.SHELLOS, - Species.GASTRODON, + [ + Species.SHELLOS, + "east", + "west", + ], + [ + Species.GASTRODON, + "east", + "west", + ], Species.MISMAGIUS, Species.HAPPINY, Species.SNOVER, @@ -63170,7 +63183,17 @@ export const tmSpecies: TmSpecies = { Species.CUBCHOO, Species.BEARTIC, Species.CRYOGONAL, - Species.TORNADUS, + [ + Species.TORNADUS, + "incarnate", + "therian", + ], + [ + Species.KYUREM, + "", + "black", + "white", + ], Species.FROAKIE, Species.FROGADIER, [ @@ -63184,8 +63207,13 @@ export const tmSpecies: TmSpecies = { Species.BERGMITE, Species.AVALUGG, Species.DIANCIE, + Species.PRIMARINA, Species.CRABOMINABLE, - Species.MAGEARNA, + [ + Species.MAGEARNA, + "", + "original", + ], Species.INTELEON, Species.FROSMOTH, Species.EISCUE, @@ -63633,12 +63661,21 @@ export const tmSpecies: TmSpecies = { Species.WEAVILE, Species.GLACEON, Species.FROSLASS, - Species.PALKIA, + [ + Species.PALKIA, + "", + "origin", + ], Species.ARCEUS, Species.OSHAWOTT, Species.DEWOTT, Species.SAMUROTT, - Species.BASCULIN, + [ + Species.BASCULIN, + "red-striped", + "blue-striped", + "white-striped", + ], Species.DUCKLETT, Species.SWANNA, Species.ALOMOMOLA, From a01cb96de65b8431f74e8bdd146d66de5a3ec30c Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Tue, 4 Jun 2024 00:33:57 -0500 Subject: [PATCH 07/18] Allow Pumpkaboo & Gourgeist forms to be caught They do not have sprite differences currently, so they won't be able to be identified at a glance, but they do have the canon stat differences between "sizes". --- src/battle-scene.ts | 2 ++ src/data/pokemon-species.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 12e0bcb699b..957052d9881 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1111,6 +1111,8 @@ export default class BattleScene extends SceneBase { case Species.FLOETTE: case Species.FLORGES: case Species.FURFROU: + case Species.PUMPKABOO: + case Species.GOURGEIST: case Species.ORICORIO: case Species.MAGEARNA: case Species.ZARUDE: diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index cde6b741423..793f4ff9927 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -2010,15 +2010,15 @@ export function initSpecies() { new PokemonSpecies(Species.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", Type.GHOST, Type.GRASS, 1.5, 71, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", Type.GHOST, Type.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, new PokemonForm("Average Size", "", Type.GHOST, Type.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), - new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.3, 3.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, null, true), - new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 0.5, 7.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, null, true), - new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 0.8, 15, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, null, true), + new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.3, 3.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), + new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 0.5, 7.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), + new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 0.8, 15, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), ), new PokemonSpecies(Species.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", Type.GHOST, Type.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, new PokemonForm("Average Size", "", Type.GHOST, Type.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), - new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.7, 9.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, null, true), - new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 1.1, 14, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, null, true), - new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 1.7, 39, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, null, true), + new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.7, 9.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), + new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 1.1, 14, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), + new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 1.7, 39, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), ), new PokemonSpecies(Species.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", Type.ICE, null, 1, 99.5, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.AVALUGG, 6, false, false, false, "Iceberg Pokémon", Type.ICE, null, 2, 505, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), From 38f533276fb706bffacf191c714905c87656a26b Mon Sep 17 00:00:00 2001 From: chaosgrimmon <31082757+chaosgrimmon@users.noreply.github.com> Date: Tue, 4 Jun 2024 01:53:58 -0400 Subject: [PATCH 08/18] [Bug] Lustrous Globe named Lustrous Orb (#1781) * [Bug] Lustrous Globe, not Orb for Palkia Origin * [Bug] Lustrous Globe named Lustrous Orb Translation sourced from https://www.pokewiki.de/Wei%C3%9Fkristall * [Bug] Lustrous Globe named Lustrous Orb * [Bug] Lustrous Globe named Lustrous Orb Prior translation appears correct, cross-referenced with https://www.wikidex.net/wiki/Gran_lustresfera * [Bug] Lustrous Globe named Lustrous Orb Translation sourced from https://www.pokepedia.fr/Globe_Perl%C3%A9 * [Bug] Lustrous Globe named Lustrous Orb Translation sourced from https://wiki.pokemoncentral.it/Splendisferoide * [Bug] Lustrous Globe named Lustrous Orb Prior translation seems correct, cross-referenced with https://pokemon.fandom.com/ko/wiki/%ED%81%B0%EB%B0%B1%EC%98%A5 * [Bug] Lustrous Globe named Lustrous Orb No source found. Brilhante take from canonical translation of https://bulbapedia.bulbagarden.net/wiki/Lustrous_Orb * [Bug] Lustrous Globe named Lustrous Orb Translation sourced from https://bulbapedia.bulbagarden.net/wiki/Lustrous_Globe * [Bug] Lustrous Globe named Lustrous Orb Translation sourced from https://bulbapedia.bulbagarden.net/wiki/Lustrous_Globe --- src/data/pokemon-forms.ts | 4 ++-- src/locales/de/modifier-type.ts | 2 +- src/locales/en/modifier-type.ts | 2 +- src/locales/es/modifier-type.ts | 2 +- src/locales/fr/modifier-type.ts | 2 +- src/locales/it/modifier-type.ts | 2 +- src/locales/ko/modifier-type.ts | 2 +- src/locales/pt_BR/modifier-type.ts | 2 +- src/locales/zh_CN/modifier-type.ts | 2 +- src/locales/zh_TW/modifier-type.ts | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index ebcf1c34f33..d87e4d90299 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -66,7 +66,7 @@ export enum FormChangeItem { HARD_METEORITE, SMOOTH_METEORITE, ADAMANT_CRYSTAL, - LUSTROUS_ORB, + LUSTROUS_GLOBE, GRISEOUS_CORE, REVEAL_GLASS, GRACIDEA, @@ -520,7 +520,7 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.DIALGA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.ADAMANT_CRYSTAL)) ], [Species.PALKIA]: [ - new SpeciesFormChange(Species.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_ORB)) + new SpeciesFormChange(Species.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_GLOBE)) ], [Species.GIRATINA]: [ new SpeciesFormChange(Species.GIRATINA, "altered", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.GRISEOUS_CORE)) diff --git a/src/locales/de/modifier-type.ts b/src/locales/de/modifier-type.ts index a03eb64d07e..055751970ab 100644 --- a/src/locales/de/modifier-type.ts +++ b/src/locales/de/modifier-type.ts @@ -366,7 +366,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Harter Meteorit", "SMOOTH_METEORITE": "Glatter Meteorit", "ADAMANT_CRYSTAL": "Adamantkristall", - "LUSTROUS_ORB": "Weiß-Orb", + "LUSTROUS_GLOBE": "Weißkristall", "GRISEOUS_CORE": "Platinumkristall", "REVEAL_GLASS": "Wahrspiegel", "GRACIDEA": "Gracidea", diff --git a/src/locales/en/modifier-type.ts b/src/locales/en/modifier-type.ts index e5c37843a99..e988f0a5250 100644 --- a/src/locales/en/modifier-type.ts +++ b/src/locales/en/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Hard Meteorite", "SMOOTH_METEORITE": "Smooth Meteorite", "ADAMANT_CRYSTAL": "Adamant Crystal", - "LUSTROUS_ORB": "Lustrous Orb", + "LUSTROUS_GLOBE": "Lustrous Globe", "GRISEOUS_CORE": "Griseous Core", "REVEAL_GLASS": "Reveal Glass", "GRACIDEA": "Gracidea", diff --git a/src/locales/es/modifier-type.ts b/src/locales/es/modifier-type.ts index 8e48b8e6627..e5f77549737 100644 --- a/src/locales/es/modifier-type.ts +++ b/src/locales/es/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Meteorito Duro", "SMOOTH_METEORITE": "Meteorito Suave", "ADAMANT_CRYSTAL": "Gran Diamansfera", - "LUSTROUS_ORB": "Gran Lustresfera", + "LUSTROUS_GLOBE": "Gran Lustresfera", "GRISEOUS_CORE": "Gran Griseosfera", "REVEAL_GLASS": "Espejo Veraz", "GRACIDEA": "Gracídea", diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 7b82b1d4ad5..a6960c4f0c5 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Méteorite Solide", "SMOOTH_METEORITE": "Méteorite Lisse", "ADAMANT_CRYSTAL": "Globe Adamant", - "LUSTROUS_ORB": "Orbe Perlé", + "LUSTROUS_GLOBE": "Globe Perlé", "GRISEOUS_CORE": "Globe Platiné", "REVEAL_GLASS": "Miroir Sacré", "GRACIDEA": "Gracidée", diff --git a/src/locales/it/modifier-type.ts b/src/locales/it/modifier-type.ts index ca703073d63..668df9601fc 100644 --- a/src/locales/it/modifier-type.ts +++ b/src/locales/it/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Meteorite Dura", "SMOOTH_METEORITE": "Meteorite Liscia", "ADAMANT_CRYSTAL": "Adamasferoide", - "LUSTROUS_ORB": "Splendisfera", + "LUSTROUS_GLOBE": "Splendisferoide", "GRISEOUS_CORE": "Grigiosferoide", "REVEAL_GLASS": "Verispecchio", "GRACIDEA": "Gracidea", diff --git a/src/locales/ko/modifier-type.ts b/src/locales/ko/modifier-type.ts index f3b9ece6e81..e2d90ed1ff9 100644 --- a/src/locales/ko/modifier-type.ts +++ b/src/locales/ko/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "단단한운석", "SMOOTH_METEORITE": "부드러운운석", "ADAMANT_CRYSTAL": "큰금강옥", - "LUSTROUS_ORB": "큰백옥", + "LUSTROUS_GLOBE": "큰백옥", "GRISEOUS_CORE": "큰백금옥", "REVEAL_GLASS": "비추는거울", "GRACIDEA": "그라시데아꽃", diff --git a/src/locales/pt_BR/modifier-type.ts b/src/locales/pt_BR/modifier-type.ts index e023fc7a6ba..ea384282f15 100644 --- a/src/locales/pt_BR/modifier-type.ts +++ b/src/locales/pt_BR/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "Meteorito Duro", "SMOOTH_METEORITE": " Meteorito Liso", "ADAMANT_CRYSTAL": "Cristal Adamante", - "LUSTROUS_ORB": "Orbe Pérola", + "LUSTROUS_GLOBE": "Globo Brilhante", "GRISEOUS_CORE": "Núcleo Platinado", "REVEAL_GLASS": "Espelho da Verdade", "GRACIDEA": "Gracídea", diff --git a/src/locales/zh_CN/modifier-type.ts b/src/locales/zh_CN/modifier-type.ts index 39e8ed9bfca..c51ce2cd788 100644 --- a/src/locales/zh_CN/modifier-type.ts +++ b/src/locales/zh_CN/modifier-type.ts @@ -365,7 +365,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "HARD_METEORITE": "坚硬陨石", "SMOOTH_METEORITE": "光滑陨石", "ADAMANT_CRYSTAL": "大金刚宝玉", - "LUSTROUS_ORB": "白玉宝珠", + "LUSTROUS_GLOBE": "大白宝玉", "GRISEOUS_CORE": "大白金宝玉", "REVEAL_GLASS": "现形镜", "GRACIDEA": "葛拉西蒂亚花", diff --git a/src/locales/zh_TW/modifier-type.ts b/src/locales/zh_TW/modifier-type.ts index 55a4e268ae5..854e65212f4 100644 --- a/src/locales/zh_TW/modifier-type.ts +++ b/src/locales/zh_TW/modifier-type.ts @@ -419,7 +419,7 @@ export const modifierType: ModifierTypeTranslationEntries = { HARD_METEORITE: "堅硬隕石", SMOOTH_METEORITE: "光滑隕石", ADAMANT_CRYSTAL: "大金剛寶玉", - LUSTROUS_ORB: "白玉寶珠", + LUSTROUS_GLOBE: "大白寶玉", GRISEOUS_CORE: "大白金寶玉", REVEAL_GLASS: "現形鏡", GRACIDEA: "葛拉西蒂亞花", From 7da8bdfdb62038319d18b6e95a76c47723bdc98d Mon Sep 17 00:00:00 2001 From: chaosgrimmon <31082757+chaosgrimmon@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:26:03 -0400 Subject: [PATCH 09/18] [Bug] Epic Drifblim using Drifloon sprite (#1788) --- public/images/pokemon/variant/_masterlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json index 333ed303443..adca124fc89 100644 --- a/public/images/pokemon/variant/_masterlist.json +++ b/public/images/pokemon/variant/_masterlist.json @@ -4065,7 +4065,7 @@ "426": [ 0, 1, - 2 + 1 ], "427": [ 0, From 7ac7c2b63b5eaebcb4b663bc3a96553e2ef3be5e Mon Sep 17 00:00:00 2001 From: Matthew Olker Date: Tue, 4 Jun 2024 09:54:10 -0400 Subject: [PATCH 10/18] fix mobile settings touch controls --- index.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.css b/index.css index 1a695fa0c4f..9ca2cd60dff 100644 --- a/index.css +++ b/index.css @@ -146,8 +146,8 @@ body { margin-left: 10%; } -#touchControls:not([data-ui-mode='STARTER_SELECT']):not([data-ui-mode='SETTINGS']):not([data-ui-mode='SETTINGS_GAMEPAD']):not([data-ui-mode='SETTINGS_KEYBOARD']) #apad .apadRectBtnContainer > .apadSqBtn, -#touchControls:not([data-ui-mode='STARTER_SELECT']):not([data-ui-mode='SETTINGS']):not([data-ui-mode='SETTINGS_GAMEPAD']):not([data-ui-mode='SETTINGS_KEYBOARD']) #apad .apadSqBtnContainer +#touchControls:not([data-ui-mode='STARTER_SELECT']):not([data-ui-mode='SETTINGS']):not([data-ui-mode='SETTINGS_ACCESSIBILITY']):not([data-ui-mode='SETTINGS_GAMEPAD']):not([data-ui-mode='SETTINGS_KEYBOARD']) #apad .apadRectBtnContainer > .apadSqBtn, +#touchControls:not([data-ui-mode='STARTER_SELECT']):not([data-ui-mode='SETTINGS']):not([data-ui-mode='SETTINGS_ACCESSIBILITY']):not([data-ui-mode='SETTINGS_GAMEPAD']):not([data-ui-mode='SETTINGS_KEYBOARD']) #apad .apadSqBtnContainer { display: none; } From ef8b6aa4f9fee580d178b8e5333b41286825d19c Mon Sep 17 00:00:00 2001 From: hayuna Date: Tue, 4 Jun 2024 17:29:38 +0200 Subject: [PATCH 11/18] [Feature] Add possibility to override whole user party (#1643) * Add possibility to override whole user party * Update species overriding * Replace SPARTER_SPECIES_OVERRIDE with array * Replace SPARTER_SPECIES_OVERRIDE with array * Add possibility to override species forms * Add possibility to override species forms * Fix eslint styling * Add possibility to override Abilities for party * Override status, gender, moveset * Add possibility to override shinies * Fix CI --- src/battle-scene.ts | 4 +- src/data/daily-run.ts | 2 +- src/field/pokemon.ts | 35 ++++++++------ src/overrides.ts | 103 +++++++++++++++++++++++++++++++++++------- src/phases.ts | 19 +++++--- 5 files changed, 123 insertions(+), 40 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 957052d9881..d4b74ea0979 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -686,8 +686,8 @@ export default class BattleScene extends SceneBase { return findInParty(this.getParty()) || findInParty(this.getEnemyParty()); } - addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon { - const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); + addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void, indexInParty?: number): PlayerPokemon { + const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource, indexInParty); if (postProcess) { postProcess(pokemon); } diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index cb4bfddc685..4683792aeb8 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -61,7 +61,7 @@ export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[] function getDailyRunStarter(scene: BattleScene, starterSpeciesForm: PokemonSpeciesForm, startingLevel: integer): Starter { const starterSpecies = starterSpeciesForm instanceof PokemonSpecies ? starterSpeciesForm : getPokemonSpecies(starterSpeciesForm.speciesId); const formIndex = starterSpeciesForm instanceof PokemonSpecies ? undefined : starterSpeciesForm.formIndex; - const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined); + const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined, undefined); const starter: Starter = { species: starterSpecies, dexAttr: pokemon.getDexAttr(), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 8065b4633b7..bc118bcfdbe 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -98,6 +98,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public battleData: PokemonBattleData; public battleSummonData: PokemonBattleSummonData; public turnData: PokemonTurnData; + public indexInParty: number; public fieldPosition: FieldPosition; @@ -106,7 +107,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { private shinySparkle: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { + constructor(scene: BattleScene, x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, indexInParty?: number) { super(scene, x, y); if (!species.isObtainable() && this.isPlayer()) { @@ -139,6 +140,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (variant !== undefined) { this.variant = variant; } + if (indexInParty !== undefined) { + this.indexInParty = indexInParty; + } this.exp = dataSource?.exp || getLevelTotalExp(this.level, species.growthRate); this.levelExp = dataSource?.levelExp || 0; if (dataSource) { @@ -816,7 +820,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { : this.moveset; // Overrides moveset based on arrays specified in overrides.ts - const overrideArray: Array = this.isPlayer() ? Overrides.MOVESET_OVERRIDE : Overrides.OPP_MOVESET_OVERRIDE; + const overrideArray: Array = this.isPlayer() ? Overrides.STARTER_OVERRIDE[this.indexInParty]?.moveset : Overrides.OPP_MOVESET_OVERRIDE; if (overrideArray.length > 0) { overrideArray.forEach((move: Moves, index: number) => { const ppUsed = this.moveset[index]?.ppUsed || 0; @@ -901,9 +905,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!ignoreOverride && this.summonData?.ability) { return allAbilities[this.summonData.ability]; } - if (Overrides.ABILITY_OVERRIDE && this.isPlayer()) { - return allAbilities[Overrides.ABILITY_OVERRIDE]; - } if (Overrides.OPP_ABILITY_OVERRIDE && !this.isPlayer()) { return allAbilities[Overrides.OPP_ABILITY_OVERRIDE]; } @@ -911,6 +912,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return allAbilities[this.getFusionSpeciesForm(ignoreOverride).getAbility(this.fusionAbilityIndex)]; } let abilityId = this.getSpeciesForm(ignoreOverride).getAbility(this.abilityIndex); + if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.ability) { + abilityId = Overrides.STARTER_OVERRIDE[this.indexInParty].ability; + } + if (abilityId === Abilities.NONE) { abilityId = this.species.ability1; } @@ -925,8 +930,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns {Ability} The passive ability of the pokemon */ getPassiveAbility(): Ability { - if (Overrides.PASSIVE_ABILITY_OVERRIDE && this.isPlayer()) { - return allAbilities[Overrides.PASSIVE_ABILITY_OVERRIDE]; + if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.passiveAbility && this.isPlayer()) { + return allAbilities[Overrides.STARTER_OVERRIDE[this.indexInParty].passiveAbility]; } if (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE && !this.isPlayer()) { return allAbilities[Overrides.OPP_PASSIVE_ABILITY_OVERRIDE]; @@ -948,7 +953,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ hasPassive(): boolean { // returns override if valid for current case - if ((Overrides.PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && this.isPlayer()) || + if ((Overrides.STARTER_OVERRIDE[this.indexInParty]?.passiveAbility !== Abilities.NONE && this.isPlayer()) || (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && !this.isPlayer())) { return true; } @@ -2822,19 +2827,21 @@ export default interface Pokemon { export class PlayerPokemon extends Pokemon { public compatibleTms: Moves[]; + public indexInParty: number; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender: Gender, shiny: boolean, variant: Variant, ivs: integer[], nature: Nature, dataSource: Pokemon | PokemonData) { + constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender: Gender, shiny: boolean, variant: Variant, ivs: integer[], nature: Nature, dataSource: Pokemon | PokemonData, indexInParty: number) { super(scene, 106, 148, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); - if (Overrides.STATUS_OVERRIDE) { - this.status = new Status(Overrides.STATUS_OVERRIDE); + if (Overrides.STARTER_OVERRIDE[indexInParty]?.status) { + this.status = new Status(Overrides.STARTER_OVERRIDE[indexInParty].status); } + this.indexInParty = indexInParty; - if (Overrides.SHINY_OVERRIDE) { + if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.shiny) { this.shiny = true; this.initShinySparkle(); - if (Overrides.VARIANT_OVERRIDE) { - this.variant = Overrides.VARIANT_OVERRIDE; + if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.shinyVariant) { + this.variant = Overrides.STARTER_OVERRIDE[this.indexInParty].shinyVariant; } } diff --git a/src/overrides.ts b/src/overrides.ts index 8f5d4978be3..d866973e669 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -52,24 +52,95 @@ export const POKEBALL_OVERRIDE: { active: boolean, pokeballs: PokeballCounts } = * PLAYER OVERRIDES */ -// forms can be found in pokemon-species.ts -export const STARTER_FORM_OVERRIDE: integer = 0; // default 5 or 20 for Daily export const STARTING_LEVEL_OVERRIDE: integer = 0; -/** - * SPECIES OVERRIDE - * will only apply to the first starter in your party or each enemy pokemon - * default is 0 to not override - * @example SPECIES_OVERRIDE = Species.Bulbasaur; - */ -export const STARTER_SPECIES_OVERRIDE: Species | integer = 0; -export const ABILITY_OVERRIDE: Abilities = Abilities.NONE; -export const PASSIVE_ABILITY_OVERRIDE: Abilities = Abilities.NONE; -export const STATUS_OVERRIDE: StatusEffect = StatusEffect.NONE; -export const GENDER_OVERRIDE: Gender = null; -export const MOVESET_OVERRIDE: Array = []; -export const SHINY_OVERRIDE: boolean = false; -export const VARIANT_OVERRIDE: Variant = 0; +interface StarterOverride { + /** + * SPECIES OVERRIDE + * will apply to each starter in your party + * default is 0 to not override + * @example STARTER_OVERRIDE.species = Species.Bulbasaur; + */ + + species: Species | integer; + // forms can be found in pokemon-species.ts + form: integer; + ability: Abilities; + passiveAbility: Abilities; + status: StatusEffect; + gender: Gender; + moveset: Moves[]; + shiny: boolean; + shinyVariant: Variant; +} +export const STARTER_OVERRIDE: StarterOverride[] = [ + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + }, + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + }, + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + }, + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + }, + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + }, + { + species: 0, + form: 0, + ability: Abilities.NONE, + passiveAbility: Abilities.NONE, + status: StatusEffect.NONE, + gender: null, + moveset: [], + shiny: false, + shinyVariant: 0, + } +]; /** * OPPONENT / ENEMY OVERRIDES diff --git a/src/phases.ts b/src/phases.ts index 110c4155849..c1e4a0e17cf 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -529,22 +529,27 @@ export class SelectStarterPhase extends Phase { const party = this.scene.getParty(); const loadPokemonAssets: Promise[] = []; starters.forEach((starter: Starter, i: integer) => { - if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { - starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); + if (Overrides.STARTER_OVERRIDE[i]?.species) { + starter.species = getPokemonSpecies(Overrides.STARTER_OVERRIDE[i].species as Species); } const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); - if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { - starterFormIndex = Overrides.STARTER_FORM_OVERRIDE; + if (Overrides.STARTER_OVERRIDE[i]?.form) { + starterFormIndex = Overrides.STARTER_OVERRIDE[i].form; + const availableForms = starter.species.forms.length; + // prevent use forms which does not exist for species + if (Overrides.STARTER_OVERRIDE[i].form >= availableForms) { + starterFormIndex = 0; + } } let starterGender = starter.species.malePercent !== null ? !starterProps.female ? Gender.MALE : Gender.FEMALE : Gender.GENDERLESS; - if (Overrides.GENDER_OVERRIDE !== null) { - starterGender = Overrides.GENDER_OVERRIDE; + if (Overrides.STARTER_OVERRIDE[i]?.gender !== null) { + starterGender = Overrides.STARTER_OVERRIDE[i].gender; } const starterIvs = this.scene.gameData.dexData[starter.species.speciesId].ivs.slice(0); - const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); + const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature, null, null, i); starterPokemon.tryPopulateMoveset(starter.moveset); if (starter.passive) { starterPokemon.passive = true; From 1c73b3b08448d059e8d65ea1509822f7687e3de0 Mon Sep 17 00:00:00 2001 From: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Date: Tue, 4 Jun 2024 11:39:02 -0400 Subject: [PATCH 12/18] Revert "[Feature] Add possibility to override whole user party (#1643)" (#1796) This reverts commit ef8b6aa4f9fee580d178b8e5333b41286825d19c. --- src/battle-scene.ts | 4 +- src/data/daily-run.ts | 2 +- src/field/pokemon.ts | 35 ++++++-------- src/overrides.ts | 103 +++++++----------------------------------- src/phases.ts | 19 +++----- 5 files changed, 40 insertions(+), 123 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index d4b74ea0979..957052d9881 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -686,8 +686,8 @@ export default class BattleScene extends SceneBase { return findInParty(this.getParty()) || findInParty(this.getEnemyParty()); } - addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void, indexInParty?: number): PlayerPokemon { - const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource, indexInParty); + addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon { + const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); if (postProcess) { postProcess(pokemon); } diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index 4683792aeb8..cb4bfddc685 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -61,7 +61,7 @@ export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[] function getDailyRunStarter(scene: BattleScene, starterSpeciesForm: PokemonSpeciesForm, startingLevel: integer): Starter { const starterSpecies = starterSpeciesForm instanceof PokemonSpecies ? starterSpeciesForm : getPokemonSpecies(starterSpeciesForm.speciesId); const formIndex = starterSpeciesForm instanceof PokemonSpecies ? undefined : starterSpeciesForm.formIndex; - const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined, undefined); + const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined); const starter: Starter = { species: starterSpecies, dexAttr: pokemon.getDexAttr(), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index bc118bcfdbe..8065b4633b7 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -98,7 +98,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public battleData: PokemonBattleData; public battleSummonData: PokemonBattleSummonData; public turnData: PokemonTurnData; - public indexInParty: number; public fieldPosition: FieldPosition; @@ -107,7 +106,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { private shinySparkle: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, indexInParty?: number) { + constructor(scene: BattleScene, x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { super(scene, x, y); if (!species.isObtainable() && this.isPlayer()) { @@ -140,9 +139,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (variant !== undefined) { this.variant = variant; } - if (indexInParty !== undefined) { - this.indexInParty = indexInParty; - } this.exp = dataSource?.exp || getLevelTotalExp(this.level, species.growthRate); this.levelExp = dataSource?.levelExp || 0; if (dataSource) { @@ -820,7 +816,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { : this.moveset; // Overrides moveset based on arrays specified in overrides.ts - const overrideArray: Array = this.isPlayer() ? Overrides.STARTER_OVERRIDE[this.indexInParty]?.moveset : Overrides.OPP_MOVESET_OVERRIDE; + const overrideArray: Array = this.isPlayer() ? Overrides.MOVESET_OVERRIDE : Overrides.OPP_MOVESET_OVERRIDE; if (overrideArray.length > 0) { overrideArray.forEach((move: Moves, index: number) => { const ppUsed = this.moveset[index]?.ppUsed || 0; @@ -905,6 +901,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!ignoreOverride && this.summonData?.ability) { return allAbilities[this.summonData.ability]; } + if (Overrides.ABILITY_OVERRIDE && this.isPlayer()) { + return allAbilities[Overrides.ABILITY_OVERRIDE]; + } if (Overrides.OPP_ABILITY_OVERRIDE && !this.isPlayer()) { return allAbilities[Overrides.OPP_ABILITY_OVERRIDE]; } @@ -912,10 +911,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return allAbilities[this.getFusionSpeciesForm(ignoreOverride).getAbility(this.fusionAbilityIndex)]; } let abilityId = this.getSpeciesForm(ignoreOverride).getAbility(this.abilityIndex); - if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.ability) { - abilityId = Overrides.STARTER_OVERRIDE[this.indexInParty].ability; - } - if (abilityId === Abilities.NONE) { abilityId = this.species.ability1; } @@ -930,8 +925,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns {Ability} The passive ability of the pokemon */ getPassiveAbility(): Ability { - if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.passiveAbility && this.isPlayer()) { - return allAbilities[Overrides.STARTER_OVERRIDE[this.indexInParty].passiveAbility]; + if (Overrides.PASSIVE_ABILITY_OVERRIDE && this.isPlayer()) { + return allAbilities[Overrides.PASSIVE_ABILITY_OVERRIDE]; } if (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE && !this.isPlayer()) { return allAbilities[Overrides.OPP_PASSIVE_ABILITY_OVERRIDE]; @@ -953,7 +948,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ hasPassive(): boolean { // returns override if valid for current case - if ((Overrides.STARTER_OVERRIDE[this.indexInParty]?.passiveAbility !== Abilities.NONE && this.isPlayer()) || + if ((Overrides.PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && this.isPlayer()) || (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && !this.isPlayer())) { return true; } @@ -2827,21 +2822,19 @@ export default interface Pokemon { export class PlayerPokemon extends Pokemon { public compatibleTms: Moves[]; - public indexInParty: number; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender: Gender, shiny: boolean, variant: Variant, ivs: integer[], nature: Nature, dataSource: Pokemon | PokemonData, indexInParty: number) { + constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender: Gender, shiny: boolean, variant: Variant, ivs: integer[], nature: Nature, dataSource: Pokemon | PokemonData) { super(scene, 106, 148, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); - if (Overrides.STARTER_OVERRIDE[indexInParty]?.status) { - this.status = new Status(Overrides.STARTER_OVERRIDE[indexInParty].status); + if (Overrides.STATUS_OVERRIDE) { + this.status = new Status(Overrides.STATUS_OVERRIDE); } - this.indexInParty = indexInParty; - if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.shiny) { + if (Overrides.SHINY_OVERRIDE) { this.shiny = true; this.initShinySparkle(); - if (Overrides.STARTER_OVERRIDE[this.indexInParty]?.shinyVariant) { - this.variant = Overrides.STARTER_OVERRIDE[this.indexInParty].shinyVariant; + if (Overrides.VARIANT_OVERRIDE) { + this.variant = Overrides.VARIANT_OVERRIDE; } } diff --git a/src/overrides.ts b/src/overrides.ts index d866973e669..8f5d4978be3 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -52,95 +52,24 @@ export const POKEBALL_OVERRIDE: { active: boolean, pokeballs: PokeballCounts } = * PLAYER OVERRIDES */ +// forms can be found in pokemon-species.ts +export const STARTER_FORM_OVERRIDE: integer = 0; // default 5 or 20 for Daily export const STARTING_LEVEL_OVERRIDE: integer = 0; -interface StarterOverride { - /** - * SPECIES OVERRIDE - * will apply to each starter in your party - * default is 0 to not override - * @example STARTER_OVERRIDE.species = Species.Bulbasaur; - */ - - species: Species | integer; - // forms can be found in pokemon-species.ts - form: integer; - ability: Abilities; - passiveAbility: Abilities; - status: StatusEffect; - gender: Gender; - moveset: Moves[]; - shiny: boolean; - shinyVariant: Variant; -} -export const STARTER_OVERRIDE: StarterOverride[] = [ - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - }, - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - }, - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - }, - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - }, - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - }, - { - species: 0, - form: 0, - ability: Abilities.NONE, - passiveAbility: Abilities.NONE, - status: StatusEffect.NONE, - gender: null, - moveset: [], - shiny: false, - shinyVariant: 0, - } -]; +/** + * SPECIES OVERRIDE + * will only apply to the first starter in your party or each enemy pokemon + * default is 0 to not override + * @example SPECIES_OVERRIDE = Species.Bulbasaur; + */ +export const STARTER_SPECIES_OVERRIDE: Species | integer = 0; +export const ABILITY_OVERRIDE: Abilities = Abilities.NONE; +export const PASSIVE_ABILITY_OVERRIDE: Abilities = Abilities.NONE; +export const STATUS_OVERRIDE: StatusEffect = StatusEffect.NONE; +export const GENDER_OVERRIDE: Gender = null; +export const MOVESET_OVERRIDE: Array = []; +export const SHINY_OVERRIDE: boolean = false; +export const VARIANT_OVERRIDE: Variant = 0; /** * OPPONENT / ENEMY OVERRIDES diff --git a/src/phases.ts b/src/phases.ts index c1e4a0e17cf..110c4155849 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -529,27 +529,22 @@ export class SelectStarterPhase extends Phase { const party = this.scene.getParty(); const loadPokemonAssets: Promise[] = []; starters.forEach((starter: Starter, i: integer) => { - if (Overrides.STARTER_OVERRIDE[i]?.species) { - starter.species = getPokemonSpecies(Overrides.STARTER_OVERRIDE[i].species as Species); + if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { + starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); } const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); - if (Overrides.STARTER_OVERRIDE[i]?.form) { - starterFormIndex = Overrides.STARTER_OVERRIDE[i].form; - const availableForms = starter.species.forms.length; - // prevent use forms which does not exist for species - if (Overrides.STARTER_OVERRIDE[i].form >= availableForms) { - starterFormIndex = 0; - } + if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { + starterFormIndex = Overrides.STARTER_FORM_OVERRIDE; } let starterGender = starter.species.malePercent !== null ? !starterProps.female ? Gender.MALE : Gender.FEMALE : Gender.GENDERLESS; - if (Overrides.STARTER_OVERRIDE[i]?.gender !== null) { - starterGender = Overrides.STARTER_OVERRIDE[i].gender; + if (Overrides.GENDER_OVERRIDE !== null) { + starterGender = Overrides.GENDER_OVERRIDE; } const starterIvs = this.scene.gameData.dexData[starter.species.speciesId].ivs.slice(0); - const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature, null, null, i); + const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); starterPokemon.tryPopulateMoveset(starter.moveset); if (starter.passive) { starterPokemon.passive = true; From 6dbf99cc72d4bb03d3368899173326b478df9153 Mon Sep 17 00:00:00 2001 From: Benjamin Odom Date: Tue, 4 Jun 2024 13:03:02 -0500 Subject: [PATCH 13/18] [Bug] Fix Circular Dependency with BerryType (#1802) * Fix Potential Circular Dependency with BerryType * remove .js --- src/data/berry.ts | 15 +-------------- src/data/enums/berry-type.ts | 14 ++++++++++++++ src/field/pokemon.ts | 2 +- src/modifier/modifier-type.ts | 3 ++- src/modifier/modifier.ts | 3 ++- src/overrides.ts | 2 +- 6 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 src/data/enums/berry-type.ts diff --git a/src/data/berry.ts b/src/data/berry.ts index e832ab0a43e..f5bcd5e4be8 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -7,20 +7,7 @@ import { getStatusEffectHealText } from "./status-effect"; import * as Utils from "../utils"; import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from "./ability"; import i18next from "../plugins/i18n"; - -export enum BerryType { - SITRUS, - LUM, - ENIGMA, - LIECHI, - GANLON, - PETAYA, - APICOT, - SALAC, - LANSAT, - STARF, - LEPPA -} +import { BerryType } from "./enums/berry-type"; export function getBerryName(berryType: BerryType): string { return i18next.t(`berry:${BerryType[berryType]}.name`); diff --git a/src/data/enums/berry-type.ts b/src/data/enums/berry-type.ts new file mode 100644 index 00000000000..8b7aab16010 --- /dev/null +++ b/src/data/enums/berry-type.ts @@ -0,0 +1,14 @@ + +export enum BerryType { + SITRUS, + LUM, + ENIGMA, + LIECHI, + GANLON, + PETAYA, + APICOT, + SALAC, + LANSAT, + STARF, + LEPPA +} diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 8065b4633b7..2b8f28c4826 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -44,7 +44,7 @@ import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMov import { TerrainType } from "../data/terrain"; import { TrainerSlot } from "../data/trainer-config"; import * as Overrides from "../overrides"; -import { BerryType } from "../data/berry"; +import { BerryType } from "../data/enums/berry-type"; import i18next from "../plugins/i18n"; import { speciesEggMoves } from "../data/egg-moves"; import { ModifierTier } from "../modifier/modifier-tier"; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 5705ee43f16..59185811590 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -11,7 +11,8 @@ import { Type } from "../data/type"; import PartyUiHandler, { PokemonMoveSelectFilter, PokemonSelectFilter } from "../ui/party-ui-handler"; import * as Utils from "../utils"; import { TempBattleStat, getTempBattleStatBoosterItemName, getTempBattleStatName } from "../data/temp-battle-stat"; -import { BerryType, getBerryEffectDescription, getBerryName } from "../data/berry"; +import { getBerryEffectDescription, getBerryName } from "../data/berry"; +import { BerryType } from "../data/enums/berry-type"; import { Unlockables } from "../system/unlockables"; import { StatusEffect, getStatusEffectDescriptor } from "../data/status-effect"; import { SpeciesFormKey } from "../data/pokemon-species"; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 8b965cb4ddc..975420ab528 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -12,7 +12,8 @@ import { FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions } fr import { getPokemonMessage } from "../messages"; import * as Utils from "../utils"; import { TempBattleStat } from "../data/temp-battle-stat"; -import { BerryType, getBerryEffectFunc, getBerryPredicate } from "../data/berry"; +import { getBerryEffectFunc, getBerryPredicate } from "../data/berry"; +import { BerryType } from "../data/enums/berry-type"; import { StatusEffect, getStatusEffectHealText } from "../data/status-effect"; import { achvs } from "../system/achv"; import { VoucherType } from "../system/voucher"; diff --git a/src/overrides.ts b/src/overrides.ts index 8f5d4978be3..661f2d14253 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -4,7 +4,7 @@ import { Biome } from "./data/enums/biome"; import { Moves } from "./data/enums/moves"; import { WeatherType } from "./data/weather"; import { Variant } from "./data/variant"; -import { BerryType } from "./data/berry"; +import { BerryType } from "./data/enums/berry-type"; import { TempBattleStat } from "./data/temp-battle-stat"; import { Nature } from "./data/nature"; import { Type } from "./data/type"; From 809c86599d978046d31b095a40c19b7acb546c67 Mon Sep 17 00:00:00 2001 From: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Date: Tue, 4 Jun 2024 14:37:04 -0400 Subject: [PATCH 14/18] [Feature] Updated Champion teams (#1676) * Updated champion teams * Forgot Alder's legendary * Give Alder Genesect * Merge and update * Update teams a bit more * Red now leads with Pikachu, fixed Iris dialogue * Add champ leads --- src/data/trainer-config.ts | 138 +++++++++++++++++++++++++++++-------- src/locales/en/dialogue.ts | 2 +- 2 files changed, 110 insertions(+), 30 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 83c4f45b244..af47991ad14 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -618,7 +618,7 @@ export class TrainerConfig { * @param isMale - Whether the Champion is Male or Female (for localization of the title). * @returns {TrainerConfig} - The updated TrainerConfig instance. **/ - initForChampion(signatureSpecies: (Species | Species[])[],isMale: boolean): TrainerConfig { + initForChampion(signatureSpecies: (Species | Species[])[], isMale: boolean): TrainerConfig { // Check if the internationalization (i18n) system is initialized. if (!getIsInitialized()) { initI18n(); @@ -917,20 +917,20 @@ export const signatureSpecies: SignatureSpecies = { AMARYS: [Species.SKARMORY, Species.EMPOLEON, Species.SCIZOR, Species.METAGROSS], LACEY: [Species.EXCADRILL, Species.PRIMARINA, Species.ALCREMIE, Species.GALAR_SLOWBRO], DRAYTON: [Species.DRAGONITE, Species.ARCHALUDON, Species.FLYGON, Species.SCEPTILE], - BLUE: [Species.GYARADOS, Species.MEWTWO, Species.ARCANINE, Species.ALAKAZAM, Species.PIDGEOT], - RED: [Species.CHARIZARD, [Species.LUGIA, Species.HO_OH], Species.SNORLAX, Species.RAICHU, Species.ESPEON], - LANCE_CHAMPION: [Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR], - STEVEN: [Species.METAGROSS, [Species.DIALGA, Species.PALKIA], Species.SKARMORY, Species.AGGRON, Species.CARBINK], - WALLACE: [Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO], - CYNTHIA: [Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS], - ALDER: [Species.VOLCARONA, Species.GROUDON, Species.BOUFFALANT, Species.ACCELGOR, Species.CONKELDURR], - IRIS: [Species.HAXORUS, Species.YVELTAL, Species.DRUDDIGON, Species.AGGRON, Species.LAPRAS], - DIANTHA: [Species.HAWLUCHA, Species.XERNEAS, Species.GOURGEIST, Species.GOODRA, Species.GARDEVOIR], - HAU: [Species.ALOLA_RAICHU, [Species.SOLGALEO, Species.LUNALA], Species.NOIVERN, [Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA], Species.CRABOMINABLE], - LEON: [Species.DRAGAPULT, [Species.ZACIAN, Species.ZAMAZENTA], Species.SEISMITOAD, Species.AEGISLASH, Species.CHARIZARD], - GEETA: [Species.GLIMMORA, Species.MIRAIDON, Species.ESPATHRA, Species.VELUZA, Species.KINGAMBIT], - NEMONA: [Species.LYCANROC, Species.KORAIDON, Species.KOMMO_O, Species.PAWMOT, Species.DUSKNOIR], - KIERAN: [Species.POLITOED, [Species.OGERPON, Species.TERAPAGOS], Species.HYDRAPPLE, Species.PORYGON_Z, Species.GRIMMSNARL], + BLUE: [[Species.GYARADOS, Species.EXEGGUTOR, Species.ARCANINE], Species.HO_OH, [Species.RHYPERIOR, Species.MAGNEZONE]], // Alakazam lead, Mega Pidgeot + RED: [Species.LUGIA, Species.SNORLAX, [Species.ESPEON, Species.UMBREON, Species.SYLVEON]], // GMax Pikachu lead, Mega gen 1 starter + LANCE_CHAMPION: [Species.DRAGONITE, Species.KINGDRA, Species.ALOLA_EXEGGUTOR], // Aerodactyl lead, Mega Lati@s + STEVEN: [Species.AGGRON, [Species.ARMALDO, Species.CRADILY], Species.DIALGA], // Skarmorly lead, Mega Metagross + WALLACE: [Species.MILOTIC, Species.PALKIA, Species.LUDICOLO], // Pelipper lead, Mega Swampert + CYNTHIA: [Species.GIRATINA, Species.LUCARIO, Species.TOGEKISS], // Spiritomb lead, Mega Garchomp + ALDER: [Species.VOLCARONA, Species.ZEKROM, [Species.ACCELGOR, Species.ESCAVALIER], Species.KELDEO], // Bouffalant/Braviary lead + IRIS: [Species.HAXORUS, Species.RESHIRAM, Species.ARCHEOPS], // Druddigon lead, Gmax Lapras + DIANTHA: [Species.HAWLUCHA, Species.XERNEAS, Species.GOODRA], // Gourgeist lead, Mega Gardevoir + HAU: [[Species.SOLGALEO, Species.LUNALA], Species.NOIVERN, [Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA], [Species.TAPU_BULU, Species.TAPU_FINI, Species.TAPU_KOKO, Species.TAPU_LELE]], // Alola Raichu lead + LEON: [Species.DRAGAPULT, [Species.ZACIAN, Species.ZAMAZENTA], Species.AEGISLASH], // Rillaboom/Cinderace/Inteleon lead + GEETA: [Species.MIRAIDON, [Species.ESPATHRA, Species.VELUZA], [Species.AVALUGG, Species.HISUI_AVALUGG], Species.KINGAMBIT], // Glimmora lead + NEMONA: [Species.KORAIDON, Species.PAWMOT, [Species.DUDUNSPARCE, Species.ORTHWORM], [Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL]], // Lycanroc lead + KIERAN: [[Species.GRIMMSNARL, Species.INCINEROAR, Species.PORYGON_Z], Species.OGERPON, Species.TERAPAGOS, Species.HYDRAPPLE], // Poliwrath/Politoed lead }; export const trainerConfigs: TrainerConfigs = { @@ -1212,20 +1212,100 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY), [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON), - [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"],true).setBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double"), - [TrainerType.RED]: new TrainerConfig(++t).initForChampion(signatureSpecies["RED"],true).setBattleBgm("battle_johto_champion").setHasDouble("red_blue_double").setDoubleTrainerType(TrainerType.BLUE).setDoubleTitle("champion_double"), - [TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName("Lance").initForChampion(signatureSpecies["LANCE_CHAMPION"],true).setBattleBgm("battle_johto_champion"), - [TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion(signatureSpecies["STEVEN"],true).setBattleBgm("battle_hoenn_champion").setHasDouble("steven_wallace_double").setDoubleTrainerType(TrainerType.WALLACE).setDoubleTitle("champion_double"), - [TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion(signatureSpecies["WALLACE"],true).setBattleBgm("battle_hoenn_champion").setHasDouble("wallace_steven_double").setDoubleTrainerType(TrainerType.STEVEN).setDoubleTitle("champion_double"), - [TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion(signatureSpecies["CYNTHIA"],false).setBattleBgm("battle_sinnoh_champion"), - [TrainerType.ALDER]: new TrainerConfig(++t).initForChampion(signatureSpecies["ALDER"],true).setHasDouble("alder_iris_double").setDoubleTrainerType(TrainerType.IRIS).setDoubleTitle("champion_double").setBattleBgm("battle_champion_alder"), - [TrainerType.IRIS]: new TrainerConfig(++t).initForChampion(signatureSpecies["IRIS"],false).setBattleBgm("battle_champion_iris").setHasDouble("iris_alder_double").setDoubleTrainerType(TrainerType.ALDER).setDoubleTitle("champion_double"), - [TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion(signatureSpecies["DIANTHA"],false), - [TrainerType.HAU]: new TrainerConfig(++t).initForChampion(signatureSpecies["HAU"],true), - [TrainerType.LEON]: new TrainerConfig(++t).initForChampion(signatureSpecies["LEON"],true), - [TrainerType.GEETA]: new TrainerConfig(++t).initForChampion(signatureSpecies["GEETA"],false), - [TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion(signatureSpecies["NEMONA"],false), - [TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion(signatureSpecies["KIERAN"],true), + [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"],true).setBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOT], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.RED]: new TrainerConfig(++t).initForChampion(signatureSpecies["RED"],true).setBattleBgm("battle_johto_champion").setHasDouble("red_blue_double").setDoubleTrainerType(TrainerType.BLUE).setDoubleTitle("champion_double") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.PIKACHU], TrainerSlot.TRAINER, true, p => { + p.formIndex = 8; + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName("Lance").initForChampion(signatureSpecies["LANCE_CHAMPION"],true).setBattleBgm("battle_johto_champion") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.AERODACTYL], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.LATIAS, Species.LATIOS], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion(signatureSpecies["STEVEN"],true).setBattleBgm("battle_hoenn_champion").setHasDouble("steven_wallace_double").setDoubleTrainerType(TrainerType.WALLACE).setDoubleTitle("champion_double") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SKARMORY], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.METAGROSS], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion(signatureSpecies["WALLACE"],true).setBattleBgm("battle_hoenn_champion").setHasDouble("wallace_steven_double").setDoubleTrainerType(TrainerType.STEVEN).setDoubleTitle("champion_double") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.PELIPPER], TrainerSlot.TRAINER, true, p => { + p.abilityIndex = 1; // Drizzle + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.SWAMPERT], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion(signatureSpecies["CYNTHIA"],false).setBattleBgm("battle_sinnoh_champion") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SPIRITOMB], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.GARCHOMP], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.ALDER]: new TrainerConfig(++t).initForChampion(signatureSpecies["ALDER"],true).setHasDouble("alder_iris_double").setDoubleTrainerType(TrainerType.IRIS).setDoubleTitle("champion_double").setBattleBgm("battle_champion_alder") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BOUFFALANT, Species.BRAVIARY], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })), + [TrainerType.IRIS]: new TrainerConfig(++t).initForChampion(signatureSpecies["IRIS"],false).setBattleBgm("battle_champion_iris").setHasDouble("iris_alder_double").setDoubleTrainerType(TrainerType.ALDER).setDoubleTitle("champion_double") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DRUDDIGON], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.LAPRAS], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion(signatureSpecies["DIANTHA"],false) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GOURGEIST], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.GARDEVOIR], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; + p.generateAndPopulateMoveset(); + })), + [TrainerType.HAU]: new TrainerConfig(++t).initForChampion(signatureSpecies["HAU"],true) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALOLA_RAICHU], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })), + [TrainerType.LEON]: new TrainerConfig(++t).initForChampion(signatureSpecies["LEON"],true) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.RILLABOOM, Species.CINDERACE, Species.INTELEON], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.CHARIZARD], TrainerSlot.TRAINER, true, p => { + p.formIndex = 3; + p.generateAndPopulateMoveset(); + })), + [TrainerType.GEETA]: new TrainerConfig(++t).initForChampion(signatureSpecies["GEETA"],false) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GLIMMORA], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })), + [TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion(signatureSpecies["NEMONA"],false) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })), + [TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion(signatureSpecies["KIERAN"],true) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.POLIWRATH, Species.POLITOED], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + })), [TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL) diff --git a/src/locales/en/dialogue.ts b/src/locales/en/dialogue.ts index 7899ec21d36..c5b0d72d3d7 100644 --- a/src/locales/en/dialogue.ts +++ b/src/locales/en/dialogue.ts @@ -1578,7 +1578,7 @@ export const PGMdialogue: DialogueTranslationEntries = { "encounter": { 1: `Know what? I really look forward to having serious battles with strong Trainers! $I mean, come on! The Trainers who make it here are Trainers who desire victory with every fiber of their being! - #And they are battling alongside Pokémon that have been through countless difficult battles! + $And they are battling alongside Pokémon that have been through countless difficult battles! $If I battle with people like that, not only will I get stronger, my Pokémon will, too! $And we'll get to know each other even better! OK! Brace yourself! $I'm Iris, the Pokémon League Champion, and I'm going to defeat you!`, From a8205ae8199237a669e87624bca04d4f91bd2e3b Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Tue, 4 Jun 2024 22:11:02 +0200 Subject: [PATCH 15/18] =?UTF-8?q?[Bug]=20Handle=20if=20the=20browser=20giv?= =?UTF-8?q?es=20a=20long=20form=20of=20a=20language=20(like=20"de-DE")=20?= =?UTF-8?q?=E2=80=A6=20(#1795)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Handle if the browser gives a long form of a language (like "de-DE") for cases where we only have the short form "de". * Changed it so that now resolved Language is now used anywhere. This is basically what i orignally did manually but provided from i18next directly --- src/loading-scene.ts | 2 +- src/ui/fight-ui-handler.ts | 4 ++-- src/ui/pokemon-info-container.ts | 2 +- src/ui/starter-select-ui-handler.ts | 6 +++--- src/ui/summary-ui-handler.ts | 6 +++--- src/ui/text.ts | 2 +- src/utils.ts | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 0b15358c4bc..7c108a3c30e 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -213,7 +213,7 @@ export class LoadingScene extends SceneBase { this.loadAtlas("types", ""); // Get current lang and load the types atlas for it. English will only load types while all other languages will load types and types_ - const lang = i18next.language; + const lang = i18next.resolvedLanguage; if (lang !== "en") { if (Utils.verifyLang(lang)) { this.loadAtlas(`types_${lang}`, ""); diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 22a0acb14ae..acbf66b7075 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -35,7 +35,7 @@ export default class FightUiHandler extends UiHandler { this.movesContainer = this.scene.add.container(18, -38.7); ui.add(this.movesContainer); - this.typeIcon = this.scene.add.sprite((this.scene.game.canvas.width / 6) - 57, -36,`types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}` , "unknown"); + this.typeIcon = this.scene.add.sprite((this.scene.game.canvas.width / 6) - 57, -36,`types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}` , "unknown"); this.typeIcon.setVisible(false); ui.add(this.typeIcon); @@ -168,7 +168,7 @@ export default class FightUiHandler extends UiHandler { if (hasMove) { const pokemonMove = moveset[cursor]; - this.typeIcon.setTexture(`types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`, Type[pokemonMove.getMove().type].toLowerCase()).setScale(0.8); + this.typeIcon.setTexture(`types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`, Type[pokemonMove.getMove().type].toLowerCase()).setScale(0.8); this.moveCategoryIcon.setTexture("categories", MoveCategory[pokemonMove.getMove().category].toLowerCase()).setScale(1.0); const power = pokemonMove.getMove().power; diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index cf4c94e1164..b731b0d22b4 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -73,7 +73,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { } setup(): void { - const currentLanguage = i18next.language; + const currentLanguage = i18next.resolvedLanguage; const langSettingKey = Object.keys(languageSettings).find(lang => currentLanguage.includes(lang)); const textSettings = languageSettings[langSettingKey]; const infoBg = addWindow(this.scene, 0, 0, this.infoWindowWidth, 132); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 3faec4bfcc6..abba4a081df 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -251,7 +251,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { setup() { const ui = this.getUi(); - const currentLanguage = i18next.language; + const currentLanguage = i18next.resolvedLanguage; const langSettingKey = Object.keys(languageSettings).find(lang => currentLanguage.includes(lang)); const textSettings = languageSettings[langSettingKey]; @@ -518,11 +518,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.starterSelectContainer.add(this.pokemonSprite); - this.type1Icon = this.scene.add.sprite(8, 98, `types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`); this.type1Icon.setScale(0.5); + this.type1Icon = this.scene.add.sprite(8, 98, `types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`); this.type1Icon.setScale(0.5); this.type1Icon.setOrigin(0, 0); this.starterSelectContainer.add(this.type1Icon); - this.type2Icon = this.scene.add.sprite(26, 98, `types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`); this.type2Icon.setScale(0.5); + this.type2Icon = this.scene.add.sprite(26, 98, `types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`); this.type2Icon.setScale(0.5); this.type2Icon.setOrigin(0, 0); this.starterSelectContainer.add(this.type2Icon); diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 32f5bffeb1b..1133e7a755c 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -695,7 +695,7 @@ export default class SummaryUiHandler extends UiHandler { const getTypeIcon = (index: integer, type: Type, tera: boolean = false) => { const xCoord = 39 + 34 * index; const typeIcon = !tera - ? this.scene.add.sprite(xCoord, 42, `types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`, Type[type].toLowerCase()) : this.scene.add.sprite(xCoord, 42, "type_tera"); + ? this.scene.add.sprite(xCoord, 42, `types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`, Type[type].toLowerCase()) : this.scene.add.sprite(xCoord, 42, "type_tera"); if (tera) { typeIcon.setScale(0.5); const typeRgb = getTypeRgb(type); @@ -897,7 +897,7 @@ export default class SummaryUiHandler extends UiHandler { if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) { this.extraMoveRowContainer.setVisible(true); - const newMoveTypeIcon = this.scene.add.sprite(0, 0, `types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`, Type[this.newMove.type].toLowerCase()); + const newMoveTypeIcon = this.scene.add.sprite(0, 0, `types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`, Type[this.newMove.type].toLowerCase()); newMoveTypeIcon.setOrigin(0, 1); this.extraMoveRowContainer.add(newMoveTypeIcon); @@ -920,7 +920,7 @@ export default class SummaryUiHandler extends UiHandler { this.moveRowsContainer.add(moveRowContainer); if (move) { - const typeIcon = this.scene.add.sprite(0, 0, `types${Utils.verifyLang(i18next.language) ? `_${i18next.language}` : ""}`, Type[move.getMove().type].toLowerCase()); typeIcon.setOrigin(0, 1); + const typeIcon = this.scene.add.sprite(0, 0, `types${Utils.verifyLang(i18next.resolvedLanguage) ? `_${i18next.resolvedLanguage}` : ""}`, Type[move.getMove().type].toLowerCase()); typeIcon.setOrigin(0, 1); moveRowContainer.add(typeIcon); } diff --git a/src/ui/text.ts b/src/ui/text.ts index 4e76386aae7..56e1b492dfa 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -98,7 +98,7 @@ export function addTextInputObject(scene: Phaser.Scene, x: number, y: number, wi } function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): [ Phaser.Types.GameObjects.Text.TextStyle | InputText.IConfig, string, number, number ] { - const lang = i18next.language; + const lang = i18next.resolvedLanguage; let shadowXpos = 4; let shadowYpos = 5; diff --git a/src/utils.ts b/src/utils.ts index adfe0b0df20..6d965369ca3 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -396,7 +396,7 @@ English itself counts as not available export function verifyLang(lang?: string): boolean { //IMPORTANT - ONLY ADD YOUR LANG HERE IF YOU'VE ALREADY ADDED ALL THE NECESSARY IMAGES if (!lang) { - lang = i18next.language; + lang = i18next.resolvedLanguage; } switch (lang) { From eecad0fdc46115ef0d1521398c6781fa06fddd6d Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:39:22 -0400 Subject: [PATCH 16/18] Balance endless tokens (#1733) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Balanced tokens * Remove existing tokens, all 10 stack limit * Linter complained * Sorry Mr. Lint I’ll do better next time * Removed redundant min * Used a version system to update tokens * The linter has peculiar tastes * See if this works * I'm at my limit omg wtf Sam * Call me Swoobat the way I keep it Simple * Clean up some log statements * Adjust token weights to make up for removal of sleep and freeze * Be so fr GitHub that’s not a real merge conflict --- src/locales/de/modifier-type.ts | 4 +--- src/locales/en/modifier-type.ts | 4 +--- src/locales/es/modifier-type.ts | 4 +--- src/locales/fr/modifier-type.ts | 4 +--- src/locales/it/modifier-type.ts | 4 +--- src/locales/ko/modifier-type.ts | 4 +--- src/locales/pt_BR/modifier-type.ts | 4 +--- src/locales/zh_CN/modifier-type.ts | 4 +--- src/locales/zh_TW/modifier-type.ts | 4 +--- src/modifier/modifier-type.ts | 34 +++++++++++++----------------- src/modifier/modifier.ts | 34 ++++++++++++++++++------------ src/system/game-data.ts | 5 +++++ 12 files changed, 50 insertions(+), 59 deletions(-) diff --git a/src/locales/de/modifier-type.ts b/src/locales/de/modifier-type.ts index 055751970ab..9f70c31ca63 100644 --- a/src/locales/de/modifier-type.ts +++ b/src/locales/de/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Wiederherstellungsmarke", description: "Heilt 2% der maximalen KP pro Runde" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Giftmarke" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { "name": "Lähmungsmarke" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { "name": "Schlafmarke" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { "name": "Gefriermarke" }, "ENEMY_ATTACK_BURN_CHANCE": { "name": "Brandmarke" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 2,5%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" }, "ENEMY_ENDURE_CHANCE": { "name": "Ausdauer-Marke" }, "ENEMY_FUSED_CHANCE": { "name": "Fusionsmarke", "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist" }, diff --git a/src/locales/en/modifier-type.ts b/src/locales/en/modifier-type.ts index e988f0a5250..dac87e1d939 100644 --- a/src/locales/en/modifier-type.ts +++ b/src/locales/en/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 2.5% chance every turn to heal a status condition" }, "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, }, diff --git a/src/locales/es/modifier-type.ts b/src/locales/es/modifier-type.ts index e5f77549737..7b5b1e0c90b 100644 --- a/src/locales/es/modifier-type.ts +++ b/src/locales/es/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Recovery Token", description: "Cura el 2% de los PS máximo en cada turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Agrega un 10% de probabilidad cada turno de curar un problema de estado" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Agrega un 2.5% de probabilidad cada turno de curar un problema de estado" }, "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Agrega un 1% de probabilidad de que un Pokémon salvaje sea una fusión" }, }, diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index a6960c4f0c5..8315910adb3 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Jeton Soin", description: "Soigne 2% des PV max à chaque tour" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Jeton Poison" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Jeton Paralysie" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Jeton Sommeil" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Jeton Gel" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Jeton Brulure" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 10% de chances à chaque tour de se soigner d’un problème de statut." }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 2.5% de chances à chaque tour de se soigner d’un problème de statut." }, "ENEMY_ENDURE_CHANCE": { name: "Jeton Ténacité" }, "ENEMY_FUSED_CHANCE": { name: "Jeton Fusion", description: "Ajoute 1% de chances qu’un Pokémon sauvage soit une fusion." }, }, diff --git a/src/locales/it/modifier-type.ts b/src/locales/it/modifier-type.ts index 668df9601fc..b311aa1e8fa 100644 --- a/src/locales/it/modifier-type.ts +++ b/src/locales/it/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Gettone del Recupero", description: "Cura il 2% dei PS massimi ogni turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Gettone del Veleno" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Gettone della Paralisi" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Gettone del Sonno" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Gettone del Congelamento" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Gettone della Bruciatura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 10% a ogni turno di curare una condizione di stato" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 2.5% a ogni turno di curare una condizione di stato" }, "ENEMY_ENDURE_CHANCE": { name: "Gettone di Resistenza" }, "ENEMY_FUSED_CHANCE": { name: "Gettone della fusione", description: "Aggiunge l'1% di possibilità che un Pokémon selvatico sia una fusione" }, }, diff --git a/src/locales/ko/modifier-type.ts b/src/locales/ko/modifier-type.ts index e2d90ed1ff9..5d54018cc96 100644 --- a/src/locales/ko/modifier-type.ts +++ b/src/locales/ko/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "회복 토큰", description: "매 턴 최대 체력의 2%를 회복" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "독 토큰" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "마비 토큰" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "잠듦 토큰" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "얼음 토큰" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "화상 토큰" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "만병통치 토큰", description: "매 턴 상태이상에서 회복될 확률 10% 추가" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "만병통치 토큰", description: "매 턴 상태이상에서 회복될 확률 2.5% 추가" }, "ENEMY_ENDURE_CHANCE": { name: "버티기 토큰" }, "ENEMY_FUSED_CHANCE": { name: "합체 토큰", description: "야생 포켓몬이 합체할 확률 1% 추가" }, }, diff --git a/src/locales/pt_BR/modifier-type.ts b/src/locales/pt_BR/modifier-type.ts index ea384282f15..4865cfb64a2 100644 --- a/src/locales/pt_BR/modifier-type.ts +++ b/src/locales/pt_BR/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Token de Recuperação", description: "Cura 2% dos PS máximos a cada turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Token de Veneno" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Token de Paralisia" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Token de Sono" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Token de Congelamento" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Token de Queimadura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 10% a cada turno de curar uma condição de status" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 2.5% a cada turno de curar uma condição de status" }, "ENEMY_ENDURE_CHANCE": { name: "Token de Persistência" }, "ENEMY_FUSED_CHANCE": { name: "Token de Fusão", description: "Adiciona uma chance de 1% de que um Pokémon selvagem seja uma fusão" }, }, diff --git a/src/locales/zh_CN/modifier-type.ts b/src/locales/zh_CN/modifier-type.ts index c51ce2cd788..7230f21e330 100644 --- a/src/locales/zh_CN/modifier-type.ts +++ b/src/locales/zh_CN/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "回复硬币", description: "每回合回复2%最大HP" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "剧毒硬币" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "麻痹硬币" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "睡眠硬币" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "冰冻硬币" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "灼烧硬币" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "万灵药硬币", description: "增加10%每回合治愈异常状态的概率" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "万灵药硬币", description: "增加2.5%每回合治愈异常状态的概率" }, "ENEMY_ENDURE_CHANCE": { name: "忍受硬币" }, "ENEMY_FUSED_CHANCE": { name: "融合硬币", description: "增加1%野生融合宝可梦出现概率" }, }, diff --git a/src/locales/zh_TW/modifier-type.ts b/src/locales/zh_TW/modifier-type.ts index 854e65212f4..1ad51965937 100644 --- a/src/locales/zh_TW/modifier-type.ts +++ b/src/locales/zh_TW/modifier-type.ts @@ -282,12 +282,10 @@ export const modifierType: ModifierTypeTranslationEntries = { ENEMY_HEAL: { name: "恢復硬幣", description: "每回合恢復2%最大HP" }, ENEMY_ATTACK_POISON_CHANCE: { name: "劇毒硬幣" }, ENEMY_ATTACK_PARALYZE_CHANCE: { name: "麻痹硬幣" }, - ENEMY_ATTACK_SLEEP_CHANCE: { name: "睡眠硬幣" }, - ENEMY_ATTACK_FREEZE_CHANCE: { name: "冰凍硬幣" }, ENEMY_ATTACK_BURN_CHANCE: { name: "灼燒硬幣" }, ENEMY_STATUS_EFFECT_HEAL_CHANCE: { name: "萬靈藥硬幣", - description: "增加10%每回合治癒異常狀態的概率", + description: "增加2.5%每回合治癒異常狀態的概率", }, ENEMY_ENDURE_CHANCE: { name: "忍受硬幣" }, ENEMY_FUSED_CHANCE: { diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 59185811590..5f1fb1d2956 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -978,8 +978,8 @@ export class EnemyAttackStatusEffectChanceModifierType extends ModifierType { private chancePercent: integer; private effect: StatusEffect; - constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect) { - super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent), "enemy_status_chance"); + constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect, stackCount?: integer) { + super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent, stackCount), "enemy_status_chance"); this.chancePercent = chancePercent; this.effect = effect; @@ -1216,14 +1216,12 @@ export const modifierTypes = { ENEMY_DAMAGE_BOOSTER: () => new ModifierType("modifierType:ModifierType.ENEMY_DAMAGE_BOOSTER", "wl_item_drop", (type, _args) => new Modifiers.EnemyDamageBoosterModifier(type, 5)), ENEMY_DAMAGE_REDUCTION: () => new ModifierType("modifierType:ModifierType.ENEMY_DAMAGE_REDUCTION", "wl_guard_spec", (type, _args) => new Modifiers.EnemyDamageReducerModifier(type, 2.5)), //ENEMY_SUPER_EFFECT_BOOSTER: () => new ModifierType('Type Advantage Token', 'Increases damage of super effective attacks by 30%', (type, _args) => new Modifiers.EnemySuperEffectiveDamageBoosterModifier(type, 30), 'wl_custom_super_effective'), - ENEMY_HEAL: () => new ModifierType("modifierType:ModifierType.ENEMY_HEAL", "wl_potion", (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2)), - ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE", "wl_antidote", 10, StatusEffect.POISON), - ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE", "wl_paralyze_heal", 10, StatusEffect.PARALYSIS), - ENEMY_ATTACK_SLEEP_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_SLEEP_CHANCE", "wl_awakening", 10, StatusEffect.SLEEP), - ENEMY_ATTACK_FREEZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_FREEZE_CHANCE", "wl_ice_heal", 10, StatusEffect.FREEZE), - ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE", "wl_burn_heal", 10, StatusEffect.BURN), - ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE", "wl_full_heal", (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 10)), - ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType("modifierType:ModifierType.ENEMY_ENDURE_CHANCE", "wl_reset_urge", 2.5), + ENEMY_HEAL: () => new ModifierType("modifierType:ModifierType.ENEMY_HEAL", "wl_potion", (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2, 10)), + ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE", "wl_antidote", 5, StatusEffect.POISON, 10), + ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE", "wl_paralyze_heal", 2.5, StatusEffect.PARALYSIS, 10), + ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE", "wl_burn_heal", 5, StatusEffect.BURN, 10), + ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE", "wl_full_heal", (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 2.5, 10)), + ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType("modifierType:ModifierType.ENEMY_ENDURE_CHANCE", "wl_reset_urge", 2), ENEMY_FUSED_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_FUSED_CHANCE", "wl_custom_spliced", (type, _args) => new Modifiers.EnemyFusionChanceModifier(type, 1)), }; @@ -1466,15 +1464,13 @@ const trainerModifierPool: ModifierPool = { const enemyBuffModifierPool: ModifierPool = { [ModifierTier.COMMON]: [ - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 10), - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 10), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_POISON_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_PARALYZE_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_SLEEP_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_FREEZE_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10), - new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5), + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 9), + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 9), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_POISON_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_PARALYZE_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 9), + new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 4), new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1) ].map(m => { m.setTier(ModifierTier.COMMON); return m; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 975420ab528..8b2d12d89a0 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -2141,7 +2141,7 @@ export class EnemyDamageReducerModifier extends EnemyDamageMultiplierModifier { } export class EnemyTurnHealModifier extends EnemyPersistentModifier { - private healPercent: number; + public healPercent: number; constructor(type: ModifierType, healPercent: number, stackCount?: integer) { super(type, stackCount); @@ -2176,23 +2176,23 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { } getMaxStackCount(scene: BattleScene): integer { - return 15; + return 10; } } export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifier { public effect: StatusEffect; - private chance: number; + public chance: number; constructor(type: ModifierType, effect: StatusEffect, chancePercent: number, stackCount?: integer) { super(type, stackCount); this.effect = effect; - this.chance = (chancePercent || 10) / 100; + this.chance = (chancePercent || 5) / 100; } match(modifier: Modifier): boolean { - return modifier instanceof EnemyAttackStatusEffectChanceModifier && modifier.effect === this.effect && modifier.chance === this.chance; + return modifier instanceof EnemyAttackStatusEffectChanceModifier && modifier.effect === this.effect; } clone(): EnemyAttackStatusEffectChanceModifier { @@ -2211,19 +2211,23 @@ export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifi return false; } + + getMaxStackCount(scene: BattleScene): integer { + return 10; + } } export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier { - private chance: number; + public chance: number; constructor(type: ModifierType, chancePercent: number, stackCount?: integer) { super(type, stackCount); - this.chance = (chancePercent || 10) / 100; + this.chance = (chancePercent || 2.5) / 100; } match(modifier: Modifier): boolean { - return modifier instanceof EnemyStatusEffectHealChanceModifier && modifier.chance === this.chance; + return modifier instanceof EnemyStatusEffectHealChanceModifier; } clone(): EnemyStatusEffectHealChanceModifier { @@ -2245,19 +2249,23 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier return false; } + + getMaxStackCount(scene: BattleScene): integer { + return 10; + } } export class EnemyEndureChanceModifier extends EnemyPersistentModifier { - private chance: number; + public chance: number; - constructor(type: ModifierType, chancePercent: number, stackCount?: integer) { - super(type, stackCount); + constructor(type: ModifierType, chancePercent?: number, stackCount?: integer) { + super(type, stackCount || 10); - this.chance = (chancePercent || 2.5) / 100; + this.chance = (chancePercent || 2) / 100; } match(modifier: Modifier) { - return modifier instanceof EnemyEndureChanceModifier && modifier.chance === this.chance; + return modifier instanceof EnemyEndureChanceModifier; } clone() { diff --git a/src/system/game-data.ts b/src/system/game-data.ts index ec4a814b643..0b81c4014b5 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -34,6 +34,8 @@ import {setSettingGamepad, SettingGamepad, settingGamepadDefaults} from "./setti import {setSettingKeyboard, SettingKeyboard} from "#app/system/settings/settings-keyboard"; import { TerrainChangedEvent, WeatherChangedEvent } from "#app/field/arena-events.js"; import { Device } from "#app/enums/devices.js"; +import { EnemyAttackStatusEffectChanceModifier } from "../modifier/modifier"; +import { StatusEffect } from "#app/data/status-effect.js"; const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary @@ -1078,6 +1080,9 @@ export class GameData { if (md?.className === "ExpBalanceModifier") { // Temporarily limit EXP Balance until it gets reworked md.stackCount = Math.min(md.stackCount, 4); } + if (md instanceof EnemyAttackStatusEffectChanceModifier && md.effect === StatusEffect.FREEZE || md.effect === StatusEffect.SLEEP) { + continue; + } ret.push(new PersistentModifierData(md, player)); } return ret; From d04010226d8d02f1c288abafc33da45b149c90de Mon Sep 17 00:00:00 2001 From: Benjamin Odom Date: Tue, 4 Jun 2024 16:59:39 -0500 Subject: [PATCH 17/18] [Bug] Fix Leppa Berries not Updating Flyout PP (#1806) * Fix Leppa Berries not Updating Flyout PP * Code Cleanup * Update battle-flyout.ts --- src/battle-scene-events.ts | 26 ++++++++++++++++++++-- src/phases.ts | 3 ++- src/ui/arena-flyout.ts | 10 ++++----- src/ui/battle-flyout.ts | 45 +++++++++++++++++++++++++++++--------- 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/src/battle-scene-events.ts b/src/battle-scene-events.ts index 128fd5b5ceb..74fac97d2b7 100644 --- a/src/battle-scene-events.ts +++ b/src/battle-scene-events.ts @@ -1,4 +1,5 @@ import Move from "./data/move"; +import { BerryModifier } from "./modifier/modifier"; /** Alias for all {@linkcode BattleScene} events */ export enum BattleSceneEventType { @@ -13,6 +14,12 @@ export enum BattleSceneEventType { * @see {@linkcode MoveUsedEvent} */ MOVE_USED = "onMoveUsed", + /** + * Triggers when a berry gets successfully used + * @see {@linkcode BerryUsedEvent} + */ + BERRY_USED = "onBerryUsed", + /** * Triggers on the first turn of a new battle * @see {@linkcode TurnInitEvent} @@ -23,6 +30,7 @@ export enum BattleSceneEventType { * @see {@linkcode TurnEndEvent} */ TURN_END = "onTurnEnd", + /** * Triggers when a new {@linkcode Arena} is created during initialization * @see {@linkcode NewArenaEvent} @@ -50,7 +58,7 @@ export class CandyUpgradeNotificationChangedEvent extends Event { */ export class MoveUsedEvent extends Event { /** The ID of the {@linkcode Pokemon} that used the {@linkcode Move} */ - public userId: number; + public pokemonId: number; /** The {@linkcode Move} used */ public move: Move; /** The amount of PP used on the {@linkcode Move} this turn */ @@ -58,11 +66,25 @@ export class MoveUsedEvent extends Event { constructor(userId: number, move: Move, ppUsed: number) { super(BattleSceneEventType.MOVE_USED); - this.userId = userId; + this.pokemonId = userId; this.move = move; this.ppUsed = ppUsed; } } +/** + * Container class for {@linkcode BattleSceneEventType.BERRY_USED} events + * @extends Event +*/ +export class BerryUsedEvent extends Event { + /** The {@linkcode BerryModifier} being used */ + public berryModifier: BerryModifier; + constructor(berry: BerryModifier) { + super(BattleSceneEventType.BERRY_USED); + + this.berryModifier = berry; + } +} + /** * Container class for {@linkcode BattleSceneEventType.TURN_INIT} events * @extends Event diff --git a/src/phases.ts b/src/phases.ts index 110c4155849..c9c93ab414d 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -61,7 +61,7 @@ import { Abilities } from "./data/enums/abilities"; import * as Overrides from "./overrides"; import { TextStyle, addTextObject } from "./ui/text"; import { Type } from "./data/type"; -import { MoveUsedEvent, TurnEndEvent, TurnInitEvent } from "./battle-scene-events"; +import { BerryUsedEvent, MoveUsedEvent, TurnEndEvent, TurnInitEvent } from "./battle-scene-events"; export class LoginPhase extends Phase { @@ -2244,6 +2244,7 @@ export class BerryPhase extends FieldPhase { berryModifier.consumed = false; } } + this.scene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); // Announce a berry was used } this.scene.updateModifiers(pokemon.isPlayer()); diff --git a/src/ui/arena-flyout.ts b/src/ui/arena-flyout.ts index 73660ca4457..77996625fed 100644 --- a/src/ui/arena-flyout.ts +++ b/src/ui/arena-flyout.ts @@ -81,11 +81,11 @@ export default class ArenaFlyout extends Phaser.GameObjects.Container { private readonly fieldEffectInfo: ArenaEffectInfo[] = []; // Stores callbacks in a variable so they can be unsubscribed from when destroyed - private onNewArenaEvent = (event: Event) => this.onNewArena(event); - private onTurnInitEvent = (event: Event) => this.onTurnInit(event); - private onTurnEndEvent = (event: Event) => this.onTurnEnd(event); + private readonly onNewArenaEvent = (event: Event) => this.onNewArena(event); + private readonly onTurnInitEvent = (event: Event) => this.onTurnInit(event); + private readonly onTurnEndEvent = (event: Event) => this.onTurnEnd(event); - private onFieldEffectChangedEvent = (event: Event) => this.onFieldEffectChanged(event); + private readonly onFieldEffectChangedEvent = (event: Event) => this.onFieldEffectChanged(event); constructor(scene: Phaser.Scene) { super(scene, 0, 0); @@ -379,6 +379,6 @@ export default class ArenaFlyout extends Phaser.GameObjects.Container { this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); - super.destroy(); + super.destroy(fromScene); } } diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index 3add54920b0..9a9e3ef46a9 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -4,7 +4,9 @@ import * as Utils from "../utils"; import BattleScene from "#app/battle-scene.js"; import { UiTheme } from "#app/enums/ui-theme.js"; import Move from "#app/data/move.js"; -import { BattleSceneEventType, MoveUsedEvent } from "#app/battle-scene-events.js"; +import { BattleSceneEventType, BerryUsedEvent, MoveUsedEvent } from "#app/battle-scene-events.js"; +import { BerryType } from "#app/data/enums/berry-type.js"; +import { Moves } from "#app/data/enums/moves.js"; /** Container for info about a {@linkcode Move} */ interface MoveInfo { @@ -53,7 +55,9 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { /** The array of {@linkcode MoveInfo} used to track moves for the {@linkcode Pokemon} linked to the flyout */ private moveInfo: MoveInfo[] = new Array(); - private readonly onMoveUsed = (event) => this.updateInfo(event); + // Stores callbacks in a variable so they can be unsubscribed from when destroyed + private readonly onMoveUsedEvent = (event: Event) => this.onMoveUsed(event); + private readonly onBerryUsedEvent = (event: Event) => this.onBerryUsed(event); constructor(scene: Phaser.Scene, player: boolean) { super(scene, 0, 0); @@ -109,11 +113,12 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { this.name = `Flyout ${this.pokemon.name}`; this.flyoutParent.name = `Flyout Parent ${this.pokemon.name}`; - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsed); + this.battleScene.eventTarget.addEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); + this.battleScene.eventTarget.addEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); } /** Sets and formats the text property for all {@linkcode Phaser.GameObjects.Text} in the flyoutText array */ - setText() { + private setText() { for (let i = 0; i < this.flyoutText.length; i++) { const flyoutText = this.flyoutText[i]; const moveInfo = this.moveInfo[i]; @@ -122,21 +127,23 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { continue; } - const currentPp = Math.max(moveInfo.maxPp - moveInfo.ppUsed, 0); + const currentPp = moveInfo.maxPp - moveInfo.ppUsed; flyoutText.text = `${moveInfo.move.name} ${currentPp}/${moveInfo.maxPp}`; } } /** Updates all of the {@linkcode MoveInfo} objects in the moveInfo array */ - updateInfo(event: Event) { + private onMoveUsed(event: Event) { const moveUsedEvent = event as MoveUsedEvent; - if (!moveUsedEvent || moveUsedEvent.userId !== this.pokemon?.id) { + if (!moveUsedEvent + || moveUsedEvent.pokemonId !== this.pokemon?.id + || moveUsedEvent.move.id === Moves.STRUGGLE) { // Ignore Struggle return; } const foundInfo = this.moveInfo.find(x => x?.move.id === moveUsedEvent.move.id); if (foundInfo) { - foundInfo.ppUsed += moveUsedEvent.ppUsed; + foundInfo.ppUsed = Math.min(foundInfo.ppUsed + moveUsedEvent.ppUsed, foundInfo.maxPp); } else { this.moveInfo.push({move: moveUsedEvent.move, maxPp: moveUsedEvent.move.pp, ppUsed: moveUsedEvent.ppUsed}); } @@ -144,6 +151,23 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { this.setText(); } + private onBerryUsed(event: Event) { + const berryUsedEvent = event as BerryUsedEvent; + if (!berryUsedEvent + || berryUsedEvent.berryModifier.pokemonId !== this.pokemon?.id + || berryUsedEvent.berryModifier.berryType !== BerryType.LEPPA) { // We only care about Leppa berries + return; + } + + const foundInfo = this.moveInfo.find(info => info.ppUsed === info.maxPp); + if (!foundInfo) { // This will only happen on a de-sync of PP tracking + return; + } + foundInfo.ppUsed = Math.max(foundInfo.ppUsed - 10, 0); + + this.setText(); + } + /** Animates the flyout to either show or hide it by applying a fade and translation */ toggleFlyout(visible: boolean): void { this.scene.tweens.add({ @@ -156,8 +180,9 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { } destroy(fromScene?: boolean): void { - this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsed); + this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); + this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); - super.destroy(); + super.destroy(fromScene); } } From 48f60a5b50f6222448823f6c8da4bc43e00bf5ef Mon Sep 17 00:00:00 2001 From: Adrian T <68144167+torranx@users.noreply.github.com> Date: Wed, 5 Jun 2024 06:11:30 +0800 Subject: [PATCH 18/18] [QoL] add message when quick claw is triggered (#1684) --- src/modifier/modifier.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 8b2d12d89a0..28bf2f61c75 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -776,6 +776,9 @@ export class BypassSpeedChanceModifier extends PokemonHeldItemModifier { if (!bypassSpeed.value && pokemon.randSeedInt(10) < this.getStackCount()) { bypassSpeed.value = true; + if (this.type instanceof ModifierTypes.PokemonHeldItemModifierType && this.type.id === "QUICK_CLAW") { + pokemon.scene.queueMessage(getPokemonMessage(pokemon, " used its quick claw to move faster!")); + } return true; }