From 8ef729074f7a96ea136fe0e9d9bba847162fa235 Mon Sep 17 00:00:00 2001 From: Christoph Obexer Date: Fri, 20 Mar 2026 08:38:49 +0100 Subject: [PATCH 1/5] Whitespace cleanup Signed-off-by: Christoph Obexer --- update.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/update.py b/update.py index c157955..7665fd0 100755 --- a/update.py +++ b/update.py @@ -47,17 +47,16 @@ def get_graalvm_info(jdk_version): response = requests.get("https://api.github.com/repos/graalvm/graalvm-ce-builds/releases?per_page=20&page=1", timeout=10) response.raise_for_status() releases = response.json() - + tag_prefix = f"jdk-{jdk_version}" matching_releases = [r for r in releases if tag_prefix in r['tag_name']] if not matching_releases: raise Exception(f"No GraalVM release found for JDK {jdk_version}") - + tag_name = matching_releases[0]['tag_name'] version = tag_name.replace("jdk-", "") - - return version + return version def update_file(filepath, pattern, replacement): if not os.path.exists(filepath): @@ -65,9 +64,9 @@ def update_file(filepath, pattern, replacement): return with open(filepath, 'r', encoding='utf-8') as f: content = f.read() - + new_content = re.sub(pattern, replacement, content, flags=re.MULTILINE) - + if content != new_content: with open(filepath, 'w', encoding='utf-8') as f: f.write(new_content) @@ -80,15 +79,15 @@ def main(): else: print(f"Error: {version_file} not found. Please ensure the script is run from the correct directory or the file exists.", file=sys.stderr) sys.exit(1) - + base_version = int(base_version_str) gradle_version = get_gradle_version(base_version_str) - + print(f"Base version: {base_version_str}") print(f"Latest version: {gradle_version}") - + gradle_sha = get_sha256(f"https://downloads.gradle.org/distributions/gradle-{gradle_version}-bin.zip.sha256") - + # Update all Dockerfiles for root, dirs, files in os.walk('.'): for file in files: From 084bb8bba4fb18ceca0b3bf3485708e3f364ec99 Mon Sep 17 00:00:00 2001 From: Christoph Obexer Date: Fri, 20 Mar 2026 08:48:41 +0100 Subject: [PATCH 2/5] Reduce duplication in `update.py` Fixes remainder of #361 Signed-off-by: Christoph Obexer --- update.py | 109 ++++++++++++++++++------------------------------------ 1 file changed, 37 insertions(+), 72 deletions(-) diff --git a/update.py b/update.py index 7665fd0..7aec1b1 100755 --- a/update.py +++ b/update.py @@ -71,6 +71,30 @@ def update_file(filepath, pattern, replacement): with open(filepath, 'w', encoding='utf-8') as f: f.write(new_content) +def fetch_graalvm_version(jdk_version): + version = get_graalvm_info(jdk_version) + amd64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{version}/graalvm-community-jdk-{version}_linux-x64_bin.tar.gz.sha256") + aarch64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{version}/graalvm-community-jdk-{version}_linux-aarch64_bin.tar.gz.sha256") + + print(f"Latest Graal {jdk_version} version is {version}") + print(f"Graal {jdk_version} AMD64 hash is {amd64_sha}") + print(f"Graal {jdk_version} AARCH64 hash is {aarch64_sha}") + print() + + return version, amd64_sha, aarch64_sha + +def update_graalvm_dockerfiles(dir_names, version, amd64_sha, aarch64_sha, env_prefix=""): + for dir_name in dir_names: + filepath = os.path.join(dir_name, "Dockerfile") + if env_prefix: + update_file(filepath, rf"JAVA_{env_prefix}_VERSION=\S+", f"JAVA_{env_prefix}_VERSION={version}") + update_file(filepath, rf"GRAALVM_{env_prefix}_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_{env_prefix}_AMD64_DOWNLOAD_SHA256={amd64_sha}") + update_file(filepath, rf"GRAALVM_{env_prefix}_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_{env_prefix}_AARCH64_DOWNLOAD_SHA256={aarch64_sha}") + else: + update_file(filepath, r"ENV JAVA_VERSION=\S+", f"ENV JAVA_VERSION={version}") + update_file(filepath, r"GRAALVM_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AMD64_DOWNLOAD_SHA256={amd64_sha}") + update_file(filepath, r"GRAALVM_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AARCH64_DOWNLOAD_SHA256={aarch64_sha}") + def main(): version_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'version.txt') if os.path.exists(version_file): @@ -103,85 +127,26 @@ def main(): return # GraalVM updates - graal17_version = get_graalvm_info("17") - graal17_amd64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal17_version}/graalvm-community-jdk-{graal17_version}_linux-x64_bin.tar.gz.sha256") - graal17_aarch64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal17_version}/graalvm-community-jdk-{graal17_version}_linux-aarch64_bin.tar.gz.sha256") - - for dir_name in ["jdk17-noble-graal", "jdk17-jammy-graal"]: - filepath = os.path.join(dir_name, "Dockerfile") - update_file(filepath, r"ENV JAVA_VERSION=\S+", f"ENV JAVA_VERSION={graal17_version}") - update_file(filepath, r"GRAALVM_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AMD64_DOWNLOAD_SHA256={graal17_amd64_sha}") - update_file(filepath, r"GRAALVM_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AARCH64_DOWNLOAD_SHA256={graal17_aarch64_sha}") - - print(f"Latest Graal 17 version is {graal17_version}") - print(f"Graal 17 AMD64 hash is {graal17_amd64_sha}") - print(f"Graal 17 AARCH64 hash is {graal17_aarch64_sha}") - print() + graal17_version, graal17_amd64_sha, graal17_aarch64_sha = fetch_graalvm_version("17") + update_graalvm_dockerfiles(["jdk17-noble-graal", "jdk17-jammy-graal"], graal17_version, graal17_amd64_sha, graal17_aarch64_sha) if base_version < 8: return - graal21_version = get_graalvm_info("21") - graal21_amd64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal21_version}/graalvm-community-jdk-{graal21_version}_linux-x64_bin.tar.gz.sha256") - graal21_aarch64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal21_version}/graalvm-community-jdk-{graal21_version}_linux-aarch64_bin.tar.gz.sha256") - - for dir_name in ["jdk21-noble-graal", "jdk21-jammy-graal"]: - filepath = os.path.join(dir_name, "Dockerfile") - update_file(filepath, r"ENV JAVA_VERSION=\S+", f"ENV JAVA_VERSION={graal21_version}") - update_file(filepath, r"GRAALVM_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AMD64_DOWNLOAD_SHA256={graal21_amd64_sha}") - update_file(filepath, r"GRAALVM_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AARCH64_DOWNLOAD_SHA256={graal21_aarch64_sha}") - - print(f"Latest Graal 21 version is {graal21_version}") - print(f"Graal 21 AMD64 hash is {graal21_amd64_sha}") - print(f"Graal 21 AARCH64 hash is {graal21_aarch64_sha}") - print() + graal21_version, graal21_amd64_sha, graal21_aarch64_sha = fetch_graalvm_version("21") + update_graalvm_dockerfiles(["jdk21-noble-graal", "jdk21-jammy-graal"], graal21_version, graal21_amd64_sha, graal21_aarch64_sha) if base_version < 9: - graal24_version = get_graalvm_info("24") - graal24_amd64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal24_version}/graalvm-community-jdk-{graal24_version}_linux-x64_bin.tar.gz.sha256") - graal24_aarch64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal24_version}/graalvm-community-jdk-{graal24_version}_linux-aarch64_bin.tar.gz.sha256") - - for dir_name in ["jdk24-noble-graal"]: - filepath = os.path.join(dir_name, "Dockerfile") - update_file(filepath, r"ENV JAVA_VERSION=\S+", f"ENV JAVA_VERSION={graal24_version}") - update_file(filepath, r"GRAALVM_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AMD64_DOWNLOAD_SHA256={graal24_amd64_sha}") - update_file(filepath, r"GRAALVM_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AARCH64_DOWNLOAD_SHA256={graal24_aarch64_sha}") - - filepath = os.path.join("jdk-lts-and-current-graal", "Dockerfile") - update_file(filepath, r"JAVA_21_VERSION=\S+", f"JAVA_21_VERSION={graal21_version}") - update_file(filepath, r"GRAALVM_21_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_21_AMD64_DOWNLOAD_SHA256={graal21_amd64_sha}") - update_file(filepath, r"GRAALVM_21_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_21_AARCH64_DOWNLOAD_SHA256={graal21_aarch64_sha}") - update_file(filepath, r"JAVA_24_VERSION=\S+", f"JAVA_24_VERSION={graal24_version}") - update_file(filepath, r"GRAALVM_24_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_24_AMD64_DOWNLOAD_SHA256={graal24_amd64_sha}") - update_file(filepath, r"GRAALVM_24_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_24_AARCH64_DOWNLOAD_SHA256={graal24_aarch64_sha}") - - print(f"Latest Graal 24 version is {graal24_version}") - print(f"Graal 24 AMD64 hash is {graal24_amd64_sha}") - print(f"Graal 24 AARCH64 hash is {graal24_aarch64_sha}") - print() + graal24_version, graal24_amd64_sha, graal24_aarch64_sha = fetch_graalvm_version("24") + update_graalvm_dockerfiles(["jdk24-noble-graal"], graal24_version, graal24_amd64_sha, graal24_aarch64_sha) + + update_graalvm_dockerfiles(["jdk-lts-and-current-graal"], graal21_version, graal21_amd64_sha, graal21_aarch64_sha, env_prefix="21") + update_graalvm_dockerfiles(["jdk-lts-and-current-graal"], graal24_version, graal24_amd64_sha, graal24_aarch64_sha, env_prefix="24") else: - graal25_version = get_graalvm_info("25") - graal25_amd64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal25_version}/graalvm-community-jdk-{graal25_version}_linux-x64_bin.tar.gz.sha256") - graal25_aarch64_sha = get_sha256(f"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-{graal25_version}/graalvm-community-jdk-{graal25_version}_linux-aarch64_bin.tar.gz.sha256") - - for dir_name in ["jdk25-noble-graal"]: - filepath = os.path.join(dir_name, "Dockerfile") - update_file(filepath, r"ENV JAVA_VERSION=\S+", f"ENV JAVA_VERSION={graal25_version}") - update_file(filepath, r"GRAALVM_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AMD64_DOWNLOAD_SHA256={graal25_amd64_sha}") - update_file(filepath, r"GRAALVM_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_AARCH64_DOWNLOAD_SHA256={graal25_aarch64_sha}") - - filepath = os.path.join("jdk-lts-and-current-graal", "Dockerfile") - update_file(filepath, r"JAVA_LTS_VERSION=\S+", f"JAVA_LTS_VERSION={graal25_version}") - update_file(filepath, r"GRAALVM_LTS_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_LTS_AMD64_DOWNLOAD_SHA256={graal25_amd64_sha}") - update_file(filepath, r"GRAALVM_LTS_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_LTS_AARCH64_DOWNLOAD_SHA256={graal25_aarch64_sha}") - update_file(filepath, r"JAVA_CURRENT_VERSION=\S+", f"JAVA_CURRENT_VERSION={graal25_version}") - update_file(filepath, r"GRAALVM_CURRENT_AMD64_DOWNLOAD_SHA256=\S+", f"GRAALVM_CURRENT_AMD64_DOWNLOAD_SHA256={graal25_amd64_sha}") - update_file(filepath, r"GRAALVM_CURRENT_AARCH64_DOWNLOAD_SHA256=\S+", f"GRAALVM_CURRENT_AARCH64_DOWNLOAD_SHA256={graal25_aarch64_sha}") - - print(f"Latest Graal 25 version is {graal25_version}") - print(f"Graal 25 AMD64 hash is {graal25_amd64_sha}") - print(f"Graal 25 AARCH64 hash is {graal25_aarch64_sha}") - print() + graal25_version, graal25_amd64_sha, graal25_aarch64_sha = fetch_graalvm_version("25") + update_graalvm_dockerfiles(["jdk25-noble-graal"], graal25_version, graal25_amd64_sha, graal25_aarch64_sha) + update_graalvm_dockerfiles(["jdk-lts-and-current-graal"], graal25_version, graal25_amd64_sha, graal25_aarch64_sha, env_prefix="LTS") + update_graalvm_dockerfiles(["jdk-lts-and-current-graal"], graal25_version, graal25_amd64_sha, graal25_aarch64_sha, env_prefix="CURRENT") if __name__ == "__main__": main() From 7ab136fdf051bfe347e5583ca5eb466ff033fc26 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 08:52:41 +0000 Subject: [PATCH 3/5] Initial plan From 42abe17abfadab73074f795a3534ede3351cba43 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 08:54:02 +0000 Subject: [PATCH 4/5] Rename fetch_graalvm_version to fetch_graalvm_release_info Co-authored-by: cobexer <460721+cobexer@users.noreply.github.com> --- __pycache__/update.cpython-312.pyc | Bin 0 -> 10034 bytes update.py | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 __pycache__/update.cpython-312.pyc diff --git a/__pycache__/update.cpython-312.pyc b/__pycache__/update.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cc538baa9e6fcbf1f97a1f61f1044b001c96e3c GIT binary patch literal 10034 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 Date: Fri, 20 Mar 2026 08:54:18 +0000 Subject: [PATCH 5/5] Add __pycache__ to .gitignore and remove from tracking Co-authored-by: cobexer <460721+cobexer@users.noreply.github.com> --- .gitignore | 1 + __pycache__/update.cpython-312.pyc | Bin 10034 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 __pycache__/update.cpython-312.pyc diff --git a/.gitignore b/.gitignore index 85aa875..7a72620 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +__pycache__/ *.DS_Store *.tar.gz *.zip diff --git a/__pycache__/update.cpython-312.pyc b/__pycache__/update.cpython-312.pyc deleted file mode 100644 index 0cc538baa9e6fcbf1f97a1f61f1044b001c96e3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10034 zcmb_iYfuzfmd;mIWj&|@N<B{h+jy=c90Po8Sqa z3=rL^n(QXkYpR=4Yr30OYo?pwsrQL)15ZO~SV}v1 zGERI*+@W~t9(`BqPmpnP(4b3X>df5GZ_2dmXL^5vic`(RP1;BG6F%zlR)R>-ahhjJ zKv1fHGlP0o3TH<3tO(9b_>5=OJI#Y@bJn#1t}Xcb7ImYRArcJeV+PIoyqTJ}zE9k< z-PP`xB;t%zAY1i*J`dk3Z&&Y_(WTxa;|%Y>+Ph%2B>WQe2;s`_h;12=<%qPuzFrc< zVZTq1-2I}L4+!qC*k3;^h>|}XlIp+0d*owMG0Fa*5RS?UD}}rfX&@{srjWmXKn{#4 z#$GWzB!m=O&>s*aIUEw+4vPw*7(^dFF=@(Hy+$Xfe%=GcZ6Zz#re7p9Xa`T~w*e2F z)E;;qJaAIRTR=VHX&HEY4hG*KnZ8vLZk6hINxEH>Vvr&MzpT*ykPKI(q>xbwZwZcj zX^uvCuPnGDV=vi*0dKIE_a2UI?iXZF>XCS~J8&NignizCbQn%jQiY&E;-DBO9#no> z^GVIa>VMe&d)Kl1XYN(ccz?b1iR;)n@hy}R142J9bTKYcp@)RA*shK+C&}L4fWRG7 zpF5{NbFMEO4e?NlT(4IW^meW$w!Mby6T?C7`@OmUhQno4SW$Q<3a>>{Xt*OKU-bGV z!2{YoFufd=6lPEghZIH%i?U+tjE3-=ZV|<>=rSlayaN69u_`G7yFyS{eX$BTtQ7S5 z1F|3rye=q7*uFS?i0j}?DO~+5#cJqa;U~>OF-|Nxif_iR$5DCH!}f=VQCTPIxsr5v z##c4h>5C4_+Ii#HSScBLD<{WYG&#I5p%wi9L zz0_JhMAr!3gBncxj*L2u+DVb!A4L zyfRm`dzm23TPIo;Y{m1o@>yH?RP?EB%hxnCzA(U0yakKrtsLyZIcpVSs$Q7aYJDl; zxBlyWjYsH5M+`@cO)GXMHb`}M{#@Oi=GWjW-goyX{f&PwWL;zTe%C(5yF`XXrH(NP{i+4nSN9F(uWsXM6`5NBhA=4Q9DEv0#Rj-zf;W_cRmerU7;jXO z*A%A#f7v?*dA;5YW*D@==#yjs$g$>LT9L&PD*pwB2v%5HXa9 z*dO@uTZ)<7smQrpSwj=A%*C8;u1VXV{!o7kN@BFz?FM{j zu)NEjYaWa&jLHC=vgnT}7GcyUL}bhh6m#p@v!_**5G!CMU>_=&fF<#O4nl~RM*Q-C zVu*-%76D~&Fj_*PpOA3mm*B|nVV;(TI9GkLW=+La`2n?x$pM-tL zII%>T4faLn#@h#P9h|0TI+M;F6YK(;KhIXqvXx1;T7!#uN7byOYR<74v77&M(dwMH zmd{$t=dHD~*4kylV6ZP(Z8!H{-#>4yoV8X?cRjJz&UF1<&&NFvT*9#p%{Zm{00-N_= zOIA?-QrZIReXo&dq=`rLrX~~ph-=)~MA4reAmQS3l7#cmDFd9ZFh*=DsxewrV|*Re z{r@GoJd>i%;QlFKUyR1Sz}ON@90+QP<_?1czhR9tz`g81T@BD@knD1ryrxX!4y8i{ z&{2a%hE4GPST72Zuv8DM z%^MgF>UEt@sOydT1H1(N0Rb3|bR+^^KjQ5d4(-~pRjqes%qqqV@(lctm{ z0L4nJP_f|YBcjmf9~IqLMM2Oj`v$;rJ-Uq8h-byvEMdoufe0Td&XuomF8m}s{tytp zR*=D(q$wyejH@hyV)3LS@k*-orL%a-I+;KPTgKZKHgEs^hW4pV)=>|$*w@e7%V+K7Q^V8Z zoc)dQV_#Ye$2-1Vb`T{eNeR32N2Kj2!921vQ2I1Z1I<~{-`}Q8LT$vwTG8KHQC^(T zx1z+!=_oH1C-T%CTE-7jJ=VgSOcV(bDj}y?5ugGX#69EP4F7_d@VnSgg2`n|azT1# z9985TaWYQ5%gAZ$8pOOh=eTFOi=hFIgdq-wIMe{U!?j|S>>8^qPL0Vf<7o~^V!VSt z-5BwGkF8>EH#{kH%4Kw8I%2y_rI&npjm0$A<+;#VTRcFUfAM zYsepoV2IM@lj^ zBym3;d;k{*p-`A`1Y%VNcq6Y+q5#+w?N!Vt&$XXD-hRBJMKO$szzK2SgdtJYWP%cC zVo0%SrW?d$k?d1UI&rjygb|%ZO4x6!hNxMhHFX;vtWUfGormBj{SFE+LTld5hU*PC z4_`k#RhzU{FS2NiR@j;?#uJt{A@S>lob|O`=U8-Vql7%?oXQC5RMo& z-mhFJbl%>2YwKUsPMBWM(DIFua2DZ~sp9EvGb8`l`)S~lK(g?}_=zt~_Q`EeOq&+- z3MOl(nr3Q}dAmS~x$?eu!IpRP*!5$RCz3V}w3sW^c8HVM@)uT6s?PQDg-!2yDPd;w z$X;;t5dB$YVUwBu?2w_!X!_i2XewMuDY22MDE16avJ*BLQ_PO%!4yfLQIuNJchVa% zL1kk86*5eg44ny+c!NsHj9AZ|G=T%kl@6qMlPbZ+snlLrq-+`7p-E7hKjCtbZ z)V8Tj(}DX9_g%3s+nm@la|a#V%2IMGa8{sng9S)mVR7&*t90B3-#nI;SD ziV@$=z+Bu2cEx~o(RXO=jM3~v11_+SG$?{Jzz9eiK{|D2(ro3sq}jBzZZ~P^8$&C! zLn>IEozh`5XLcK;G_h^Is^88#RLjijzwuWLz!Ri56-#s2HzbJI=PHJ_#`BGyn9Xy( zrL*h!sg6TEUE5;j^p(OM>uhXnKY!8_EA^QLPz_l#%50{no&1F)|ykAt=vZPwScomCzv6w{&4QoVJVRb3-B6LZ3uceSugUV73Ds^|jr(dEZ z20-{c9)-i9abjWJre(rxh?5iSA^={)tp+s?WM{U|IU6R}FRVq2w&E#v`rOR^neF!j zsH*8<^l|s&c68B;di}^dh+2k{wm?eg;>_So58Bs-s?MT|;8=#x)d0AGAlZz)K?~J^ zt7hsHt}c+Lsc#4(?+mqK>^W3*9(99z38LN*h=s{kEPb3hi>p@Z9Ih^r=c)gIu@|Uk zcyXv|A3D_Wc;vAk9k`gZT~ZaIs<%4yKtio@(iYX4TTy!e1xHa}47J6c+J5x4 z6W_k*gJ*(&=_8%QF@lc)#7%d6Uy}Tq5or&RR{Xj-((z!{h;%APC**pa<-cC1H%-7Z zdNZs-+$*Qkk3i5Vp1#NEo(2-6_%l$Na%aZth`v@LNbgJF4__-tacFl|I!I$45KMe` zBFLosY4Ce#50g{_iX9V$XI;w_b6i%e5M?BNYWUa}pdD4uYO!~@# zy?iD{hdC;BZQ!9X0@&`Plf8gRnhwC-DqSv9^LhGO0mHfoq6fTx!k926*fJ8$;YU z#}FAg-pQ}yi`4sG5BHtc1fS`OhX7ec5<rkrD+pi4w~$7M?8OprV3S4W7dke6?zI1g$ZYtp2~hQ zUJx&gJ2P6cdaIyUor5pCSAAD|`miH1cZ4O>@jRC;vErF*Ua^98iK4{%EDc*g!@77; zeElm|p!V`xv-M|<$16xl)MQJn4ofG=8&g`^w6-H=)xYA&qp})IikMr9C!mO#)Kunv zF4mpNnYy{tYAS{kLQ+%|IC((eBp)O~WlV>~XegCI#m&C3C<;EA19XEbERJ#T@eX%j z`oX2*P`4Vzeua%EWzF3KthN~Y5 zi$i^Z@Q76J^Sj5q!9c837>&SV5qO9!V4>$z-};qDh2e8)oyraLra^BoIF@Sq3geza?b@mK?b^9Y9GbGlF(`rf?v(iM72+j0&I-s< zoj1hS`J(W4Lvm^s7by;=2JT4>+><>}q1(@PDW;}#ot-TmXI(`Zwj>VVQ6|_SIHjnV zyuFf|TVOqEUcloK&wzl~i3@O>gt!M6xw#A2O0tMiOZ|MR23`s?;tdR`G)(NpJ(wrC ziWQr-nNn$oA3~#&pZzr#KL3hhIc~P6Hjti(R4m#xj@%eA44?WLShfUd7TC>__$HnN z(>KMTzKWd<>5&C`Lnicdrkk{I6l+Zl+_f`jAT;C-#7(OQ?#>;!d-XtQT0L-2?!Y~( z2SQV3poD>0qo}!6D$mLUy}*KRff#=J(!T>jK&YBwq<=&G%JfUquN=R0{5|zs({D__ zb^ONh&+Oce<8xfwIvO!UZH3781+F@& zuTvFJPjeTw$Xai**V)N}8`fve^{BXJ&RGkKD5^oVZ_O3$8}Gm&ZwK1A4V7+3mbxV4 zh8PwmoVtR_w1#H|8&UabbjE{DUqx5Ls4Oy9@XmM}ETo+K=)wmVrn^4u!Jk%wPmI=ljBqy2|9L~x3oTGYiGU<pVZ!G|ED?H)j3YSVvf@k zp5qMl!bif^`x@`emukNLGh4;+z4X8AHM9{X1w0xy36BR{r4>v<|EhQv&QtzSO~zsd zmGWXc@R^!J0(MB`crw+puukkYJ)VyVHQrH85B{@GFw92-!eQ|*VIW3U3A;}C&lx27 zN5b(3!mR$Y{DH79Gx=oY@@6Ahy_|0$?aLeTNau3771~NI