From d836b3955d59fd1c6b432149b38a4d7c9bcf2aef Mon Sep 17 00:00:00 2001 From: Jaka Furlan Date: Sat, 29 Nov 2025 16:12:58 +0100 Subject: [PATCH] working on sicxe --- FA.dev | 14 +- ass1/arith.asm | 88 ++-- ass1/arithr.asm | 92 ++-- ass1/cat.asm | 12 +- ass1/echo.asm | 272 +++++----- ass1/fac.asm | 134 ++--- ass1/fact.asm | 130 ++--- ass1/horner.asm | 74 +-- ass1/insertion_sort.asm | 130 ++--- ass1/poly.asm | 82 ++-- ass1/polySubrutine.asm | 128 ++--- ass1/print.asm | 32 +- ass1/rec.asm | 464 +++++++++--------- ass1/sreen.asm | 74 +-- ass1/stack.asm | 66 +-- ass2/SICocaml/SICXE/SICXE.opam | 32 ++ ass2/SICocaml/SICXE/_build/.db | Bin 0 -> 2689 bytes ass2/SICocaml/SICXE/_build/.digest-db | Bin 0 -> 4245 bytes ass2/SICocaml/SICXE/_build/.filesystem-clock | 1 + ass2/SICocaml/SICXE/_build/.lock | 0 .../SICXE/_build/default/.dune/configurator | 2 + .../_build/default/.dune/configurator.v2 | 1 + ass2/SICocaml/SICXE/_build/default/META.SICXE | 0 .../SICXE/_build/default/SICXE.dune-package | 4 + ass2/SICocaml/SICXE/_build/default/SICXE.opam | 32 ++ .../_build/default/bin/.merlin-conf/exe-main | Bin 0 -> 780 bytes .../SICocaml/SICXE/_build/default/bin/main.ml | 1 + .../SICXE/_build/default/bin/main.mli | 1 + .../default/lib/.SICXE.objs/byte/sICXE.cmi | Bin 0 -> 376 bytes .../default/lib/.SICXE.objs/byte/sICXE.cmo | Bin 0 -> 2209 bytes .../default/lib/.SICXE.objs/byte/sICXE.cmt | Bin 0 -> 3281 bytes .../lib/.SICXE.objs/byte/sICXE__Decoder.cmi | Bin 0 -> 633 bytes .../lib/.SICXE.objs/byte/sICXE__Decoder.cmo | Bin 0 -> 3123 bytes .../lib/.SICXE.objs/byte/sICXE__Decoder.cmt | Bin 0 -> 5699 bytes .../.SICXE.objs/byte/sICXE__Izvajalnik.cmi | Bin 0 -> 3609 bytes .../.SICXE.objs/byte/sICXE__Izvajalnik.cmt | Bin 0 -> 76948 bytes .../.SICXE.objs/byte/sICXE__OpcodeTable.cmi | Bin 0 -> 3203 bytes .../.SICXE.objs/byte/sICXE__OpcodeTable.cmo | Bin 0 -> 17925 bytes .../.SICXE.objs/byte/sICXE__OpcodeTable.cmt | Bin 0 -> 41315 bytes .../default/lib/.SICXE.objs/native/sICXE.cmx | Bin 0 -> 156 bytes .../default/lib/.SICXE.objs/native/sICXE.o | Bin 0 -> 1616 bytes .../lib/.SICXE.objs/native/sICXE__Decoder.cmx | Bin 0 -> 427 bytes .../lib/.SICXE.objs/native/sICXE__Decoder.o | Bin 0 -> 4008 bytes .../.SICXE.objs/native/sICXE__OpcodeTable.cmx | Bin 0 -> 312 bytes .../.SICXE.objs/native/sICXE__OpcodeTable.o | Bin 0 -> 23112 bytes .../.SICXE.objs/sICXE__Decoder.impl.all-deps | 1 + .../lib/.SICXE.objs/sICXE__Decoder.impl.d | 1 + .../sICXE__Izvajalnik.impl.all-deps | 2 + .../lib/.SICXE.objs/sICXE__Izvajalnik.impl.d | 1 + .../sICXE__OpcodeTable.impl.all-deps | 0 .../lib/.SICXE.objs/sICXE__OpcodeTable.impl.d | 1 + .../_build/default/lib/.merlin-conf/lib-SICXE | Bin 0 -> 1039 bytes .../SICXE/_build/default/lib/decoder.ml | 10 + .../SICXE/_build/default/lib/izvajalnik.ml | 228 +++++++++ .../SICXE/_build/default/lib/opcodeTable.ml | 159 ++++++ .../SICXE/_build/default/lib/sICXE.ml-gen | 10 + .../default/test/.merlin-conf/exe-test_SICXE | Bin 0 -> 781 bytes .../byte/dune__exe__Test_SICXE.cmi | Bin 0 -> 217 bytes .../byte/dune__exe__Test_SICXE.cmti | Bin 0 -> 2318 bytes .../native/dune__exe__Test_SICXE.cmx | Bin 0 -> 183 bytes .../native/dune__exe__Test_SICXE.o | Bin 0 -> 1744 bytes .../SICXE/_build/default/test/test_SICXE.exe | Bin 0 -> 399056 bytes .../SICXE/_build/default/test/test_SICXE.ml | 0 .../SICXE/_build/default/test/test_SICXE.mli | 1 + .../_build/install/default/lib/SICXE/META | 1 + .../install/default/lib/SICXE/dune-package | 1 + .../_build/install/default/lib/SICXE/opam | 1 + ass2/SICocaml/SICXE/_build/log | 67 +++ ass2/SICocaml/SICXE/bin/dune | 4 + ass2/SICocaml/SICXE/bin/main.ml | 1 + ass2/SICocaml/SICXE/dune-project | 26 + ass2/SICocaml/SICXE/lib/decoder.ml | 10 + ass2/SICocaml/SICXE/lib/dune | 2 + ass2/SICocaml/SICXE/lib/izvajalnik.ml | 228 +++++++++ ass2/SICocaml/SICXE/lib/opcodeTable.ml | 159 ++++++ ass2/SICocaml/SICXE/test/dune | 2 + ass2/SICocaml/SICXE/test/test_SICXE.ml | 0 ass2/SICocaml/izvajalnik.ml | 120 ++++- hello.asm | 26 +- 79 files changed, 2011 insertions(+), 917 deletions(-) create mode 100644 ass2/SICocaml/SICXE/SICXE.opam create mode 100644 ass2/SICocaml/SICXE/_build/.db create mode 100644 ass2/SICocaml/SICXE/_build/.digest-db create mode 100644 ass2/SICocaml/SICXE/_build/.filesystem-clock create mode 100644 ass2/SICocaml/SICXE/_build/.lock create mode 100644 ass2/SICocaml/SICXE/_build/default/.dune/configurator create mode 100644 ass2/SICocaml/SICXE/_build/default/.dune/configurator.v2 create mode 100644 ass2/SICocaml/SICXE/_build/default/META.SICXE create mode 100644 ass2/SICocaml/SICXE/_build/default/SICXE.dune-package create mode 100644 ass2/SICocaml/SICXE/_build/default/SICXE.opam create mode 100644 ass2/SICocaml/SICXE/_build/default/bin/.merlin-conf/exe-main create mode 100644 ass2/SICocaml/SICXE/_build/default/bin/main.ml create mode 100644 ass2/SICocaml/SICXE/_build/default/bin/main.mli create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmi create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmo create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmt create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmi create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmo create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmt create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Izvajalnik.cmi create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Izvajalnik.cmt create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmi create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmo create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmt create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE.cmx create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE.o create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.cmx create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.o create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.cmx create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.o create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__Decoder.impl.all-deps create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__Decoder.impl.d create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__Izvajalnik.impl.all-deps create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__Izvajalnik.impl.d create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__OpcodeTable.impl.all-deps create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/sICXE__OpcodeTable.impl.d create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/.merlin-conf/lib-SICXE create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/decoder.ml create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/izvajalnik.ml create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/opcodeTable.ml create mode 100644 ass2/SICocaml/SICXE/_build/default/lib/sICXE.ml-gen create mode 100644 ass2/SICocaml/SICXE/_build/default/test/.merlin-conf/exe-test_SICXE create mode 100644 ass2/SICocaml/SICXE/_build/default/test/.test_SICXE.eobjs/byte/dune__exe__Test_SICXE.cmi create mode 100644 ass2/SICocaml/SICXE/_build/default/test/.test_SICXE.eobjs/byte/dune__exe__Test_SICXE.cmti create mode 100644 ass2/SICocaml/SICXE/_build/default/test/.test_SICXE.eobjs/native/dune__exe__Test_SICXE.cmx create mode 100644 ass2/SICocaml/SICXE/_build/default/test/.test_SICXE.eobjs/native/dune__exe__Test_SICXE.o create mode 100644 ass2/SICocaml/SICXE/_build/default/test/test_SICXE.exe create mode 100644 ass2/SICocaml/SICXE/_build/default/test/test_SICXE.ml create mode 100644 ass2/SICocaml/SICXE/_build/default/test/test_SICXE.mli create mode 120000 ass2/SICocaml/SICXE/_build/install/default/lib/SICXE/META create mode 120000 ass2/SICocaml/SICXE/_build/install/default/lib/SICXE/dune-package create mode 120000 ass2/SICocaml/SICXE/_build/install/default/lib/SICXE/opam create mode 100644 ass2/SICocaml/SICXE/_build/log create mode 100644 ass2/SICocaml/SICXE/bin/dune create mode 100644 ass2/SICocaml/SICXE/bin/main.ml create mode 100644 ass2/SICocaml/SICXE/dune-project create mode 100644 ass2/SICocaml/SICXE/lib/decoder.ml create mode 100644 ass2/SICocaml/SICXE/lib/dune create mode 100644 ass2/SICocaml/SICXE/lib/izvajalnik.ml create mode 100644 ass2/SICocaml/SICXE/lib/opcodeTable.ml create mode 100644 ass2/SICocaml/SICXE/test/dune create mode 100644 ass2/SICocaml/SICXE/test/test_SICXE.ml diff --git a/FA.dev b/FA.dev index 68125c5..2addf68 100644 --- a/FA.dev +++ b/FA.dev @@ -1,8 +1,8 @@ -1 -2 -3 -4 -5 -6 -7 +1 +2 +3 +4 +5 +6 +7 0 \ No newline at end of file diff --git a/ass1/arith.asm b/ass1/arith.asm index 3474a8e..21b7e12 100644 --- a/ass1/arith.asm +++ b/ass1/arith.asm @@ -1,44 +1,44 @@ - - -arith START 0 - -start LDA x - ADD y - STA sum .shrani vsoto - - LDA x - SUB y - STA diff .shrani razliko - - LDA x - MUL y - STA prod .sharni produkt - - LDA x - DIV y - STA quot .shrani kvocient - - LDA y - MUL quot - STA z - LDA x - SUB z - STA mod .shrani modulo - -halt J halt - END start - -.podatki -x WORD 20 -y WORD 3 - -.rezultati -sum RESW 1 -diff RESW 1 -prod RESW 1 -quot RESW 1 -mod RESW 1 - -.za modulo -z RESW 1 - + + +arith START 0 + +start LDA x + ADD y + STA sum .shrani vsoto + + LDA x + SUB y + STA diff .shrani razliko + + LDA x + MUL y + STA prod .sharni produkt + + LDA x + DIV y + STA quot .shrani kvocient + + LDA y + MUL quot + STA z + LDA x + SUB z + STA mod .shrani modulo + +halt J halt + END start + +.podatki +x WORD 20 +y WORD 3 + +.rezultati +sum RESW 1 +diff RESW 1 +prod RESW 1 +quot RESW 1 +mod RESW 1 + +.za modulo +z RESW 1 + diff --git a/ass1/arithr.asm b/ass1/arithr.asm index e014c74..d1792cf 100644 --- a/ass1/arithr.asm +++ b/ass1/arithr.asm @@ -1,46 +1,46 @@ - - -arith START 0 - -start LDT x - LDS y - ADDR T, S .shrani vsoto - STS sum - SUBR T, S .resetiraj S nazaj na y - - SUBR S, T - STT diff .shrani razliko - ADDR S, T .popravi T - - MULR T, S - STS prod .sharni produkt - - LDT x - LDS y - DIVR S, T - STT quot .shrani kvocient - - LDT x - LDS y - LDB quot - MULR S, B - SUBR B, T - STT mod .shrani modulo - -halt J halt - END start - -.podatki -x WORD 20 -y WORD 3 - -.rezultati -sum RESW 1 -diff RESW 1 -prod RESW 1 -quot RESW 1 -mod RESW 1 - -.za modulo -z RESW 1 - + + +arith START 0 + +start LDT x + LDS y + ADDR T, S .shrani vsoto + STS sum + SUBR T, S .resetiraj S nazaj na y + + SUBR S, T + STT diff .shrani razliko + ADDR S, T .popravi T + + MULR T, S + STS prod .sharni produkt + + LDT x + LDS y + DIVR S, T + STT quot .shrani kvocient + + LDT x + LDS y + LDB quot + MULR S, B + SUBR B, T + STT mod .shrani modulo + +halt J halt + END start + +.podatki +x WORD 20 +y WORD 3 + +.rezultati +sum RESW 1 +diff RESW 1 +prod RESW 1 +quot RESW 1 +mod RESW 1 + +.za modulo +z RESW 1 + diff --git a/ass1/cat.asm b/ass1/cat.asm index 555b53f..4faea58 100644 --- a/ass1/cat.asm +++ b/ass1/cat.asm @@ -1,7 +1,7 @@ -cat START 0 -.beri in pisi -loop RD #0 - WD #1 - J loop - +cat START 0 +.beri in pisi +loop RD #0 + WD #1 + J loop + END loop \ No newline at end of file diff --git a/ass1/echo.asm b/ass1/echo.asm index 28bdeba..fdf38db 100644 --- a/ass1/echo.asm +++ b/ass1/echo.asm @@ -1,137 +1,137 @@ -echo START 0 -start .LDCH txt - .JSUB char - .JSUB nl - .LDA #txt - .JSUB string - .JSUB nl - - LDCH #12 - JSUB num - -halt J halt - -.char -char STB regB - STT regT - .STL regL - STS regS .shranimo registre - - WD #1 - .obnovimo registre - LDB regB - LDT regT - .LDL regL - LDS regS - - RSUB - -.nl -nl STB regB - STT regT - STS regS .shranimo registre - - LDCH newline - WD #1 - LDX #1 - LDCH newline, X - WD #1 - - .obnovimo registre - LDB regB - LDT regT - LDS regS - - RSUB - -.string -string STA regA - STB regB - STT regT - .STL regL - STS regS .shranimo registre - -loop LDB #1 - CLEAR A .da lahko comparamo z 0 - LDCH @regA - COMP #0 - WD #1 - .add +1 to regA - LDA regA - ADD #1 - STA regA - JGT loop - - LDA regA .obnovimo registre - LDB regB - LDT regT - .LDL regL - LDS regS - - RSUB -.izpiše število zapisano v A na std izhod -num STA regA - STB regB - STT regT - STL regL - STS regS .shranimo registre - - LDX #4 .X steje stevke, 4 je zadnji index arraya velikosti 5 - LDS #10 .za množenje/deljenje - LDT #0x30 .za pretvorbo v ascii - -loop2 RMO A, B - DIVR S, B .B = B/10 - MULR S, B .B= B*10 - SUBR B, A .A = ostanek - ADDR T, A .pretvorimo A v ascii - STCH digs, X .shranimo ascii ostanek - - .zmanjšamo X in primerjamo z #5 - RMO X, A - SUB #1 - RMO A, X - LDA #0 - COMPR X, A - - RMO B, A .premaknemo kar je še potrebno izračunati v A - DIVR S, A .A je sedaj naslednja števka - - JEQ loop2 - JGT loop2 - - .kličemo string za izpis - LDA #digs - JSUB string - JSUB nl - - LDA regA .obnovimo registre - LDB regB - LDT regT - LDL regL - LDS regS - - RSUB - - -.digits za num -digs RESB 5 .0 bo prazna za lazje izpisovanje - BYTE 0 .konec števke - -.txt -txt BYTE C'hi' - BYTE 0 - -.constante -newline BYTE 0x0D - BYTE 0x0A - -.registri -regA RESW 1 -regB RESW 1 -regT RESW 1 -regS RESW 1 -regL RESW 1 - - +echo START 0 +start .LDCH txt + .JSUB char + .JSUB nl + .LDA #txt + .JSUB string + .JSUB nl + + LDCH #12 + JSUB num + +halt J halt + +.char +char STB regB + STT regT + .STL regL + STS regS .shranimo registre + + WD #1 + .obnovimo registre + LDB regB + LDT regT + .LDL regL + LDS regS + + RSUB + +.nl +nl STB regB + STT regT + STS regS .shranimo registre + + LDCH newline + WD #1 + LDX #1 + LDCH newline, X + WD #1 + + .obnovimo registre + LDB regB + LDT regT + LDS regS + + RSUB + +.string +string STA regA + STB regB + STT regT + .STL regL + STS regS .shranimo registre + +loop LDB #1 + CLEAR A .da lahko comparamo z 0 + LDCH @regA + COMP #0 + WD #1 + .add +1 to regA + LDA regA + ADD #1 + STA regA + JGT loop + + LDA regA .obnovimo registre + LDB regB + LDT regT + .LDL regL + LDS regS + + RSUB +.izpiše število zapisano v A na std izhod +num STA regA + STB regB + STT regT + STL regL + STS regS .shranimo registre + + LDX #4 .X steje stevke, 4 je zadnji index arraya velikosti 5 + LDS #10 .za množenje/deljenje + LDT #0x30 .za pretvorbo v ascii + +loop2 RMO A, B + DIVR S, B .B = B/10 + MULR S, B .B= B*10 + SUBR B, A .A = ostanek + ADDR T, A .pretvorimo A v ascii + STCH digs, X .shranimo ascii ostanek + + .zmanjšamo X in primerjamo z #5 + RMO X, A + SUB #1 + RMO A, X + LDA #0 + COMPR X, A + + RMO B, A .premaknemo kar je še potrebno izračunati v A + DIVR S, A .A je sedaj naslednja števka + + JEQ loop2 + JGT loop2 + + .kličemo string za izpis + LDA #digs + JSUB string + JSUB nl + + LDA regA .obnovimo registre + LDB regB + LDT regT + LDL regL + LDS regS + + RSUB + + +.digits za num +digs RESB 5 .0 bo prazna za lazje izpisovanje + BYTE 0 .konec števke + +.txt +txt BYTE C'hi' + BYTE 0 + +.constante +newline BYTE 0x0D + BYTE 0x0A + +.registri +regA RESW 1 +regB RESW 1 +regT RESW 1 +regS RESW 1 +regL RESW 1 + + END start \ No newline at end of file diff --git a/ass1/fac.asm b/ass1/fac.asm index 6969099..cc68666 100644 --- a/ass1/fac.asm +++ b/ass1/fac.asm @@ -1,68 +1,68 @@ -prog START 0 -zacetek CLEAR X -loop RD #0xFA - COMP #0 - JEQ halt - JSUB fact - WD #1 - J loop - -halt J halt - -.fakulteta -fact COMP #1 - JGT rec - LDA #1 .base case - RSUB - -rec STL @stkp - JSUB spush - STA @stkp - JSUB spush - STB @stkp - JSUB spush - - RMO A, B .shrani n v B - SUB #1 .n-1 - JSUB fact .fact(n-1) - MULR B, A .n * fact(n-1) - - JSUB spop - LDB @stkp - JSUB spop - .LDA @stkp da ne povozimo odgovora? - JSUB spop - LDL @stkp - - - - RSUB - - -.rutine za sklad -sinit STA stkA - LDA #stkRESW .inicializiraj stkp - STA stkp - LDA stkA - RSUB - -spush STA stkA - LDA stkp .poveca stkp za 3 - ADD #3 - STA stkp - LDA stkA - RSUB - -spop STA stkA - LDA stkp .zmanjsa stkp za 3 - SUB #3 - STA stkp - LDA stkA - RSUB - -.podatki za sklad -stkp WORD 0 -stkA WORD 0 -stkRESW RESW 1000 - +prog START 0 +zacetek CLEAR X +loop RD #0xFA + COMP #0 + JEQ halt + JSUB fact + WD #1 + J loop + +halt J halt + +.fakulteta +fact COMP #1 + JGT rec + LDA #1 .base case + RSUB + +rec STL @stkp + JSUB spush + STA @stkp + JSUB spush + STB @stkp + JSUB spush + + RMO A, B .shrani n v B + SUB #1 .n-1 + JSUB fact .fact(n-1) + MULR B, A .n * fact(n-1) + + JSUB spop + LDB @stkp + JSUB spop + .LDA @stkp da ne povozimo odgovora? + JSUB spop + LDL @stkp + + + + RSUB + + +.rutine za sklad +sinit STA stkA + LDA #stkRESW .inicializiraj stkp + STA stkp + LDA stkA + RSUB + +spush STA stkA + LDA stkp .poveca stkp za 3 + ADD #3 + STA stkp + LDA stkA + RSUB + +spop STA stkA + LDA stkp .zmanjsa stkp za 3 + SUB #3 + STA stkp + LDA stkA + RSUB + +.podatki za sklad +stkp WORD 0 +stkA WORD 0 +stkRESW RESW 1000 + END prog \ No newline at end of file diff --git a/ass1/fact.asm b/ass1/fact.asm index 0e77c99..5115aa7 100644 --- a/ass1/fact.asm +++ b/ass1/fact.asm @@ -1,66 +1,66 @@ -prog START 0 - JSUB sinit - LDA #5 - JSUB fact - - - -halt J halt - -.fakulteta -fact COMP #1 - JGT rec - LDA #1 .base case - RSUB - -rec STL @stkp - JSUB spush - STA @stkp - JSUB spush - STB @stkp - JSUB spush - - RMO A, B .shrani n v B - SUB #1 .n-1 - JSUB fact .fact(n-1) - MULR B, A .n * fact(n-1) - - JSUB spop - LDB @stkp - JSUB spop - .LDA @stkp da ne povozimo odgovora? - JSUB spop - LDL @stkp - - - - RSUB - - -.rutine za sklad -sinit STA stkA - LDA #stkRESW .inicializiraj stkp - STA stkp - LDA stkA - RSUB - -spush STA stkA - LDA stkp .poveca stkp za 3 - ADD #3 - STA stkp - LDA stkA - RSUB - -spop STA stkA - LDA stkp .zmanjsa stkp za 3 - SUB #3 - STA stkp - LDA stkA - RSUB - -.podatki za sklad -stkp WORD 0 -stkA WORD 0 -stkRESW RESW 1000 - +prog START 0 + JSUB sinit + LDA #5 + JSUB fact + + + +halt J halt + +.fakulteta +fact COMP #1 + JGT rec + LDA #1 .base case + RSUB + +rec STL @stkp + JSUB spush + STA @stkp + JSUB spush + STB @stkp + JSUB spush + + RMO A, B .shrani n v B + SUB #1 .n-1 + JSUB fact .fact(n-1) + MULR B, A .n * fact(n-1) + + JSUB spop + LDB @stkp + JSUB spop + .LDA @stkp da ne povozimo odgovora? + JSUB spop + LDL @stkp + + + + RSUB + + +.rutine za sklad +sinit STA stkA + LDA #stkRESW .inicializiraj stkp + STA stkp + LDA stkA + RSUB + +spush STA stkA + LDA stkp .poveca stkp za 3 + ADD #3 + STA stkp + LDA stkA + RSUB + +spop STA stkA + LDA stkp .zmanjsa stkp za 3 + SUB #3 + STA stkp + LDA stkA + RSUB + +.podatki za sklad +stkp WORD 0 +stkA WORD 0 +stkRESW RESW 1000 + END prog \ No newline at end of file diff --git a/ass1/horner.asm b/ass1/horner.asm index 75a1a87..fd6002c 100644 --- a/ass1/horner.asm +++ b/ass1/horner.asm @@ -1,38 +1,38 @@ -poly START 0 -start LDT x4 - LDS x - MULR S, T - LDA x3 - ADDR T, A . do sedaj izračunano (1x + 2) - - LDT x2 - MULR S, A - ADDR T, A .do sedaj izračunano ((1x+2)x + 3) - - LDT x1 - MULR S, A - ADDR T, A .do sedaj izračunano (((1x+2)x + 3)x + 4) - - LDT x0 - MULR S, A - ADDR T, A .do sedaj izračunano (((1x+2)x + 3)x + 4)x + 5 - - - STA rez - -halt J halt - END start - - -.polinom -x4 WORD 1 -x3 WORD 2 -x2 WORD 3 -x1 WORD 4 -x0 WORD 5 - -.tocka -x WORD 2 - -.rezultat +poly START 0 +start LDT x4 + LDS x + MULR S, T + LDA x3 + ADDR T, A . do sedaj izračunano (1x + 2) + + LDT x2 + MULR S, A + ADDR T, A .do sedaj izračunano ((1x+2)x + 3) + + LDT x1 + MULR S, A + ADDR T, A .do sedaj izračunano (((1x+2)x + 3)x + 4) + + LDT x0 + MULR S, A + ADDR T, A .do sedaj izračunano (((1x+2)x + 3)x + 4)x + 5 + + + STA rez + +halt J halt + END start + + +.polinom +x4 WORD 1 +x3 WORD 2 +x2 WORD 3 +x1 WORD 4 +x0 WORD 5 + +.tocka +x WORD 2 + +.rezultat rez RESW 1 \ No newline at end of file diff --git a/ass1/insertion_sort.asm b/ass1/insertion_sort.asm index db83692..b1aee81 100644 --- a/ass1/insertion_sort.asm +++ b/ass1/insertion_sort.asm @@ -1,66 +1,66 @@ -.program prebere iz spomina seznam števil dolžine len -.in jih uredi z insertion sortom -.pustimo prvi element paddan, da lažje rečunamo premike -prog START 0 - LDX #6 - -loop LDB #len - COMPR X, B .i < len - JEQ halt .zaključi - - LDA arr, X .A = arr[i] - RMO X, S .S <- i - LDT #3 .T <- 3 - SUBR T, X .X <- j= i - 1 - -loop2 LDT #3 - COMPR X, T .j >= 1 - JLT insert .ko je j = 0 skoči - J next .skoči na preverjanje naslednjega pogoja - - .shranimo S nazaj v X in ga zmanjšamo za ena - .nato skočimo nazaj v loop -exit2 RMO S, X .X <- i - LDT #3 - ADDR T, X .X <- i + 1 - J loop - -next LDB arr, X - COMPR B, A .arr[j] > arr[i] - JGT swap - J insert .če pogoj ni izpolnjen - - .sicer zamenjamo elementa -swap LDT #3 - ADDR T, X .X <- j + 1 - STB arr, X. arr[j+1] = arr[j] - - LDT #6 - SUBR T, X .x <- x-1 - J loop2 - -insert LDT #3 - ADDR T, X .j = j+1 - STA arr, X .arr[j+1] = arr[i] - SUBR T, X .j = j - J exit2 - -halt J halt - -arr WORD 0 - WORD 5 - WORD 3 - WORD 8 - WORD 1 - WORD 4 - WORD 7 - WORD 2 - WORD 9 -arrEnd WORD 6 - -len EQU arrEnd - arr + 3 - - - - +.program prebere iz spomina seznam števil dolžine len +.in jih uredi z insertion sortom +.pustimo prvi element paddan, da lažje rečunamo premike +prog START 0 + LDX #6 + +loop LDB #len + COMPR X, B .i < len + JEQ halt .zaključi + + LDA arr, X .A = arr[i] + RMO X, S .S <- i + LDT #3 .T <- 3 + SUBR T, X .X <- j= i - 1 + +loop2 LDT #3 + COMPR X, T .j >= 1 + JLT insert .ko je j = 0 skoči + J next .skoči na preverjanje naslednjega pogoja + + .shranimo S nazaj v X in ga zmanjšamo za ena + .nato skočimo nazaj v loop +exit2 RMO S, X .X <- i + LDT #3 + ADDR T, X .X <- i + 1 + J loop + +next LDB arr, X + COMPR B, A .arr[j] > arr[i] + JGT swap + J insert .če pogoj ni izpolnjen + + .sicer zamenjamo elementa +swap LDT #3 + ADDR T, X .X <- j + 1 + STB arr, X. arr[j+1] = arr[j] + + LDT #6 + SUBR T, X .x <- x-1 + J loop2 + +insert LDT #3 + ADDR T, X .j = j+1 + STA arr, X .arr[j+1] = arr[i] + SUBR T, X .j = j + J exit2 + +halt J halt + +arr WORD 0 + WORD 5 + WORD 3 + WORD 8 + WORD 1 + WORD 4 + WORD 7 + WORD 2 + WORD 9 +arrEnd WORD 6 + +len EQU arrEnd - arr + 3 + + + + END prog \ No newline at end of file diff --git a/ass1/poly.asm b/ass1/poly.asm index 24e92a1..0fb41a5 100644 --- a/ass1/poly.asm +++ b/ass1/poly.asm @@ -1,42 +1,42 @@ -poly START 0 -start LDA x0 .pristejemo x0 v A - - LDB x - LDS x - LDT x1 - MULR S, T - ADDR T, A .pristejemo x0 * x - - LDT x2 - MULR B, S .izracunamo x^2 - MULR S, T - ADDR T, A - - LDT x3 - MULR B, S .izracunamo x^3 - MULR S, T - ADDR T, A - - LDT x4 - MULR B, S .izracunamo x^4 - MULR S, T - ADDR T, A - - STA rez - -halt J halt - END start - - -.polinom -x4 WORD 1 -x3 WORD 2 -x2 WORD 3 -x1 WORD 4 -x0 WORD 5 - -.tocka -x WORD 2 - -.rezultat +poly START 0 +start LDA x0 .pristejemo x0 v A + + LDB x + LDS x + LDT x1 + MULR S, T + ADDR T, A .pristejemo x0 * x + + LDT x2 + MULR B, S .izracunamo x^2 + MULR S, T + ADDR T, A + + LDT x3 + MULR B, S .izracunamo x^3 + MULR S, T + ADDR T, A + + LDT x4 + MULR B, S .izracunamo x^4 + MULR S, T + ADDR T, A + + STA rez + +halt J halt + END start + + +.polinom +x4 WORD 1 +x3 WORD 2 +x2 WORD 3 +x1 WORD 4 +x0 WORD 5 + +.tocka +x WORD 2 + +.rezultat rez RESW 1 \ No newline at end of file diff --git a/ass1/polySubrutine.asm b/ass1/polySubrutine.asm index af8de5d..8b81723 100644 --- a/ass1/polySubrutine.asm +++ b/ass1/polySubrutine.asm @@ -1,64 +1,64 @@ -poly START 0 -start LDA x - STA arg1 - JSUB startSubrutine - LDA subRez - STA rez - -halt J halt - END start - -.subrutina za izračun tega polinoma v točki arg1 -startSubrutine STA regA - STB regB - STT regT - STS regS .shranimo registre - - LDA x0 .pristejemo x0 v A - - LDX #3 .odmik v arrayu - LDS arg1 -loop LDT x0, X .preberemo x_n - MULR S, T .izračunamo x_n * x^n - ADDR T, A .pristejemo v vsoto - LDT arg1 - MULR T, S .zmožimo naslednjo potenco - LDT #3 - ADDR T, X .povečamo odmik - LDT #13 - COMPR T, X - JGT loop - - STA subRez .shranimo rez - - LDA regA .obnovimo registre - LDB regB - LDT regT - LDS regS - - RSUB - -.polinom -x0 WORD 5 - WORD 4 - WORD 3 - WORD 2 - WORD 1 - -.tocka -x WORD 2 - -.rezultat -rez RESW 1 - -.parameter subrutine -arg1 RESW 1 - -.rezultat subrutine -subRez RESW 1 - -.registri -regA RESW 1 -regB RESW 1 -regT RESW 1 -regS RESW 1 +poly START 0 +start LDA x + STA arg1 + JSUB startSubrutine + LDA subRez + STA rez + +halt J halt + END start + +.subrutina za izračun tega polinoma v točki arg1 +startSubrutine STA regA + STB regB + STT regT + STS regS .shranimo registre + + LDA x0 .pristejemo x0 v A + + LDX #3 .odmik v arrayu + LDS arg1 +loop LDT x0, X .preberemo x_n + MULR S, T .izračunamo x_n * x^n + ADDR T, A .pristejemo v vsoto + LDT arg1 + MULR T, S .zmožimo naslednjo potenco + LDT #3 + ADDR T, X .povečamo odmik + LDT #13 + COMPR T, X + JGT loop + + STA subRez .shranimo rez + + LDA regA .obnovimo registre + LDB regB + LDT regT + LDS regS + + RSUB + +.polinom +x0 WORD 5 + WORD 4 + WORD 3 + WORD 2 + WORD 1 + +.tocka +x WORD 2 + +.rezultat +rez RESW 1 + +.parameter subrutine +arg1 RESW 1 + +.rezultat subrutine +subRez RESW 1 + +.registri +regA RESW 1 +regB RESW 1 +regT RESW 1 +regS RESW 1 diff --git a/ass1/print.asm b/ass1/print.asm index e65c5b2..97e1e3e 100644 --- a/ass1/print.asm +++ b/ass1/print.asm @@ -1,17 +1,17 @@ -print START 0 -zacetek CLEAR X -loop LDCH txt, X - WD #0xAA - TIX #len .#len, ker je len EQU in ne dejanska lokacija v spominu!!!!! - JLT loop - -halt J halt - -.constants -txt BYTE C'SIC/XE' - BYTE 0 -txtend EQU * -len EQU txtend-txt .definicija konstante EQU, ki ni shranjena v pomnilniku, zato ko jo želimo uporabiti -.rabimo #len - +print START 0 +zacetek CLEAR X +loop LDCH txt, X + WD #0xAA + TIX #len .#len, ker je len EQU in ne dejanska lokacija v spominu!!!!! + JLT loop + +halt J halt + +.constants +txt BYTE C'SIC/XE' + BYTE 0 +txtend EQU * +len EQU txtend-txt .definicija konstante EQU, ki ni shranjena v pomnilniku, zato ko jo želimo uporabiti +.rabimo #len + END zacetek \ No newline at end of file diff --git a/ass1/rec.asm b/ass1/rec.asm index 624bc11..be5e4ac 100644 --- a/ass1/rec.asm +++ b/ass1/rec.asm @@ -1,233 +1,233 @@ -prog START 0 -zacetek JSUB sinit .inicializiramo sklad -.beremo iz 0xFA, dokler ne preberemo 0 -loop3 CLEAR A - JSUB rdNum - COMP #0 - JEQ halt - - - JSUB fact - JSUB num - J loop3 - -halt J halt - -.beri število v A dokler ne naletiš na newline in jo pretvori v int -rdNum STL @stkp - JSUB spush - STA @stkp - JSUB spush - STB @stkp - JSUB spush - - CLEAR A - CLEAR B .v B bomo shranili prebran rezultat - LDS #10 .za množenje -loop4 RD #0xFA - COMP #0xD .beremo newline - JEQ nwl - .else - MULR S, B - SUB #0x30 .pretvorimo v int - ADDR A, B - J loop4 - -nwl RD #0xFA .prebre še 0x0A - CLEAR A - RMO B, A - - JSUB spop - LDB @stkp - JSUB spop - .LDA @stkp da ne povozimo odgovora? - JSUB spop - LDL @stkp - - RSUB -.fakulteta -fact COMP #1 - JGT rec - LDA #1 .base case - RSUB - -rec STL @stkp - JSUB spush - STA @stkp - JSUB spush - STB @stkp - JSUB spush - - RMO A, B .shrani n v B - SUB #1 .n-1 - JSUB fact .fact(n-1) - MULR B, A .n * fact(n-1) - - JSUB spop - LDB @stkp - JSUB spop - .LDA @stkp da ne povozimo odgovora? - JSUB spop - LDL @stkp - - - - RSUB - - -.rutine za sklad -.inicializira kazalec na sklad -sinit STA stkA - LDA #stkRESW .inicializiraj stkp - STA stkp - LDA stkA - RSUB - -.pusha na sklad, pred klicem te subrutine shrani na sklad kar želiš -spush STA stkA - LDA stkp .poveca stkp za 3 - ADD #3 - STA stkp - LDA stkA - RSUB - -.popa iz sklada, po koncu te subrutine iz sklada beri kar želš -spop STA stkA - LDA stkp .zmanjsa stkp za 3 - SUB #3 - STA stkp - LDA stkA - RSUB - - -.nl -nl STL @stkp - JSUB spush - STB @stkp .shranimo registre - JSUB spush - STT @stkp - JSUB spush - STS @stkp - JSUB spush - - - LDCH newline - WD #1 - LDX #1 - LDCH newline, X - WD #1 - - .obnovimo registre - JSUB spop - LDS @stkp - JSUB spop - LDT @stkp - JSUB spop - LDB @stkp - JSUB spop - LDL @stkp - - RSUB - -.string -string STL @stkp - JSUB spush - STB @stkp .shranimo registre - JSUB spush - STT @stkp - JSUB spush - STS @stkp - JSUB spush - STA regA - -loop LDB #1 - CLEAR A .da lahko comparamo z 0 - LDCH @regA - COMP #0 - WD #1 - .add +1 to regA - LDA regA - ADD #1 - STA regA - JGT loop - - LDA regA .obnovimo registre - JSUB spop - LDS @stkp - JSUB spop - LDT @stkp - JSUB spop - LDB @stkp - JSUB spop - LDL @stkp - - RSUB -.izpiše število zapisano v A na std izhod -num STL @stkp - JSUB spush - STB @stkp .shranimo registre - JSUB spush - STT @stkp - JSUB spush - STS @stkp - JSUB spush - - LDX #4 .X steje stevke, 4 je zadnji index arraya velikosti 5 - LDS #10 .za množenje/deljenje - LDT #0x30 .za pretvorbo v ascii - - -loop2 RMO A, B - DIVR S, B .B = B/10 - MULR S, B .B= B*10 - SUBR B, A .A = ostanek - ADDR T, A .pretvorimo A v ascii - STCH digs, X .shranimo ascii ostanek - - .zmanjšamo X in primerjamo z #5 - RMO X, A - SUB #1 - RMO A, X - LDA #0 - COMPR X, A - - RMO B, A .premaknemo kar je še potrebno izračunati v A - DIVR S, A .A je sedaj naslednja števka - - JEQ loop2 - JGT loop2 - - .kličemo string za izpis - LDA #digs - JSUB string - JSUB nl - - JSUB spop - LDS @stkp - JSUB spop - LDT @stkp - JSUB spop - LDB @stkp - JSUB spop - LDL @stkp - - RSUB - - -.digits za num -digs RESB 5 .0 bo prazna za lazje izpisovanje - BYTE 0 .konec števke - -.constante -newline BYTE 0x0D - BYTE 0x0A - -.shramba za string -regA WORD 0 - -.podatki za sklad -stkp WORD 0 -stkA WORD 0 -stkRESW RESW 1000 - +prog START 0 +zacetek JSUB sinit .inicializiramo sklad +.beremo iz 0xFA, dokler ne preberemo 0 +loop3 CLEAR A + JSUB rdNum + COMP #0 + JEQ halt + + + JSUB fact + JSUB num + J loop3 + +halt J halt + +.beri število v A dokler ne naletiš na newline in jo pretvori v int +rdNum STL @stkp + JSUB spush + STA @stkp + JSUB spush + STB @stkp + JSUB spush + + CLEAR A + CLEAR B .v B bomo shranili prebran rezultat + LDS #10 .za množenje +loop4 RD #0xFA + COMP #0xD .beremo newline + JEQ nwl + .else + MULR S, B + SUB #0x30 .pretvorimo v int + ADDR A, B + J loop4 + +nwl RD #0xFA .prebre še 0x0A + CLEAR A + RMO B, A + + JSUB spop + LDB @stkp + JSUB spop + .LDA @stkp da ne povozimo odgovora? + JSUB spop + LDL @stkp + + RSUB +.fakulteta +fact COMP #1 + JGT rec + LDA #1 .base case + RSUB + +rec STL @stkp + JSUB spush + STA @stkp + JSUB spush + STB @stkp + JSUB spush + + RMO A, B .shrani n v B + SUB #1 .n-1 + JSUB fact .fact(n-1) + MULR B, A .n * fact(n-1) + + JSUB spop + LDB @stkp + JSUB spop + .LDA @stkp da ne povozimo odgovora? + JSUB spop + LDL @stkp + + + + RSUB + + +.rutine za sklad +.inicializira kazalec na sklad +sinit STA stkA + LDA #stkRESW .inicializiraj stkp + STA stkp + LDA stkA + RSUB + +.pusha na sklad, pred klicem te subrutine shrani na sklad kar želiš +spush STA stkA + LDA stkp .poveca stkp za 3 + ADD #3 + STA stkp + LDA stkA + RSUB + +.popa iz sklada, po koncu te subrutine iz sklada beri kar želš +spop STA stkA + LDA stkp .zmanjsa stkp za 3 + SUB #3 + STA stkp + LDA stkA + RSUB + + +.nl +nl STL @stkp + JSUB spush + STB @stkp .shranimo registre + JSUB spush + STT @stkp + JSUB spush + STS @stkp + JSUB spush + + + LDCH newline + WD #1 + LDX #1 + LDCH newline, X + WD #1 + + .obnovimo registre + JSUB spop + LDS @stkp + JSUB spop + LDT @stkp + JSUB spop + LDB @stkp + JSUB spop + LDL @stkp + + RSUB + +.string +string STL @stkp + JSUB spush + STB @stkp .shranimo registre + JSUB spush + STT @stkp + JSUB spush + STS @stkp + JSUB spush + STA regA + +loop LDB #1 + CLEAR A .da lahko comparamo z 0 + LDCH @regA + COMP #0 + WD #1 + .add +1 to regA + LDA regA + ADD #1 + STA regA + JGT loop + + LDA regA .obnovimo registre + JSUB spop + LDS @stkp + JSUB spop + LDT @stkp + JSUB spop + LDB @stkp + JSUB spop + LDL @stkp + + RSUB +.izpiše število zapisano v A na std izhod +num STL @stkp + JSUB spush + STB @stkp .shranimo registre + JSUB spush + STT @stkp + JSUB spush + STS @stkp + JSUB spush + + LDX #4 .X steje stevke, 4 je zadnji index arraya velikosti 5 + LDS #10 .za množenje/deljenje + LDT #0x30 .za pretvorbo v ascii + + +loop2 RMO A, B + DIVR S, B .B = B/10 + MULR S, B .B= B*10 + SUBR B, A .A = ostanek + ADDR T, A .pretvorimo A v ascii + STCH digs, X .shranimo ascii ostanek + + .zmanjšamo X in primerjamo z #5 + RMO X, A + SUB #1 + RMO A, X + LDA #0 + COMPR X, A + + RMO B, A .premaknemo kar je še potrebno izračunati v A + DIVR S, A .A je sedaj naslednja števka + + JEQ loop2 + JGT loop2 + + .kličemo string za izpis + LDA #digs + JSUB string + JSUB nl + + JSUB spop + LDS @stkp + JSUB spop + LDT @stkp + JSUB spop + LDB @stkp + JSUB spop + LDL @stkp + + RSUB + + +.digits za num +digs RESB 5 .0 bo prazna za lazje izpisovanje + BYTE 0 .konec števke + +.constante +newline BYTE 0x0D + BYTE 0x0A + +.shramba za string +regA WORD 0 + +.podatki za sklad +stkp WORD 0 +stkA WORD 0 +stkRESW RESW 1000 + END prog \ No newline at end of file diff --git a/ass1/sreen.asm b/ass1/sreen.asm index 76f0330..8702e49 100644 --- a/ass1/sreen.asm +++ b/ass1/sreen.asm @@ -1,38 +1,38 @@ -scr START 0 - LDCH txt - +STCH screen - LDX #3 - +STCH screen, X - - JSUB scrcfill - - JSUB scrclear - -halt J halt - -scrclear LDCH #0 - LDS #scrlen - LDX #0 -loop +STCH screen, X - TIXR S - JLT loop - - RSUB - - -scrcfill - LDS #scrlen - LDX #0 -loop2 +STCH screen, X - TIXR S - JLT loop2 - - RSUB - -txt BYTE C'hi' -screen EQU 0x0B800 -scrcols EQU 80 -scrrows EQU 25 -scrlen EQU 2000 - +scr START 0 + LDCH txt + +STCH screen + LDX #3 + +STCH screen, X + + JSUB scrcfill + + JSUB scrclear + +halt J halt + +scrclear LDCH #0 + LDS #scrlen + LDX #0 +loop +STCH screen, X + TIXR S + JLT loop + + RSUB + + +scrcfill + LDS #scrlen + LDX #0 +loop2 +STCH screen, X + TIXR S + JLT loop2 + + RSUB + +txt BYTE C'hi' +screen EQU 0x0B800 +scrcols EQU 80 +scrrows EQU 25 +scrlen EQU 2000 + END scr \ No newline at end of file diff --git a/ass1/stack.asm b/ass1/stack.asm index bd6940d..d6cdd0d 100644 --- a/ass1/stack.asm +++ b/ass1/stack.asm @@ -1,33 +1,33 @@ -prog START 0 - JSUB sinit - LDT #4 - STT @stkp - JSUB spush - JSUB spop - CLEAR T - LDT @stkp - -halt J halt - -.rutine za sklad -sinit LDA #stkRESW .inicializiraj stkp - STA stkp - RSUB - -spush LDA stkp .poveca stkp za 3 - ADD #3 - STA stkp - RSUB - -spop LDA stkp .zmanjsa stkp za 3 - SUB #3 - STA stkp - RSUB - -.podatki za sklad -stkp WORD 0 -stkRESW WORD 1000 - - END prog - - +prog START 0 + JSUB sinit + LDT #4 + STT @stkp + JSUB spush + JSUB spop + CLEAR T + LDT @stkp + +halt J halt + +.rutine za sklad +sinit LDA #stkRESW .inicializiraj stkp + STA stkp + RSUB + +spush LDA stkp .poveca stkp za 3 + ADD #3 + STA stkp + RSUB + +spop LDA stkp .zmanjsa stkp za 3 + SUB #3 + STA stkp + RSUB + +.podatki za sklad +stkp WORD 0 +stkRESW WORD 1000 + + END prog + + diff --git a/ass2/SICocaml/SICXE/SICXE.opam b/ass2/SICocaml/SICXE/SICXE.opam new file mode 100644 index 0000000..a43bbcb --- /dev/null +++ b/ass2/SICocaml/SICXE/SICXE.opam @@ -0,0 +1,32 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +synopsis: "A short synopsis" +description: "A longer description" +maintainer: ["Maintainer Name "] +authors: ["Author Name "] +license: "LICENSE" +tags: ["add topics" "to describe" "your" "project"] +homepage: "https://github.com/username/reponame" +doc: "https://url/to/documentation" +bug-reports: "https://github.com/username/reponame/issues" +depends: [ + "dune" {>= "3.20"} + "ocaml" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/username/reponame.git" +x-maintenance-intent: ["(latest)"] diff --git a/ass2/SICocaml/SICXE/_build/.db b/ass2/SICocaml/SICXE/_build/.db new file mode 100644 index 0000000000000000000000000000000000000000..0a18ffb1726f80b5079695fa4fa3f73654a8a0bc GIT binary patch literal 2689 zcmaJ@dss|q93JUnl2z8F8$FR+XXfkT(g@$^;#Mvx8Pqg2rTb5+H#*$KBcsy4uNG!l2m_bA|0(nB`t>L?6 zi|_6nKDT<)gKP+XVuZ28#?KVXi#p{|?k0ub!R-NDDxmddUXC08h4t&K&~)f6d%2zqQlsqJlZGrY;lKViR&Th(+*)B2sV!oZK&QpF8hcZRs5QHmYXGT?jTDtK@g(O*k5Fzwy%E zpVylqy0vyClfWWyp@>0A#KNL61_gz{9>qyf@SFJI|0GN=YRJ7-4Z*B8?6k(Iw^}Mk zg@uZ2*R@eY`y#Uplge03>djlBvO1>ndSHwUV^I^}@knSM&s+0{AVP>h$)naSNo}T! zGNveJ=XehN1VKkbfY~xUR$9L&q`kmog$r`jCfm~{S-CS}vzYgvpPM~n3^Rk$HC6;F=aA2b(!J zDn~CZgJ8iidwYW?!R%F~1&?V3^|v*9r&3T$Kx&v5y~;AJvqGPAO)LKt-F82x4;Rf+ zv+7+>s^r8>dA4VY#J&C=(;!r@rLeb3+MB0>=;a3uC(;!uO-bux(&z7UvABDuBB>IB zwSLj9=+IJIyu)1~Jv%Uh#G9t3^!?=14k}gpS+zd&3mYgLk>(SfxmGtPl1!-!HE9j* z%{xW(?Oqdzb2n6JtC6hRX_UP*qqItXbbfM2yP~Z5%LzrS2t0>6l4jU32g0Le%eg$#p`&*!W#%QtIA)Qs)!lpEk0|_2FbB7>>+Zv*Srt z+cf>xlisM3g8n5czMY6_Kl?~C)pC|69(`F>)=G~U^&w{7^UD?xSnfD}-q4{vY2;IZ z07s|{_C62`bj~&x;GV9Ng$4}Rl_F{I8?~oxguE+1$ z>R<3ZvBVNSfdGfIdVv4NiUIOkzl+t6x7;QL*R#{nQMw-bS5O%QP16&Ry_!q6FS_f_ z4a!z$YM=aqL8X2yv>6k1db)@hABX$*lf zGoJ0ZKLg7RV4NLSGU+0slShIke)kX{h`*Ek9_nVige~apQjO? z@^yEE2*fLiU*11HUwZV9V5LpmwwONLO||h=HfxKcX+!&xMD~+u5f#(u>A$x69A{e$ zmmr-mV{!Ju(eGY7YD-AJ8>(Inc@2dp@D+5?LXKac*_a~X{_cG?@Loi->?ZmK@=m9!PcJhd9 Mb1Mj!^?P~z9|mDt;Q#;t literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/.digest-db b/ass2/SICocaml/SICXE/_build/.digest-db new file mode 100644 index 0000000000000000000000000000000000000000..9838aa98667aba44a28bbdf030fee743983c9ab1 GIT binary patch literal 4245 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 \ No newline at end of file diff --git a/ass2/SICocaml/SICXE/_build/.lock b/ass2/SICocaml/SICXE/_build/.lock new file mode 100644 index 0000000..e69de29 diff --git a/ass2/SICocaml/SICXE/_build/default/.dune/configurator b/ass2/SICocaml/SICXE/_build/default/.dune/configurator new file mode 100644 index 0000000..19708df --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/.dune/configurator @@ -0,0 +1,2 @@ +(ocamlc /usr/bin/ocamlc.opt) +(ocaml_config_vars (afl_instrument false) (architecture amd64) (asm x86_64-linux-gnu-as) (asm_cfi_supported true) (ast_impl_magic_number Caml1999M030) (ast_intf_magic_number Caml1999N030) (bytecomp_c_compiler "x86_64-linux-gnu-gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2") (bytecomp_c_libraries "-lm -lpthread") (c_compiler x86_64-linux-gnu-gcc) (ccomp_type cc) (cma_magic_number Caml1999A030) (cmi_magic_number Caml1999I030) (cmo_magic_number Caml1999O030) (cmt_magic_number Caml1999T030) (cmx_magic_number Caml1999Y030) (cmxa_magic_number Caml1999Z030) (cmxs_magic_number Caml1999D030) (default_executable_name a.out) (default_safe_string true) (exec_magic_number Caml1999X030) (ext_asm .s) (ext_dll .so) (ext_exe "") (ext_lib .a) (ext_obj .o) (flambda false) (flat_float_array true) (function_sections true) (host x86_64-pc-linux-gnu) (int_size 63) (linear_magic_number Caml1999L030) (model default) (native_c_compiler "x86_64-linux-gnu-gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2") (native_c_libraries "-lm ") (native_pack_linker "x86_64-linux-gnu-ld -r -o ") (ocamlc_cflags "-O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security") (ocamlc_cppflags "-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2") (ocamlopt_cflags "-O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security") (ocamlopt_cppflags "-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2") (os_type Unix) (ranlib x86_64-linux-gnu-ranlib) (safe_string true) (standard_library /usr/lib/ocaml) (standard_library_default /usr/lib/ocaml) (supports_shared_libraries true) (system linux) (systhread_supported true) (target x86_64-pc-linux-gnu) (version 4.13.1) (windows_unicode false) (with_frame_pointers false) (word_size 64)) diff --git a/ass2/SICocaml/SICXE/_build/default/.dune/configurator.v2 b/ass2/SICocaml/SICXE/_build/default/.dune/configurator.v2 new file mode 100644 index 0000000..6fe4a49 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/.dune/configurator.v2 @@ -0,0 +1 @@ +((6:ocamlc19:/usr/bin/ocamlc.opt)(17:ocaml_config_vars((14:afl_instrument5:false)(12:architecture5:amd64)(3:asm19:x86_64-linux-gnu-as)(17:asm_cfi_supported4:true)(21:ast_impl_magic_number12:Caml1999M030)(21:ast_intf_magic_number12:Caml1999N030)(19:bytecomp_c_compiler241:x86_64-linux-gnu-gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2)(20:bytecomp_c_libraries14:-lm -lpthread)(10:c_compiler20:x86_64-linux-gnu-gcc)(10:ccomp_type2:cc)(16:cma_magic_number12:Caml1999A030)(16:cmi_magic_number12:Caml1999I030)(16:cmo_magic_number12:Caml1999O030)(16:cmt_magic_number12:Caml1999T030)(16:cmx_magic_number12:Caml1999Y030)(17:cmxa_magic_number12:Caml1999Z030)(17:cmxs_magic_number12:Caml1999D030)(23:default_executable_name5:a.out)(19:default_safe_string4:true)(17:exec_magic_number12:Caml1999X030)(7:ext_asm2:.s)(7:ext_dll3:.so)(7:ext_exe0:)(7:ext_lib2:.a)(7:ext_obj2:.o)(7:flambda5:false)(16:flat_float_array4:true)(17:function_sections4:true)(4:host19:x86_64-pc-linux-gnu)(8:int_size2:63)(19:linear_magic_number12:Caml1999L030)(5:model7:default)(17:native_c_compiler241:x86_64-linux-gnu-gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2)(18:native_c_libraries4:-lm )(18:native_pack_linker26:x86_64-linux-gnu-ld -r -o )(13:ocamlc_cflags165:-O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security)(15:ocamlc_cppflags54:-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2)(15:ocamlopt_cflags165:-O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -g -O2 -ffile-prefix-map=/build/ocaml-SC7b9w/ocaml-4.13.1=. -fstack-protector-strong -Wformat -Werror=format-security)(17:ocamlopt_cppflags54:-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2)(7:os_type4:Unix)(6:ranlib23:x86_64-linux-gnu-ranlib)(11:safe_string4:true)(16:standard_library14:/usr/lib/ocaml)(24:standard_library_default14:/usr/lib/ocaml)(25:supports_shared_libraries4:true)(6:system5:linux)(19:systhread_supported4:true)(6:target19:x86_64-pc-linux-gnu)(7:version6:4.13.1)(15:windows_unicode5:false)(19:with_frame_pointers5:false)(9:word_size2:64)))) \ No newline at end of file diff --git a/ass2/SICocaml/SICXE/_build/default/META.SICXE b/ass2/SICocaml/SICXE/_build/default/META.SICXE new file mode 100644 index 0000000..e69de29 diff --git a/ass2/SICocaml/SICXE/_build/default/SICXE.dune-package b/ass2/SICocaml/SICXE/_build/default/SICXE.dune-package new file mode 100644 index 0000000..222b651 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/SICXE.dune-package @@ -0,0 +1,4 @@ +(lang dune 3.20) +(name SICXE) +(sections (lib .) (bin ../../bin)) +(files (lib (META dune-package opam)) (bin (SICXE))) diff --git a/ass2/SICocaml/SICXE/_build/default/SICXE.opam b/ass2/SICocaml/SICXE/_build/default/SICXE.opam new file mode 100644 index 0000000..a43bbcb --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/SICXE.opam @@ -0,0 +1,32 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +synopsis: "A short synopsis" +description: "A longer description" +maintainer: ["Maintainer Name "] +authors: ["Author Name "] +license: "LICENSE" +tags: ["add topics" "to describe" "your" "project"] +homepage: "https://github.com/username/reponame" +doc: "https://url/to/documentation" +bug-reports: "https://github.com/username/reponame/issues" +depends: [ + "dune" {>= "3.20"} + "ocaml" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/username/reponame.git" +x-maintenance-intent: ["(latest)"] diff --git a/ass2/SICocaml/SICXE/_build/default/bin/.merlin-conf/exe-main b/ass2/SICocaml/SICXE/_build/default/bin/.merlin-conf/exe-main new file mode 100644 index 0000000000000000000000000000000000000000..fd1b4d35e89fa70822dc7df6a51c8c29bfe9239a GIT binary patch literal 780 zcmZ`%!EVz)5H-;v(a)d>G^E{isNIAh4wIA~IKTxVAt4bt&bnP{dyRKZ(|bR_iG;*) z5fW#A0qQ5@6LLY~GZ?!#fvEVfemgVo&CJt2fAi{uMm!BgOnn&#pZZU)K7apVS&g5T zWqrZ_u4Uc%Rot_zmX+ts&QxlLVq#0*i^BPRc6|+tXHy<{S*Y!ah;0^mB4%7pJ}7%~ zsW}Wc`I5+9zc_w-!Z!I4O3a%`h2gx36)*xYyY#~BIPjP;2aXs!d;(612jDv3_84>f z;0_o&>O&9Xy+i0B8c?@ux>V^@_?jyIG2^k%ja^3qnMR&g=76d*nQEGN`b?P)J?A{3 zq4X8DJ;mmWo%a7W@_jvH)$UZpQ$G8E@XPH63^%3R7wpwI-a8x z$~~-DKAKQn_t83;P%qFttz&zMmnspLMpZR!I#n`Def}qa4LTxDGCdAN$RVEqe)($H z!ZE}@a}WlEu3M9XT9NFpQD==FZRANC$X=ydEZkeR7o4 UXdgKx1j;)MN8~OMaBOg}-!ZZqZ~y=R literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/bin/main.ml b/ass2/SICocaml/SICXE/_build/default/bin/main.ml new file mode 100644 index 0000000..7bf6048 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/bin/main.ml @@ -0,0 +1 @@ +let () = print_endline "Hello, World!" diff --git a/ass2/SICocaml/SICXE/_build/default/bin/main.mli b/ass2/SICocaml/SICXE/_build/default/bin/main.mli new file mode 100644 index 0000000..335ae1f --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/bin/main.mli @@ -0,0 +1 @@ +(* Auto-generated by Dune *) \ No newline at end of file diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmi b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmi new file mode 100644 index 0000000000000000000000000000000000000000..cdbf0239c4d11f7af4675a4e96c7bbcf2810e846 GIT binary patch literal 376 zcmZ=x%*`>hw6ydzFg9qJx@;c<1H&aC)&k-MKs;rEYOtqsgzJLK3)Edwlk-zji`*O! zOr9`F4=fxX4;6ISaKIoZGfBS~q*yOEM>jn+&!w{R01J~#B}0V6LKc1p2M3@bTAo#9 ziCKv`d70VnU~>$i<{-p@MzQd@Gt@HF9$?`I(u@p?fcj+|!TPoR3qXztNleN~^#B`S z1T_Fj0%U@;7bC+7AUePz17W=f8lve0bOqFx5kTMZ0kH`XYcGI$bAmx7+ov#PiStK| r*PLF#xqvfc!2)a+ELecW-3u0=2MWwCHlQ8MK+FNc3mg|raBu(s%qo2C literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmo b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE.cmo new file mode 100644 index 0000000000000000000000000000000000000000..79df2e0d5cecc8d2764429af8b8a9429f77a3075 GIT binary patch literal 2209 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 XN2_66k#C?7e!?$L6C`h**R%fzD_Q;% literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmi b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmi new file mode 100644 index 0000000000000000000000000000000000000000..8d272c6f04b19d37d376f340d06c0f98a33d548b GIT binary patch literal 633 zcmZ=x%*`>hw6ydzFg9qJx@;c<1EVAZ1A{XVKLz4z3-p3Log-Z1<6Tmd^HWlb7Hn9c zT9TNQlgh~W=)!@`3l~n9q!wI~l9QRF?vYrWQIeFSShC>2<_U|HGxJIu9VR$1v3`BX z;K1+;C!(2M*2~RtVn}32J;1^Q zqO%+v7P6>2H~^ib4pqU(`1rzsgAO43RgyCji<}UK{UOr+zc3g71KQ3aY zfJGL<>IPZrC43>VJd-xZNo6e;jyVqpYcK%(kKpPTV z@$tc_g%b?CQY;u7uEgiI@;vg|$et~+V1YhN9vYq#41O$3?Be?SeXCU6pNPwAmvS#y zpaWCm4D{p#gT$xm&v#YqpAv9rN|iBn>6W^(ZagCkp;m#e?g__}BI;;cI<=Z`}}iGd9mI?O=K N0m2I$7ff()002FG_~QTo literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmo b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmo new file mode 100644 index 0000000000000000000000000000000000000000..27592f3ef4cc47d122fc05915f97130234df375a GIT binary patch literal 3123 zcmaJ@eQXrR72kok_{>MrB;}(`ngnw`o7$WY9H{M-c<;_O*d!RRaSVZM_U`uZ!rrd4 zx3+Pr78=qj{gRd|P1`g<<6aVyhDryNDk3P|Qqoej5~#FM)kZY^O8Q5nG*u(oipYI4 zv+J5m)X}}U*?GVDy*Ka8S6VBWtJ~Y#`xC7RNt&M>lq6{d${v(!C<{=ED77d%P!^&9 zN*hX8!nTYZbtpSg8d2t;gt{7RGpu(Zn8?Z7AYB1 zG&`a>sVZfApo}52VeRR!Qm+qq>$#&{Ra)jMXU^ER*&QgS=o{twyk-{l2R%iBO$>ou zQS@9_S8H7v=o#g@D z$hFk>lsWQyf0UGd9GO(8bU>kqQ(!MgN6JytD7w7?7-|K0i;`sXsC!_y#(WqLCQ;YX zk?|br5ETM3V60&ba)FDL8XA`440vliCHf}A)>`@mp*cV!<7gh#@mFQ+%Sy^VM z6xfLl*abbuEMe!ju@kPNeTvgAF2_vmkxA9v9Maw`Xt#@*hE6=g(KY3jmgXAcIbo>Lt?JLVM8lv=QJW2U|v zhukT7aKGYFzrMS6~9JAik#D)NSQdJFn&qQy&)4xPbndLGOS! z;Q+kJp(_U_i>mH8wsXG#u0y|I4WoUVVH@EccpTnAY@{4#*oDH`_R8d(6rW3E&0+yvBfSFb&^=X%1}Y5rNq*VExR2P3VA3WCq3m2uxwc zeMt0LdR8qXzk?8`!8mncM{5!z%FH)w26kdt7($%$V3I#%SCj znJi%gw#npUa1tx-)2jY4mqoCk7i?#8K;Vr4e>=nPl*w{9gO$MFr@7gYFvZ&h{^20S zqZCXEg&@UQ?qoCL7?DW}T)+xB7M1HWldfJ&DGEOy@V_#q%)aZcl{k352lh-Wb%2L98>}h$&|_C zNYN|?#$X;EigL12Ig8ZL4!e_iPl+8@hB3PW`55n9F~gpv;D)g_Z3AlvW;BK?I(fAe7nZ;?fchsnY`!oBD|%fZuFEqI+(zkv=f z1?yz;a>Z9*3Chi!v?n0lC6iZ?)94}66(YR>X^d4W3F~EY4r;=zY?R5*5mXS)pM(tv z>QMmW{!_-foZSof6AvV5GrpDPq1=J8gtoLy*v`JBK_4LO-cWwCc_n%!rX>-Vt z#+R9w(Ei%+)|vf3I5k)iZN-R~$3&!NPsNG$)#fpcdLTTW}cd-xBOen=?1ME>YY zFXrw!ee}`iUi|mv-RIw>6gs`cv+q9rlm9?Z^RHfd`S{3Zzw|z(;z05elk@&Dv|`!C zS6h$&;`v%yJ3?t&8gE*B2H?G_nLV~s(A<<(G_pl6asKq7V-0UNzIXOJ<-M=xF8&N} S>W#=xp&O4)Tx+EE(0>6Z*}0DZ literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmt b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Decoder.cmt new file mode 100644 index 0000000000000000000000000000000000000000..a536bc40e74ef7af133cbf9e825b7999a41b30a1 GIT binary patch literal 5699 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 J{~OKVe*m~eQ$7Fy literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Izvajalnik.cmi b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__Izvajalnik.cmi new file mode 100644 index 0000000000000000000000000000000000000000..e2fa06e1ef8e75ad7772c2b40adddd7db6a6fdf0 GIT binary patch literal 3609 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 z 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

mW?2k^6ivwpk4 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 literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmo b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmo new file mode 100644 index 0000000000000000000000000000000000000000..0be3155d5cc986fe5e10a45160c2c808817bfdb8 GIT binary patch literal 17925 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

hw6u&gFg9qJx@;c<149lF3j(nV5L~ k8m~FMf^z|9h64ypaBv8f3;2Gl`h?Qbli7dfKY1Jo0Hj7W82|tP literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE.o b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE.o new file mode 100644 index 0000000000000000000000000000000000000000..4446fe79a61a1e4cd10119dfcbfb31f8c6e9be14 GIT binary patch literal 1616 zcmbtU%}yIZ4EFL2pQ83H2Nm3HP3xWE%s zeFW5};8=+l=#j^0pCGj-HW`LRsKV0hXMeWGW6va)Yg=E2q6kDHSb>2hEWqyYK(9Ns z4wEneHxzt}%kw+;|9!3`yw{gY#@<_YL>GGyb*s_LX=dJ4zQ2_w zMV?#Zb2_udxlg!Fbk_7aS1#a=3)Rt9HQE~F{50V)?unqrI^D>FTZzqi2U8(7w&>%D zXjXSE#D#9Fn5shDFb3_Mj5sxRaS7rqw>tj1eel6pm7a05K1tk>xaLb>29v3m@ILFj zX~>7~@IB{;KgV^>|HvpH^Amdxl@VNZAsB!05U1IGjYyQ_3%|fzSij48AyBWrETTc& zlux35#deKRK>8Q_jE-!iG;EH7(?8HH-q*yE|TZww}UZd^SdjVAHCOber2_( t?r-{_Ec1cKQKx^WFrV%voIO%d;rcgZcoO#i27P7ue>nfh%Oy3;{|7nHh=u?F literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.cmx b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.cmx new file mode 100644 index 0000000000000000000000000000000000000000..e1275144eb40820ce70fd2f9b883f8d0c4380ae4 GIT binary patch literal 427 zcmZ=x%*`>hw6u&gFg9qJx@;c<17kG<1A_$+UkBn191IK^40^$y&JnKh@h+*!`6;PI zEQ||Sm>d=?&<-w1$;nKLj}J~QoM7OUV!_yOB|f*6=aJV&_H2m-3-n>~9*M;nB}q9G z41O$3?Be?SeXCU6pNPwAmvS#ypaWCmoRL^G!65Oe`tw~C`=cSmKmeoS9ra!QjZ&=H=>dG`{Ycy*TSm%K78KK*01Q%lD!m z6K#Cw2S?@P=oaa3LGr_o9b4XUPpsQpvNnuEE0y6NRzEm^zyt?}NY^djFSeJr%v`pj J`AgK3?*Os=w(I}^ literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.o b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__Decoder.o new file mode 100644 index 0000000000000000000000000000000000000000..22936fd1c2e98e246c2ba4949e6dfd777822a6f5 GIT binary patch literal 4008 zcmbtW-D@0G6u*ekrpIGF)xCTfG?|j{R z=H7GX_G~WGWf+3V5U-1-#HbMEV@-ZqvD0EuoD$hPznIyb{p^Q7`~_~gPfkAv%Jh8t zV8gz;Q?j$WNi@#xiXU-If10tgcOIHQk7jpIhl=+uW~Uyn9~y%4CsZi&z7dH3(A+PT zoW7B}2ty&oYkrjza1PL%wN5{I4k80!K7{pw9OKj zBi&YScrAb;A|L_lUU%Gse76k?JNF(}$=#5BCwmo{NONhRv5pi$8XhQ~_ZYsQei|hbC5UGRu z27ujH_6d=KF-qTofbqwpAn@NSTmwP;wFBM*Q_*XQ-e)@CV;%5J2mCtVxUMw}3dDP* zuIvq=@9U2ho)AmQy7{_Kc$uI>eZgI=%9^)alB=%2B9!Rn{fOAwE~GrCjC6D&7A?Ag zEA!rRr53BkzVt6@Y9{jhh4C2o7)Z+Hf;zaqkXLeZm(n>om&we}F35%SrQEEHy3DB# zyWr-lUI+(8Xa-VdUB4XUt5TLKwW6Gwnv7^8Ea=@z^;RV)%g{nL+=}l>Z!>Ra`*Woup71|#m8yq^#Cq*_`oA90tfomGhbrg=jwF+Ad#-I_7W#$@Q z)pY`IGZ2nqajyy|@B1LvQE&==Ffl2dT0QU_xJqC41Glik)?R*nSyn4GuLY>oN_F8B zmD0`U8{S5X+HJVCWe+lh7BCf3du6GP1Fhr#4k-wL-%P(jrvXFa?-)wWdb2zX4DRJ= z254NQkMx*iJd>D*_ZaV&7YWyIK=yk?{yeZh%g+N7mw%iLm&g$FV-EJ`{1b%f`MFAKT7PMih{uNe&ulnFg+%^Jct8hY_VU(nX>;P28)nxi~T6BetT3Xt`n{g zA-#S#0n=jwB!=kFasNRKNw>xSm$>}*DA7IT71kHezMg+0CMLRMC_nbtDCzm}e@e&D zeu@0Yqt3wdcVqZ2Fmdz0Mop9bv3}Us_4$7e80Kd?U={6Aemoyh;<@sO^+BG@4^1Bs zuylxo4CiO~OJL&Wza2AwTs!;ozKF|>u~T%Q)@UAh_a2Y&$29uc14!)Qr3v(i7aEFf U-wOW$;{3m+`F}%xJZRy>KL>Npwg3PC literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.cmx b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.cmx new file mode 100644 index 0000000000000000000000000000000000000000..20fed4e4eccb8154e9ac2d1f442201ffbcc945b2 GIT binary patch literal 312 zcmZ=x%*`>hw6u&gFg9qJx@;c<10x3m1A{scPY2>!AV-72DA?0E!ZkkLzaTk3B{d{5 zDJPYMaRCdH!-56c!6hjxT$W-M4>;SBUoW?o5Z zQC?z>TYgb)Vu@2?ab|My1cM`6o0qG<(fGP&_TsENDd&#^9gpcamhVMBCffMU501*o j(Jj*7;;_Kk!NFmIgF{=Es(c{7=r7(^zosm|IO8G!?aP0N literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.o b/ass2/SICocaml/SICXE/_build/default/lib/.SICXE.objs/native/sICXE__OpcodeTable.o new file mode 100644 index 0000000000000000000000000000000000000000..3df9bf1ce6859592b515393cb84a86ad342c339f GIT binary patch literal 23112 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 I`ciHD1t7e5ivR!s literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/lib/decoder.ml b/ass2/SICocaml/SICXE/_build/default/lib/decoder.ml new file mode 100644 index 0000000..7955cc3 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/lib/decoder.ml @@ -0,0 +1,10 @@ +(*decoderjeva naloga je pridobiti mnemonic in tip ukaza iz prvega byta z pogledom v hash-table*) +let table = OpcodeTable.table + +let decoder (byte1 : char) : OpcodeTable.info = + let opcode = (Char.code byte1) land 0xFC in + try + Hashtbl.find OpcodeTable.table opcode + with + | Not_found -> failwith "invalid opcode" + diff --git a/ass2/SICocaml/SICXE/_build/default/lib/izvajalnik.ml b/ass2/SICocaml/SICXE/_build/default/lib/izvajalnik.ml new file mode 100644 index 0000000..fb27223 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/lib/izvajalnik.ml @@ -0,0 +1,228 @@ +type registers = { + mutable a : int; + mutable x : int; + mutable l : int; + mutable b : int; + mutable s : int; + mutable t : int; + mutable f : int; + mutable pc : int; + mutable sw : int +} +(*tip state predstavlja stanje SIC/XE, z pomnilnikom in registri*) +type state = { + regs : registers; + memory : Bytes.t +} + +type nixbpe = { + n : int; + i : int; + x : int; + b : int; + p : int; + e : int +} + +(*kreiramo začetno stanje*) +let regs = {a = 0; x = 0; l = 0; b = 0; s = 0; t = 0; f = 0; pc = 0; sw = 0} +let memSize = 1 lsl 20 (*2^20*) +let memory = Bytes.make memSize '\x00' (*mutbale kos pomnilnika velikosti memSize*) +let state = {regs; memory} + + +(*----Funkcije izvajalnika----*) +(*TODO - brali bomo vedno relativno od začetka instrukcije, PC bomo na koncu ukaza povečali za pravo velikost!*) + +(*funkcije za javljanje napak*) +let notImplemented (mnemonic : string) = Printf.printf "mnemonic %s is not implemented!\n" mnemonic +let invalidOpcode (opcode : int) = Printf.printf "opcode %d is invalid!\n" opcode +let invalidAdressing () = Printf.printf "invalid adressing!\n" + +(*beri in povisaj PC*) +let fetch (state : state) : char = + let byte = Bytes.get state.memory state.regs.pc in + state.regs.pc <- state.regs.pc + 1; + byte + + (*beri za offset in ne povecaj PC*) +let readMem (state : state) (offset : int) : char = + Bytes.get state.memory (state.regs.pc + offset) + + +(*beri drugi byte ukaza formata 2 in vrni r1 in r2, kot int njunih vrednosti (reg a -> 1, reg x -> 2 ...)*) +let readR1R2 (state : state) : (int * int) = + let byte2 = Char.code (readMem state 1) in + let highNibble = (byte2 land 0xF0) lsr 4 in (*pridobi prvi nibble*) + let lowNibble = byte2 land 0x0F in (*pridobi drugi nibble*) + (highNibble, lowNibble) + +(*preberi byta 1 in 2 in dobi nixbpe bite*) +let getNIXBPE (state : state) : nixbpe = + let byte1 = Char.code (readMem state 0) in + let byte2 = Char.code (readMem state 1) in + {n = (byte1 lsr 1) land 1; + i = byte1 land 1; + x = (byte2 lsr 7) land 1; + b = (byte2 lsr 6) land 1; + p = (byte2 lsr 5) land 1; + e = (byte2 lsr 4) land 1;} + + +let getAddress (state : state) : int = + 42 + + +(*execute format 1*) +let executeFormat1 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = + match mnemonic with + | FIX -> notImplemented "FIX" + | FLOAT -> notImplemented "FLOAT" + | HIO -> notImplemented "HIO" + | NORM -> notImplemented "NORM" + | SIO -> notImplemented "SIO" + | TIO -> notImplemented "TIO" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 1") + + + +(*execute format 2*) +let executeFormat2 (state: state) (mnemonic : OpcodeTable.mnemonic) : unit = + let (r1, r2) = readR1R2 state in + match mnemonic with + | ADDR -> notImplemented "ADD" (*when implemented: -> add state r1 r2*) + | CLEAR -> notImplemented "CLEAR" + | COMPR -> notImplemented "F2" + | DIVR -> notImplemented "F2" + | MULR -> notImplemented "F2" + | RMO -> notImplemented "F2" + | SHIFTL -> notImplemented "F2" + | SHIFTR -> notImplemented "F2" + | SUBR -> notImplemented "F2" + | SVC -> notImplemented "F2" + | TIXR -> notImplemented "F2" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 2") + + +(*execute Format 3*) +let executeFormat3 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + | ADD -> notImplemented "ADD3" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 3") + + +let executeFormat4 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + (*aritmetika*) + | ADD -> notImplemented "ADD4" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 4") + + + + +(*execute format 3_4*) +let executeFormat3_4 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = + let nixbpe = getNIXBPE state in + match nixbpe.e with + | 0 -> executeFormat3 state nixbpe mnemonic + | 1 -> executeFormat4 state nixbpe mnemonic + | _ -> failwith "invalid computation of nxbpe" + + +(*execute ukaza*) +let execute (state : state) : unit = + let byte1 = readMem state 0 in (*read the 1st byte of the instruction*) + try + let {OpcodeTable.mnemonic; OpcodeTable.format} = Decoder.decoder byte1 in (*determen the format of the instruction from the 1st byte*) + match format with + | F1 -> executeFormat1 state mnemonic + | F2 -> executeFormat2 state mnemonic + | F3_4 -> executeFormat3_4 state mnemonic + with + | Failure msg -> byte1 |> Char.code |> invalidOpcode \ No newline at end of file diff --git a/ass2/SICocaml/SICXE/_build/default/lib/opcodeTable.ml b/ass2/SICocaml/SICXE/_build/default/lib/opcodeTable.ml new file mode 100644 index 0000000..4c4544c --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/lib/opcodeTable.ml @@ -0,0 +1,159 @@ +(*opcode hash table, formati ukazov in mnemoniki*) +type mnemonic = + (* Format 1 *) + | FIX | FLOAT | HIO | NORM | SIO | TIO + + (* Format 2 *) + | ADDR | CLEAR | COMPR | DIVR | MULR | RMO + | SHIFTL | SHIFTR | SUBR | SVC | TIXR + + (* Format 3/4 *) + | ADD | ADDF | AND | COMP | COMPF | DIV + | J | JEQ | JGT | JLT | JSUB | LDA | LDB | LDCH | LDF + | LDL | LDS | LDT | LDX | LPS | MUL | OR | RD + | RSUB | STA | STB | STCH | STF | STL | STS | STSW + | STT | STX | SUB | SUBF | TD | TIX | WD + +type format = + | F1 + | F2 + | F3_4 + +type info = { + mnemonic : mnemonic; + format : format; +} + +(* Opcode table *) + +let table : (int, info) Hashtbl.t = Hashtbl.create 128 + +let () = + let add op mnemonic format = + Hashtbl.add table op { mnemonic; format } + in + + (*Format 1 Instructions*) + add 0xC4 FIX F1; + add 0xC0 FLOAT F1; + add 0xC8 HIO F1; + add 0xC1 NORM F1; + add 0xF0 SIO F1; + add 0xF8 TIO F1; + + (*Format 2 Instructions*) + add 0x90 ADDR F2; + add 0xB4 CLEAR F2; + add 0xA0 COMPR F2; + add 0x9C DIVR F2; + add 0x98 MULR F2; + add 0xAC RMO F2; + add 0xA4 SHIFTL F2; + add 0xA8 SHIFTR F2; + add 0x94 SUBR F2; + add 0xB0 SVC F2; + add 0xB8 TIXR F2; + + (*Format 3/4 Instructions*) + add 0x18 ADD F3_4; + add 0x58 ADDF F3_4; + add 0x40 AND F3_4; + add 0x28 COMP F3_4; + add 0x88 COMPF F3_4; + add 0x24 DIV F3_4; + add 0x3C J F3_4; + add 0x30 JEQ F3_4; + add 0x34 JGT F3_4; + add 0x38 JLT F3_4; + add 0x48 JSUB F3_4; + add 0x00 LDA F3_4; + add 0x68 LDB F3_4; + add 0x50 LDCH F3_4; + add 0x70 LDF F3_4; + add 0x08 LDL F3_4; + add 0x6C LDS F3_4; + add 0x74 LDT F3_4; + add 0x04 LDX F3_4; + add 0xD0 LPS F3_4; + add 0x20 MUL F3_4; + add 0x44 OR F3_4; + add 0xD8 RD F3_4; + add 0x4C RSUB F3_4; + add 0x0C STA F3_4; + add 0x78 STB F3_4; + add 0x54 STCH F3_4; + add 0x80 STF F3_4; + add 0x14 STL F3_4; + add 0x7C STS F3_4; + add 0xE8 STSW F3_4; + add 0x84 STT F3_4; + add 0x10 STX F3_4; + add 0x1C SUB F3_4; + add 0x5C SUBF F3_4; + add 0xE0 TD F3_4; + add 0x2C TIX F3_4; + add 0xDC WD F3_4; +() + +(*mnemonic to string*) +let string_of_mnemonic = function + (* Format 1 *) + | FIX -> "FIX" + | FLOAT -> "FLOAT" + | HIO -> "HIO" + | NORM -> "NORM" + | SIO -> "SIO" + | TIO -> "TIO" + + (* Format 2 *) + | ADDR -> "ADDR" + | CLEAR -> "CLEAR" + | COMPR -> "COMPR" + | DIVR -> "DIVR" + | MULR -> "MULR" + | RMO -> "RMO" + | SHIFTL -> "SHIFTL" + | SHIFTR -> "SHIFTR" + | SUBR -> "SUBR" + | SVC -> "SVC" + | TIXR -> "TIXR" + + (* Format 3/4 *) + | ADD -> "ADD" + | ADDF -> "ADDF" + | AND -> "AND" + | COMP -> "COMP" + | COMPF -> "COMPF" + | DIV -> "DIV" + | J -> "J" + | JEQ -> "JEQ" + | JGT -> "JGT" + | JLT -> "JLT" + | JSUB -> "JSUB" + | LDA -> "LDA" + | LDB -> "LDB" + | LDCH -> "LDCH" + | LDF -> "LDF" + | LDL -> "LDL" + | LDS -> "LDS" + | LDT -> "LDT" + | LDX -> "LDX" + | LPS -> "LPS" + | MUL -> "MUL" + | OR -> "OR" + | RD -> "RD" + | RSUB -> "RSUB" + | STA -> "STA" + | STB -> "STB" + | STCH -> "STCH" + | STF -> "STF" + | STL -> "STL" + | STS -> "STS" + | STSW -> "STSW" + | STT -> "STT" + | STX -> "STX" + | SUB -> "SUB" + | SUBF -> "SUBF" + | TD -> "TD" + | TIX -> "TIX" + | WD -> "WD" diff --git a/ass2/SICocaml/SICXE/_build/default/lib/sICXE.ml-gen b/ass2/SICocaml/SICXE/_build/default/lib/sICXE.ml-gen new file mode 100644 index 0000000..adb1617 --- /dev/null +++ b/ass2/SICocaml/SICXE/_build/default/lib/sICXE.ml-gen @@ -0,0 +1,10 @@ +(* generated by dune *) + +(** @canonical SICXE.Decoder *) +module Decoder = SICXE__Decoder + +(** @canonical SICXE.Izvajalnik *) +module Izvajalnik = SICXE__Izvajalnik + +(** @canonical SICXE.OpcodeTable *) +module OpcodeTable = SICXE__OpcodeTable diff --git a/ass2/SICocaml/SICXE/_build/default/test/.merlin-conf/exe-test_SICXE b/ass2/SICocaml/SICXE/_build/default/test/.merlin-conf/exe-test_SICXE new file mode 100644 index 0000000000000000000000000000000000000000..704e488bed60edc402c791f2762338dcf8708078 GIT binary patch literal 781 zcmZ`#&u-H&91fL{=#@8s6;`_08Ee|EVy6B_xtyK-^+KekMN9&grzv*X?!-?|MK<6PseHfb{wa$ z??cDA_p5y1I2}i8;^tDg2@72w1+(Px5xIh*y)mV6kSEGjR4SKLxBuqV;rk;(dH6}X z;f10wxq{11m4XR?d5q6ZyARI^>BE4K-96}6@ff^5ctb+G5qM)l1|t|+e7Flk8;!BI zV|K7qf<+2T`Z=d*M2*`ZF&DEyNwbaR2^R`yfjW_vq-JjP5;iOV8nl7$C75p|kaI3hWfnx#7o0252Vk?>CiT<0E3(Ga-z{q= z&u|bcDjIAv3xs58WnNv=#Z$?15z%YFF6gl|%atFqgn|yi9=)7&EDd&t2O@y*YBkz! zCZerX)LTW*ZpNc7pv`(}S-eicwVuUr0smAnA-(He`65rXOulLK@g JF*r1qhw6ydzFg9qJx@;c<1A_z*GXXId5VJ2Zbt%nDjgL>Q01_do#U=50=3|hl$^|@2?n|xYH9oG z5AB+mS7dBiGV%U`1s2XgH)ZCPq!#5R=D6h-$3d;o!O<^mKHSLr4(rSDbNDt&vAD4ZaZ{#?lLpm zvOGv4#`xya#KdSqE}2B4!K5HQNC>G!qA?*RM4nWTgoFoBUPPXZo;x#3%34j__D**1 z`ObH~bM8I&PM?-H*Yx)G4kS~_x8MKxiX=(Pan#^gh@*~oZ7f<;Rp~K&j8Ml_hX?vb z`$>p(5Yvd`6&wlvFW_==@s0Zai9dh)>~7(Q()~lX?{nTd>}E|PQ%=hDt+^{Fu3kE2 z*{NRl)NRgt`cRW$xzx5aa}%@kn!7=B4BaUwzy9Ln*|rDmk1l`Y9r-Ey{WldE3ov{w zj(Rb8nwJR?BqFhqCyCWBlcY#alA?d$cn_hS()`Iy&k%yNbkaIg}kC5SQ{M2YXfW!FWV@i0z&nB{3!M8Zjilc;tMt?kn;^IA>qcu944RA|=+ zw0nX~DFk*>-Jb# znlmh#Rc)#lZ3jcCd6q4j^f0$Gc}m)GsO_pb%`l5LJ>&<5 zWjQrxm~=FNDgpFM0et~3!wIf!Y&%?oci|dh>pewa zGbYm~u$~4x7&yEZFn=e|Nw^MWxE?U?V3;#2TG_n;aB~2>A%Hz_6Fz{OKCo?5P?$Xd zY)A;$Dg^u}kZHIDXW*7EAUR-7YNnA@HG8a>r<1c<4)!hl;K!T%P8cT^bI+Mgaa@fDgc9xCD;_@OI7B z$1BUaI{+UIm$ksbKEk2NAk=K$bxzy=H-#LeFG|~|4-|}>L z;fOxtJBeup za%VCri<4P*WrrRuQcI_a%0$k;`J9(!XPnutjNLHqtd=JzEy%cWoR~beT1E}BW?2lw z53Kihw6u&gFg9qJx@;c<14BCy3jwhY5ZiMwFlaECx|HUn#>b~t0Ev*);*$7a zPv;0%7RCiEOb!bcs0Ej#b|nZu5-JiDsV6LF^N|%Q*32 z0&8#+eh~R5j>@`U{?qn5;jKzeINci=kp9sZUaj=H z!!f;x3$G%!2V;~%Y+W()`w}@baS#_~q+_}T#64><&nbyh>o%T3oaN5MueLuvwoa!* zW}AKGuT(kzf5UYYQZ3}lHbQ*1xF$P`-C^V!})de z)K}39{)n;g{0ZwqN3~XM0~5m9RS@GN&O7YIN&Vuta3S22xTiGLSjgQ$4q+GG4Cbde z$QJeQ9dhdWw_DRcdaq&s>dvNf&uBt>#uvVUaRW!Fr|%N>9wBIQL82#&EUf<)Vs-j2 L41V&eatih5INrJw literal 0 HcmV?d00001 diff --git a/ass2/SICocaml/SICXE/_build/default/test/test_SICXE.exe b/ass2/SICocaml/SICXE/_build/default/test/test_SICXE.exe new file mode 100644 index 0000000000000000000000000000000000000000..2b21f3e9821a96bcd8e0bdd4eb3eb769b136fad6 GIT binary patch literal 399056 zcmbTfcYIXU^FDqF0YYDT6_(y1^d_)0=@6<&+q6xQlqH3tl%*-1pdtd6Ac!D{Q9+6= zh)7W|77!IAv^Pc60Mcyyo^$3oWOF~s_mAJaUcbmcHvJG#5X}DqYmDST3uRRT}@+x9VAn8VGdpQ+sS5cvwDRo| z3fVHP(NMMOdj)~Fn{b-eatNoQ7EzZjO0u=PVnk8X`hQRNmqA5s?Ut`azG?lxr)=X} zBHH@alu$%!r7=x&u>st@(GenUrF0X{2J z(aiVNbw!{WrTToC=bq=E+o9W{LtTpw7v3B8Ct?7Xwo~S|6}9 z(28^|*;A){w zbmnT*p-@FQ$-;qYzD0rF%o2`CzFy@VVbvQKDq%U7>lAl38Q7+HV=FDps!^`cz=)&P+)y6|9_%dba=Fs$h6VMk7E&nKs_J;5 zzt3kC_xW7)3oY=u0=5MQjj`%FJ2{tF71Er(ioQO@@wI@Ua*k4tssTN%fPg~I@DL|v;+)yJUU zCa0sZRkUz$-RCOzEEM3d8d!4!0vt}Cv(%zO4PNR{wN#M9wIQ&7XhqkEps`L2$yvy% zIK1RMtFC2@^;uP$uPPc48TQzMrel2-2BoJ3hK>yMS&q;`Jp(OYb%!;2zteJ^E;FQ8 zpsz8^R=Bw9rgLzIz*4T7CAwLqB6}B`8yM(uIs*eLRr6V|`+|xL4f6RM%_`1q9I#9| zjmu}%a#+U-HBKv@7Gya#_%dDAXlv1^Ue<aY%!c*g3xtg!Wy zRle%Ew16(Xf*M#>yFkk^*eX=0Pfb_ZQsphDwY*4W>z_Uwm$}kiMf#K>TLTxt zvni;K-9D`VB5@MLI&Q(4y(B9a&a`FyCjH&anQjfDwhPLKv~LJS^AC z`g~#G!B*ggzE&Y;U`|lEkZKrY=0`=+FoTvWFcQ%nTnIBbynj%sKEVMCTy@%b%US2L ze6B^7waKbls7Rf_7aWaY0V{B4df^v~4yfen^XOlFkqCmU0GHDh5LBi}V9P#-H&ylZ zbM-777&H?pw`g4}yl7f*zzc^LmRl6$>XJ6LgfF01<)VS1MHZ~9wAk6-=V)94-C8xB zg@Rmx3rYrsT8Ax1W@dn8<@B@`2I*XYKCJ|x7nr1O04cz!z-j6R@RT&x(`aV`=Ky`c zc|cg$dIpG*{2y2h$`VqS+CE*5`xQVW77eS|K96=aa1HP!;9B51pn~<%STCb}mDm2w z2Hb1}zCq$7134(Rs&WC)&xERtOcwM^amAU3hJP( z$LsoN8}Paz+Qz(Y%2x3=$8`%}OVV1QZ4GP#YzOQJ^oP#8?~1lNum|s5XjKmD1?&y% z1MCY_C2xP=0HA?^ydI2p2yhrMgft`+YZPz{@Co2Jpn~yiC!n1K4CTH0ER5F?Xd{6h z-bb;GVH=BfGOyM5;&7b^oI+Z%-)HJ`1u39SC4Cy&r~G)H#`R3z&-SCw!S!6=Jm7rb zGe8B;qFu!6#b}oRmjRcPwu0?Sv}wG49_?!2i@-I&wLm+p2km9xE5LNy=da^_BXARN zGjIz~!B(_y0k;Ep05gCJ-bcF&xEr_!xDWUt@MB;ma6eGN7ibRw4+D>o_9fb{fX9Hx zN&A|u`p!4F{ucN>@C5J_@JHZJKm$MH`W)~g@PEK7z-z$YfPVmUfC_G*z0K=8Xz%j+ zFSLIH|KYuGBNlQ009XiFKR+l;dJ(k6fW?6&fF*&Yfn|Z^fOaUK53K@d6@iucSrxQZ zfz^0l9ql8)TEIHMy1)j&M!=>(1I>8d9BoTrFt9bS9k4yH1F$1dK^L@LdHpEb?!aEa zKES@f$AAj@v6VZ-rr-SlTo2^^V75ch4h0V5z4~4Vu7?9h1IPN&jm&YNO#n^=y7_r1 z+6Z7I?-g$puhlj&78nOi1bTr}fXToVU@CAba2jwr&>v>_-9L@%nY^FvN1y9=t-d=S z_X~gvfzJXL1MRSsv}I^l_T*UzC{&FdG@t^uwCt|!gNdztsIpnVOv0l1O0O>Ey_ zyBY0P;9I~Qzzm>*_t?rEVifl~N!!hK58J(L_o4j=_%ZMk;HN-U@fi5b?^@9g;Qk9g z+7VnI^}GKH*T;Zgla__{8{oIV?|~bfwm1KAew`>YtQivvpnOZm~u;MxH!2dn_B2vkrBZDn9pU^UWepsmSk;X?f5 zzBbSatP89MtPgAmRM3cRW3)|p-4tzeU<=*{qiq9h3v5T4`fdlm>(03D!uzghALVs7 zv^{w3LfZ@22iO<*7|qXH3EE`R#yNa~c zXkX&>IuszE5OSWI3J;rO{MBd=KX!N{{a8x{eNg5sOv!8o&E>ASu4Qr zK9JW%&=v&-0ZRf)0TnpVmIGD*RsvQA`a?C|S7%!T?IXZiymz9l3#<=p1Z)gc&;)G@ zU@KrSur*LY8?^0#9e|yHoq=6|U4h+zJ%Bg~(a;C2IuPpz8~_{$R4|CGx*qIzJp|W7 z{qBe1Is`b9w9#mv08Ri-1Wp3FfeOOVh65vb?_nE-HX0ZMoJ?9g+C*L_u}xt+o$XU- zpXT*Uw6l5bV>^$n^o}(h_X|mThV8Rx7x7vh{VoMA1Fj@34ecu6bHL|;F8~d!=JnFf zrOLhBZ`qlMg_AGtSaI{@`uS(x`@Yy)-^>`Z@X+_QZx=0I=)~%|e?E~quG;e7$4zq7 zs5Gq0*;!>Kc0BY{t)hD-T%P>-ll!74&sjHf{=rY4zOp%e?#9b=-(FH~ey82hU%fUV z?u%C=ehRzx$+^(Isojc}oImW{Uez*|HrrPE?`BW+{_%@{Pn{b(Ah6^5GU>aPRBJO} zXvtRB1|1*uT;pFiUtd_U#e?HZU;1OlQ|`BOI^SGcv+O_1KfXP6U-Uaetp2GVeR1H2 zwvYVu-=ecqnq2H~{*xbTcE3~l?rR5jg>^VOZp^4l^A~-vC2@D`hGq??zWq(@>rGk= z?mG63YkLn}{Bl{@S4Zx2{8w_z_5*iHuG+h`@$Q`D);V7^Sh;!Hu)V80{nV=O{gm48 zx4ZX8+|k{|dfr&kwd~ikPQpu%ZBIYhEx$N_8Uj(%n=BwCal{+?!xcxP6{shLx&09y>jfexC(c?m#2;Wqh*U-kM#NN%`4x3Gb5+L z{YR_5(z)E;@5e6)=<>qHb7MT654;rm$L~SC`kuI6{Ngj4DohHP{~)d2&^F;?>a2}A z@a354UoYX(By?jQB^8^AY#ueZM6FS$qe_Jy`ZtymH;$r(4VL9K0|ryqGY_04Mi zp8UCZCC{77hMrqHHT*`=6Z0Scbi&_`Ya>paYrm0xwzfS0w>REht zO2z2(VXwA+XZ;56n!%2x+xApilr|-KX>9j%uBGELx0Siqr)=o3tCzNPc(u^V(x2h} zY?!a_=V%W#^^Wh*?TLTR)o8hV`=AS%)!Huo+dJz*!kEm1p-1rf3oBoHcgUY_efi7! zYYVTvWWE0L)e9$o5BTByH}5b0{IlX6cfH&wF#s+$N!&ox7T$2uzdBpLl$;8`%d*nHEz}Yw{N?|k7jWC8)e|hER*&6rD4)}B3(d=m>v+9&j zXxn-3*U`f+bboir)j@YR6upr0NW~I8esM?tdHVC8BmO$S>f?P~gDWOAyz_2KRLcW0OS`F8Y~qMK%qo);SsRWA9p?(^RH=-;1vRGV8R za?~HmJwNWBdi~qCpPtfaWbNV~q+fi#{@q~{*L-ub>D2}?$EpO*Y19147ejYFG47c= zJ?9^JuIHiZ=N{ZBS9|H>UH;ft)E)ovf+Lrk{C=bB%Kruo{;^ua`VE$}=@Xv*b>f)) z=RdhLXsGjM;Gp9VejC*G(x%p>vfBiiNM!$US3+utL-SxWudi?in zFYMoG?v>}>Ki=lo9sj%6_J<{ns@HCI`;2>d#@V>pyNXVHXVLj9!$%JKdeW4x8#}gs z{_*%Wr9W%;W#d>+P>G@?uT5V*@{h)M!n*yi{IO{{NspJj_~i57PH6Is*R}ch@bL|@ z>-}9Hc<96L>d!C#HRSZQXv?`X`cIzdYaP zfoIKEf2|(8`Q8^7PE8qG^X#w})8pF??DOHdIm_;@|L}a%%ilI>o8w#k$B~9hpFj2J zqeuR37=7fo{&T8_lxp{HtKXWwonH7tEpZC%yhpK#Ed;Q?>v)@Jagq~?LPFTukwjrUwz@IpK>)!u`*H_=Uy?A@qnUAM!{_f1p<^yV%Y4)JZi58a|)mhW$!tP0RmXsg6eE0WFi~rjB z;5R)}mVJ2PxtS#n+>EOnI<4x`r9I;6w41wi+~e`@)PMDZ7Q3$us`x}Xr&amr>Pln( zy1#Ecu4mUOx4h@DdsW(XPC0t5$<%?Lw*0N_);dd*A7A^%wh|3T4*K_Ez5Rouuhiaq z=FX|hj^^1%3s3kiZf}>fUq^ug*6&hAc1bhM1D>{?YC|f;&3$t5 z^WWe4@BE03Lz`V#SIKEzPu~}Pw(rF7^|*c+_~pdVcvq32(fgbCb-ulBR{c&T<}KZCn2dqQm7gc2(UMZa9S@bj}A?(hCv>74NQ@E>kq3Hy(V?y zuJKQMLhjFDx#HL01r;r!NDKRkZg(zkHeVe|3KAqhG$OJZ{Q7SC8|z z-@V`B#qHMy^sW&2-OKwf_8&34_1^QdH&*}O`7b^$UT0C$rRO#k3Fz}@*vOcEW%@q$ z(_W1G$Tv%8ml@Tm(!iP-A5}WPas0R&0m+d`R+pvOGk1L%wyyiO`c~rMbyG)7*mZyJ ztya&3BrgwGb@sF2hgy5i&ddmyv~*7T$;)3wEPiX_kP$nt*IT)=_?PF0dY(J`&YHk= zw|hSST-iM%wpUKrc_aBue2I78oPPXp|B2VfresF!A6N5S>#ftj?YLukmHVl`9g4KZ ztQj0OtoG?fQ`Qf@zj^A2saX?WAGmML|DIh_c=^?PZJiRg|{>1Y0FTC93&0CEMPknEG&X+eD z6+t`Yi@43j(6&AGU};I;(7h#bed9v;g9&|pIWuyY=cnS=UAKBXcfW5pckQpQ4j=s1 zncefx-yi$)m~R0+}dZ`Cu_PM3H{*sYu)NMtyf|ED?i_PKWObU zy=(q{HtFfhxy=p89eStGYprh8_&xK3{x2+d z+Hk*VQ1_9` zyU$inj1Fuz{lhlJ)@8x=g?H9%wb=LG+|wntRJt}VKD^kEFWuc&bi_Y%&P=a0cXs1l z9Y2ZfU|lO4RP3XF$M!i_ zb-PRVEPAQWuH-Tkr#5R@|HUdFtOo71YOxz50wXT$8^5vD+mEg|ROZxA)t8>xGy196 zebJYv-K{#SMxRB0dnWx>rOFD|n=fx~x9{8j>7}QS-#4=Ql1qCUwl8&I)!o@|o_YED z)$fMaOud~LTB7#f@0_mnbnpQ0*moL~y0X=Kr%u++McYHfLZ!!OSt>Uw?Q-&s3rhSrW9{YCtxYsnKg{Ic-tAICPl zb$V#^-pxl%ue5G`#;k#Z-+H0MvGLunOdSz?d)|mjua`emZj&`*YC_Z6zlKh#QEzlP z>(@%VKKk-@siuFouKml|9mOu519q?1^OS1c$>STX{;@%=SN50edvf`*ZtMEDoVqx5 z>vM-|u6yC{-REbPKRV^t*M^L3)wAP=L#uT5{kCRr$Kg*F-d&;It*FX(o?qEy@|B}U zo|^Spxql$5YHF-+eVyqqZF=xZjqTOP4UE|K_2Ln)&Y1N!u6F>VyI=C8ZD>+u=D=0$ zr}XJ}e9c#_50vY?sq~(gI#z!lpLYwe+%rGB^yB?mgZ>I!w0^;@cLG}eUG(*36W{8! zc+R-UTP-)XKI=nUE&aD`r=xCO8ByuuYy%(Rs$cmA4{u_@+4l_J&NtJDpBetIJI-%lnzHnq~~y(zvBU*B!d zrLJl>)vB`k7yMGQ$;WT*i~n!zYo$m2b-oPn)^o$kmqmNK=liEFr{6!HbYqtEj zTh%U)Tq^nAjkAc6qI&|zj&J&c>&<_DE46oj+0!qym{j(S&HJJoqo1lj-92+7wVr2p z`*qh}AH4KbQ`Ps!#R`>8{N>XkN}nbM_3ui34OwfcEmQvXf8-dTULMX}zGbq8(j*8g^gH*7Qa{#z|FCzW{r zue!rpx;K`Zck03D!L=9O$;f)N==%%5t&mmnnV(~yJ1}+2qCSJhML&KqeEY$i7gxWQ zv!d(dDVa^~yxg$DQ0#?^EdDEC0Qyb8cYD`x+z-O_J3HGY3_-i)gU7#Y(tY^ep}5|P z>m3t6zq<`>!!O<`l=sk(3ljd61>O_eLv*K_+<8HC19}9^Y-?UQy6A8F) z-=@g%fHJ>)Gve!Jug)#*={p6q$>?XwmeuRy&=$G0U|b^F@o@*sc+tN9)!CaRe>^bw zP~3CfQeE4>ZSzUo<;<#eJ54U$`()++y?^w}$G7Z`d%wj;m%9g4T;@AIW6{5^9uxo5pBMfZF{ntfRtaZdt2@1i*L-E< zyk@nk?mrU!=B$rTt*y7>a_jWJj;*iQ^7_oh)1s?)EcW+_BfWau`h3d|C$rkTbnm}^ z_G8b!y4XKQD|uYazFjz~b<0)z58i)2y!4Hjov&8-XT%_P{~jMySTm(lzt0CB7(KXY z%?O=b^~W+2Q%qH$I*}{RccZ%TLbO0_gX;=g(iJRQ~i&%j8f0 zc}V{BkoNi0d*Ez8KRwmE1o_b~6rg{<0_>)qgXJejy$_Nfy+r}?M>or#AMBPBXot7^ z=g+^f06RZlIe-3t3(#jy0pprc0A0N|lHYjYKKatsdolU(t7m=r(Q6h!uUa&Je)a4< zKRJ&UFprB0kiW11InxTDS15qqq5%2o9iaU5EL#A7;R58V_bT#}qn?fDN8kHI{&aQL zoF9L9h5YFQ8s<-*P{6oW7C?_KK+ll{@ZTwbKB55nnpXMixvqeILkp0j-r>p5K9Nu~ zKlftD!X_D@RLnwZ4CE-WereRA*p{FH7F+ffIFW%wlEcBdV zLXQ=3R&NKMnOfDXEv<`a&LHytTwCaAHu_Q6!C_Uk(l_A356X9?d_L^X;b#p-2!F*TUoptC;Y|9|6e1K6RKWv0jRiD(0v^B=_&)Q zCS{q?i15kB|f;AyR_o^5E051Knyf>rdWYZ4DZi!g%6g`LIGW1@h zDd)V%K|0cKyeH>zo3XIayVMYVCtrjbL;iC0gl?(A6)=hPSj?~LH}iL)WB3~8W2lPm z3zTs+Bt4#Xb2Jw_1e5*;9A5DUtCy_+2nP+Hz#$dg@wU+CkzR!U;~OXano&GKeH=du z|2Te-K2YRjB?w*B6AC^cJx#q33P3v5&`IyhFs@LcWB3|Qj1oB^uZSEIckOi@Qr1f2 z%cn!-Yt~h?D!wu=iXtYyI`kB}ucgG@VahM3^DXA_R}oHpqxLa!y=Scy*ve};Oo6i`C{i+2OcQx0EpHSb|Zp(E`N zYedd@^2Z~f6g`bEYAq%GPueq7y}Sr8ezh1Ar{&BPy6N{K<1UnbTZ?k)ao)cQ7QaP$ z)S%vLP;$I{AxZhGg2Szap4mqDamJ@%OMjtfzbXWi$DV}!m7MgZLO1>}922ML+3KY} z0MeRREa=uZ2CdVw2&w5j0${NDjdjtt=^*=pEA z_`Na0Z{}q&{94J$VBSWUXefaJDtf4TAr-Jk|BLtBSPwYW%c6k0qz@&3Fb%eq^hxbx z-urJAJDYdoH$zWlw``jozJ@)OpKK?cVysFHL?73SGA`qvBe4J}JsmHJK4%tP!k8mCx>qSlp(i=m6)$bOrn=p%pp~lXtzy=@B#J*n{b2%NEcq`yB6R0*(TB^JRds;Sv(-Tdpd$IxslQLXcng5q z8jklB{nPj6)jy4OU``p4k1)~jGwtb8FGmA@l5VUStOr8lg-}m_ioA*huHw#Vi@V9% zZe^`b>VU!zDl#6k2a29E`Pn7vA3}SYdewyjOxY*1yzobn{|h8KJ&%0hJ&4^Lt}pTR zlC91k(nt7%KM=+Xl=CP$QgTAn3*P{QxrUlOg`QnY=tC&~2P|-kKm8TaN4;~dU=Aiu z(bE{{$AoN+;yRMS`ou?i5fm!A-#0~0W6F076S{s`8oXKLf0h2`;2)nr4Gm2O3V%kp z2$)a$e$JP(q9~X~`qH+-?_}L#;{6ufL+Rt=e3|`JG6GG}vppiGI^{eIJ1ctTE}>&t z)Nr5cV>n9)T_Z&3u1;bfljo0;-$#Bdml_Vcgg@;C z(Pu8{E$Rq8ySLCQ($0J6=NYzrsIR5+A50qk8D`N?g!a!lD*{Zs9AX@$kq)=iaKtJ7 z=A=r$P(#C{RzkO;g^n=SaG|u&eTjL;+rUYF*3ZU1SB?IxhfSVrO8aDR-)i#qJjA0~ zXM=3(&Uf&CwH|G$gNX(he>kPj{}C5gWV~3`H7r1(sOBq@b>nc-ziKY@kjgSHQ)fP4 zp3id0xQsrR$_sz?*Lm%85cQ!GdRpnm^3uUU*x!MEca9f**sV3OHSNRsJ;M*aVLS$N z9WnEAkohO;b0@*%E+SyoedtfjC!K~63Y3rgV0^|h3+8zuo>5Ok%Q%1!}b0W zk3OzPBwN)mU#cE(v2HQ+M9yQH`oldy6Mo>PJ-zCWBLOo=A4R*lP6~Y`>F>gU)p*m@ z9}WP->+m;dm~L%{szU#PAJpTxGHvTrA=Foj-_=U^jsJgyM4{**Hu`beKmD}mJw^{UkDDb`VHlN*~Dr1Aj(k>1OW&)4fh`vdd6&-7c=j( zF+oaB_D4c5MgF4PH>HOO{U6d-knUvOL*~-(8v9M-x@PK`5@khx@Gqi|iHlJ+Bo8dI zt(!9tiYhJKe4+HTxL&|LG~A&-WDFAd14&=YykY)0W-95UIbSZ;KS+Zbj@A|V z*O_N9Obr*gu7xa+c`^E@n7ED?dL8NBdYSX?Q-8z)sHXqLc@*=f6(x)@q>p91q+bv_ z-#2nNFJAh874ny6oO+)XMx-?jD=^W@J~`X~^(DQ0Z=q)n5q%buzLfru!}ZR@Q5{UE zlH;Yn89!N%LR!UX%0Y5DY&EQ;J%fGH?<*X}i>M#;elS}IW^@Oz zF01@M)mBdqLII%kN#i*l!dXKx)(>fGMZTf8>?n4-XRGIL!cmo+OrA@i?9@;n4x`7* z{8NYYd-a8$)kntl0qLhkkj_68d`iq@d3#A51znL51(Cl+W#M<$5j{UA{WHw3in}X3 zH#Yn^m4rVhQ3Q7;zpKB{^&jMdX2#ojh|oi~3V#au?>r{-=8P|xQNv2g@qQ@!JYo2e z2b3KgJoo5B`d#L8S99UVFg4tSBWZr_zmPUH41z#KcXEA1*lH-oaan^!4&Bk(U03+i zSpS&(d5(UYUR3x^zFpT;__J;M)^0t7p2I&py~loIFwsh%Q1u7vfSIJ*~#vQ&~&EBHx)L_Sr-EmQ&=M8UaTFnE1NIx+Rq7;U7N}Vb~AA_-Nk-c?;)*eh=ZY&eR6E}c?|q&T=#72Z%^7Sbf3t_GNEB`W07yM zuETU__=SFD@jR*;=>f=}s^1vfx!*DZ@*&(kYD|QvI0@p+5ksY`iBk@dba)$ze9q8M9o)!+j;CB z7+mo?=!f;le~b2Usuz#|i%GAJc~SfsPNAdx&~R}S^?6q4eMw(y=Eb((Z1{xm`$`Ib zIQds0K`A{mY<@L}^@h`S9(al4&0^iYigJEqyr=Dx3G7AsHz-K-JldYS)u}7`xLD_y z`fYj>p*tc)Pm^yW+EV{@LZ3_di4BCF&V2Zed~AKlbt**t;0M6yxy!8k?+Klc6|J82 zMNUYX2zZ3@KZGMG{ST`L!G7=z$F;{sAA-c9=F9xp1k#a)cRC5(WqY2LjQpVFr`hDZ z)=T)as84OmsYiW$HvX+mg+IHm=x^4|d-M~>moi?H2ePz(R<$x2?=H&Uj(o2451B9g zCLR|-AEl?mHjg{#CmD{qc5{mp#!MZcPVlJKLf)$j-H<7_N><8}GiTF^!Kojg}DanZ)~ z`?Sb6_Q4OnY56%^H=%}x>&&a6JV#9?eIM+j^hx76hOvJW%E?+I`mmg`uCopgVS!`T z7xlOO%AP)3-uQv}Av;d=Y{+pHr5~mr7J^x?BQOx9kC*Ep(yxY>xxQ!dc^Rfj!vgww z+8ZLLEafl6x}fB2;XY_C`NJ_0ik@9c^f7thL+;~p`iX!^8hTXKDw*7Ku6UhUiwz}w_@*>B@eGryu4dY!x5B)&;<#by2jGk+xU*oq| zw0!L2Y;pAV0Fjf)I6`+Cey2ZV^8EpXn}(}AU&>4p`ItTpgF#p0a@fvG|6~4ioDu$K z$?swQNskk{sVlByfJ%0^Ij+EW05G-I^sMha$KY@p+ER|zGvpq(^KSR zGalg{8h)T1yuBnpA0|Cupy=bUt!uH&+pcNCf0q0g*l*gCVn}ZPtU;|fFP{h<+a(RZ zmJoV|ZQVHq#ne28a2+@E)o(QAa2_jAPBezEuPSGfNo z*_z&+a`@v-OGI63mFCC3(&nEH`wM^84)GHQ1=Yp4)I6r!;_eqPC_P<#?jKA3>s&8< zyQM?8jfM_=L{5mU&cDd~mN8KHp@xPhFdfRTs#4Dw(*GxtJU89`gh&!df?@1XimOl-};b7YSwtV#-;#c|SJzM?r0rO1yAd!P<)$nJK$jM@2 zL%P~k+494GDE!p8LRdE% z`<$sO^z6l=e+K=eR|oRb@rzUbrN@NsU|ocCp<#I)q36)gtCKzvj;;N~R!2D?P|+=( zi#8?y3FZfj&*Ka|6pp0%xnHhG{*APMR&9x2hKDuN&{N%vpNPA|L7yE1^{RY-e6&LsZC;1A~t>G*Bk7XP09_AVAk{B3jXecvM`FUAu2+#3I zwywY-)p&E9(yy8KY)qWCC(o~@^9zOR3O$5*Ba-yKorIp*P~@0?N7om6c7L(kYVuD& z04n)D#$zkelRFAMoj;()X|vvDy_&)OxS5x5+AW>W(Yi?Y)}A2}M_yYTo#6a>c`gk% z&~OBSpy$1x*bU~@klk45A+L#GL+=qndI_N;+%()JJ-e>Z50mbCMEG6gH-6r}uFym8 zNx$$^4T}bmP6PBK{i`uT&-qs58~zCHvvTMs;w|{CGWtoDL+o$r?R`BdhjrQ!%6G%T zl)qKAtzW~rPC2>H8c6=QV3FhEdl#4v4Pze@dgjZbr>R?_IgegG|1#^&QrgGM=Sr0* z=VJuEnwPBq#6EB*4HKE)(h_A{pOXF_^Kedo;fLF62;sa0b0cNqeGJ#TG~0VJYh2QA z+5nLQch#_qc_y3m_M}hYd^v4-uT49Vlfm<6Op}IB#tPlb^A@P5p*Z6ujrB0ht6?kG z+4Km}$K?5@xKQ@V<~dJi^8fb)^?zRMUxoCYa16yCYI_f1I{n|lI>+?881tysBOmK+ z3`fKGCL$-D`N!npvCv1Yr~Pg9t&?_3=efG6^D8p{RBSEtXz1CPAf;yrpPP?nzqN6p z=sDlZxZWVW7!t3x0}EJ~SHn*T96jC{!oQyMft(iy&%+y#{!S0}OaH7yx(|wJIqgNy zG|~@{p8b~03ySy5 zb3>CqXK}o~vNGOv(v9Uo9I5MVkB>hT9p{FxH!;LlULqMs1a~O{$Nq+=+QrC?(KYyC}C;f`( zgW+q~Lcevft}yyHrasPC;Wz$vyS2z)WUHUo(>~cePYC4vZlis&HVWZW(wif(DE(c0 zzJ}@6Ft51KLs%!6xZ7BfcBmkJ{x2HnKbN(8K) zmujLv*fgAm<0*PD*XwlB*D`PW_&f{d)zFCfGpn)4$zs35N%x)+`Z)5ZF+XG;6~^AA z|3!MRP5zVAKb!Bxp?uZQ3J$FGUoG={pY)%&o@UzW(uncGpJvM^wdnso+w(x2A#A@-ZL^M{`}zdqZ!LEix) zCzJDzvRp&QGD3IoJqn}?4MX6!O3zH&es&J?zr*IA0|p8I7S>&uZVlh`5&6MW5zeCSLx6X;i;^Z2dOnyacn~D*9XaJ?8!*Kh3tEQh&Fk{g4}-;^a@MEA;fY z#h&v>FYFR}2H!XEkUk#?P08`4iJqyX?|@&ax}vJ>T3q~8nD zSUV9=N`AIm{29xTh7S;95otRN5XF&BHK^B76g{J!(0S}`9e+&d+2o%= z{x3O?>FP)G0j8dDGJZn`ik!vdPpAL82FtkalinT!QT>MeBm9Nn_X=KRzd4k%LC99U z*215|eaalt+tHrcOu#)!-@^JQnEqLh^ylagnYQ{ilj~+M&%4l_h6^y1o)_->9+2K= zl+ZI$ME{|rpGJPr{I+~P2mzw#PS(ST%#TuZB5T$JKiDpoPpM$<}Es zh)RyDei2Oy;sDy)$vjh;{Z8vC_OxvKUpEG#^v^NRe?^>CrW41-cu%98 zPAC+$zdb1(8h@KnPw2i%BH$qTKY|$*f5r--Lk$g?WyRluZO=hMMhd^zc8>Hf>L29~ z**vF38rP7-yrF++9+X3(mNln^$jRin9Ku1vLFQXu1<}XUEtTQ_N>4BAhd$(ggZaeE z^MR(MUjl>T&*phGhNB@31&pHm_&g5oq~SgaOU=*oVT6x{%hkxwbr5c&p#vOM@dtB1 z_%Z3%>Ql~j(Z9De)>4Ft;?G zp2xzx8WIptYM;`0i}3`Z_huZW@w}oD`Tya(hprI&JWW4o+d<^J)PKeSI7xmdCQj+& zme2ao)TOn` z2tDVT^ov^!U6F4Ue~7LAbTU6%D`i}h$^Qb{y1e#p8uu1CnfyD)HvF)JuHTSNdEV$E zeIMg4g!-E}n#}l3v+chsGmrV`|8O%6PjkK;HvOvyi$2-h7n^xsGgj=JV|xy`g!#&4 ztB0@Ao|)7K=}SX%=1CXNouIacuNW6;w&x?k4MZPDU$N&Q^7lesQug=qy+@M=_M;G0 z^eo1;(Z8)r=xIC;tW7!nFezFN_qo_sXjoQ{{Cw}l5&8wn zIgLP2@^k37(WHMy|IgsLVtdjz&~8pXKQ;0GCjET6&Ce^qv9*II$qT&zc`Al2#zuHOY**wq3@HME%8Jd5O#0!S0 z;SS|HS$~>5Gm7(`Q&Rdh^>8tCq}H9FHb`86ApI}?ADqe}Kh#$5bsa7Ata~EoFXov8 zw1bc9Akw&owe5sIt-0_U{Xb+phVon&=}|)|=A|q?UyCKZ1pUFMelQ2Hne>eaWMv1} zNs*88Rl}FXgzn@z@;>RkyUTbx*`7P!!@{TS$#d^zv&_lkIe$C&9_QZs0{{2EX z{J!>P5N7u6Uw^uHPR=*m6e>(1JW;-PwOt{F`I;XyXs8v=(>dSG5)-?wb0Y~cPI~x zK3w;G7ev0{uZKjW?Z)RdX5Bg6Rp?&Zd`+gGr)?MeKy3|`xsC__F7lg@{wWNl<@21a z8|izPSJR&qIZP|oG{mFg&*6D>h7371H^s6-5)5Pxwt*Af!zYgULW1Ob( zfGwO8aFB7A!Sj5uX^3M!%&08-{6_jHv!3#O6_Zciq@BG}h5tVJt1=IGvxIK)WDT=^ z+1|$(-dXhbh08oPqMY{`kHI%Yj>&K7^utin;oce!a(*-ToCoVU9hCh~+18^sIgi0yM-2ZkII#9NJ|{JP7!Lo*Zy&l93$Ef1;d+f})zF0b z!O8O(6EDZ$Fv{PuZ2RAcYSceK>@$gS1`ZK=FrPbDC%q;L2Gy^Z3&VExfMJ#0at?{#lHK~o#4r6H!_IlKkl~tfD*k-aEs>YQ?f-AD8ZG{WS!XqGz&hUr2gY*i-q{DVtxNV?KARmwqcqH&(aa zlu!LkWw7WO5+!y3n}*jB_)7mY zo8R6t`E9xMyOjLfU^n%9Or|-CpA%`H5ZilSU9r9>{j(BfTqh|%wKm7~y3j|FKAU!M(x1_thHUDeLw=Y=!>tVuge-CpU^R50*Ou>t^ui+%@to-4y?R}L`xqfA4 zio-^ee;ezN9PZyuy)g;qRr*+b9%}6H68$!m=L3en1p;63yIB8pqx^KI(4GAKsC3eI zR;GMDXYWON9P^cz?;8&w{ZGbG7Jm=Np8;$do@AU_>!n|~jfVEdPxyB(uaMpi^RDcZ$>&ojOEiq> zBJ&k$dyljv{V>fV3dWG%V!q7@6Z#6$SCc>3RyTg%f#WSJdTu1Yr=R$hWjhai7J;Vp z4B04th_tU^Dil_6mt)I6ZMu`ctnfD=e=8VJ$;sX-dQK;Or}10XlO`_SW`5Yi19G!| zrEs0KV)EKyRymQM(Omldi1OD_A7_%#uajO90`sdkJS{~|I)8ZVF8O=66?)b!k<*a$ zMo55aT-Kj?>3zVU=%L&%m^|5@a)NFATj0Qo-^F^>_*E_Xd3wCem+_N3>^Fq|iRDtm z%g|rXi|skx2KsF#>m0bHh8DD&bG7JyP|Rw*;o^90=SU+tk6DihzgeelP<}S$o4U6b z#-;ShvYi`eb6nO0>Co`sVBC3a&lCS({>-l9JYy7!bPoaA`zgR9clwqBt|D#?|OkI6(xbQo<{&pdM zHWqZ%Zz$g@PNV(r)DwQ+Bq5mmS*D}Vv-zIS49fA)&(k*x|76l{!)=uQSx05QO#QhT z3zMeX^e>BbQ_&sVXZ=7q$MJPV_i>+S{HGrK4duC36Y`fveWLh7?n=M2Ij+sLgM;_E-wB7dPeBFAa-xAst2 z=^6Tm$OoH-8qCk;KTJJ9dMB)FN>7*VIbBK_na3E$o%D|X^VBKwUF_G`t$uycGt=gW zt5HZOeJuJ3rb)wF_@dU+rvJ^JLQm)K*fb^o-2Ot($q@So%J8gToI>~6q5nvFIm%DB$=^nQaN5>|zya*{v?z$OM1y0z(4G9ITwlfMD4e#mSt^(}^@ z;dqGfJGt*O`F}3!kgRcHPb>$*Uq|Gm+wxnSL+Ibz@^cR;pw`FKr$r9MSSuk=>6yM( z<{j>#Vaww}H~(q$MAFC5Zkap>-a+~W))g5%PfjGgJp^jI+4kMzN3&nj?eZxBxCvt-OGGp{HO0w%C92hilCgUy@Z}=^XEFWvy&LHwz6UF{U&L_dbAI!fKL6~cpGEV5BtSjJt8lIv) zPMe%sW<44x@<)=YG4u+$lO>5G5evWC<@UiiK z>SOGX=p=tt2n0Yq4eJ|=e`ee2nY+|Klz%5>^sH4`!MLk0e`5nFp-bWn2-`SYL3x^A;01P)|eaHqx(`=YdEI8qTxcOP?3n z6U}}hw64&DZT?f5>v+fjQKTK^M1%-`=CdLn=|aOU)MIK~u{>uZ*?Nxh9X9`8OaBjk z8XW;JeHwlU68RadAB*HsXD2G2!{knTj_t9*FRmd6Iy6aFk)zpEHup*DXz%=yaZ?}4B@4Re@>eK!8% zD8Q7S>0gNAm&w1G`>b>u{{iZ6+0MfcQ+_7-jeYtL7Wu*D#11gKhUL|S9#UWC1!mOn zYa{Zf3qQ+c>kj1yv)|L?SC3^?-7=l$i=NybTjhDq;HV>d8b7a(dQbK1@`ycqQX%#Kyeqncd0;E)?dXRN?vI+1{sA0P z@rOo>94tc`iX!lppEzvKt=uCipU-QmkUxd;bN&=LJbtxGm^{zt0+Hlj*Foe2zc1rj zE{&Cpew98>{(bHm@~=fgQ1lS4o2K4)w3pCB&q}|I$v?Ui<@0^%DAE`75W1_lbcnRC z;Wz~9em@d9X5K6G7rK|{_I1ebBLB=*GGE4?H(bIW%JZW`v*6??jD&m~(JKjd>9 zC;4Zz7dbh6KLKv6VGa~fdgkzX3e2nF0oMhqrRd|5VOU>qyrEp*jsFZp{ifzOnED`% zXt+0;<4qI$m^$Qj<|_yDzge#n=|9dK;m5RUxJbXv;QMk1iwV6_TgtyD3eF*a8Wtcm zt_;>2ZX?#=25n_?@F-Do#`=^Khyc-k)lC#J_O#psMh$UCdXhZR zvB@c(q)|h9$0a6sMummPc`Ua(IzBPMotzSul;U;^Yrc$8afyjZR$O9q>tHJ^A~D$t zO9@L*_f}MrXS&x)o|2SeMR;Q4tgz(R1pR3nD=t!f6crDGH*uO3pBNd1yTnLz8!Z9VicLs~a!15WwxYbLDG^q3N>W5TG{8-=W{!+hz2FNeS{}ZS z`zOJY==CIkl$sD1n=o0ak(8Po77f)>l2Q`mltTK8vC*D*Z^{gH?RF<8_;nZ&mzeB{ zj7_qlqT*7MW31#EFm}B9ew-&k8Oalu7!d}OrzV>#2vyoaiP&UZhkKH&Bu`iz_|&%} z5)-1($<#c(;PXgy0!{HPZ&G4Jd|2{iD=a(_)=y5sBqv$1i4iGU;Rx>xJ?4m%*u(^F zS!G%bEhRSIlNc2lHbakE=?pFLRZMV#XBySSba*CfBTeUv}fz8vm$N5b9Qo`gtEbcaJuN>W&aM~O^HO%|&5Ha8qKEXAFg5S}>Q zLw4n_LKnt})TE>t?c8ltM?%p?*W+_jDn#d}h8Q28tFRfbiX!v-FA+fE%sw0H-?ATiRDJFcYE1T{DAX<?7!{XdYiHRx6?!-7MtmDg_>V@$`98%3C^9W zM!{i4dcspN{-{I@MHyIR^ht$#fP#NUd6HAyBM0;z+t=)005+gdG+YasAh;R(Z9iBW5xl|ib4JRpHMZUh(xl~{ID=is8k$d~iYhGL0;!?$h zJI<4woDzf8K}!@B;#1>b8a1Cn4Ua?2h{8gM(o^Igr8*|vpu1x{MsEm1M4C{@br8Ry zNq_j3e|P@Fk_6F?-Kr%>`GV(RTtI*uzVEM`#~XuG1EWv&%#iP?MJ~o)TV;PFOgM=f zNmGs7xOQxUN*QfBcam?4e#xofc@&gTH7l=hDo-C0mJ)$}kSS!2r1Q8yVn8Y!PrU@Ps`%DV435Ywy zq{ZWIi8rrqEE?nJL% zceLhtGF*IE(q#Vx7ZDehoE#f9gLx&-l7Pikk0L5AEE-isGEEd7hG2WOS;O^8ZIL|j^$%u#vL*DGjq(QHV ziH%BeC&fm`P+whtAZtW;v{7;wMl-RPC$%K$>@UG?dgfBr29LRNO&N>C7>+tI!It`x z;1(uy%_41Fz zxDUP+9w@7HuY) z4BylB8JBwW@=z5ddcQOno#HP7D-9h%6`~Knf?TSyfSRs+hM^P^wZoR??V}Adw?M);@3iF*0;1;cn9*H*dpS4|AHfTb>yg zZ%&R$(rcEau;>U;1QDpeDR-#BVvyseyCV}*)h0|klL@P-VJI3*u_IwGYooB~>H+hC z@*!+0mW77}r(62RWEhE>H5zrz!@}kNMt}%qH@b4pvof%D)D35xe5 zVXv%9p4enn4^R^o;Ha;1%M`B335hA5DXC$su@gK~{GCAb$P<1dPR*7S{C*PE5nbnQy(VX=@@WHvviY%m~8v%Y&LeH7Qyxy~aPqcXR^uQ$h{M zJuUeuAsLTWDb;Uz$nD3JWqLR2hNV&yBEnL!R^_HP_{fyhSoE*V9;_uEnBS8ekreAqL4klk6;3FgPf_7z@Wn^A$EbB`5_YWXs+fZXP@t1Z zTVQCeO4DLfVvsWPCXKwiHHcAleJ7QlSo66b7GC}1t-T#KV{QiY$EYF3E)?SkE{J9m_x%+5=8#1B)w ze5g*vxCF{45vj@8{mP0fEGmBc#7>P(#!{~e-lvdC|L!hs#I*y@9xZbLFeiSs!eVz z4C&K;v_5AM4*%59nq`VgLw-j#xp}j|waTcV^B!t)BrJEEPVJ9H$zLGOc#oXP%1Fl&;yjgMT+t_i8Z;$ z#K(o9lB0DYP<0=U1CS)_xN#0iE2;D6heC0Jt!=0BS6|po?G!LRA?8-_vLR-!#&JjP zBJTAhMW{*xMw2h0UsLLuV@^~QDjvCxs5sZhjLC2s_T-o{s9lVFpSjiFNBnGQtK4!E zwOXH%rs=O(&bZMLp^+Ya(1=N7NSm4Rt5mTTMVgaXAwN9A$*mya*El#rP(@=iFR~?m z^4&t4v8&N3zf;lKx*bz+Zq`s9sWvVmPfs=c7l+&a%P*><2p)-IgN7$Oa4{Sf=|H39 z5V<&g{lCY!c!rUr&d*h;#q(v_DGGH6&ZE_H6Tf;`3P1avqIW)L59VM1XF@s@+i+g> zd3xT8)f^1E{SNv?Z!LtI4-9HXI3p%1PTAd!l1%T&v^YG@(w;9#QOzcg5%k2!XAdU? z7ecX}M*N=|0lk_%nOa`);0$HIIh_=7YJ@Ul{+(dv9!{gC=Witc2P8Ok^`C7z;B=YD zTt`D>a1);!8vX+_tHZ0hGV!x~;!l0tiU5Mc^^6*5VQ(~#~Ny18W~_DAw1UD}}} z%R84)1P2Lb^79-asAr@8<5SOA^Q0)XzVK{IoxZ}XY7gz#n|azJn>GDBNIre&LAK{q zs`6EP2UZ9E*$u{icrJq#0q!EAw6~~ji{1(67SRY;weICpT|cy_nlKUK=g7(a#kyF> zBn090d$1=2zvVzllnPLPWRiv|A+;{;Ixu7KC?of@QIANKac$jU$xKHkrAjxFUF94o zDhUO>U-<^Jnduc~@sK<r*&Y$(UymZqHP;2uGmy5&P%uhUI)jq8CT;=BXQ%M$M<5NBJ!y`U4|? zaVDd0(~c*j`ca4}HT=~#=dN}y)R7#Pchh9L5L3`WRRkbP)Up2mIcgV1mfPY;=IKRV zS*!rKT1MMfe2z&b9dR@jT~Ad5)a(n}ys`3Bh7ch;w69#ed%AH6kw7 zt2gfOvQ(_1=5Wa0yq!C+4%GYZht>N3V{$up;L0angmh%~Ou43fxXFJQRJl=$iV@$D z35p0ekGuFdPRRNRlK*2f)C^d*{VE4jl;K4bJk&r{=8i~_lGO~Zt+Q_n^!~A zJ2kkEyG$M~v4o;wuCOSS!*UxJ_7wJwVUzJ_BQXhEIV#5m4QKzt_AsvepQ}lg=-;c__2Gm; zy>g{p;^D&!{oV?y4Rpej|CkxxL`J(>4OGm@cbLd?Pbu68DKFmrG0ztsCR)BD;>KX$ z)XK~AJn@8s>Ni!eIa6;LQ95d%hhBh)l(*^Bp^VxfKms-cepQWp2`Tj9(}>)Y4OJ(r z&9^yURwrmIzRP~>#V(q|&nO`hfWRff6V z$-vb88`qT0h)!u8xw7VdL5<;|8|ecMKNY1vtk&k`4Sy~C`v3pfd-M3HimY$ELuhFb z>{dXdf<_G*7Bykfv=HsE$ZhOs6ql$dL6(W*mVpGKB1Ae-u6J7FIHQb?Gtrr624}{{ zjE)-j4qHG+jkqCh5x0AZj&Z|?OMc%|r>eWULLBG!JfHV{|Cmf4q zjg?B3)FYftvX3R_G~tkl=1G|-p=*mVzM~qQYI7gP(cJe>OTD7Qk5*Z8#Q(7&|478}yR+W93WeU60OBceV z4R+zGN--jH+Dl_e@qRO6#K?s*m7x!*8Qz-Gjl4+bRU5$Zn** zTacRbxq7_}Z_T1b%Hps&+vCbfSsC*CwW%9IowpbPG!$2bNw8|342()uO}Z+*cBE*Y zPyr7RAD{D}0m?BEqf^v4m6e=e7b}NZ%%I9ATvAz6jSUhx9+4w8Tia}u{jZ!{Iw#^_ zzI33S>@tMzvZRD17ePK4d2D=Bb&<}8Fe`BRRg8vE199@KIX>9BKAEDRGFo#fO*t}b zgY;CKQ&nNVUhVxLU<${NLd)ocS4PZ`OXfvV!vFgFH1inI{Tx+l|feM=8CeY74 zoaHS*;H?VM(e|c=%aV!)?Nz$ISn3s_35CE~Ri0{PG#=*`^A=HrAjWEH+pu7w;Ndt* z%tx3pXn~oLkoJn^j-McLG#)^@%34}}B_kY*g73uHq@4c9{}mw~sjAV5S!SrGRC4sTa8IytC|BjuB2$o&8noo3 zq$3c-q@W_2SraZ^1Wn8601@XSO_3V&G89Y&8Y|Btzn4&_pQJAhNVpruL6Z^wtw&|EWzgAfX!#vFUurI@qOCu$>IPIUSt*T+DBEz-QNwBg8H6yOj??U<(} zky?-PG@f4f>8l+zTfoNYTeo|jFfP?PrNPwGnF+#Y-Qxn{6SfgKt)dua#sQ7Co z3tG%8$6lEloPVb`dbG0yu8G(@5wSXg)~%n~L(A+)@;k*E8ZPanHIV%LO2jPUFrD)g zN-yhJ|PYK zG5$4`6auJBJtH8_BA8R#3-0B(N)@?p;05JSUFbVnMys71CN8ExKeya_(M0#+Dtm6K zAJVp(%nc4xCr;>-K}63MhFL3gdu@8FbUZqD(PfB$K`6NtEo}-`Eu4=%;D4q8^@1kK@Sb7bP?v zRv02YswPa7jx)py-wxZ7sU~p?W!$RlJlHgCdVr&xwx!y!A9n9AkwK$-YIdeFr}h$g z4Z@{n`nh5&IPL7p#`oS(#AXj7#nRIkIR$CwUn(0tEkwpl)Pl^ihO_3Uhazo?T!F{i zask_AE}F+K9D=I0l8Qiq5K)v9RI@ zU)C7`DW_)cKKHR!5v%D1SEL>#Q`!Js=Y!Zu(yBJ;=N4iX6HkL&j;-niFvCcV{SbISh=W$^QS%T$ik{7ol%p|R z(ppT5LD&XvQYvVTRfs`MiuA}7x!nxFb%WuRgzWHCl#OmJxv3Nuz=MX9a|(LY08iqw z^-Xu55^hvzbE$S4ye;u2De9pQ%QjSySmc(`xrLb)93b#5xe zMbBcSSH{rilzrv8n^9NPL6=>k+zeIE)Kn{C9`TBr`LtomdmEZ_NV^ZPDSO-!#H5>Y z&Q-QB8&znrZo@fe(lVT#N`fEn#L#4#)c~f5<{^GiXD+5(m~8TqnP0aVk;}v{f$#y0(hSbl@^=o+{LMD6H^!={v~?=k&ad z&P*MeLw8d9u4;FJ1S5txS18knXN0{$Tj+siC0ynwGcS&?^nO7vkXNC0Xtc)x*+Jv2 z0=y*Pq8fe_MYRh1-?RljabkJ|q5k@M62&dX<~uz{f#~cjYT(JUY0)RGO#eU#FdbAw zyF)6PLM@T{SlEk{DGyHB&rA`er#R`*WbQ1fmWfD;r8ArPa4$D2J=fEkXxSC% zSZ*@hsTe8YLy6UH+6~i28RrFAVJxR~FGcF}u&!+3Npjt;a+1D`&QqjLP}S0~uU9j0 zfRm_*o<1z20(9e{9DUPl$VIUj8rpuJo;1_$WbP*QR{4oaF7z}z+z2UhK3`h^@#JFNaY_fQ@+WJKa4g7a?%}Y zH2PFK)FO~`Xzb70oMZu$8TT7D8ae@ zF_4QwQ4Lzcu`D>1T)$~MGeQ|Nw`0W;A01#8WQ;?cBjQB|w0cVIS7inOrOiV+-~l0D zdauI_Pyki0%}9A_fLFfn!yr?NO(NOL~|#J;EFjlv>b{9ZRozP0`B;0^tzB~;C%`?)ls_P@g*yPs@xri#4leqLRv}Z?paY~ENnfu`o(h4hM}bj(GjPo%|!NdqqBRVgh6>^#ng_qZpQ z+Qa6UmboIpARQ7yPwL2SL!RW|D$}LNln(3l&Ybw!ou&=Rxs%kZFt~=oJfxd$ymN|q zq@&NZppzV!E2)O5=Yg3{4G`Uh;)oRUodOO_XL}Qhu59m9@=F8`SYc5yjgiFkb1yA(>!lu>V-fdQo_h$q@(@sj}_L6Fjv6N77%7Y|dV1jy`6~<b z+Cn{Kq2}_`de%4*oICHLj5i7{xRe^kGDnMO7l@6!YByJ&lxKnp?PkqR$55!$&|snN z{Dg%%*i#!S=|O;|(?e+Kg94n4N7eIHs@zQL#fFpijYU8cj3DNoMe=!JS|f|twDi+Z zcxhXDEQp5_U`11oxpL{D0P2W?l&W_~xLUA?7;f!RWAZ#%Co}giIUqpELr7E3)tOdB zMi{Go*GvP%$%UoB=uN$0M2=+mn%IIzl%FaEQtx95hMZFmpK#x1Xtwf@AsJ;HQ;)le znf)TX?sFLzBR74>y-#gT%b0O?4OF-BQzPgQ95c)1nzqT64&$W#QROeP7ihd`(4wAqB*Niwf!nM_DFPe)VoRdVGY1 z#c{6Wz=$?y?4YTdnv1M*$S(k?|-?+6Up>Qhg&t zo;ts#SXw=rjz&#-F~(iS6%;~Dsk`i9W6q&vo#w5j_iFX^74Nlc1`1IJaICb`RI~2V zbE4==dQ&P3NldVODUE|ZyXt4Tf=Tbo%*jK0nvRDP3k-cJJh6;8N4Y(B*%ejl)kiAK zRMrGK1sTj=CeMYHaTa$~pP?P8(^VC#%_XBuZVTszk;<=F==JIazK?TZh>ol=CdwsH zUCfz!XPQAhdIW~1?s}2v|4Xp0Nw-F`co?Vpo4mw6G+Q=4TB%{f~36XMz8!}Nw zWh;sBaF^Z8N|)O9pNr$0)T0C$CYmeB?DAPlgg&R;GBTo7cvBl*XG?E1lP^3{WsaAp z475ogr^}hK=+tR*#~%aRtuEnuq%Mz1!^fvk*aF2cVM6Ls15;RGIuYKhn@V(y_@Rk@ zzHDEA{8EnJw-^4>b$05SX!@7s8-VZhf5a6?(F4WxAp9ln^ncl)DL0i1-63i(@iz-s zd*h1!OQ+2C4F){~HPG`>*OZd~QwY^NOJM2T`-xJsfdB9Q*YAHhzyICZ{U^8oNZ>yb z_>TnsZ%E)jmhu0F)c;fF|7i(i`{*Zr==WtJ`1jz=x8fHIhxnG@cUlOu1>N7bLeez{ zU5sC-%J$iy>67If=%b(7RliSjz{MBimum+5ekJ*TDbnxl`<tX9=V74iVVD2<{vR|^*ijAfj2$E`IH&B`W@JE18;te`6~=u z{jOQ1f!E3UR2g`a#A^+_>(88joq>lWf1`nSNj+a<;6?Ix_nHiRsl?YBxcWV{=05Ni z1OL1Ho#kX7_+|rFzvJ0%;8n6d+YDUQv%|nuyIccTzcbiv;Fi=ApZr#OUZ;Nd*1#>P z=OF`krJm;)c-^zyU%3XpR`yrEf#*oP%)s-d94ZXllfScBW#Dg0yw1S?DDgE0zEtAP z20m8en+<%I{9Vot1HV_|-3I+V3ZEPUHEp%fJ=CPwKlWw_-N)D|@f-kmM^f_(z?~{FMg&aXI6420l*m zuQBjPB!9DkPmuhZ4gBYlf1809Oa3kcKTGll?&a~S+BH-1=NkBM$zNpPr%V1a19#8i z_Es49`I5iZ!2c%s8x4G+yxS4#e*fnOo{w;6a$^1B9prR4YhccvV2C4b1k+O z;JFenGVqAR%M4uAv%my1c%$TRHgLtCG;rS{&cEHj zRed@Pyh`$S8F-V#15akkvqR#!2Cn+0z`!eh!u5$5cv9l!2Hqj@Dg#&Ttut_6rIe?E zEB+<}uaf-D2Cn#%1|GUt%G1D8@-*-Y$=_w*%@Pkhl_}4rOF92s1MiY}k%8x4#{6Xl z9+7yZfmcYp&cGWbzQ(|l5^px}+{?M#%?4g2@eTuTl6bd)CnX+AX3C*M;`s(1x`NA% z7n$0x_cZ)7~zz>}9Uo^Rk?xr`SWc;h(6iwwMKEaMRaSNT{59y*Ho%M8406yxOv z9y*Ni3Inf@^{h1TW{FoBctqB}*1(&_aQ<~BK9BL$1|G_1ywSi5WV_ZFc(W|G$-vuX zK5GqJ<RWec---Wa@KBmK!ke<|8=&kb!qd`Q#XQt}Hj#z?D4n4ZK5+ivk1p$^459JRkucGxoTjyD)DGw|F`rQJ60(3^}`7S4Umz?0uIzQ(}2zGHl?iDz@UNdqtI$9RW4ZQv1^Pw3f9{qf0s@=aXw zml=40#48QF>i1mkY6HLIYS~@`KTG0k4Ll<876ZTJD$b|fz>leAyu-lvmUx$eyUUp0 z_gtnN4wZP0fq%S|`3nsEF^O9SZcDtvz|WC*t$~k{c%y;uTf^n9HSitPjJFv0e@ndG zz<)3O^9}=#D?i`Bmnc8~`AqqgN<7EFzme;R0t0_n;+BE$FY~D|@S7!nt%2V!@ihiM zT;k0J{-Ip&Y&P)cB;H}*Pe{Dmz^{{dpgmI#^Cg~R;L{|YZ{SBtyvV?_C2kq`yK)^` zZs1Q!ywbq$lz6Ry-zf3b27bB3*BE%I#Mc`5i4t!y@O>n{*}&hC>-ud5zFy+4f!`+a zZUetk;(-@3<$s>Ua}4}IiRT-*C-*Um4E$z^TLwN);^hWDP2!aXet^Vl4g71lZ?oFK zx2t^~1OK(e*Bbc65^pi^eI>rxz&FT!s%-{-oy5Bh{6vZ8Y|WJOV2KwP_{*2D{jm%@ zA^9r|{2Iw$Yv2nczQ(|hlX$a%50!Y*z~7Sl2HOn$0f~1RctYZV7c<*CRN}b?euvyA zEHd!r5-&6Gx8#0ig@HdJ@md29$b1?N{4~kmWZ?J6{n!=*Pe{Doz^{_HYv3nHyxYJ7 z5)ZwUDW7N5KC^*8Eb$@(cO-5Z_-PU^H}JRRzIvsB*GjzB!1E=(+Q9!I_np=l`0pj& zY~UYCJZa$PNxa>_FO_(QfqU}2quaorm3ZjoOnE*k@q7cnS>h1`KS$!_27Z{tD-FC* z;&lf8l05fmH1OLc-elk_)cKKtFH`472JXpos15_4C-E)=|Cz)CuVl(+n8b4oe7ijV z$~W*|$bFTFfxoTxc?|q_60b7wpGv&Wz^{<_8UsH_;%g23P>ClE{6)DR)o$PqNxZ|r zZJ_QDUg)Fzo!0RL)G4P};*D~-XiI*FAhpbP9 zfiIBtsWR{aS#GU?mr1(4HXC@=o7}E;0}s8% z_%;J?m;4%pZ6!GoP+v#zO|4lz5JT zw@bXqz#ApK?RT6%9{$49Tj@`Sh7V1{K3BtwHM~p1FVgUC4L^dbF77tTeH9wbg&Kde zhM%k9EgJq44d1Nc=V^GmhFcoGO~V&xxU1pQHM~p1%Qf65_d}@ulQle`;RPC=qv2CE zJXgafXn28!&(iQB4L?}JBN~oJ;!+<=!zZOspRZiQFVXM{4IiQ5NvSV1+HTeGwZCEg z830ULa&fm=!+At-q81I;)WMh3aL$qWH)}YLbjI5?oOD-xwrM!kNqssrT+I!1&(&}| zP?-93Y51TN>hpDL_}&`syE82ZJP4Wk1T=h~6pH62H9V-{IU25>t)$zz8osZ_pReKj zX?TH#57Y1>4Ii%I5e?s8!z~RzK*P&4JV(RJHT*yguh8&=G`v#7b$zbVa9s~;HGHI& zPo0JzqT#DG{7?;V)bLylU!&oNX?T-{AFknRHT(z-Z`SZU4R6u#Q5v4q@FO*RvxXm~ z;q4lpui@J?e6)slX!sZncQt&hhIeWBI1TUC@S`={_uI7oAEV&`4L?@HLmHl8CpBE3 z7jiXxyp~VChG*DM4HvJ5k!gxFT(^f24L?rH-_r2oHM~s2i!{7k!^0Y0q2VWJc%_Ex z^GKD3Pto{mHT*;kuha08G<>y&M>M=q!%H-LjfU&0q~WJ)c#ejjq2ak2K3l`{HT+BsFVOI_G`vW|&(`pWhM%M1mWJ#8Pnm}6epk7M z>wZXuhR@ORuhj4hG`vc~FVyf_4WFywbsAow;j1-#o`yGS_v98eXa4EgF8Yh9@=rry9Ol!*xHcUBfTc`2TbH9|`=wB!SO^hwQfE9|bJO|JvMa zpVg48?$^_9#Ww`ji)!{vT0AG)*E6abe}jica7DBjFc0pf6G%YE- zq@d3uI-BTbL7zc1IU`<^pl17Sco9J#L^Lf0yaGY*M>H*^y<9;LBAS*2UP#dWh^D20=M(hq^Fh-R!0Y-R zz^KoNCfDEV5cE!>$>sOj1-*l4a`nBWptloEOLVVU&|8Tnm)~m=^wUI>tM4@mdL7Z^ z;(K+1ew1i(?Y$~N-%m8T^j?La|4cNw@?M#s?Y;PUe~vx|A{7-*y|AV zPNK;b_Syx#gJ^Pry`-SG6HTtK*DUC*M3c+wH3|A@qRG|u8U?+MXmWAAIzc~5G`Y53 zm7wn@np|41LePIEnp|10Owe}|O)jh#5%ldulk4gg2>KU9lgsMm3i<}3i-`^idKJ;+ zx_UlAUqv*ztX|hQqW_7G5Zxi@pAt)i-;!I)JqEbJff!&-7M%ch$dImYZCM< zqR9pI8U;O-XmUNhIzgX6G`XB!m7vEHZ4q4|=rKe`i7pfL;Y80OIwI(Uh$ffPD-iU4 zM3XD&)I{)pJ;Lwy$(U|B$`}AuU*hPh$h$2 zOA2~B(c}_(&4S)aG`WIalc1j_np{AyQPAs%CfCoa6ZE4*lgsB-3HpAb$<^~J1pQ~C z&n3D{(03C}E}s_>^zB5GtLGI6`WHl#i|6GE`UaxOwev!PUPUyybe>PpR}oFFoY(cW z=zpRsi0%;dPl+bi&1)C*MMPgjbW+gg5j~&iW5w!Re z_PF>-AYaVR8$~uhxOZW4ePPloT9f6&S0TQ{hQ0UDq<%g(hzc({CU|JQNE$p8T1N9* zS-E9@MU$L+IIIR`dX-nwI)kTKb&7Ww%D{ZBhGc6tZ-L<(!>s zIVb1DoQsgdGcmg@Wi5)pebvvh-=fMLVmUKWxib8l zn`1crbjz zz-rxHWW{%9*9?-i%<0)-*~{|+mOUcRa!y40o>wh*-*LZ^-HSknN1n z4+q1r^?T&^eLu<%BayV>1J3Gr%l@Y4m2_6(-iKO!0zCc`BP(iQPn^V0ev zRflSgH@i3QFrD{AjkkYqUKa*Em2W`f_4np|T<6^iL#*1iS8v`%o%c5yudwI3%%%n0 z`OKUn1WZ9lD&qj=Vau5UB|FKoCtLP3s9Z|cmfasWriI)*PM#~0kI<42#L`P7r?gii zE%ZH|-u(zZcdG5%VPI6TgL=0osq_9pO8tC zrz;Yudn#T16Ggkz>8gdUPN1t*bX7oCF}gaEuJ)&^5p>l7M_!x%ExRqUt1YW~ZzXsd zQ#N`u_|QxmZ)aAR<88pdG2RCJ8{=(&`{T#k0Qbj_w*l^tA8!NPA3xp(xIccp4RC+_ zc$@kEbG*$AxnrRh7%)80j_5VeCh}x}Nni!WnmOJE{2SwKfcxXe+W_~+jW_f^lvIxQ z#eI*r0q&0)Z^yna##=spJ>VWjU-j-m_~P*vqAM}p_M)p7X+(XCI3^x%pV5^VZ!TSl z@%9#7iShOlU5WAbG+l}DmZU2&-X5YWG2Z@4SO4aC%e~-VjJJ8%4pTO!*ZgLTx3L;; zulWsnb_q{JY}dblC#f>-_XBnv=_csu?$^>~|4_Od_Z!wva+rdvs8G;- z^8tKQ8@_64UYMEVKA`7wh?bB4-^=F`Js%1lQSIOB-^=F+J)f(zdH4A_xTa&G2d`<_AzH_$%C2m zyyalN(RnG>PN`MM42D-F`oiZh%|M$+#W#en?ff zp}p!Ba!+AqmU*tmJnTov3~k$6uj4D4Q#Sku>-ZA3Zsa@wJ=Buz->Z%R_fO1B`m}hV zYRmyYkUw-`38$fUEgqxN$>5CHnfM`z*e^dE~OKrz<)^a37(oS6~j@ z`{?R-boF0!bs=5dL02Q_>SnrnA4AB!p04hrt83_L5nU}2d~|g&U2TUxxpV1i4PBi@ zSM%uV6uQc#s}j0;4&ru?r>o_3bu?X#p{pb4Y8x8u9!OW$(N&PHrqh+5uKLl{H!tGq z8SK2dpVHN@aFt%2VI7w6-+Vfjb%~KX=!?Alg#R{inT@M^84U5VF1njxxrKZg0(uo+=HT)szRbntANVpKmyhse0WLT3Wf6-x zqkmHJ0^3O&QSU!OxTWOn(egJXPwZE2z)f4fN#}V=-UVJ=ZQ`KKiHH(i{W)HuC1r05(ol1JCmhjQG>$;%#^l|q?9o=`H$0+?rTG@EK z^8T(cy=H!8edf0g)pBp{BR>p0+LWRVA2INuNP8_qCEjdTg6O8TszXfJxq?n(LrYw- zz1c(hU6lULAC(?kWbtpZmJfilN&Dt4n7Xk|PuF!M3M<~#W5qXTrRk6I#U_V6Cl4ES zwcS?hCxfiS6d3NF9xR~y7g?j*ti<$_usKT=cCI!#MohLwzYUv19CPw8{FmqSpvmw4 z302++5efCT*FS=(*Y_m-;oXw$F=s(upw#Yg!}q0bEJq#e?J@hE7^IWq9*R5cH0P)5 z+nu$1kX1~N>96bu*(Ln%{50F=O~j1E`T^mh0shB;t{3+HF1kwDJEt5C=o|zg^}A*~ zthM#nqIs7tS?Kfiv%=eIc<+zWJyyNA1}HZ50S^@R7MVcJ{9!6@0|X?>`xp6v|LcoU zzL6i`tpqok7Esu)MDc&&re$ve+vMet9i%&_7nf@f(?2?s&Q}@Dk3(UPf!*4iq-{*NpzxY*%PcM z{kXsf+O!0Nh<4Mi&Pi3ngM;I951?|NN{wI4%}cKoo6X_w>Kvx&=2-@XzAF2Fs17tLbem6xV4X>;rFGW>10gX#L_z9{|(){ zMcqr;(6l`5w#P1mzk_UA7h;_L9FWG<4?}uxP`Pd@}#4$C2zcNQ4@i8g>T@n=f1d<8cP^6UZT>2=yi5^a z^#;;@x>>7hTEx;mKuOp{Urx%kQSs7nO89So1lZpcMuuij>7is4Bcv&ru=yh?!)lp0 zrDXjUHTLFrXtKrlqvEETDKgKls1j*?%N)O#kQ>}jRaaD^_90~XNt+td)AjND2Hks6 z-P`l{l_ReNwrr2%SKc2;_xCh@|L6UGT@tlCTGf)84@ub-s{g;t=zsW6q~EXt!RzYK zC#2#l_f}I@KIRE~F#7vU5(7C%@S`vd$pJZnN?N~3X-juj%}5mW0b;grVq32Ju&1Ir z&>z}i9KFfv*_>%FkU8vU6SUx!im>Po+tkEE!?wXjLv8(;LYk7xnuFO_b?@$-LuCz{|>O@RMN zt|XgJa%`RIyntInS&C|s$D3AYIbV*vraaq+Ii>(YTs$ikCct49=e~oqT9}18mcNT+ zt%X@UMtY&d9`IIyaz9=VTX~;Zp1m<@e@9mP+-Ur}tm;#u&NUD>&Wc)HxCH$-qO#=s zP8?v3?usQAkT3FDZ1g);Pb)jH_D=F!PyYjUo}6m}vC;2ZJ!rMt`A3>xT(;6nsN^PU zAM|5-UastWI?;Ak(jvLvI@E6qx{7TYdj1@eP_CFr3OEhMD6!u58?gRXu~J7{xC71& z`QBL6mHpDcA@Imlngcgx`A{d)56n-&8($`w#gmBIp^5e+%J*cIFZHSuBhJ?E*`x^# zqeFb*iT;d?aE{_eRnd}Ks$R=uxY2|5ik2V|YW7W5b%oSR(T3#%z7xm!(vb+RdL1>1 zCT2p1sB&$QZuTgk-8LFuPTMj~cOc(CY5Af+GFsGZ^7k!LFA(IHKgH`DYSqP*tV$(A zs~!>eP_K|R`n5f^>^7R3Pn0Q?t8<*FU8-WVnuFM>aa228h)zJ3-%#(PVgYX`ZHryi zijH6JF2R>~Fgho#d}{sL+ZK!7xa$GbqGcV6F=e~=(dT}eKQbl+(ByB9eDECV`^O3} z1h})_`#UnbL}tc`cz(zDO!%)8>~+NM4Z`f1t|P@oB>aoC`?q7Z)9#}@_ngmZL=t0h znvn|ep2%Pp_6PhQ!iX^c5Q9IlCw^w#aW*wc)X`l8wkL;^?k4KG)HcQ|wqNxf0a*|87YG=YfF5~Wvf5YAPF&Cu$HckG% z4BqjS(<6#E;oos4$v~AeopQQE-8JR!e~_7_QXD|cmn&x2PjR;{pL&P1^m=Rxr~MgT z^Sk$x(H8@8&80|wtV%A*N(EukcxypEK6e%IQ*Kvwp#ydQlkZ=Y%C8)*srxpjj+7KK z#}o69SNVD9-HiOWR{J$0mtX6-D0{;9e?eCG%D(Ok@BcLN4$szE*nWss-;d1}H>}^x z%>VueasR-+?(=>i8J%5EXbpwG644!4Do=Pou=}v6&iQ2LeJ~2{l8;%Zd0xS?^CAHV z&xR%@Slj6|RAhyOtbtu%){@nfeLz&}#V)Ap! z`J}?4*ffdc3UvZP%GvXwyAv~B=YzU_Qr?F$S7PMVbmE~0xyfV?P_pe(Kl_L#{| z<%)I7)UVO`U!y@OEzi`S{SL-L;k7;9Px!wqLoE^`Z#@-X_L?qC*r3)jMG z14m96M>h~an;6-`m$|qs6*Vf)$K^qMS%Aw|`LYO?e;6Z@MR0i-C$n(*B%@`xoW{K6 zxUA&M3S5q2-b!3v#g|pMyiIgRc`Yvg$~{xZL-9%3PfWGXpfcAq5%m}b4}DewXcPdA z8GPyhtiiX19SZt%t#li!A@+l@5v@GC@A~_Ep9S|NIaZ4j;%mW~O3~w9NGUw%{vJ|H zN_Y1Xq-fZ4inmIsrSYUztB}v#OetpXImKT& z#bzx<^Az`1N^#hpQ(VO<+9^fC|MTgh#BEIdmZ=V=)-vTXbw5+xOg+w27gL*<@X~-o?ebOg+HVHm06ns)MOErn;GWfvJ!f>i&0` z3NZC0Q#nix5DFa6W$HktikKS9R5??Vn5tmvB&O<^I-RL1rp{-omZ^nItzl{zQ~4}% zo2e$gcL!5znYx#$My4KS%4MpRsR+0B8Kx|zUS_I{skfObXUb!$f~n7$s$}XrrmC14 zaI)ylTBi18s*b6HnOe=%D5e^jI+m$5Oof?hVrm*wYndu#s+p;Cm`XA=kEs@>E@7&j zsT!s>gM#N^x&8;GO^7FX@tQ-5Rs4ZqgIz4%Ag*f3fZxTJFtWu<`7#HWv-vU?mj!%@ zeS&zm5OwjB0(s0QI;?mzQ}jkBtns?3M)72qSTn0-*?d0eT%R*?qC=L8=< zClGvi<{mg*oHkZrZ@=x4<{zO}O2K@Pwr z;uYvFwu+P4;&;U8cIVq^Z+TH;6nkwAJ=Iq#f2P#wSL)yion)Z2VatkhXB55;S86(K z%wR{X_!V&wH0f3PYTcP_9k$y_41UFmhkextFdufkvNX8nlbD@_M{c6=^;s@GUmLZP zrQz3VnoFHCP{P)lo3zFX|HkqE47rz_d6s2=7js7a9mH&u{0AyBQI%yid>pJlfV#|f z1wYnzaEYykWX%_V3b(3thy&jic=o<@>r*QWHSNEj748b&hz(iSojrUEm7KK|b?Bf&sQB*w!5jYycJV`KjaJs{R`|u`-Bw~+Pb`u5CS_#V{(FfP za`n5N5i0FNcL~06<2SfbxV1B=r z-}&B795x#DIS0>nm7HC2mZ%sOkTK@~%Q@Oc?V(b^8)>qQIsVb0W6sDi^p*HYpzw8) zUzD8d)=#oyhqaZ4^S-Gbrt~G=mL;*8&!cVqzoEjB$$JaY=)}ydSYq6F42^sZQ0%Z| zsWWkXX~V9XgF0u^zCifZCC6f%Arp0{dUDj+pN2{7uys~=UGUacE8G?d-nOa4e!e8| zRn0%@w^aKh^}A{|pJq=Si#DUO*C6lCI^+kHv1rVEi&!m)HyYj^Y@qmd%if70P&2f1 zk{oYDC##RL?2VQ)BM=Lh`f55Ydn$!OK*K*dAF?mGpya}mx!$}JNxwD((h$z&N&e_v z*#Tnr%Q^Ze)WTg?Oge#8QYG^74YN2_+FCtVw!@j)UHCd}7*~gdo+l=5$74$L z974@dD|}`C(jnI5D|3U_PsZ3sJ|Z~;WFei{W)5##_6$Inu8pt;TWkIswK|k)72k*v z&dx&QH7t*+ayDqn??=@G(MVhmr0rb~98N^315lBBE$1>^ zd|dO(m~$5m^3sO)g7sK^psbr&RqyEl3x+#aGHc*zIT@EN!>tjM!vN9$GzI z?vo{9XBi9+t?3FrJT0&&-rZ9(GfGSLsB>msPN{P#c2^sc!TKcfhZc4It8N3LBSr|)H&mJtw4L&>r&ilmvYqRiR zYhq#prNtwwqq=)=;E<^HBX91s{Y9sRsMD4mmma_9j()N5mo*Plh0)}CIs|kkHQ;O1 zw>=ngSsi#DvfDcqRdDBWor+MWPMpu&lS@LQj!Wk^qwqZ|eoer);tbX!^j-X#kZ%Q) zsE+D3%bET@+=GeR()DuuAKrsP!?pQK2U?SBbC;b@{Z4%tz96*nIrLjrEW9wV^6%(4 zDz4@Z7`&H`qIQ1b#_;>y?#x;EbJ5S~MA`o$MF?O7j)bB6L=HCbkS;c<@Nw@z!p^(Y zm|M^GG-`iKV~&O!#tw489CexP{}bhv7~XXVzSdy-VV&r_yO53LV7~XS6lLwIUYTxx zoBu+9^s$^%yD^`&dV{R+3rn$T?Eea#e%qT|Ybbg@{!v!2971e3; zKQ1rnK*t_=11Pc}h{rr%OlEb0EoFS?h408*QS=ocZcbJ(UpYG=jljk9^r zD~8>xhF!t>>yU_^hIEERs03$HA->Q^mOr+Qc>Hw5oGGo*$p>VN9|pq*)O3}=$r1x7 z*l;st=vTY1nF&SM?W$6tnBGzb2j!%-%x3|5QQ!gB}*$um@SHLwm5kdPHiLu1d z6LCdOLZ#&lC7XJhnqOg8XB6(jgY#tK$EEux(f{d^_$JtKQq`W9kt{m@xwKVpUHm4F zS)qaJg)wa@!RU<6-w<`?Y@~8(*1$)sMf59-YV`$>N7SKhP*L=BF^`CHKbGa@HA3Df z4^x6(-m`s{hq-(KqUsvntNA0w$9?~W#=!w|R(A*;X(aP)In89%V@@5JC-)S%D`Y5c zDT8^y_g|*-cia}{;tv;)e3I2eGR%dN_IfcNV+r%CAYQAw%e#?$ByBiE)ODkbAWC+iWVq-_st=+JMo9!IsX0XL$cv)cv;qWPJ4u55c}7aS4bv z|55mhMHAhvWTwOD%klRkF5CYug&I5lJlPJcJg_TDFC~!U4Ww3FV~HHQ@G-9ah$_nu zFVl#^lBV^Y{tIB|M#0V_@A|wJd>1B>{fs}LlvWS>&*BH#G0?5V$tPLC=q9`vVJ|D( zy5v+Wcl=~S6O$^jH~3TlNu%~lR^k^uFhJ2@^d)4}x_gj&I}YuzdmFPqa6gHl7>H&+ z1nOBY%nx}-pvQPTBAcknrZDL)6p5yzmI=(EkL)MvhmIdPLNvb$E@ysW@^kAimOU|# z^=x(rg#b8Btd+LRr>byTgZ$tzKkZ zyPFiWdPd!Q-%>x?&mfPLk7I_ZMW$3CI=_Yv-2)P9Ko_n5EnPx<(U?<#Zd#9l(b>TB z78w?Mc3K5j2wC2i4~9LWBuT zd{(^9f>LF<(;k8l?UC;RmvyScZ6A*ZtR`NOiyFfYzdI6qXjApM#W+0h)r9aS zkwI4L2ieilUkK)}Hc=&OZf*0|qF(fY?}pTM|HzIaZa`!ZyskeQAX0wyN;K;@Zy}nT z8sB35WOv6qvKqDo>;Ic_fP>k9vqoeE&5j`(oY}ztMV-gd)S2tj+m$Rhq!=`~xpn}B zu;c{mS5O*?yP(I4rzfmICD*<~%dYCmDc@Buh}slG;-Au#?L!mC#T+X?7Jhz7EQYsb z#KNyGomLv&vBX~*erH*jYT_bc%&Dx3Ix}*jlV{`xc0wKJwFn`2sJU@hoZ-}|`RV%(T3+~|Pbx7`Qqv^#d$MlK= ztjW`ImrO$&p&O?_@*KQUnC!G;v`diD8*UtaKM6+&Uvz}%5)nO1aYqJwo>(T(`#>lg zaSBL1*m-k$Dq%n99E^8Z+Qg*hynb@+C)SggX!5E1Lt^~9!*GfTYq&DsgCX;!GvRgI zrFkKU49pOID0t)5q=1fpGlH04XR%zwmJfzJc)NFP%C3Hfow`95bS(gL(6cv|V%O2^ z3)4A*x-jMx-!dCB5?ZgW1y*??eu9da%SK6G+-G;w+Nl-_0LV8eGHsKZuC?yaD~ zJ+nJeHR#$8NTGxE2!HfV`7T(GU_J2SVQc?_JJGhuwfRe~!{6Mcbry8jqV5s8y9<1z zyB2g8{ff$Mz~L$Fs{|Y7(r`@q1iV^VkcS)Ox|N2n2~-b8ca4Cx>tAYL6F{Hy0-1yr zLvMy+_R*K)gg6@iXI5-%HCYdUEdAh34HycrL;0p13O+Q$H|1+A#hn>qTtIVSRW^}C zAnYUQX!olbi0(&g8!Ax|H1XQspvvK@{H23pldG_DKOHa{Pc^1~f>3c=)O;=q^-8E+ zjWi`~JCeG8MvnJ2aOppykX9U(YRw%(i3U?q8P)X;$_RleA^n7Q9*N(XB)=7bY9)As z(|gd-_(w&kjkzvM~72l43B^YRO~z|Nv|(Zrm*EcZ)9OvJD} z&$lLz$b%gv?Z)I6wcm)@Kq;4+N7=8KA=VzpTX7d*b0A>V1?fduG&Oxbe5o`u2Iy-RB8H28!>|1*^WlTr^1d#C!ea>(YBTE zOb>4h){|bv=698b+k^FgM~$M1NLCc$D9wi8N&-3-pbo&Y; zuxvCTEfW*cG7=;&O1arHpFAt+c+)||$Xs1*kHjg%{?i$gb@pcry7yLc(#HXc2JcW^+=F7jp|drX=r z-N7yQ?0=#=vivIr8>$h-?kY|Ghlp0a1Ve-=$L9q>x;IQBZ`pqYc-#Ds;MQQOv+W-Q z!24Ki-_C`P^{n>}uIZh0VuCOJ9Gt2;Z{ylqhufHl-4hNc?=D#1kJRleys${v)Gv@J z=A;hj8;?d-k^6z5y5wY;7vjxw8i84QQ*B-_-qQ|aF>Xzqq@5cT^UU$vdQYZjr zQgaxca9m4l1FDB(@`Ec0e@?n{{il3avo`wGUczKxdEnBMYPlAyUru!NMxjW;=Gn!s zB5K8Zl%6_13o%>XN5a<`-b(0^7>+T!+dCN|r#a#eU?4U2N{ERT^yJ8g;Yb9pr+2#u zOFIKBD22-#4eN!jg!P7e$RcA|1upR%ox6}CDxKkHQ&IFN8fulzN`#%ce~359vR$P8 zDDiTfy|Bud4tdboi2aRQpGz{To&&$EJNQsLrpo=ueWYp98jT|=f$rLnU2{U4|64?f z(1#*R?big`wa*E&YQuCnlLDxPm8dR&y`Mz9*X}0EvUIS%ju3_w=My7-mF)||Fm#tX zO?BWZ+}e;_F(&OFSdO#@QJRTiSgSO9@aoDAn1i*nV+?z+GddaWc{SqYm1ByqE)KJY z_EZMEY`1bo-O7pIN~%Tfq}t?J)8>A=|({f!OKB9eg86HxunvVn;1zK#!ioee8Y(S3ih} zRV98JTu+OlHZm$|)sFN}gQaItG`Qk>5YKdmFi)hAMZx^%KMT&?jBgYb8ghv!dhTXi z`=1im<*m5afw-Igc?7P4_!b3^?Fe4q1U19S-><+$A9(5ZcJ^`-lg>o-Oskc^q@Nh}3S_sr5%)32Bmd@ z#JL7#jDuqAI}W{3J}eJ?v(9~JZ4autumAg~sDu9lOnzvt6wXvo+~`*@V#P>;+1iF%LA3toRcX!Kj|%|bJU#;zjGq(>62TSXm1d6PWv6$M@B zzlOfiTdpXFG+`&?-VdmIl_+Z>%7Qh-K&ZbGxl>N{&A4#K(o~q3^c5Ch;+X(+v4s?9 z<;1*r@waGlHd+QRH(1{U{=y{cFA71Tw~)v^h`EQMK69{wq%Qc%qKfB}l(2h&zr*s} zTmD2M3JE$Sn4$8=Vsz{~WHZ>8#+>2SbU6}(bAXS*sG%$_Y;D-O;uxsJ-@ulbh02zZ zI^ZtZXJjdkFVGj%y%zMLy=Etd@MP*NXZRa8;fsdphvn>zo7Hdl&kV*tUc1b*i&VB*fkwxu*cn=$n?usWd z8{vGD`btbCo54YGWTe2NYqqlj@=eqjQlddjgI0JwvR@F_kf8MoMjV}eI^}qgNjX;k zaa2T@+R!kJROIDzoBjgx-sXRBChM!)M8VFE-}^avswYXb&F{z6An@bi5Ym-4{~Q36 z0i4(xTw-Yb_F8<|A`QL@0D413!&4RUvYAfFAN{H1{~C3qcpJOc-_R@7jhGnAw|E~3 zeQ-~Ka{<$_YG~TtZ2L2!x*efVr1z{(QeRSv;vGY}+vr|GVeW}Z)3x+#C_TNmNbCy_ zzen`{q@##~c9LPymVyIg=X%@`GQ1T*hvJ?)N8Is?cs00!XCv!-Qa4ZHn>om7krli= z>HZc63Q(mfG@|JNrhl?(V*ID--K*XEqTMuZsaB)c)y{%~2#XHo#=N_qa4Kp~OQ{X% zi>MlhizOyaMRiadTsZf>dqnZL6icO4U+~xyV_1y6&Oh{7ozCB-y)7EQeX^a64?JRK;k?8Vz|Bc=+hmtm#h2K^ILNKIavO`QW`g|oSn_|}0BJk=kkc@VBw zqvFWG*9?7)7ylZ3{i<>H;$Mv`NNV&A_-aVj;t-J~m4yDV`EB!8fQLSih=5XlWnXrv zbDglW*xeB-pP1ARd1BPel^MC`A=DA{6)E~XF^Ya~(8=qJe=N7+x{rgiPtE^=R1fTmAEY1X5Azxw;C;z6(e z-jb(cSPXu()5`h`FXzPz!*}mRPn`zud%DHf1%(T@S;47T^K7=l&s)K1ZETlh{ufaG z&ZM_iQ)mvtp;TF;W6pJC1kz>2>?8__Wvz?0c8fw{qu2E+gi4tDwPimk(%Mg!Qx>fs zX1h<|01IvXU@D5Exp5fXXp6YiMJWF{;4F8?e+KG;cNKS7ZFN=P!v9G5f)(FEu?Tn< z`e&BS?zg>~vUd;1PA{@-cpZ#A!(%Xtkkb%kg0o(yxEeW&rJj^k&+z>O$H>m>Q6wF! zwfU!jhq})_et#+}UWaSsu>~A*#_lWzAf;)bKulh8rZ7S{3 z_#PRLKd_?WPGb0B5#-b6f3Ad8#Ij#S%f(`cPY&DscgS1k081+5(t9 zbyfl)VTmc5aXPS{n3v=00yMWI@nQgM2w^x~rVpon!b8RkJg1e8G6ZJ~rZK#`=Ea6x zD~_|~KZjV8uRf)OXQmQD$H!3x&V~iXp+sWX3-HJBH~@u@!0r0np44yxUefY|enIE8 z?Dr@;Z%+4}x6ASBRbx3S>px)cX(G&j&+sE1p(W>_XWIP5 z_zUw-`niI-%Jv_RFU?LByi4}yKw_)@q3*jIr zH&~wl5ObDcLvkZ_$+1bBkKj;DmOsglW&fmr7w^IQ-bY|TH1W$kDQ^>J%FCK)|0Sm%dkW*py4R&gnf0sb#0pf#6Wlm6wfnczh*yGBt$XtP}I=93ROTWDpBL0sBxrHh)aa= zv_%TQN={c&BqD8eMt&GaKkpj};a{$M0;k96i~o7x*nq8~=A4DWx~H^%(bImvuPD0~ zX>Z}QwUqWiDo>?Hk*X{)&QIbdy?eKKcMP>hotHrv%kr%(yi5I@0*uu!spjq-R0Q&z zLgJ-uND3;xb(oUySoAo;3C`T;6Y@<=#|1=7Vuet!^r3i9GA|Dd5|X?W#il15E&fvk zhEVxjI09Ec?C%~T3!kPJexOk}RwC53tvmXQvxzLsNE=Zr>RPTxst(6;9o)O9>Gjk+ zG2ivk{-t6DxdX8f)c)yu6>ddD8*7+s|F8%*zkdX>co~}0ryTw=P{?6{r~~^qd?p{Y zzf5l{1>zs#Xm0~5h^}oR@7F2IM__jFx@KU)kBsD6;q}4mnn1^#`Q5R^l5P>%c@TyQ zwm`oqsr$BjY0yow@teGHjldzvztB&Te#|-s=n9H7Mr1O zcHSoaw6MDb!MHmSZxO$y8-kkAU44G=Azv|7vwELmI(e)fQ2ZUfYW{{AJV`h&C$2r1 zD}mC|mFWDr^8Y?@>#!+~4d5*}E9_Qrau%Hz#@#^Y9g@#Mqya&hamXnbC}zKpQmxjH zahUaqyAO)QNaz&dF`KN>Z&CCoLbfB21Q-VIPm>cuuWP!}HQGb==&xw&M@aBCEKIcZ zz3kZN58Zxny-KqdnpJ^=*@#KXvM~}yUMH@~0^+^TV&0+gs>L)RfRo#WPQn z$Y=Do(Q8+9_Y8m|cyQ;h8!h`poamy`a>twYn8PleA5TVD?g&xJ>nNqaD&;vUW$9*j zD3(W^8ye9(kK9maDhyr@mX0~W>+V50Gw@IXB8&M(d_ATyx+7vM<5vf=YCg0Op5qKD zo=9nHaikf6+`q1F7X>~Yb7tj7!(T6LwVa<~SbVayrEpi>%I>dY&K2EJ`>`V?n2P!=tKxsKPRM19g;OMgtDmZlk4A zrsl-#U2YMUp5A)g!+|Is#Hb2UXP=rF(GiV*+i%%Eorpn%z&0T`{;g_QG72B7{sb|R zod`-_@UM_ z(_04?wx&7WzHQnp~2z6c&twe024%88M+MWvUEz|P zWjDARN1{>fbIH#cey*t3R7|3xQHzi5JU2Za$jRd8dmylOaF12o@%2J|m*O=%cr<%u zx3A_!9Q}q6xl7TaIWE7ieE2t4Q!9`=$>Jrnzeu>N!O#tOL<_@wvo#i;F@9|cKJJ(# zILok_q>VVf565fuHuMb=sht_@*EmxvEqfL`+)4W#BKIkf%6|Yx2U7ZjVw7M4v~uu! zI?!t?mj|2)q0Jc(JnXiq6)4WX@>}`ZW1+V_+fNwv|BqzG>B?X z>)--vReV(hUs<#WCfa>vo=EsA83oLxvv?38Y!mim6Yr;BU*ezEz)d8D=aA19Zzv`X zy5GnCUFR>jUwLwe5#;%tUMz%1#i*z4#iZ_6UqzKg=cD6;*C(Kg-uL*U_@jtdpOqN) zEVa)X{Q@bI_jm2ScRn;Ftq#K9$23i`#~4qc1?lL~>2!GRA1sQqFz~DZj@v$e;YO(5Suh#+L9fDHG|Q~UngOwWkW8@t7O=xr&xc&ZD8yvswhZBw<}%zv z5%*k4Evm{zP-^uknr8*0+ixFn*AaJXbKK9c8vyRB1&xP9?DAavD?lCKo$tg9hX?j{ z_6KBPq4XkRdr)Rs1m8vC`6;`y%ssS1bX$?gf?~cV!xzsNts$QrA9e??r=r@#G7}{Z zB=)vxVo8ecT*(hVinylbh;OGHcA$^!iZZf$wDw132UYGPJ9@$2zpRg{J$f-6Wx5aa zG$c+v-TLd%Yd0k_cT1+T|Hy{bzb`8448KHJEvoUEV33R+gC`8RH zd548jM%`k$hteY*ZEa9|G0k{4VF9StgRDt1qnf?7jQ6BuFFU9%{T?3rH=lcDbA$a|!o_t;eH;Ae>8aAsaPq&ZB) zSJ&Xz;WkvH_QMiqBIwImlZ#qWqy>Fr5Ht!Jr{ge7I3gFX9;4erXzook3p)O_OHo-{ zB<;M_-R|3V!tBetxD`K&Y}f#V#If(mGSrSECkJk{tGFmEWG~dtJgcn ziuSsbAvrt?=PtQU=>8PqaB!lNg>aQJYssPRAXEYm<-Ed9=^LQh{EuSPQv*7mwI&a@ zFQe*}1(u90iNBXs{r}N+Ch%1i*W=Gi@%O#BrLC>j1raSI1PExA04}&7hzj!vo1zfb{J&@B-nWE6 zZGXQ%pAUI+XFYS~%$YN1&YUR}j0c^)CC)d__G>Znh~J1C2wU{VmrUM<7aX#!p@-m` zmF3>L*$5}E9O|v`tbTH+pVj52{i01D>)+c;4vNmJpK`pc?ah28z)Mt@wM0dG)aw1b z?d%L~a?j0_-EpU^r$`fHS2WKx>m|0+nL9&NJFqeMOV|&ynEDGQ(O13w z+&3BdsWNvG-j?;Yo^jH~Ui9jl$<4Odc6@~)DGP-$B%SmFeHiMDV#Ud6e#_|HcDVB3 zkeuev-S)IL%UnmJy%iH_Pc|sryQHx$;zc;to^W}Gtt;0uyOH;CFK>pvN%vvc-+Yc% z|6i;(qtKZ?>Tva-G6-UWNy_Z0GOKy;KTH%&u;bbr>(8Jw9{ON{INsH3kTAr z=G6vXY{$XG}`=tB~)CwH=2{pkQil|~eZ`G-q8mYY76DC(hRJ4Irl1J!E%2&JPxdYsorA`o7 z00Qw3BNzCa1Ft27q=_;Q;V4#~`^~k9EJErVB^oxk0_OfBpDxqY_UoMaP3{m$`QnjWgb@+Rt%pj~NVkHEsUU!vXuN_*t!ZnyO(g|yS#!8` zxUD?BdUeHddg(RuT<>w3zfuRLC1TJWkNO>*x%biN51;KGdHCSTGx;b2L*g-W^7sYZ z>^9CMO?|enj+0sp+Y4GI?t%zp=!R1Q*=s2|ncS+-=`xfUuDcJDpGJQPKk~2qqCP9; z)1TJj>$swE39)hhK(=f*Tk)H+*bvd#jS$wf7AkCqk2t`E}HJW@VqY3 zv)I#JcT%0!!)X2yDx5=H$_R9vktffiS3~-&=+j!PVX&uvk&;r^`ub@+VzEHrlcy;% zX3+|_amy>&D5J|8(PaA?G(iqWE*_g3bc%X%uyQT*8+o!-uDei+KKOj2Hv_Mpl^q)( z7J!-FHaA~L3r1#`fqG;E1%guFj3x@FTPZgmtWSb^5-kCoQw$cKbA6 zrpG7cIOLv|rS6z%+PUCJbm~%7oWraBrU=)Xppp%0>wWFeL#VKvW>U&e5%Cl@fphTi zu$?x~G1?CI6UQ(M(5dvnRDJ^QO>V%0g!mMTUP|MJeu&ZU z!F#%xVA)2GZT4h^>n7a{_d3**bCUAB^pbGleu9@r(y6p>rX&_9EA*ruuC*nsfeYd* zW#L+~LVulEA{X0hR3OqB4L*J(R#%)Nx`Zl9LDl;Hbv&)SuU!A?^MTE!5?Mw+!}2h_ zPu-sP?Xqq5sqY6neq}rPpflOBJ|)ocQ#<6pofds!I&*599JARGI$K<=z1*yc^!@E_ z7}-*!q+lf23u;5hzFd^AVphyXRux(`AL@Sbyyr-q{$GPmz_nl1_YmaTM~-ZK8jC|a zeCiEGLF|wbk#_5Q9wkoU$}{CM_f;7Cb$L^QuY1S|I{pSCN+appnU*gShaZwbWu3Hl4HY|sc*>W^zJ0{W!XuNT!bST0eJ$;gjki;{k z!=bq@-q_$*lJ>Z#p+7c9j;jdVFYM9G-AL*ZaV-yZtAHlOaUlX3hX-)HqgEyjX> zKa*PU537{s0Or0X>}kUl8w4YoR~|QA=8JqrZ@~=39f!93)_%R=yPntGzxcbJ>>8k; z`YpJFZnF1$u0z%f+5M$Az7JK|dX|dF0KGV?O)bJx|{DM==%^AF&9KG8sdD!df2(Qh+le{wlkeo zL0=tPk&=QH6<^wV`n9$WggK4y1$~=rapl9mx>j6a1fBJP`Y#HCKCTsSz9{JX45nBR z(07~i_sXH8^HxCiB!!$(bwX@HVJWK-=i+kp5wBC`5MP9Z=QMR!T)=H3*rL8b9pevf zHZIgRQUhDgcQu_MOEfcf<#d=kedCA@xBzp;~ud;0vyKbTz1wlBx=6DdhU;PLmCsQ!b7Pnj5u+)Rfzt7V)j z(Q!SyTsjQ<{~<*}m19%5KOHH2dWYN_R;RE{m-(l@s4)AVf?i+erlm}&j?McR2$AYk z+3ZCpK@TzhshaPm*Rx{Z!d%9~{#c%bSJbv<{{+@XY-{!}bYN-pxWw{WKI3U~uw&K8 zdR{zIv<<=mTeAo15=OBXCN1nQ1vZS1CXW^T3}*36#E%$v`0gf6A8sZ_tF`+8G%)7N{YujGpjM2r?LCI_8e z`%~RnO$&JvC7r#2qe0VI125w*+2Z5B&5VDwH~y1ib=U}^NUcE&%3kJ$VeY;tQBCEK~M|0>{O?ElUD=s_-UvZRb3 zcYb6^RMPx-Hqg%e_>B~a;fLi^=Es2(=)xw>~tG?bfGmH5n?tR{!{g_NBi^%|{$-ZZ>?z z%;%jV73|qOp%3GV^EhXTnnNBgVGF47eOv1k9mzh&h-Azw+4IDy$?Q+fd4b+X_o4*n zd|VLQtcv4R{y@&0F+M@>*j#BE(yZUeb}{u9crfyv@E2X*y2V9*>Jbpk`9<6(Mri9;xp~dvJ2J1gjRcSKza+0nWO+MD*_$JRZ*|^mD4DyadSgpQ zPM}cTimEn?>xjSJK`Ih0(te+9eLm6tVKAer%VfVF#4ICxiRuNsY(*nOe8mMz%1?8a zhST#xE$2;Mt1p9VBQdGAc};A+6CXA3>?^U>N^k{X{!xHrOwtNeVDmPa5Wcd z{-NQp(@;7KFyZs%e)UtlV!=SL@sQIOXR*3d#?$v{G5*#{3J#WETkJHt@YS_}@1Gug zMhiR{%Tw13sq`?Q*mxyDq~R%E#*JM&jAlE2+;Ad8H8$udS@w+2v9^{e%V>{kOuF)rpN zT2jY_cMUd+Pu7uxfln{C9$4b#$B9ox$05~US~b5VwHPZ8?!h8)5pPvb(^1Q?RH*?H zLFqvrmy#>%r;|lrS?9WXwTL8}yo zJMWDWMA@NRvwXHy^07YO&|dp85F5EAr#c1jkXN&mN^s#<{^wF>=jD--_ftxpXlcG` zE{VwpC}NjevmU3(an`xZ?@ld0h3#xQ#sSrr0Tyv9tgxVkP~APJ1-SJZELd(;k7CXE zrr65r_|0G|D;=AS^XezFWEZ6bV#hr>TrW%*d3U@^<<8}fVsy6U7pfpuI)1bj#TpShY8>s--l)zSLQ% zy_P3qq}2IPBZbpmL5fvv-it?sJ=+e~ET=v>=jJ&*YvwcHEx=-08X3dpS+&nz)gt3n9Yw4Q zl*t^x0Gv(Y&zvI`%<03jO|ElzB z^>#R6TywUz9oIX*WL*F7GuF3KdCLdN-lr*BBjG85vaCfvRP5E0zaJ8@s((cTa()Ax z^Z)u6^AAJzG<`VbTP?ml(2h>I(Z2N?lm*-#Q|I8_!K?+Wv~qHOwe4sM69sFeE4!Qr zWM)LS>mD^md+^I0SXuk(CujsXHxd<1=g$J6q3COZ36OXiZ7oV+uBo0(Sy{-VulE-C zkVKvB3vvnWdZsxN7cTTVBJu!S{2P6Z*me$yn=3`ugvGl$PYg&z&GD72O?7bX+2pd^C40q%8@y`#`wwZ@pxmBM#a*zQC=Nx zZT?vOS)gy&WE z&~~^DvZ`48TzGJFd7r`0RZcynEL0*6Tp1@Q43qsK2^ZR+tiVKK6e=e@pR?eb{)< zX5C_1aU=K1Bh8FN>|F&+|5x*&Z+q~h0FS)YDHmnF7yT{z`C;SP=o10Vn%7}KukyhI z&bH=g((tu3X2|8DMsW&}Qq`|_c?VHJgI{Z2r7v>j!m7O&P1(i*Tex1<%@uZ8=lgBn z-b-6QZ}bVV*+|sQZ_2vSn8EoHYg}EbQD1rInC463jeeprBeVT{8LaY&<=df0mcxQ! znZmIiTWrl+4d2Rd^4ih+yRu=i_Yd_q1?=`pxb$OAjPNbflG~>#VRt9}G3Dh%3D%G1 zuO-*6-#gImv)m>ta*s&chr|r!eK{5VcGL*2yYl$^4pB>D`^;P?V<>>?Ns7SX%QT9bVt&GBcrCLU2P8Cad ztj_mQNp1eJVjs-d>>}jwdERHNkJEqR?*B%xc~E5$y* zX_>0>4lv$0gabzTP18RiZ2(~SyRL5%^&$Fce=*v~r<&Zc`4_8?$MQ1OEVn{E#EofY zq;-XQe(3tXKw&1=^L`|k^3GCSldF%xs~%+y$2(c9WqR9Ndi%w%Ax>|(cA3bHr*ypZZ@l5-=5S{0nF$iW9=DRyLsf7E&M|AH@_Rlo_ijB z6nb*$!5oo`O;TuUZo*p4eo!{r!8|fQ06tXfhsR_SF9j%%D zn2eE0iyU!-PY_V8MFp*W$E37#Z)g%RXtw*u>or zMusnv0yAHc!s@00{wbxQ?PJ6qrC`t0LBdT?#XAjFmB2mn%bM{o!nk_%iLjnB z;K${=a0F>B+*!4+Mzd4y9y7L?TE>67a zH)LA#KCoV^vpdSvj?=fjis2Dq*P6EkWjF67tR{<=mGt>HBZ^CWc#+6ZvSlzyvGqwS z#3I?fKEb$ZAgEOzib%)|Gx_4=<y4{kw4&~vt^>8LS7YV3gA zDOolLXWBh1CQ45)o_LnMYCj^Nd?1dk;Cf` z-;mj7b=r?Jy*36(8}E1p+R6W8@}GSJNGv>&th$(byxsh9c&rz6flaAif!pE*su&t$ zZxg;ElOm9C;q?8)RaIbZ-V)l|TG26PSL3Yp;CzI-9^SLp?Xc6JPV%Z$FI=B!ybz;@ z5mNs!seeSFuKp~k`}8&_8$`Y89b5r6x-S(lTtz7ld(HMB*=^NX(`U7Mnw)wxRDra5 z1bp?--QVoInId(fMDCsIacx-*g@YrfDZ zP;0+&yW-9Vro&8;{DLK1YTPPs$W7v_sA5br=`w;Bq0AbE63Jaej*qH2c^OV3xTcME!-WP8(#L z*~%4qX4(sAPTFuF7azD0xd#6(QU#p=p7oyS+Y-TGYPnUaw>FHRY`rmQjJBPi#xBz?O_j0*kb5ZF&nO zRLLFh^APT^qid}=!y6#C?llLf`-z0Q4L#Wp+k0>v(9qnZPQ|!GkC$Am$hAdglz&v) zSiynRq1Fnq_XHM-9BLS@z8({kr^Az7cy_msgx84?LCW`UzkJ6dmA@cfzPFU$zqQ@=`y`f!-@DYy z0^yGDu6;}ZZ-tl_tHjKgcJepq{O$@d^WW$HozCyB5Tldw3x2HS3H0saN9LCY-bg9V z3UNxTBtxD&ANBg+&40>c!oeL;^DFkLh1oV*kpe`hl_PWAv=?pNNlirWCxgTJl@u zZ;!tv=6AvGD*4xM@vw2^`rZ70Y9ap%?dNCS9C3jYcr|{Hw8AA~!yP|Q9=~ASQP(?t zJ{w!`p4Lu=lf>@Wf_LWs$bwfT+(+P%&Ef$X`5s%vLJlJBGIox7tGFj}c~jM1c8X`n zPVsVfidB2r>usW5Z=={FzER9^H;Qsh$0pHcuh?AZ?GKko8Fzme9aFP{{ozV?e~1Qx z{o%)Cu*+81zPGIz?@E~cp}Rf&R&NiN%l7caP_%c=io4?Wi?a24NN$(&R7Am7=9r4j zNLRgQTU~x5{yoY?0X1NZOgMh#y42*e3(N4kq;h=mubs? z%z7X@EVs;!(#Wl`0*B?-@`G9b`;t``Q~le?p8yXFxfVFmV+A@T6i8a%aj?t!KFk*X zu=0=fbQkxdVYafqXUJBo2|b=J$dODZA({ta3;{8J5L=v;h?{9)vWPs)GV zX1x|yixv58sBJV=tDB^*gw0l!0A)X{vl7grO{nJB|Bu_se*;!8?k7ZBbum9D0 zI+z;O6$#Z<3pvF1SM9H-tPtOCJ^k`)s^9TNLg(W3C(@6%0liSbSw#MJ*3)l}X zU`NqE`Q$h(w%)zmoxUWinPThR#XN|SFdnkMyJ9)}yCM*(-r|(6&2((sDO0RLt=!ly zelQDrp5-BSKMS`*`p_WKw~$&@M_R+I@|R>0C0o)CPmdq&yKa|6Ow4jcH>aMviV}_f zky0uDbSW2Jq6^*V*#3kv*jZ=$2C&Bui!GbV(l%}VQzzzPTYNBGFyY_WUy_S5xxpv5 z#OnCJB&VUz3T@-A4Xw3qnq*GURo+rTrvGmgVtF7&it?UbTt1LiNy5CQ@C8;Ex7??6 z))X*j4q7#;&iIiaZig7Qy&>43Wz22GN=(=1SqSk|fst)c7e?;sObf%4bd5F-i#cE7 zGKD)cZmb8^ni*I3;!}nFPy*r1T0#Zub>W*SAX1U$f!9j+Ijs?wLD35VF;w5XxVAJ^&hnhU zNp_CkM;0#|l6Eeo(gUx{Ar}8qno+D&2@T+a%&C{cp}id=clC~3HO9K)L+yV^9uo^S z^A6|oTKtgJd~(-&R93OdEw?O#g9fZ3#L?8krP@UEVeMRJDdJB#M-w|#!P_#_C1QZ* zK6hl*Fw=zWh9_8unf->CmefqqsUTb`wy`ays=ABqvJ1S*vs#Vj0DAnf*s>7CPS&5&oN%!*Nva>Ym2d(I( zD!A8+0oEv*)a#_iE|1g5m@Uw_2m6N)R;}F1kx{$YDU;Xtu7(tp6bC-U0J z4u_!ek^V!`DB!9~XelnA>iMVbGxbX$qecX|tP$E;nKbXlW7u0JuCcJc548-mW*sX8 z5Geu^JXIqWvBAhs^Kwg_O_xPR_QcrqyV&^483-nocwFM#rbF!zsA?%T03TOuV)%Iv z1*^U#Ok+-VG6wXrsvl=ivG=5U&b#&uIJ@Z(w!}`^&9Qf2qY@x4`3NnND{o63(P9*&frr>7DhM ztMK3zfQI@4k*U7uJzzhMFMt#3h$mmC2M1s(c{3LzsJk1*HglOB8PXcv7NZZY$)?%` z2d$Yhvv4rbnI3Za7jv*apA`R7s%-8j@+I#=akSM`EZeAAsJ2ofgPMv%jp;J&wEZHq zS0i>j=y|BFx{B%`G7ivb!RMaY4lmCcaBjsbLl_-r92tf<2b)(JIxVic3(2q=+0@`~ zfgH1|58@cSNKy*Ad)2#asl5dDSrjkt>Cu*HV%P70{hCz|8`6c=Lq&0gL zMoXQYRdC&3KTH9cNz?M*!b&XiG@py)Q~fyrrKac6Bj+lOpE3U5vrI%w_?S)q7twkD zl#3#RR=6Fn?m#)0pM?(fpN0>#kL-s+%V4ITr{iQHGx~K5&t}h99vSrK=u)XqJZXjA z^1(o?As>gpdwO&U@pqjlTD+>Wfwo}r)J}`!Bl;7X;TlV4U!zrhE#WB3Fw=WST~sEg z1Z3t{%d^BRaek)`pfBKqM=mx}r_dcHh6eMB% zWBo@e&g!7-v5Z)(@n-EQL- zuj@_YtdVfwb3dMZvdsQEn91sK)~Mw&(McOkTF=EuSb9Gout*(6ZXG?pR~wxBcw8H%uSq@(X;NUybCIfpb5ae1X>oj?cwuSX;mCLjY%@kSg7>{@w$RZ40bX1=B0~Y zAZ;lvfm~KWv@_Vx=z!~3D8ZkQm_8#gc}|5?5872%&}N_AW_Kut$|^EJ_#B45;xVHP z%YK?W4nr$074S}pH19kjO-Y`yF}bB8gWlrWNZmol-H$nZW2Y(OtdXL)T3B70jLGQ#yWQ zT~!wyLMy}7lhDL9(E`FC*Q_6!-^@C~e7)1dcZMl~oO&32??*h*INm6(lDzfB@T>d1 z^2;Rc@bNs)8}Db^Pq#d(nc05&N-up}`{|Zf|Iqf+TfOu%+E0(sV@6VXwDAb|dco`O z2OLwh)88L^^f)gmJ-P=tTzNAAza7+i55Ad6`D65b=RgfJN_jvHki06L|noGzZeGoh(e8=!}zek%xrR?GK_hS!#XC$RZI~2BG-;Mz; z{&sUiBVJ#03i0i=|6?!zvZVYhRb9G1F9;gx|JN(>JG!2=xC(xfxE>!X>Cfx*kzKz0 ztH~F=N2-dMzv%H9XAS3qfKN0TC)IhD(Fy0JGJZ$M6B}Q6MaJF7Y3*6XF$pTe`E0gv z{}XFa=#zJO<%-RN_&cXqo%JXV(wlU6g@p5Un432bN;sjcw_X@{Xs?5=z1**xHToW@ zpLDsz(;=}piTp~^H4Ghq!8IgmlTLrn%Q#B;4!V5C5zA-LhNbh+4bxBEH`7n)yw^|D zf6wO8j0fjsi#a5lT30+DRS>$l)#WGS@1bw8>F=?{y2D()L1S3nMPI4);77%V9HumihIaVUjrxaBVTlj!3=&9CjDcU>ZC zj5=;LCbgBO+q%{?7UbnqZLl9dU)B6_KDR66pHD1R3mT{RqkYHwQiii9z7Ia6#$PCh zQwjJxJip(~f34*2*EavELzP?!JPHyDmQCtp%}c-3U}Lx%%A1vO{(vC#@5=9-Eah<; zC7bl&D&w&7yeS%QKWHs1kwLH-gyq3}j{BEQ>Wtb`kA7{}OQ~Ur?t?3j(*D0GzjJaz z`HLxE-KIS5@o7JD1y5=lLhxYFgrH%lpLC+_J0yB6Yu*VM6L)OFZr$xrUtOIiKLF4F zvc9h_NH}j4{9f+Dhtt<1!*_;;Z)zGarq*xHso#**u@Oa}{2A&Kh#RAw-xEP;Ce_Es zFZv*~mB62+z5CquIvlONv8KHaRG)#IJ7mc!vI6!?OXp^4+AC$38~%L4^ z2Du6Ik^1qLtKm(==VA3T$npB6a@wdJohsKG>-Xi{Y z-nBzJxNu|u#~=E5_HYGzcw|QCJ3P9@@Mbfr+?>Yb?i`K-%Fn|{u+h#x)NC2LK>Nv^ zn#OXRaCg4gF0jhCn}WtxttiE?dd<3HyfHRjvy#V4P2n5fr!T88l@b`V=D!MijH9LN zK4J1xK2aOdu$7Cm3Oh1Z__?r){02Kb6ife)J(9%&MyF+vwv>0MaoqX7`s5n99@cO5Eh(AHB0gd{9~(bUZt?C#u8)ffF?s9g@EI5czNH#IZ=rDk7vQ+8 zxlZ5~`1&6P-^3m)(Xq>${{?&^FRGW(sLEl}6G%`?xCr427M?t=e)n(ECrLUBciRfu z!G~^d@PC;9crQP9@e%<%QvLECwua|>=6_l8)BiTvzF2-;wjL>)U>QDmOLnp=O@fx%q;`d~qBYd1ck!w)y)WEr0PS z&r`(ot;hlBKwilc^C;VylUJvIf2FSw2c7D?CccBtuk;1s>bmkGE5AB#194XVukx^p z=66nB3UyfdkL8KZz{>xV*4qFiLGMSaO4^u^x7XWCBbszyg-;fCn(Y2{6uOaHRg+zi|fgQ_8B0K8gD)>}3EW zVZCVk9Ud)K_61`y%l%xHUXI;pjOS{4!<5?VhkTE+!*^!x9#WESRm-7nct{cVgqx5PSw`f)E`%BsTWbyu&CUPwUJ1CH%%yI@F8`J!0$9o2^er22{x z*JF>3zu@POot;{2*g0(Lke4PYGc^VM=xnf>&$a`>+8EYvIz z932T_@gEuP5+K6@uB@f##OslgUn6gH5Shl!<`UsS)p(w?UyjV{zs_yZAVPIx?I!jL zH?||_xn5piP0>q&E8j7joP&#o3pm1AKl%$K*i&pV?mXLP=%CMThWm5QnZ-3+rn-gr z0Ln5u0Aci$?npf34+RIHEa{niWYP2+@A2#!*>v|MvbTH{=|YVrtAqthxa<^X|EJed zM0loa0um<S#h0u z?i@Wo&IF(Vae&shHmQT>>iKbQQY;V3X-PX@6+266>ZbiwnAQ8VFGOi90b=|uSf+x$ zTQl(2l*eyDO#_8(hZMaif^eL zNE@7eiyf^_*KY-Q?#PGnD9o@dwr=t&JuMa0_B3Dt67yMoB63G~a8C1QF?mjCKx43G zB_oVGKm<-YxSt2U>ah%y>c)H3mDJ`IJ6oj!(z5LSgR`tqtrMc{3{%Jho-9)8Goi-Y4fD%1B-$Fymu7CY}1e0<-@cG<_sr>c7|D)L>QgVRG7Moh-n z6g!_PzodkRpv%WG$&egXLz7;v_~?23NX!`?71WLiID2^LAts;5-5<#Fym*mdS#wFj z7x(oEmhB2Uhl2Ud7(kW!_NY0~d(c;rg9X9VBD|O8;0HA;kbl6QzF#1p+E`llEd@%; zwo-s%Qszd=Bm%kN0N*vAOiQ5C;v2A7k##G1J(Y{zE=Z zl^3XrEOi&L`u#dh{SE48d>aOH-tc7WQFlGja(oaQf~^{!7s>m5!NfIyegKNpXgPovXfv=@xrVvC)m=8bj%&(mJ97>lD~ zXK8aDMmYD&d^Y&NGheuWN&e?*=~RsntL9gvsVQg1aNGHvB;39uD^1vc=wFGk7}e(3 zVepp!U2(y-X^)kbZQ_wW>Q)Q$q3X0Utgy;*1e-X7kY2gYNyaOJjYGBC9H4i+F-uYP{WTU ziqC6ppBp7Ff5e8{qi;O|=1tTwkkfu<1QmS{%;#=Oy`BHHT@ami472Or4B^Y==PN%X z=FPmj=!(p|b5$$jEHe-ET19R%FCPrDaf#E1ZaoYjXODpy zCTjRycs0k0Qw=QPneT+P+?o?`wl|NIaVjnNcH$&nTg?gR3kAtaTaq6IZEEJd zW2Wj*1D%Yb)``7Nxb5$w;52a-qssc5PVv)7Cq0LSr>=StKXFwC-6MN z!R4umTi%kq@y!1DUA$v=q{d87YLwk`g7`?1?4NZ^PdSvb!*jJH=^edmqlS@roVx2X z^O2mo6GASzjq`lW1Z{0h_dF$ok<(9KoSM?ynf2BVU&~JI6a4pv?#WH5*okzVUcMzX zxX2eD44J|sUlx(twWN>-N8|us3#hU$QGL1pB8T=gM;FAnLZ955403$0Td8FagD(o}9CdRuQihyG|7W*62@U_Lqq)TAtx4*k8%TyPDvq zF@-CQDe6mGrmQ!YvRlb&(BQc=5hK_4gt^uK}VNvCzvun0qIP^ZVixm>^*by)eAr963Y{}%la zjX?r`(Ug_A{}SRHuOH}Yf5$Q9nD4XWkmnn4{|OG7s2T}<37={JkACY9P@UdxNv2pXk1Xwzz;ReyyPqOY<3UPGqoZ=9)#92X3~n8ehC%P_8qrbOP(*|yD?52vz)@cJOFfjg&^S5>ltzC(e0 z9yc;Og?|Rh-Y;>ssX>$tz^X*4r!_OG4y&N%S6%rb?C%2*8o#=2pxV$uT!ESnCG)th z;J4D9BQfz!Wpy+5OHp};Hh~{}FZ!88W64^F?>S#)uoN7fesT=`TqPM3=_f^+{2uhv z@04Wv`Ck2bI^)0W&r9`3=uf(y58(-!YM7p|{wm3t*rD^J&F|5nTYi`{KH7g=cu)@a zlh~szx6?SJOIjIXtJJY4$5tu5EL=J$dBbPcD&8!e(LI=5|HA)^mb)@OU1hHA42vd)P0*Sv~H?5 z?i-T~D7!)MH|iDL+b_U3Cwxtx=B;ghL7f0z%sdi#?0fXDhUSu~{onNOF+`X4`Ue<) z1`Je(VgCg3Bz3C0v{LrTQTo*})-QGSN%X<&PmRVxR=Ejrz8GhT?efEy@nI!B`aj`^ ze_!bGL#OaA{V!qD1zs_oc|jwetjb<9^x$UnHwlaK{rJ3c87khpd*LHA@pe%KPtGry;O&RK z{YlxDW_kBd?|Vlf1?mPj@m@+2a^=9G-fTJpD@_VqW`6v7r{I|z{+n@6VOi#p29KJaJ zJ(GnK_*2?;=mnfyeV-0(&ThkhwRq2doTrbuHY<8Ep+NbkCG!~n{dL!5{=0BM`}`Mw zpW(atKZrWv>-mk*3+Meu{P(L?kZ{-;z)|?`0S+yW#Gf#}m9veoeET1!A4ScArG026#AILxpICoqWpT!(nh~RgOP40zReF$51g#- zn++_Hka;Mu+r^UX_D40= z8>!Cu6Q!`f^UvVBVYaS>w=Z5(69t5Kkkn9a9O9WcRo@wV8czN^-5BtU)^!Z;$g9DF z2~IgxP8Y1VdE0J)q&Q;_vnN@kcdutqH^onMi#K!4!)$xqJ{x1klIf?pp z_3QYG*AD+%B!-ykT>&@jU*r~RZkoN@U+__C3NJjQfyCl5c=E>igO*H-M`IJ2fsf7N zQF8CkU6di5Udt&S4EI_gwRGeW1#0XhAAnTOYZ6W2M)4QteN+*oClos#i8xKQXiKfXY$Sa2|^|HYJl}X z9p+?yF;bCJ=%10O*8I|(k%^{ktdx#S8)#HX^*b_@{}DQlqjgCgNb2R0t^-RW!&>dv zJ-6^dr*Q3S0&i1^(|4JK_I%EBg#XfUh41sjN$LmkwF?n%N(6R9YszmAaDL(JbXM^gnIQJE9wqBi%GU+Lz7pqaUN4l#Akk+w zcailfRL>Q2&fR!>QDvZt4n|IC46NB42&V;WS}HaKJ7OlvZA`cNfRnbX*t)ZLXEB#> zJJVRj@3_G|5U@jln$M`YwI=7q0j&wBWVc!`#v!52__4!T914N#Q^Wuw z|J~{JhSklMhfnLHX}j!anx9n21>XM5dmj`JPCQ{m-;dFqpxa|b^kerL%u99vj8g@b zQ3U5|^sm8;K>j)YSH+-!cgEcag3r0ZxxR}3p||BIDD;ikMt`qYDFw07$x8{6IEJ4_ ze;59WRRD#LBiL$!7Qw$r(DCOGwDSG=RK?HvqVf=hBZ*AmUO)dkgAnPpnX!vLNR*Ms zxnmw!g&FpNY1Yh2ct{{Jvr6(8O7+&vZ6+#(IHHKNW_HTZxkxS&&puUl!A@(&%~*Qx z_P>ki01gD|@a}*TdXZ=`)!U4((0l)0Q6BiPsvnh}g}Jw`pLQ7qUF6!4Q9JF>?V0kl z%a-EZOW;;FGXg?{w};HrA~&Nv2q1a3l%gKs&i`k4)aK2Ll#_yyBCh7|(KzDr%|iuu`N*lJXW$264go(J(f%O{dhO^z)N(Y^+S<> z``P`Ew`v01aOV&gqfD$pteQ*YQ(QTO>N<#egDJlmV6PWb19^i{9>0u??1b%Tc0l67 z*_X&qq$G4P z;l?k~v&Bn|O7Bgq?2pN}jO4FF!o1dxm@oj~)ds1Nn7w4%dpM zuJ!9*F;Khxk=2@j?f^?7$>+?ke&E?fw$lN1F&_GCN8~{NbTXMQ5bQ6DedWy0h2Ug= zlFK96;NOlZovoU0xt9-T97|1c&dB*xAWVlEc$J`&(03a2eKIt}I@Q|RJ!NvIV(k&* z2f(92g%!zr3$r#s?u+=JqJk~D%ccL&-Mo~aVC2Geq@-LC8E`Rgs93W;BBLBaJDb$I zoh7&bwN*kYg*j3vQi71+`2R!{DG%r$cR1bWb*Klm$F~eN%hu@b7dOq%^OuiHkw*O{&T4ro8m#-*7ToDSg0jL8MSN= ztp#XpwoJnL@5)e$@lAJY=Gj!`afh(Xh(b`6GP%oce^Zklyt|Nal8}`r$kJ{Rx>GIm zkt<+@{XgIbWOWY|EQ6~^wH%~%-mSA7gv&}=^c$wO$d7^gO=*j8nE~E*m*#(~-XmYM ziKbnA>~7d;)jTJ&J9MZ64?Gbnady^kNH2~&)}e}WG&on5jQ;+I`LRM#7hAQk@a$g` z6@8L2y1%tJHJ1Jgp;pqx-Tv=Zf*h+lBK>t5)tPvJ7MB!~VLWjRt$st^KKlaIUw6Pi zK-!A%T6h2Kd}(i1516_v;m6WkcZvByW^}XWjRKv3*OA!b(6S;x+zqd`LQTRd8PJm2 z-W1wGT=Z34qC`fsYo6vdu(^s$#A^<#QBPGk)nz^M9#fRe!a#aj^9Hp<>`v1^-%m?c zwK(n=fUk=c{Bj~1b#$fG0*1gborY*O70~YxIA*;F9LvCG?F1+_`zHcNFI@yU$bXf| zpGN*mb^fQwKd!ibS?017-?$P-mpVsE?SbQX^gG{s6FS_bpHvXemU@tqmS`zy8Edu{ zQ+W$kWGTBx`Zref33~D9dmcH1;VxPH=;NE_Gh_0z$W_==22WiPKzF@{S7n6#TsOi3*V)xvv14{Og~^&yvrdt`Os_KB~YcNWkwiT#G0vy zSk#r8^!ZTq3_4`i(dl2vzQU>wYQj6DU))ybab_7!l{_(#$Q(DFVKlBMvLZ%LhVv$* zXG!H5CVh|aS%@gwaL{W<)>RQI)EcrxpM@)!_GJ~yjQ$`7kIA&qC_-N_^`u5GlD4$m zY8K}wO#1yMJuNykmLB#Whb6-T;m>wKb_QXKr>3r9*u!0R{tK`QvZMT1tZ74tlqCqW zpvBf(&gk@T_GctHLp#qGOj&O=X28Z5I-@h4E3%^3Y081aevtx_FN<8*KQNtE2gaD~ zl^)Ky^<&Mtjm{cmZZxpoBaOQY9yXO3!aQ%$asILVcu_&Zs+A(}1K;G+I7??L_PXI2 znO6rHBl7Wf726Nn8N&Rnz(Y`8UUV7^%Eb@UIz>%IbqHnN`B%p2O#m1B((Ie~g6yxB zpUB;Kp@GNW4VcSPkFC9i`U;CA`*)hw@jo*mmomLfnIFjy%CS%{@>7_peLe*&qCHMH zYqy|NzYL^GMt~WX-d2DKL{4Fg^S1HcrKK0%OArC(fL~hD z0?c6c5#36pNonIrnW~QeLirZi#uaQfBh;`o_p_FpHM&TzFo#`dpH_laz|B(F$60`O>1}W!z5yf6@CXFniI7@-6qnS-5VYI%*v&Ey@c`;8Xn5 zj1>h=xG+GpEc#JPC&l3JBc%*K{SiTHRws@A^pe^e8M^G_q_%Z%ibdJd)T5@d19Np# z+xUro4j^V+w{vG1YFcj+nVe-%H`+eid6OHI@~`7v{I%CKdr9nHL)D;ej&bwsc&lc|k=v0cazrq+r2?779fD*kF;0%&))0wibH|<>Ew$uEmx4%}8Zl&Hx;mEt$60h7R!b=s^ zq!@mCu4$sXE;c+Z`VF`?^>#HWev^_K{S*Mym8P!YxR_EQ>Qa}Qi0%?GQ6hSoi0zd` z+$0gFn21uzktGq2rchCai5(_D$)k(RU|>w)lg;YG?Ag_q%^K{RCC6HFs5K^Hq}1Ff z5sOX4(^B(piTH1 zR)`oxX)WGYl`=a1P4H_ydH*h%SP6sjs!q_^F1wvZo!>mR~eto~QJ3)jhB$cK2! zbNtT}!k<62;SB^&>pT^^1D#Yvq9?phGz!WygfE6iWZIEQS(1$9)F??ZD$AeWqjOcP zlPyKR*p>oYq0o{dZ!dwuqVQ*eh{syM%$co+TGer&B*7k{vb~d{B&3XIzC@z*BI%Tf zwF=u=V)Kfy!Yc&LE#fYw}O|rwD%i8K!lsdXe-pKE9a!@tCa6 z>W%N3r-92G-_Q6kUG`)0(oYAlm1|2BYqj(D{Rh6TytI) z>3VF?S*E&({D?x*oIWJbO8{efaf`0WC87K6QO&o1aH(cxxu%*XzBN~PKbdOU;R=sS zR*!1t@?ogv_k`4`!W4ySj1w=je$)kw`kJ+>AP;Tnwr9~Q4?t78~oyNvr? z(AqGn!ST5!CvRWl(vvW#7&(0?*fZSZ6d`;LK+xC-O1Q$&pi?64(M_$k&u?eUQ7mWDCCf4kAh7F7wHK6!XOQMY^%hWuVloU2T)0#j7CM^);!3V%k@Wsy_PY<{N= zJr<7)M)EFV5`U+MAY3?5=S)A-F7Tg2aN;2Rnod27y;XIIsH=K^DO7{BYvY zo67kq;D_^$yC0Cf-){FM_1+$TF6ea=305_JM9CFDhp@xgVMQ5Y` z|4487-SdJ06QH%&dBN`A>G9btKjFd&kAR1Q%^Vb*Ai3C26QMd0W++Dx7N(^Qe>|~T zA0$_4xav2g1@jxCH;dSca470796INzNA)C>FVSzap&L$*;{*urewY&iYhJ1~?=slU zV(ETwlz{zs7oI5Yv&j#yLw?@V1osofVn|{S5X>>bg9Nio5VNcwSd%o02AjdX>8{PVF4fCGs%N9#+=&z8elV6M`l zcU}39ktTC#e*SN0#K@H* zL9gSU_x?d`j?3pD;U=<JWYHfd?` zv;(s#7wPtnm=$OQA1_&$Cw-%v-b3ZLVQ!M7pLMiUrG$`4}3~Je#MCltrbb7k>M@a zRJHI~z~|{$Xh~9ENpiBUke^2X1^nn{5nLyWIIrIpt&*sP2lyj{^|F!8x1vu6=!)mm zOCVKs+2ZO2?8tzFt(>vj(>JH=B;iXLGspjxWY=~Z+grQaq5{c~lZq#~-9GHQUOMaVOh|w?OWX zzLp}{9drj-VA}VVdNVk`(Ov&>8PsP5H(=`zrL|`7SSN@n%%Ohp(UG6%^?Cq{1dvsz z$(ESE)Sxw zJ&3*mqR0R)<4i@)8~!bM_IP=|^YZMD<)K%@kxT7XFV8_Q4-1k1O%(rm_8WZjOt@7o50Ak-a50ZHh(4l0CQ~+2hnR*yneV(M1AQ{u6NIL|i}VJI5g~K`|odJvE@RT|O@&u-u+XQ=& zZs)v2m7ej#owrDw$D<3v(whG)`AOQmTQ%F{U>L2*;c|-|9+DaGA(@1>!huOTl`~;3g9a2goSNSe;2D}?|vhU`T*fO2}UEF83ph0?zLYq4AvJEE? zUB;6Xh`iFru*363N!nP_5A`LMOZ6rB^|irNIKjs%3qlD*(tiXJhEOD0M|Z0BpJdJI zAl;Aj&AUZZZs|{OyehUehHv|D-8nVLYYx%h2tP$_zjwJHF#BVEf{|ZjmSRGKE147M z(@IIQ|*F%*372}x)jL?A5~qS8SSixpor1hpIV-$v+acy1tLSUc=aXKBVcJzsE#7M z)yd;197?j%<}?lyNe(u9vE4Y#&^MkgLbsCawG{4^1su9Trhu@y=!3#*nQkkw4Pc;m z)=IyYMpp=Ld&9(i>c#~jLpf8Lb2mVtmy#7=4hIn-@Lau4pa}byH!=yl``!*Nsp@=H zm8~fiyBL_~Nh8Yx@)N1d3hh6RM?feh_T1M&J3W`T~4%{lQ99p|xotnHBA zmWtMeN!x-WRilCX7VAE>hzC@(LOSSUeeJuGxX}J%t?FAqOlUtFq#Fpx-X=${gv0rw zGPZI>Fo8<;%e{qN!yDNvSF%^GJj7O*D<>27@y#0^l?Tx)kj!SelFf4E0g~A*SMIO1 z4{!`yu^@Vo(;s?0j+UWJj*5U1`H^?)gdPV_O}>DMPK7YTD`1~ z-?Pu5Mty$jKbcT4JfJE1x+KpbIT-HSOOl<2Vuv?AfYF+F4g7YZoLC=EO2Angy@+TH zHlU`H<|l2>5_A>7S?sGLHWi8i7KspmL%QT0hww|6Z9yv>2s!JFs)y(e`Tf>!cY*)L2Uk5Mui8DssWLTRbC($ z2-ynbiD9w7{)-$R2pMz`;B-KCfdgp-5V1!M`;Vt2UI?t2Kc^g(!w`5 zxo@Xf>V^jJ73UP2s%7?&(_Jj1>yTEJ&Cw)U{}f;J29Y-+gRsl;uW68#Z;&rKMGy03 z0v)O|EC8|dB8`4By06tm$0U-0K<$>I^7rfK1xg z)ODn4&yAIP$dr1VQf>#1BMncDgCGd$8n?TTSYPBqCiP{^+&V!0c(IXiPB~T+<5^N8 zyfoyV-_{8AiNAanfcry2eT~tpiIYL2^kbA(d&~`s;?_|;#eA;@*@$^P7Q;#ZZKN~v zOXUZ9ieO{{vv~w66c#1J1TK*zvnUA@INKEHstX9e8&82bKhU}~ZBzjS< zSseC+1gFNQylPI3@!i3wT$k5-fr#5+1=CD*-W${`z153PsO5O;*NRkYUP)eWYu?Db z3uG=dNvKc##w-&$AMWaFk}cbXkjw3Lh!A>HQ2kq}SB{(M&Bp+b8sth+)!kyKfRQNz z!g{stIzAknBhmgc4v*CH3y2UCQSHrxUiL({bt2{X$>c|L2c2Zi%T>i1F@lF#ng>hh zZ<>&ku2v3>?Y3my6NpL{h~b7%!llw$sO1>z{;Re4T6nx*Ip<@ryo*0T{?qG-=pYfl z-5}?Fo7E$L-29#=KgjtHvi|g~dJDs?ZoPZWm1Z&%wy?&RBE!E`i`>{KC!bP_P}F8C z8#{o;F!4sg?~S(S%0fg05@yW$*O1Az%%Kqjfsu6Jjj?yeWg4rkAmGFr|+ zG-0*e(Yjg$a;P)ARD*e^`+{fhtjMIW5%eT{< zA57o6R^wMA1I;36{OVdf$>FyW(T1T*(&R1IUC&;FL@Zj#v2s3JWaC1!N)jUOFFhOX z_00AHZm02hNmhvrhX0t$ukHL&|KRVh)=S~;Zc)&AKJOu^)$uR+r{K;14}RpI`cjCg z?7F->J+o|Iv&~I+G@9$wzCQ{@E}e3dq~OBQrN7>)ej5pC*NGk#>g_g>s?LIqW3+aop*-L8S$9{Lb~dVChM58z}tI!6{67vD^5 z8y~6(u}+8snOV9F_~iE=c-fzpR@5yyMqRcG7!E&bc3U2ATJBEEp!f>DG>WGSMmYKHYNrXY6|9|dskE91 z(;af8tYLa3#^gR0IFn&AhrNQY?Ej&6<3Eu3`e`D*Ko5?)t$Cvnfi%k+?Q=QS=v0?s zi4W-Pf4%{~(#ni;=~1R;T@~m^mLXvFeTqc2U(q}&J0#`K-YGnb0xrALsh(HvmT3VB zt~mOj*8~zm-!cm8me>|(C+9$$C(tfHPa9|2?)hSH; z>Fvryzwl~EsK7nH&K~tW%J(@+`E1hcu*hq&U+o}Y)^hKB7QXe}>xt=`uJvHrc(FW(3GQ^ZEm-cO_ZB<27R z9OPp^5NQZr00ORZWS1BST>M7P(Z{DSmMt!l^8_G+h?drtoWzJ8bamT(f5IX29zd?0bD?)~Tn0UrxvRl75m&x3qYW(n0 zvD((c66d6FP}L-ek%ilwE_1Xqt}*43T(g!(?oCTof7dx=IZ6jDs#R){qRm@8`9zs$H8FjrOaBMeB=Us%9fQkako+uJR3EBLI-k~eZ$n%A?e>4b_C38K zJM6z5q#{t(ECZL6+pgj9Z$<`|7w0f0?#ZQe*~O>vpvpsndU>^tgzO*QE7luhXUiy{ zLa}Ni1mx8!$-w08xtP@2enbYtRU#3fK)ZaTU}<)de1#tpd0|mXI#pUfkX1T7e}c~a z;#m0s4Y|}%9}LgEQS!_65AL6jCp@43QV6ST{&Go?cjFq=>h%(t#iy>6=5~$nnY;px zddZ~Il9#?IA-zHU)}&LZm;Px&dcB%Rx~y|O#O_@L(D>x_Y!_1VFyM%;_Bm@C#k8dS;wtC`Wvm2_>rDdKx zcD+a&+G4QpQ{|#^S*j|THo@>u^D>!;1JP^%nvg0csE-JXz^8P^EvQT)Lfz9*%GCnS09S>J?AN*~Q4aUzzg_QT6%x!__5)?jh zoC!W*ll$=+qF!VI$|h*0L~r!iOFbEL7y_ z;xU`xuC(uJQ?QA8Jl6hZor3o$2i{ee=+PRFG=;wMFQ(N2 zSwQEg?qyl!sC?>bA*IX-k_5mMlKO%q>5baf6BPVOY!Fw`jD{j4HZga-6g9(W04;WR6h}1@iFyJ%8s{s^^#MHe0XIJzoTA2uQ81s?*1_OC+yt)nwif_Jid~ zwB^Rh00n7LvX6y0r)jzpe*r1ChOXH4ZEnvV!Jw3)I6c0B=zr7@+hrP{%Y?2=^fSI` zJM5u=Mw*Pv={(BHe=}p@?4@1?K|@V5-j)>hcK}oh`82>sPf_r=;G7RQ+DkJJNK}4> z>w2)I^*5K^z8~M?M8*C;;`^#!rsI3shXxNbXz`WX1ob0P>Jjg}}poYlnRT zyO1KDBu7d-9fNqvBgKu^`6U)JyNT#5DS0f4w;lVrLI8*A=-(viKA!(8?8pD9Y+r(m zUk6CV3&9XwoNTaR{D}joja^owpJ{zi$v0JBSz3J+srtH}t~guj8-0ZOE|dCR;QWHF zPxOLm;urBur+xIvVE)(Q5roc7XquctS5)S@4=Le!1VY#G5sMt9AW7&S?N1Bkiig~7 z?BwEl26mP5z!@(2wes(OTF4pg)$$$-5Xy(}$mFe}pvlSk<#zC`!_PNRK^1keAk+3V z!JNtQf>_y^B-;;9b7pqIc-rKiTpxm(gHK_&_5rwzr!HR>CyhFKkZQlkAD%yvq^S1; z`JuA-ysOg}OK$tFPtFl%W<5C#SWFEWg5-yptE5rU)?7{X=SX*?tbbIoPc zh4_Yy)XY`6q=TCGET2yt6D$9(MCeFb(=x2Qr7}-xpBjZ1WAUd%rekPN@FZ607XOWH z&VGi~je2d#Iu_Aq|4R~IdQ)sib-e5Ks3=$^9TJ#L+jTQoPgEh%i*FLa__b}pMB;d> zmL^<+YH>GF;@}t%eSIJt1Tc`Eng@7lSuSL6ztKO6({`cO&T83GIyCV*}e`g*o z!^cbb5nW966A<3Obj_8)eV|JFppX~s@IMjXy@yIQFhN2U{m`mb`12TCLhN?UUB+zSrG_L?XT@TKRK#rNk;}AMadKqw#7Cz z&`A`U4%EOaaP=w#j!qZ^_;iHQyA%ffBV`q+wOb@$j`A4|6YNT9vCHi>s|82t=Wn!X z{GISU32B0)Bz#Yv?+)?*FZdq5_(<^ea^Q=8<0E|iguDGmZ9S(G{vePJ;3@y80 z8v-|TRuIZSpMMf^W_wUaax!DTDSU?XXp7qQASl1=^mrM^N@Zt21W%{2s)jF&dkt8v z0`og7nP!}+V|}w_i^yk2KSXPOt4QPnMn=p`n1Z&lZ*I1W1#4S%%?jrDp7Ux-2%O$x z2RM5Zo2ag3i_L9ClHuLJ- z`GrrC@_72zXOCD#j)!>ukIz02glX|D3EO<}bKoe=Ulr=oz1OiK;0*so#p|-DsbD?F zU!`;^1SRV15Y@TzQ>mwE_S+>3$e#W_Kl9yOA{@-6}aHvHg_>}>ab)qhgp*elb@FITtS2L zoF`pEKy7?ZCQiwvPiQheX=-8GyxDhU3csoQPBafB=c&vcHz6pRxSb}%x?@VOi{)vC zJk5~lODsid9vkL96zGTg!aBaViF4!uLy>3`>6>stED6-8cbV){oV)ec}L>s_WU zz&)#Z=B?P?TCvZG^=Z&L(|Be7g$V*C3SKJ6{fdOklS!{hnX*o;5UU#8>r9u2WSL@l z$NW)%P^ZAS+A;)ux?OdRbwmUgGn*U-E0?K#P;26aMV zz(~9VvDddrkIgna@|nl%zFM+0k)5*W`^ErJBj0{zPP+<^2uis!BSl zN;Ys7NLVHpY>=|9s$@HnAt(uZd*_i$(IoMprWS58Bjoc0J)Z~tpBr~SjAX!|m^fDO zhgXPEUrP$J%P!*Z%{JNAVb-XQwgsab#UYcUItxBiZuBuC-z?ZC!)4SLN)cZ83BMW; z4;ZN+5LxL7aA3&)Ztaq4EOfR&-Y`c{f+Wcu6Pr31cbRMD&x8v-V`R<=%4QtLe9rZZ zj@@)2A#&-jig{(STU(OJd#(lJB^f1r_H6bpq$BMMifO?TO!(?)7fUku1u z<{9{yHn(T1p$0#fT&IlLks>LKj9BysI+Y|dfx#D)z3(8K{$n8xW!E;XB~n>X$u4Wr zWGSnS+cM3SE2*bKICGzphVw+7#LzuV*|krXZ&7q;=`7BDc0hkejpaL|mH9o-9>{kQ|M0yk z5;~f(np0r+QRyU&j)g#cY>v-9bgmvLNjg`OitL1&B-GtI+3EaB< zL2-%AnPFFuZg0z`2eA<3=-_9LJy7LGin{rwvrB}u?4#7DsX}pr8Y_R}lfpPje~V5! z5Nn|$=s-#?cpU-u>!aVq zqmmgz@A5#T#S@o<0^}F2N%Eg!A3q=BuSwqTlx?H1 z68Rf{h`Q|Yuge6k)>jpm34f(2vJa6fO;OSFDQxq`6JUqAx?BX0kg}Sqg}&1!?M|^B zWD5@B$22f@nA%%{rOKTRrbc02;Yntm{8z3~JXxoClBwy(X*?++Trr`;V2#qKVj+fZ zQ8_O#n!{WoJZX^)rbiWzYBp56N{aR1gD0n}63@@z$No#)VLpnnJ7KSpqdYJlaIdnr zp?WIjD^kq&tUBhSn2&7?nC~t9odum@zF6k>Jo_2G>v%#?7)3&gSPSe2RJv?ZI_Zij zefC_HPF9yGi|iZHk`z-G+mqZRt$+vzj_90JZWnh>GVOkylg8RTIwwuG_ns|41B6@s zH102Vl7Ndq=E8?`)51o9PV3fl#%Bo55h0U)71hnyAg4^imAQjIKG0MLaePR`zVX z=Gu`h4wvK!mlWB5`l<9&+=bwhRmBdM2p24~7s@w1MHMM7d0c;|9>pa;&HSEc-_3XA z%hi998I+*B)+w`H%H;9g<9`NPhkf&sBaMHJcjJ|UXf%&BRXM3&kAI`5 z;Q2_awb#*1Wq`15ib^Hfco5}7Jro>ifXJv&rjEebrC*Yj6M`TS-uK=l6M!uF2la({=0;U<+-(&VTASmwy^ls2@G=wFKHPP(!@g4P1 z!~!43YKUG?X)I3F`Dl}SGDM4!!)e8A`4iobt1a4>sQnCi4z{y#ZpMBuW?czl$Py^% zA25;O35~HYIGF*C4ShoTz;{{ZOj*j5xu-9@^>6+#`cDz+L$(ehb<@e>vCltOEiYXB zQu&?roz@9@ooz6Ix-5}FLPJ7gEjk`*AzfH+a_i**IwuDC)m4RU>t6Fk!+awCjIru zTM~}HpzL2b{cuL{m(*`h{QnMJ1R@cM{Q`+m7WN4po%J~FHh>* za5R6`|3kqQ*@Smudza9u_BZ`WZQ>I&aNBRelS?f(Ny|^@?Dl=nrgtOR9+EgWQuYT( zGCR~?+*Z1Ecej|Y>{NpL68;7xlbi}K==8ZfwI353dWKLndvF4O!>g1U3y_WxacGFa zApK@Z&y_A^XLf0@eX?|Edmq)M$A3eY+_k^M2WOu{(YODu2k1pizM6L<8GA-bA3$BW zPAag_L(aH}xw{=Zugp!ZJ-@AE&PcN+fAZKaP9^^R^M)dlTcAahQ|}YpeQbIVE8H#G z#z8Qylm7>wAU(D)F3%Ao$e<=&B@<0qHDhLHKP>`6;X|spmMX;VbCXn=%C7ehxz>2U zULFLZZxQjHNVJh{DBdi=gRBat1)~J-#dmJH+@&^0Dc>@`6)X{#4Z@zv`Z&)tINuZ- z^o>3>|D~Lo$4Yz<|F+ZR2uI&S@k{$1^r^(vDO-eEapsG8{YXu8gSST2}-;%Swb} z4v5AN^)NMT0DB)2gq^B(RyS;Pu5=f+6lP zrU2Fxn;v%zJ&mABmv#&-=7+OOe)`uj^q(NKW5!tSamKd{e0B`=-z({_Qj5Lk4u(F0 zAG~hAtwRr54Mb4(G2%sxoq9gd^0I6NiP}o)SV+^qFKO$Rl~ul{#S<2>u zTlhr#^;7Vdh&C;GmsHLycMEmrV(50oN;7$J#LToO#DZ&wig#h}`H+;BO1oV?T`6+MlrY1`Nd~FGeqUuM z&-JSBjNja|AmTS3X91CPZcEB*j-Eu@CvugRIJrGf2?n+PLB>`c$H5OKX#GJ{W|lvF z)n=d>)kj;1yMS)Z`HgG!5*`3Ii!>>hWS=}ulc#BB^nNKX&jq4?LrV(&!XiutX^J?X zX1Je3IRSzRa!O~Cnpchb=Ty@BtW=^Ol(8e9RcpdnS>!YpBDk>+fiUcvSm&4})+m{l z=%M-dbc--7Tx@1HaCom2&UOYu8b#= z8N&xVJDyJgi!-2vy!*YVcm9px&Gt7;lySn9aDMjb^c9n$KV$L8cIE#d=NwN!XGx8@ z`pz{xZHFo*$^GLh0;Cv)T@NVQyt*Br>whT+B9;SE4%?SbSQc3V`EM_p-G{%v>f^r% z?0v6d!57Nb%sE}ov4&;`{GZnTZ)nPbxrI4ufCi8-%Xdlarh}Yc3T;H@>b(*y&$;%6 z^rzbYO?Yc1lTl7^;DI2v=;qIR5FV+A9CFDG#2z^D0M;*V%NP}%a1eSx8IPg>jWfHifKh#`Iprm%#M8A(;DxkTv?w&czRjNeV5xCQP*CsOWY22f+IHit1K*b_N|<81k<53(uXp;>kKJh{5=h_9Q1uCrEgnNHF0Xo{+Bda}TO?$vUq<#Kr(PjQO=f=&NWe9sxn!-I~OS)!V zwbhFw@^Ut$jw-TZ=Ap#;PV@tLY&QiZP#HIw>GLuhNWs5V$#3Ez%6Ex59nD{+KDhj# zzH>2>Tfe-E_wsw<{2u+M{mf$^qUK#38JYHfPmk1T?iKc9q>DeWQ5oIjFqneRKH&*= z)Q07RzEZIz=XYqt1g;6_3J|3y8Y*ew~GSwXI2k&rCFhqh!N~r zl?`iBF#M(*B;)Hs{WVNbRgE0B+PRoLx``E7YV1<--ie3jdYL-@B^jju5My7`q~Rmr z)vmc?*Q>9{yANGI{J0RM0K%OKuAX7 z{rJ)_L(Q_RRDOe-koHKP3jo_*@h7zpEXK9&NL<-4(Z^6M^~R09EA2;7fc36)R|ZT? zCMjcCZ{(T}BHIZD8qo;(#OnM04$;)FR>#4w=!l83j zG!s5qe5Rq;VWA;FA;o_r#hG2HZL{r{8f5P?1&kb^En04mR{*&7fbXgAO+rGs^{Fjg zyVrMCdgu@7xJ>dJs?mC8H{~ZIL1lIPM6C{6WjD}3(0cALjW`#AN@~Raa1Kh#P8zr= z7nQkA#=eG{p`Ql|8|5wLr1IY6ysO{ngRa8NlK7@0Z{X=&7aB!_t}krm*L@bJFZE2d zECfIYOKYO=-HXy-#<^Mirigmjt~jad{cMlt&8p9VU56#!p(3^L+N&dk=#+bTl(S91o&2 z{z1=r_#QC@DA%9Fuk6I{(@8?>Gw@Re{lZ0ZJV4X$6%-fJy-GFMB4S-wDM!0aiVIdj z{Q5^&oZL^%ZhhZFzdcla4nGV`RVplzR%ubZk5oE516(bSzn|ZpB05wie{72hsubjh zHS)~EH1fgkI?EU0*~kWWWCdK?5?@HBH2JUnXPoI%_($fdS=3QsEG0l@bb0+cqyAlp zC&;~)O&7ww%qBGz|yMXc|y2DXxp zvQTqpm#i^X;a-eM;l7Dsu6`-|@nT>Kof?qS^oVOa3W^YPOxY5k-M;5+%pzrOelvDQ zf&Jj|^o6J^+RY(P9Lyf0&}b`XZy-8|d#=736D{Pi5*cTefGqmmc?sh5A1|NyRZy5) zzt(TXA|O~WmL7*%cZV6>_dWe)v*Cty(rxTdC&zk?i}ku^;A#?M-dpF2jmV-z=&< z$F!!;Fs-Trv$V=LYbfg@P)SgmDE|@m2SI@fE(&l_zw39P7EVD+c{#-KoK-XJwsL9X+J(8=`5s-)$K3w}LV-t^ zh0>W*9lg`RvTHtF-e@eY${M~ed<>{$2hbMNLv~=`D(Ml(JBk*}y;WJtZSFBZyt$qx z{WFSYcMX=#@YUWA;L@TXS0-HDGKz6WqF%!zTH)%W^iajilwhbMBPcKXo1f#cNpNRT zD9#DDw7E&fU#?6h3inzu*X(hwwW*G-AnfifUGP)BoM;H!3L<4gE|5!>>zOSW;El5@ zL;|vvKgb>vyY{p$%AO>WS5DhvNg~<-)|V2tsRI6gg}>00m&A$Ui=ae>-tL+6`RLe$ zQ*rt$Y<2K!p*_Yz{XqPVfXMZPng_OfZX>@CaIzYme^hLOmxfsliCgSdGzk`88b;6k zRqUt3az_0qdQDtCg7XV}wqIr9OT45LI?zW&CrhqdX+LP)O5nYb?Sba)J%;bEol&x3 z_+A}tid#o!Uy6JAMlQv=X?s>+;I_nZ+_xDUexiUQ=CmdQmENBSond*u8O}gkXCO8| zDc`fw6aG-fZANeC+!K0Bui2JuJJgYI78=q?tsm3rTwvcWV~Re&RH0E2uX$MJOe(z^ zSs>{cws2cX5Vo)HM#*hgkRy&sIc>xxo-erGJ8^u#8dS)Iak2BdWQBW5m5x8Kf({XI zKmc6ZO98m4?#}jo5HNP`iS6N@E*VRhyuIwf;qkc?q+di;fv5&m%q={}t2kQG0MudMCvTTxBj6LaEXzx}u#{)}+kp-4xe#FpXDj|A1aX=uE5A&4# zvU;yM7u-fTvY<{Y>oLj^lI2?sB!(t5sD@W_$$*i`}(d#yv=Dn7Aa)m2PTRdD~e)ZyqV zjJRGuVf~$meUU;saDa49Cbg4;*6E_Rj|)b(0*+`)z39l5s=T84M)`aK)byVrikh~i zebe(Py%?rJXmhe8HV7Y(?jt?%SgJQdA8PzGJpYS4{6To;wjUXuYrhAcCq+cz&)ylH zM$(T2kCHH&T>gcm^59vbh+?zyzJW6K?oIifTbD_A0^tGiSQVd$+W=9__qmDHj(#N) zOV{@^T^|b+RhRuNH6`f;CdWVFu=)meu8+Qi&k+h4nd{!4bDi_9MkMA((7NiTtSmn~witzV4ou)&_Sl(TT2eiavC3v`EBOy{|C9TKET`a61KeeYQU_u|s zzy`vpqD+iIS7`Bp^0Y%rDhtt;Q0wlhQW(|DxpPTKT@2nhfz+=brncV}r>uGg@f zZbnZ`k>lTXbw+=Fa7qvU?O-EL8zSnCA zZe;l;4{EQNP#p`E>8XE?NI6z3vT|ejmT4HD4qaE@hFm&qTMS=sWzKTrFUmGBbqotq zn=fD;i(lSjXUZZ24yso`HU{qlew`vV11mErAe4a|W=%$b@6@ z0K8U}7d0$Wb{cXG_KET`%DQQ=;!&f4K$H~TVL!r&16jRX#JjP$x?S$Bh=tqh_Hp2o z?FCGDb^G>V0;O8L>9;W{ty)PYze9J;aj7zqSL$&Hc ze4G|l=&ekzM#C+CZ|13z2@9IG1ght#&}vjp*0W7W+P&(=r8ixT|mo z@izOa>a@P0^r!ExZ=a|Os=f=qyS^3d>$v>w+Pl7~m;lkTwEz`?^=;F&P9S!U4A8{_ zQYdOKj3RuI@_^vPQ3j(_qEcX%C<;n=^TY{?kJI>J$70GxIgYZz6Dcb}jzLLcS5xaM zR?leagGZksj5UB})GXH^YY##CFCbE3gXO#%it19lODEg)Ama1UKrh*=>)Q<>@7Lqws{iWVA@(zE(7I&u8@)Hqn)vyq+9A?xIu zrKaVf%$kHQCMP)~JQBK?uC*HHaDvt+C>c$aENM!#r08^7#~~4|zteR3!Y9z_&+S*E z=`z$=FMJnqeQm#$B-YIwAN>wu{V8=i{TBLnbT_vC+-2eHfy@&}Mas&MdY({Eg({_y zX#LDxA3k?T0qm>~zehil_2J3X=_({zH%nhHOi*n&I;5jN?kv(!yo5aRgnFxE*BN>d zTi0rxdYXpglOI%#UIUItsMUod)v;`4zd zCYsXtA+vtJs-Jit)bG@7Pm-Ex%%Pt&BxJVtj)I_5doPoic;0Exv3OW#iS!J~#;DQ> zlk&`=@Tvn)RJYJ3ZG{n~V%dVtvh)d^>3FDxSD4&5Pb3I@_GN-;wuuJYWOo0s?k%>* zlv|V3j4kp5_qc&lJ=#pGkFH88lEu_Z@!3k~DSA-r=jh(}1V;`M>!Jxa(RaEfBVC|R zDX(cU-4xhCwV|}bu7BP=4Ie9$Jzo3s)da!&oq=5{&ZaTfCGA2U$kko-U*bdvQMmH) z%1r_6X9RfmCuU<$v(Q7FzPddyf#z*J zINu)b$z_9BlJ9<>>|<0}rhXUe3Fk7e}O! z?gDZq=g0pKaEJ{o7^}%e^Th+F-80)qdG3)aL?HQd3PbFsd}SvP;7qt`%L8XeMD0fV z0}<-h3F@++Ss;@_|3GTUN#**Na>P)@6kjeou^_gbt~7IA=i+}pAfWNi&zG`b6r^4464KwLj-CUpx zbpz;Ye**0Id5Nf!ZniRDO3roeC)W);NhW-)ODKY8HtL1StLdrQx^7c2nyB_{V-Kk| zKaStMuE&#*!|xI0L1e)=`UFmF(E9=dhuD#*;|w`Xo+uZIkt|!(BkliKT zmva91X3)d^O`OVP-21(DsvrdNd{b~3{Sbw)WRIfHu^-A!HU%7jllziP&pW74z^mQ@ zp0`}WSZ}_({F|bw_bvOTh;d=CQU5xCtW#GroynQ;Zhuj=y~OV3ccWGs}cpgV7#k z7{NFa_OwWS>!Q41>~n;g8^(;PbcfF8@06pS}eXO9z53O_z7*Zs6rKOeQ}`Hrt&aq&u$O!)1XZ?)G)l1C z_wJd_XC2*yIhgyL1SXO4S>;)?kJiHBLesNMov8b`mYobWO$*;eKZYLnfFXxGl}d5( zLW;Y`);>~~3M(fyd?03Q!iOi?^0Ghz19Ge2!#7Lg6F0FY)TTktR{J_ak08ab0k$_! zmVQ+sW%9=en9;#YBqef}`2P~tplXw1r0lyC9-{iE^sdQ#orfe<4+5`q9tpi@7zW=Y zJ;;~n4pRTPkA;R>U&u_JXD%pvZ)%q;iO-_W{pQwUvhcqBQ)zmMN#$MUbDJ}UO4QFv ztQriBis)=#!MertVEI};`%|!dJHX1Jq)K+;8jg~ovb^)DSfu)*Q+an!9Iuv0Dl?w} zn`7DYQNdJT{%@Ie?3TFr;A!NIOmB-vwh+(e-_m^vUDp(c5UH&Wcr-w>`vi&;w-LG_VDk9gUwFp=exiEMyhEvYg$;xuoah6F6Xz30LA`rH^az`ixofr zfh#~pi$Itaos0v>x=?R33PXGE;KLO5FQVStBumu$Kl~6Mhrck&ms8?1XVa@#*%=I< z{kZCh(53RRQ@e`FLUxi6pe!0ckS&ww`}VdSDAw6VJt3qqQ&hFb#`ajSS@s-_`d$1T ze$c4j$}iDlm=9+am{utv)n)|*{$R8aejbshR-L?urkK_-d|1{}E_O|)Oi$g_oMtnM zy(BUskIiur9%{P_d~m4YM&_h*gPyN3$K}|sGNT5gH!_biIjZ^-KUecR%WLZ#kuFrY z3e`P|cZVDtRgjfBAIh~o@qO~N9I3&^H(FswyX!Y#yk$heNdjiFq4=qyW5mjy;Lwo0 zdnPzQzFBzSqn_3O2?U9waNltg#oBE#;mJ-&tb)DRU>mMHpj>qtsK&J~P>T}|G1J=* zAhxCg)88E4OmD-zoh7`^uk>B|z(%|Gp~(!aD0^kJRkEjKjVL!wi3+`ry|u^a*zjxF zUvD@1jFCpz-M!3*)^2cBVF4wwT1NT=1Tj~MgF9D$;0ZG#ch&_mYO%iO1+7uJfxQ*& zYTfi#E?7G{80!_#S(`nhV#C);5u*=lNmY5Cl%Bb)D!SQ>a;><3M4oZ?Z)regnb?r> zVC-^_?15uM4GdgPRpSE9pJluJW%UG9j=MH_Xeg(IJ^b#dyhb0q4}&G#bOCJ9QPM)* zOiWdGM4veR)=hXU`ah^tnM>@Yl1F^DGceLN7s{Re(2hicG^HOa{#ns^M!A{ORrOuDDdkgK9iiL zS7k3#J|f@ZBQv-k6^`d%)jqC(1tm!*j!hi=t+KTs;Mi%0K(b4UTc zfH=O1hmVJaz)Ixd99o!>YriL^Y=6Ig0-|(m_XI)3xlZBrylFcAuJRA)@~@Mzc7u`- zI={jru%KWhw*H#c+QYrtkpz>G`Vuex>}(8jfqz6ly<7)&6C6iU$sZUxw9QFN%o2U&nar+L$5V z6h4U~#TPEz{6v2IyNt+hA#>;_XB>iLHYcRC--}gtGx{*s$vm#Ik0}bsX};=M<*qdO zTFjQvEW<3V_07ilcV0Wuq&`BOZ7K-(o5Gu_8`gvob~)oz(L|1EjbX<`mFcC*bTuu` zCqfb^#v+zW^8++C^8-x^%PXU6D>)`LQTYUTPZc;yy{9Q~2DcNhz=){8pRr!$^qVDy ziO37a^1tCzVgmG0U0UIrT@#4RY0nBxMe>Qzo+4`ib+$VxxgCiu65Ns6uG}Ov7LK~W zHS}-PIqSlJbw0QIPP`I8VttJuXX0t1Xy${|-6bem1QHg}-D33V=8EmaE2;59QMiG6 zqF{W8d;(YM(qH-k!`F#?(c|Z>lFw1^xhj|UIQ^E( zPnzjZ$rH^#NP{Rh{7Q)E1021!XXA#U1c_idt%%mQmGp4)KP~w${(<~uH<2r=#e0SP z@Q-Cb63D*w=Jcon3LY(?Q}_`0(g0|by(LZ~i09uyGd8cAoYg%vQ5Gg<^ldzV<}n)E z*zvP+oRhhg95}GNE75u#2U`?-k=aMuY|7k~C8M+1L~Jy3L5GNXVr-NGw^!h;@A6wb17i7h`#3;EAh<+UTJQW}FW2sKZ$7K7s!!Elu zefJ5z5c&y3*94-i@n)0*?f)b3fG;ipmNVJxQ;w z5gdW$II$&Hn|o2PR?BidK$J=2x!&ER$Sd8>zxmO3yPkiu`pl|kD|W4}EarRfJc^3_ zD}%Rg%wuWX#C)wz9?+zZb=s+R~iqkxUgodQ?a@tV%> zD!#ha?*_?*YdZI49!%hDC<8)Ilv{eJf6zLGb_00y*^59DYY>7?xN2BA+nYx`A?f%N z2}FwPE$@M9X{9M_Bnq|OP>#Oc6gnW6d#HvS_w(;Aa z_-}EyCbR5o1=#gf>koM-5SZn`=RU}aOQjUM55wfa-fb(?+ypqms87Ysk9w~X;8M*y z_!P)BK9}l37m`gSn6ciYdkJpgJ8W-J?*P8o59wUTr*aMbb5F@t?BwbQl53{UwVP+R zt~XRJx2}&QS5W7An`aca3wozlvqTbsHeJ3cdCYl2A_sk=LGRKY>dD`+bCc`dT$K5&e!X4QT*!+lctjn?#I~t{V+a zy4V_YytMB3wx4uzKPum4pPeyKCk^PQi?@@xihj1&^taF4XwOmkxuHUJ=SR|=25=>I zG3no5Bw@u^PSLy|`mAm}{5SxQ$!xj6K2z6pk1p6cih`xoq+hR*dIqW2BuvTicuewM zO(Piqr{hZrv3{>ni3ov{T>fW=&6>iLLeE6?p1%3E^3sVC#vz4owy_CJN>`P zr%|Z&1ECK`LF_l^zlP^0PCJ+U06gbA`A%gSa&N%Z(;fI_OxQ{)wug)XRrHj&UKk8x zWjU0>Xn0TvI>}A0e29%f6736Gmx8B@3s53>-O29KfDR^r1)JqBQHes?16wh^VqdWS zH#gdfACiB4_&h@CH*uJKexG<>ws9IoO|2o~&#HL?g4Wa)U(i3b*%yi%Ka&F_?(!2l zbLF>6D(NU$=ZqJTRGBg=+k9rt2h=}*2S-HKRn+b8Wh~rv6A~}h`{ZpvQ`7f;)AQy9 z9hcf9o#+glqbu%-j zapsykPE^XZzty;#83Yc@%lQ?5dfjiFwR-j&vKiX3JYWTAgF`ve2HSK}`EkOp#(k&p zU01Nos7Joh{P6Xre|X!SpC^`e25-Bd(kc_Zlp0tMD$C_UGz?633d;UzP?7|gtMtb; zhNT_e!7#Aa|B1!YQdhD#P;-_S`8JbAByhh``%hK{=;dI9GtN3ox(@+~4;N(9oEq@;u zmv?>@UrzeXz1^st(*QLSrs(s`a|qbU=@zozGb+_U0m9F}rBrS!Zh z^O=t97`r-mKvq|JUM5>9p{_dq5_^pWVl_U^jGXQXb4&CHwc@wG_=%`DcN9#Cf6P-# zWU()sJ0-qK(v+N(`nfMVR*T5u&TQ8`V_q(|rCySUxyrZ~wHBIC!Ibf_g?o(Wf~$}( zNU8R@99r6kYxkrzT@V5#JP;Id=@qa`_v5zpJMmI*j#DcXid*104 zujhb(>VaP->8*mhyD(_x*r(u+5N#P9%NfMY%=0k59PDD$=ZScT9K?S8DU3tB6b{IQ zuP$kde<6G*dd91DQemn+)f#KMeIDc9rzlUPCGCj=Tk5i5_IX z%9|OvBR9*qx14v}Vi`7HlK-PSDo|nUp_0oQog1iu~o*c zfi){PSo3AT|DQWgw2zbGHLYbb4B?HoEw9mKiFe75Dr?*;T20WZ@s+Ge6gYUtR$%VE z_FW$fctc(6L2v@IhG3oR=YL@=zL6m~*vq)@7z(n!Kkg905o?A&DMxkpayY8RsM`*t z_FD86w(lf1lIW3G0c1AlRXc#88?#vr-BWt%NzxNX55*Mp=LjImkf~u}9M!;SnXdT9 z$@g2jl34G&e0k0OSDjp{6MnK}JLa`{&otUkFQDd!0@2Ftz{2exoZL?& z9vB@X${+2%Ev4>u-}+NwJj_@D3fHg8q}FTx$#nSCgSZ!}s|%#t@na+leuQ+%ep(=p zmAxm=zt_*UJpV#JPnG9|JUe*CiHT6hvL4wvKs5F6xmd{O`AgQw3IRERJZ{BH`UBR! z>u1eiDqrRdglA`v0A`!qbwx!a?zyc8+Lu#rpr*M>uHe$ftl+@au3Zc6?JDCQZKG;9 zWD=bV8C1V(Rv)Tg#dw&pO9_&;CcFVJK&-YOO;SdIdLcgcT!OKm0&Odr$AWE*qy*#) zN16dvhh-^g3i_8B4WooWqHkkP3P4b?UhhjC=s)vPerJ8V;ojlbSc>nAsyFS=KaF@=%@|zmV@4RZ~;W zUGXB4?eSO0lv}of-rIYXF{O?UWhn&^74p`+y(>lA3=yq)B$mSiVx&9TjIz9q;DzJH zR>*ooWQdNSP%@Po#Yin#Zx-JGeSy0ey-LT_59WW4Q z>v<=Xta0@-p-$tux$h#c+n|8CJIam4+hO=O~u_bEPpka*e-s~#|3G9R(80Ss&A zol&x`LXD6L4x;G|`H#i5vW5DP|EuTjz}yUtXX%Xcl0Ly{`-o}P<|_3U;Wn?oEZ9?d z9DUfSZ|7X*lgn@#^G;Ck?KV~>uD{FsA@csgu` z)AX&-=G8doj8xL!jI{Vt^&PUmy<7(IFq;37@SS@Jg|hlqT54W22FM*5+L74&q4B@G(%Zg%|$PSo|*RR@$xx?tZM?YA$$Hb>u61Hw`1$CD1~5 zCEfohA8Ni~1Au;2QL1ij7aIA-C-v2Az0$|$;3k~mmFDW@Arxism5Hq zFOM?c%35g{xKeh@9eV|q6t4QGRVn)@Y1PF!J=;M5Pe|`JN(E~Q?}}FmA05D^W_P_T zV?8yYB6^@Ax{D}`jO-?W2}XaW0!QIeSm-l(S*;Rvl&Oqif07U4epO$%lP3(>xthVS zaZBR!B+3>`0hBlyS*t2kK`mdFe6qO^oBLjo8T*GSpD4g}12M>O1o7sxVBoRbPSqYd zF|zNh*`Ld%9ba+IU( zf0~>zi4mPKqjw@n@!4$0kf@xb%Q{97boS-|V@y29B7WK8Bqm%Ne!N?wc5Pg40z&gUcGq#WAd(29(MGa2a~8V&POj42Tx zM8z@Q$T3y+1kS~je#w1pIs#)~Amzzr4PWFS3oGYKIEfu0@6k?Pj5@1Rncw`6WTss! zXSHfJJ`uh+Lh*Oi;7i8z;!l68i!=SnEwSud^*buCyN{;_v9kRPpZ#p`NcLe4is&6z737aNTDkTE!d6Uw zX>)_pHx&PTXMDdc>PYD;kY1KOPBG?@Li^1bC&%5=`0Lvv0;Z73oD3Jb`c^L`{&Zx-=qdyK_>&sGb0adwhpSYz!s zGf<}bPx)a^`D`hF1}~JKTbzyhR@|les{*V7-9MnRVrnh+bpJr=Y>9VlJJd1OzD+93 z=s!OHZS8Yz0SZ9c+6`O$ylXT_bGvji76-d@HJiU0hHFQ$*?q0CxK|hT6YSz8smOWG z;o0XrXY*X(Jag)(vWtg=JcuxtL=!+3bJxaLd*^6JA7T8_k2{lqN5Uawl0ecwq9{#l zBJG(Gq7ol3ef*a>=ZYo7oFnhNR7YsXIb#nWfA+A0(dO^1Rj5F2{mZj|`khtxqw4e# zSM;C*9h+9K_3^=!JnXyp=sGdSu^h9XI%57V$^6Bs{4YuV+Yiq#D-KW7 z0IUGAh)chtO7CCuy}3OX|8QMZ=ke0#$CV9a!8TJWQBfAqy$ZyM243X!cQw0ou!H6t zlfa(C)a;hO;XJlA;R2>mxnhy0vGPI>`mbra{P2TNb0 z7`?|QHFIj6DNE1a0Sl!8|Ak_ysz@>ity@&ctw7D&rax}n_b!Rm)=z1FXT{zXQn69r zN2+0Wa^Tu3QEq=Oud!YSDa|F>+;1J5%{drHMI6}7`h0!RLl}8Sk5W2bo*d|iLac00 zqLOcAy%UJ_#njy~?^q{ai|&P}h5lBFN6p%~!~Qewih@Y@P>}3?bS;YUde%Iv%z>+%b-dGe0vI&q1~3b3 zuf)Px!@XDs=lwWEK@8=4qGZcINKa*We|}t}L1-Y?e)wwvo~J-8xYifPH6=~txgf;< zAnS$xV%u+W(-MvF)PXi={%&SUyKR&czZ74Ee`D%G(lvjUi{4o*ovq)_pPB- zL!nCRcS1=SL@UH2OPLAegqEZvG@|aD#K-7JH%I)+rAF95E`x}%A5F;_s-$&06emIS zg)W7%9Xf=xmj@;+VOtNqPJ{WH>_H8U6MF4h8Ozu3xcp?|0`(4{&c6N9(pa5B1;lQJrIqio?Jyelf`$|$}brrIFXF0 z3rhtbsrm2(C`V9&qqM6Jm{Enq#5#LifT_&!=Q7m}K31dM69a7r7>{?&Hd&Q7Nl%pU z5RoAW0|KQTCH(`FHy8i$91$E7L~w|Si6;by6yRyHJQd3mA|&&!?@Y-tOsQgr-Rup6 zXnoeSZe!_Q>0AWN#=RMpE5Bv9WJvZZ?ltNa*RVWP69(?K+>9(MlfL**V^A4|0i@Yi zUDM2g)VW`iEf7g?KkG+)Cn)>E2U{EUgFJo5HnR z4o_qRn`qmyv6X9!n_SK^@3abKlhKBoVtTnpFrtl-b2k!s26 z=&S61B4+j8=XAwz66#j5AI#RvaRlW$WSsn7D*uzRK!VLaqv2(~ioK~u z{6pq{se3Njku#26tJ&v##fhaNkCA$7iw6gV)z~ZUsWzV56j<x=@|YI(;g2vm5az12F7OPc5- zERU9ZK8fYRwnC%EypSKmqXnVM7Q%QeD8Rp9sFU(Gx6pLMnA{* zKsnFcL;^B@km_ueJr3x6%) zSK_sPBU89x!bRgf_9ftfuKtuzD~YLko=UH8es`&>UM_90$B%H#&8pUCsh+zwurE{f z_0cyzz^#~(Hk`!J7Xo#94M@L5UC(SqWxoKhcnZ5~l)jE3z9iD%c7KY4|hBtFU9EV>yMa)w}UO zj8i7Kbt;Nb5yov)GyY;7vrDNIl#r7*{_;ij#<(|11C8XuVh)f1C`GDKb~en9$2q{z zQF&NDy#i(&38AV`m>xkbPCqMkKXX(+)lo&U*^A*q!+QnrUeO6&IYx%n9jN##@LJSP z#q2rr#@`gY*bn4Bu@t;w_^GaUt-cRyzcj%t*zDBbKhq%xk0YFxAJ>@FJ=XN-;BciH zsITMy#!8`vaxV|;xU)9b?{Y&q@3#Sz`u>6Q?tX94?;iL4rB3Ca(C-hsbXCH5zwC;lI!>%b_@Pibu|Q*j5J4~W%dGB@6)KI({t=_Sy?Ftts$@tgprPEEAYs0BB`mNP6(i zdZq0#OP@JVX6Yc4n^rW+Wr6CGlxgxbEpsYFxM`Jzy48cD^y^tZx=7EUN}+bv07}mn zWqb~ft%S{P3P@OEWwkdJ%AOFrbvoD{TM3*>T4l2F@F=w_)yy2Yp8Ze9et)d7XrnZX z4WHHGYSaIL1kpeS1}zgsWe%4N;7RohvMd$w^t4>A^c~~5klJ4h%6=Wj9iu^QgILE| z^YbcM;yG&!`_V5zuIwIv|MKDZ&m~*_E~2P>|MJ01E*}&~63_v7RoBvizHhW}xj4h3 zWBz6Ztn$RUbd>X^^89O_?Jf8qk?@2h+(SazdNby|LB(nq+Qlbhxyy_#$^rrIdgXfK z)`#T$F2Ax?V#i=v9?x~MJH+p!JITxMyKp=a#dmzhvwgiWb7yy6w(zpFonYUvrSzGh@v#X~uaQe>cjl?p^0HGKIN8z8m+Gx0ge(kO_@&-Qwe3eE~ zzo+PgEbMw;dJ@jlmBy_D7Lj5Um9_ChhWv-s>(F)lR2i$bt316QP>F-z=10nS_4@#M zr_S~2Cx5>DX#ItL^yOFs7`jFfRY6F{R0v+-wxBtuQ7p zqs9#YKXcP@WKQhl8(H2lE?;3xe#e-M11T?)-_}2?`FY!z{H8Im7din5)zLoggOhvL z(7tqS==%PQ#T%el{?#S=rN(Qw#7Dq{vPvynBkkp(Qu7s1B>yg?j+_M?n>vnqW_`@V z(LBt2Yqv4AS(hsj>r1j|cx8)sEG@}D*Uv)uKWJTyri!7W1r2mn$EH;4j(yJ>=?h{5 z3;LU8P34rJ9D>hr=XvWq(}RWaD7hx#Y)%sP96+?C(m>Iy0sQsN?r%nJYtIT}Q0-oK zNfDfKl+=`JL3e9eF^4N_{~nBv^f~d%$jrjCtFWdNNPOV5=hy=avO-lV%(L>{FWHb> zkFlMj&jhO-8dNcBj;!Y8c&_QcvY_@;wX#dKf8_m;`P4sJd{~et^p8+KU7z%X&p^2y zB*COg%Zp}p<*%={z}#D|&bx!8a zvj-#d%xo(3@0@uBNPba9Nv~%lw$J&>k>B4MD#1%k>;;_Lz@^4CMts87`xF)0ps@+A z#}|TgGF5KT=#{YWirh*$g*S>@q8e@@V|8YdD`0(nLs6Rq{uOMOP4u_$;T(0`dPjK#W^73l|@Gxz7; zd?NAmEi*dwS{~fCYwO8^Ri?Ix%Ui^Ol76Psx9enlwa+ZQx?t8>9QXJ^da-LB1(`xI z8wEumPwSCs^yiSC_!y<(^Dz2ju3Tm3zksw>^yk#(%G=KLS1~~x@(|ub|K|i`LagjY zew@Q8`SW?UU-=or9+$9w%*Q7o%7d|KNb2MfHiu6n#wAX8%k3$zik}0AFq=Y<@z4{c zR?c&)uOHiY4x^Wr_t1|>Rf1{WKg9j{Ip}j2Y4)=(@V&*mnP>UO<67r2VX5&Kd;s43 zT-1yMAxwKCb5WDT*>9LCfFmZ)#k%l_BInm9zxG&F`G`DuQ6{rWwSK&T7Kor0^ta5u zL6D0*$;$r?iNRREXZcC^7~j}fPjz+X-k&M)_|ot0P~N8MKJHwby(!^0 zqy7mxAdyvxf6AnVi)qk5tq3P|Nw&OyTkp|223kj+-4opmZQwT~G9<(jzo^KxM&)@n zRCedcBF4!m33BdQ1X!%n1GtzRW?);Mj)`b`(%)p!KUCAyqEwghhRi65y< z3wFu<3X|i=NS||wB(p>6Yq^Lp^nB5QD_TbQNF>AlE+OcYi1F1brrwAG1p3Jg#1ym& zv-F~(S^50+%{Hn_uPZk05`QNx-vor0cvGtoZGpmMk(3{!V|}lc=`fHzF|Te^Q60@I z=*$+mn~~%C*A1JsraF4vu=JwPx$F_fvw_p4%jk6saa!-jH>%!+-oyFF`bjRKc@Kt; z9vwT8);_1TEA!$0la48?+@&`WA!!UL@mcR2!36>5x{Wv+DKUiL(1N!k2 z|FOzi54Zpvy{d1KSW}pj_b%dbAxO=$I7nZkbX!0jZzjpxYNyM zJ~fZq2TL+nG-^GA(CDeZ^^|%C9ZN8VQ2>1kwW~lZAFt~Kww=o-4Z{X=a)BHC19QCftCtgwy!bAL#W`0ZBOotVJZl5=p!zc5Fy3VP}=+w$Oe}V0y!sH+V3=Jb)yFT6b1TVDUt~~K`mA|*n6Wm z6MN95p5L}HlQIHtv>jozKc?c0VYXLGiW;)N;$qN|zl367{AKxR@hGLprjuFqNNSPrGW`LZG zy0WnqbG5W{7+tDq`>Lm?ptRpwa=Cc@Ck_Q2`R|j`3Gy_&{`9O)@t;}xG>N*PbOqx~ z@2X?EWO2f=H(2@wHCZwh$OW>woRxs8fG22O#|G`T9)Z~0LXW*gxp1wLN&F+phTR*p zZpj)sT5$!FTuT4Y^wqh&NvZZuIdXeCA_aHk{YT$_f@G&L4)nNCUP<|AuzBg4!sQoxy?3&q231x|}AIoW`DTAg2;`sU`{n$O(`n9}Q zQeEQr$R9=DmbV`;;0PNXW|uOYoGR|-#Mz@gkH9CyDiLIQl^%(VH>ebud_KTuQSY>zf z8D&a7=CBB_lJGvvh3AnRe+vAIe>ZMUqI1a643zo2i|Xc{j>bI?dQesa`zf_0URFvO zMv&NC_y=3wUc3f9TiNr#i2>~*+I#=o9#OlyXkWIfEUkr)a<%YrS_>EVeve&e%FI^o z%xq#W04Y}wn~gSbH5(m(#1S;Egl8$R+=x6YpK;}UUc?!3sAvcc)V+4J!4Jk|t!Xz3 zr0fGNQV@Hiu>+1bS zg1EHzu@s&~(8k`qc@Ukzs24YP#Ni`Iqw04FDv|Z^qt6-qVl>!#8KG;@bWsA*SzrGBcE~Xe`qt&HtIMJSihRDthIf> zR!*Qw^da`bqjOO2T3qDXQx^$1Wp~oBXzk+U6WNDq^BQG=At0O&7!s2!o7FAqHozf| z%Y9^Uy2Q-@Y_Wbzi+dm|E^{r!4Yxoph#Cku|HC|GmQE^~bs~R#v$=eu_uhYk7UBT* z{+b6ZSB=Hx=%x7wkAgQhp+1DJ*AyNn>WSzT^rIkt4h=c_OJt2ty0ploRPVKv3Sw}N z|A-8_J{f%%SZi4T5&i@Tr)9-NN9)elF1d@8vi3692>Skervw#=bhBMk=uK=Q8`Ksg$+*&Ytp&RTZV1t(!jA77k-?uKvv&5GUuZ0t2x( zwr6uVmEGx;gijPLkP@LnGeEEzPrFo9j)Klw*1O?Np;qApyB+;UZjCk;oyh)Hpk{@c zjr(*kdJtu3h^`{1Fc=%Ulhfuh4XLej2XAJCU_DvZ)WY0Q5A>=+V{rkjBMV) z;RHZ4GN{l~5&5aWatL)BBLc;=g2EvTL!IuFRg)p!2$B>UfENi7jh#` zux69G19tG$d=EwsNWZGBJBk9FQVMuJtseN*=-8n7qA=FYEkYJ9S_2Z5aFZiWZ{iL^ z-BTzla!_69Wc3~-RayP2_z^b2^a30AK9<*jHCkLH(V5|w$ne502)&$vTG|B%y5era zKqc>t`a78ChuvkZutQ_7A;~G-F||K&obv299&_cmTF~Q6;XJ>@GJduGablLsvoJO6>Nr zp@viwE6d}@zHu%#NNp@Y)3T>ZJP+kiWewdaV=Yz$+z(XTOSZKO>`_I^WbjYh~fxUX6OiPaDGWR>Tt5pzuA-e+0_XR`jq6+_1DCe8m3sPuoR0<42s`c~k}NZ`iK z%V3FSgEJk%65oaBWHKN?9kI8nyof@wZl0qTiHMcnt0VkmD(0dio*Dv`%Nd_Lon6b*$NvG28?Ol!fzCxImcfd+l zFUuyOGP)BLi_54dkt?#g%OZmJTiz0RX)ibGC3Kq7N&Az+G}>ay;&tGM#P~+!wHkMc zy@BgKxIC;?J35MV|JMG?dcVh8~uA&JQh7mJXXL^vJ?X|*lA*xG8X zt@fr?5ijHd45C5;B3P-SqMl(;5Ea68-tXGyoS6y4_UZHf-rrx%hr^t+uWPTp_S$Q& zz4qD+0h67D@1i$c%T`-sV-IJiWNge+oMF&B!m$>|_qjeA)F?$tf7lU9mV|!jq*jh5 zh$A+1L`*p;`XOI`-8H?N*_4JslxR3Ulb*PVuxLNNO?kYo!=!TKnBXRsAWBW;TcV5Py2(zWKXCbGQi)5pD=N{LeOwu?@!r-lL z_dGF`L4m|wWHPxT5@89|VI4OU1ijRgN}!#A^qDz>A{^75>dtqcZHfc?l5sv*&l)a3 zh2;nn-v#mp%P5m73bTE(i7e;DjtNDGJGv+@kjo}qvNXHzf1fXsWPHNbpy}*|IRr<@ zd$84zzIlb3B_;BMD^A#)apDNZ{os776n8@fZxPq$#1)X1&D*Svyc_qkTZo+#uZpJL zi#CLJ1}IvWV+^yO8jpDUia;7gM1Bm8=EVE_!+XHNT3u1`scR`&YdD z>CUrfkD0W}w<^{v_q131t&jRwUfllZv8u1jhxuRrV~_9uZq@cz&ocQOXZpSuaJHe< zXHC$G$Mkc3xviM$HKK>Z^W0g!+-5mCX~vyLoHqIhsXW>PM^uA2QX^T`{mU#59FgXj zx!{8V&iF2l;v5cMdyDJiFrrunhi)O53x8yFsn1=$4iAGox3xuQkP?*ke42#8?@>}X z|DV6-y+7~9^XDnM5w$*4%hE$#%?|&Iz^CUw-^d`1xLWy z*I5ZDY_R>xVn~jk4VH%8&<8Yha$bh^tty~u<4&}0rntdWYOf@eK3*0i^1`pBv@h`R zDc`1IKT?23nQy5tS%r|AI`5L?!pT*MYlu$QWmyY}slxHfWevOpuViy8 z)3`!3f??NTIHmZQ7{E$#a`YSmO}>?P*{!5ysWyV2(A%J36fg28cMWy$|3+Mn6{qf7 z9j~9~)AG+G$jE1sWA)!%R{u4U8RBsgp(L(d2u(+vj4jsxKwX*O7t( zE8Ok_pY=V?`kiF`-X*`r4RvZX%u{vMERit&e36=E=9|1OPrg2$e0@6k`q$*^isWk} zuYzt$SeFcKO}=hRCfJb-?QeFGWK+zX7+wb_Lkp6xzU1q;s`s$naS76FW>{wJs~96)m`D5PCPO^J|;@+MCoF3>2@^8rei<`}b|B)t}R3dTM9=X;*tz z3=eGi&pMoPRb&3)8WKzDlr?B23h)!>qZD4e@!tK=D?beP|zX!h4GebF&|(|4Bcj zd3~yZ)5p_0*N0INsEgs{A=ekiFez_ekZZHn#y(!=)1899?!LS}?)r_CRO-q|>*9Dj z!|8BMn2I*2S#voEz+pcQR^-ML2bQvb<0tnE>4&BrU9>2EJk%Xri4;L2?Cs)PEn>6QjF^S*t?*uuX4X& zTtq!SrB+ha`1Bq=4NPfWVt?_fbK$vPL<1sm-r1+)219}BFT}sYoYeMd?_qc*H5KZQ zd`DM}VhRb2Ep9HWH;`hxQL1(R?XI8%8-x=RQa;My+J%wf2%fp zSM?|51Z~TBWB8B6&9a9jBrA(_e4hm;;TA2_9j9RxC*kps_l)e=?U9d> znM%IBKqgM@AI9yhYJJ7@k;X+n`IixD_y|JPW3M$~V+D{ey6JhnDM$Ii3gmoj)J|hA ze=G^B>K_^J$QRd$coEKDD8-3grmvWN<8b~4CRs!5W0kP5_lM?w8}xQe9i7j=UVy6G z?MYz@tQy1wOSFQlLeh=1Sc`hK#@t5ODK1ozr!z79&*Pl8do;TdXh4$ZedtuS(prqU zSsnI!)Y`Q80PuVtcskT2++F+F7>&lTp;1kzKKCfu#iQzExw6aEr^WD4tjXU*tC_Bk z$*ybf8XQGa@L|&%@J4e(k9pq#dg* zlv8dsys~H$Lw_u5MgPmODgM7ByAS_Q%l7bpS$2Q^4`vVKe-uEX=wJaUKPWimheKBK zb4T_h`I(k|m;97v&y=5FcBT9*$ew3hhzet@zK}{X)xiQ)U#6-rQ`MKL>dRF1Wvcoz z&HAv?m-?{pmHNmc^^r&FBa_reE~$@fQXl!|fdXmWq}!+5dE2etN#0wP*~e{OhPuCQ zPv+R6-*?~tJc}RB>+;=4eLs=-_NZ_8h{UV+#pb*B;Rgiopi!Y56133n(;!(B?Sfn^ z2A7Q&%un!6^xh(*>er5OyTd@ZzkGS)FYcfmexx{lq&PuOAbc4{=5mKnd=3J^^h~Vu zybq7g^xh%GQoSU!px|c*UqV9ic&A{$0ufEV9Vbugx`?#m@E>@{M+=mcz*R;E{JH|)um41#lCq?2#_b); zQyI)MS-gCJFlraoaw3jI4Wf6!(|L3Y81F3pfQTOYZD6Y3zBBPR|EJE=nTdSbejg_) zNjpc<)=FA{c<*FXgKU^9{f$zf!90};COjzZ=YrDR@U#@04wzJc5zf66)3VdJ(6Xy1 zpm8GgV}@m#AlLZ(RGAkfNT!+apw&MUJ65BWU~!$;b=cV8<-=wLuNyWdcnwSgjX+nW z&q$mE3gKJD))B!WkmFRcrX9UwSQe*zpNlWM)bAd#=Z)@}YV*GyND}r6eRB7&5-xCj zJA~QhXvesC9*q%v9Q&@rPVQbz$OA0J-XjEIO2i^ai+uy6v~);lCkpr1h%-%}!aqqT z(71G|@m?nP0>Kxz4_{PbJEm;1%8^^L(R>x@ffFJahqbI+8UXp0LQ zxb)Ld$HWTgRAMd-zN6BHzA}H_?g+KJ;U`j49hb~0b}UD+;|=+E ziEe)SkRa+qV}%4fMZgWfBmuvd0Cw$Eayh5NEXPiZgA0^3R}U9nJQsp&9Jpr*!2>o_KU-V)>~miBuw;|SqPL(hmID%FM zR~Noh;o5YN{Y37lA^t;>7$1vN!fgW&&Sbc(k#OL(%98Ub(Z3NEV2IJ+7v&p`yrj9w zO7mL@3!7o5SYb;gY`z(`={d8V;%hfrqQdeY{Rw1p5Z{<~*WXTf)WLto1-R{mkI4Mb zJ>kIW^xhmCrn|1;l{pk)RC8UzJ0@+5dYGG}T)M>hgdGS2NukNOuHjhR41@@mQXjI%^to>PuIi&tS z!vDs3w^1@8qcK`-cnlhI51DX8HC&l@;c_gu7H#A$2E~5ze2B?jACC^fu`U zt8j6CtJ*L0CG&RfenZZESyrNA9V$XMs?)k1M<~l!eTNJYbG>S%7iZhwnf}p~^lDs0 zuOPYYA7!_>8ETySuZp;lBGh^eJRJSAll!Ygg=${%#=iH|?m}+)&wLGr(5Yjf1*l>N zqH|jx4d8m6y?7x+QL6t`=mblOxqZZud<}F;PMjOq;an6U=1oRdW$1Xo*m`>helTv5 zwAi=@eyZT%yLR^qDMV}%l~XJ^wVt~_Wwx!)ep=PyI$7XDQWz+MQf=|6)dwMc?2t

Ho;s) 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�WQGrnFcOj^kc?ibHc z^Ch+i9uX8!U6eL{NMX)aqS(!lJKE|uaUbsTmJaN?(B7|yCKFq@9FC|v^*>dm8c z$eYk?IOE=%MLImDZl-4(eI;q+MDo$}de8VW8nGc6fLCv{5sC zI$)Vs*Nv*Yj(Hg!(kRnwHXN&e3OU&QqS{zqX}0sQzwM~mM0U-(xF6mCd(ks8v1~x8 zwuUPe#ObQppZci&W?S;MRWA_25p4MNiGu-Q8!_y`_?Ej@^&SzvU-%Qcw|+Qv>`RJq zK%dvT=yYE165pW19Mfxujc_p3X3%c7MxT)L4>QEfv55smZlk%#{Np-SGSsSP)UX|H z*IiXF_FW$cUTEJ6eml^7V#OnU>D9JywF(=R3Hw8Qw->)3U9L#o>~D7XxW})PJ`aR@ zBLs2(iS({_e+#VhuV4p0Ili4v!e{**BDkc%3P%t0>sK1P@c5$Vzr(I{K(0kmy(^cP zJgE9`6n#j(iGxSDSM@wK+}laJFT{!G`8Z?)K?n2JFFJ$QyV$VwI#Zo6LoiS(S@oZhu#m^Jx>t zT^GK2IOA`^T|_xJkATq6q@hiiL=V#H!fov&z3N`Re6))Wt1{`}GAMV8m%r14P(XVikih>pB2&KB2Q73J%`AOShic0qvZ&n05N-U#H znl(q+Re4bDpmS+k3e~dhaV^LiOFxWag1R_12z_xxjRZM)ly02cbd;{+%`1oTgpZ-C zbU1?<-kQOV&}P(d+1HDaLsV6Qy8{LhgC+l|Vn#A{97G!HSF7}%mh<*UnFk@5x z!T`Hcr0h{!&wsvRp6!+_EC!25Z~>M|OWNx{Yilqu<%lrDwWkMby02*WaOn|twRl%L9D zn1L>n87Mg}SGWK;TA6Yle*#0{J`>N(i_O9b{&Ka=367!-wdAS%`9*AnXzdESK=bQ> zg<4}-Go}Ue6^#onZY15xvr_0}7%7eGB+*$WNg*Ggd}oM_p5%R1ri|zShCI`a)mAeQ z6r4m+RQ3FI6mYQ=ut`Rop8w@tG6Nk6}D3)V5lfDhJvO^vX9hY z5k80936&vBY&6PVxATe^W$HWX@_)=0zSH-;MpPOoAdhMJ4Fn+dbyequeJh+7jGCc6 z^Y)&ERWs)BD~@enxqQyeSFpk!BPvpJ{Fv(tkJLo)ANWjkA zgWlXt+Lpd;g}DcvUlnTa7IIXe=?%BDtq=xb^xcsAcJ8r4=Y~kF}vr`|$rXLggn`)Q*G zKCOM_JS26#)3+`6t3u}+gb#B5c=XXi?XyDtE{|37wCue!wLi66br0LNyrxv!N|M1; zp1U!%`qTb$pitM=>yrj1AW+p)^vQp_9l81|fS`4UtSSNPQtA<~+DVi9`qn!%?U=JI z_g$+#nl$wMUdv`_TaT+t_gzI5qr#8&dgPwvN453N1G)S99+Jv75!iF-$oWqlS6LhA z97bi{aQzj1(_cW)wd--Ng;{S`m<+!;$VHZuM zhAK4t>NV>QZ~k0+*DjryZ&bnISG#@o_D6k_O`xdW?{>SU<+vKiu+xTramJQ!lJFC= z*R14)Yrg1x+bC^o?#8~6+^x<7-tY@fSM-xV(1wjYof~u86_WOHgVzp$zCHZH>FrPK zIieksW_ZI7WxUs=Vn*&E=RR$%*^GDlf`*|F1}+ZguEkZ!5$6W2t!eEk&UbUa(x@X` z?;4SJD4x5uD{)fA0f?oE-T|JpaD8U&{(BZ{`1k&(;q<`C;rfB+7d8C zfyNH&Ir!6~Abc%Qu4R2l;d@m_Zf{!Goz5!U_4<=qn{#ij>MRqZY2ioD_`}8zuG0=U zn{p#GbI@Jay|N$T-l{c2FkLHOUG;iX%PGv>b%DvIihW8 zTI)Wrh3+)8x4Z8>utk~+Ww+dVdx^G->3v7jx|5xIsezG0k*ECVt)35SUrFt|RW(w) zwk5ZTGGzQ*dEYmC;@a9ma?t^c zV6$^?q4tkNeLZ%3cIh#x4@R1(&#P_DZIYyF#P%NPd_rmrLR3;C2zCCZSNip4OPLK$ zy?^2O1I}ZG+J{ofTDRof(EUK}MhN|sLHmZh=8SL-plRdD&I8@s>GD=>U-*S9U)i+v zVp{P{Q{zbq9Mf}*f*)>vAa;9GbB_aUsKA}g_`SZbH9(hA&bw^3_CNyA1ME4g8(15fpi31VtT*%8F!!`=!FGk4=|=W7ajR*8U+Ugr`fN939VsnJpDC585@b z{qfo^HNNn@PUXojr@8J>x4HSC*lhygT$|>00KnIB8=i?Y;}Y>4)N5oPKidogrNy9# zZ3y+hCw9upYY58SpVMrd|95HqNb37gWgR)r*n{I0(0Z~j`~$hjfV*kjy~d&%6j6|$ zk>k{F&f)NNlgztn%#GWGGQrYMiH`OdYq1GFr?`=vnWCbVJp&pz>K>t&#*r@kg@wl)YQo%w418O-f7H#dAw%-RhYb7|AY@vF3T{apc*g{#fm> zc08}Jgo0CmtIwWCRX*Ky(XYf-^(dR8KE1{R4f|v@N5sTi5i>Cf>=JKHX-2p#yD}h$ z2G!P%*&3SFu`PYZVkNia6=K~>H}JnWU(cMrY^8WLr(Nh<{dw>D-J{<%=IiJKinoaZ zxc<+il$$k_*FAsE2gapH>SMLfDQwYd6EWBB5Mh}OK82WPK^TDkZjuS8i*kWgcisFL z0csCPTcTQ|o2^aa?>bbYO8};$jh1o=0d#TYZ!!g1W7C7mkKPB$?}}=ERCLqE&!6SL zQO~8|-`p?Lu0jJR*Ko*YB>SW(h&Ok-|Mp8j?65gzF5)a#Y9`pI?ihBmt1Y|REEeTs zplq2My%bGk-7Up*x;ZA-dEmXxc=~SwT#Ed!>>d6UrQ+NsL8-8n&M5T}Hd56%+GF&m zk5FTz5+__`^-M*Xmr!|9U6QiDVbSLjVVU~y6ztGZgo!W2Y1sn<;ri^$`K(#gPESpf z`%*!MyCIvfvHIn*%`4Z3%*E^&OoFm`~F1hOYfBC6#|L-B8Q8q7gF5!_!&B0tA^B}E>2+?+oo zid-0G591g|OY9`MpCSV5yu3i|vD`oc_7#pu(H^O-zj^-0kFSahf4G1pG7;Xjjww>G zm=>tQx49o!Dn;j^KCJ$;Y`T+KNFsa-u8&&XY?%|A!yfV)cSF0pLvNl~z391={sNGU zy1yjQa&}rEuVwCRu_3O+I$AjcTicZemt}j#=6uS%=gfGCmz5v!AZlZLw$C39L1 zZ!pqgh3G#@L+sA*$u+uyoVCvW(FaIw)3aZTzFa`Lq5xMk^Q`jJ>}OFf!DyVm87lDX zG4{bK~~+(8jT zxpmrIw@SX{j%x*BS8gRIF8T*Tmr2*2k=nKACp%xxr$JksN`=ylkN;$L5PDI<0LUM{ z3UsXt%19zCpp0Og}Y?d?C*ND>}PgJhFReWFFGK4D~Eb7+KU?WI(o2_*2iSAaZ zYG@H!j1d-?UCxjGBqdxr_)B9fgGXhHirX*dHLB8SsZFN?p(&H-7N6;EoZ+p||Y*kl-na#8GjAuf7zd`eX)D zb$e7U9WZv%d-ndjX|ILiFFwTK7;ogbnKPyP8FI$%g%pAHPJf?1RM7;`8)syQbNvYz zaS64Jg78eAz?VydAc+}DU6udIASnZ)aGm~B(R)5_NTK@jz48;OkuUi(R-7Vrq}~}Y zr@J)D_2Ex2{Y4#J{Ju|%q8{3KJ*+vLbq!!z8X&VsO%;hZtPiA@0N`|n8u@=seqY@R zRS~LInO(|I-bM=)l53=Lncq1<=EpKs&;O~E&jyyB@nd;2{i+4@v?kmvgtB5I=|8nK z*cWZ03JebP=VgXsUiVA5QP5ACUUw*t*)qx&aYvz#;~;Y{v7QP&kf^_-wX)4TD_nH*p2;S+}J_+FMGCg*UsmISK zl_K;Xs$Qx+6o)@Ay40utO#y%?>C;|TQCix&zPz)u=b~cdwAfbTIT^Iz={2S*uJ^U} zMO9ObITuJ98mu;?O9f^V9HE-n#^iKn+0Wf#YSPU6`s#KMPMOSvP3x|;j|zy(wn=;R znpV{;e5xsafswg+MpW6YiCM$9UTveh{!}m_n|+%2&)}wc77a{8$XcF0QC`xL@+6ix#{7RrN8hN8LwV z*z_3J(_Q}y33-vD%s2N)^A~UQ)qQ+~V_OgEJ!GdiEH#RyRAG-UTz^ELo#a(R+An8E zAHEFwj}2CQZj}&-figvnz`k-5Ph^zCLw>>4l6UA-Wz}xa4((LtM0IaZH{-$ z{?1^xGCU@IKLeR-z0&8Ynde%jSrx5Mdk z9xP-ztq-sJ+^Nk&TAdFeaEWGd9x-Bfg@!8HQ}gxV_v4eAqG`1sH!`|vKaz>O`##Ng zwl>aVjT@hs%uC-mA_dv<>eB|YCRgyUkYFpF@UQ>mTaH{mPWF@`W&6T(RsN7s1uGaQ zM~Xd(X+&N!rAm3}W53*Gzf6+V9bDZ*!0~qk%%syy5xY{})Bv3)^3gcs2`Ed%HX-%T zRSDehZrt~d(8>ZNay5sS^NGh$bHk1NM#g5=&5`vuuLzM{0zeq}NhLgjzq)l#rCqX2}1v2$SS2 zdL;iK$#2fI3U?OTO#d1k&KMoX%$c3}dHv^t*56OH? z8J>W4NYy=#k8Js`|G3;n@3;U>QKI8O!)GvfkN&s-s~H? zOwj0lXf?ynkozL)+A+VCISwzP_syjuP6qCVPf02hLWkJ^x@YWU!=wk&;B^BL!G2EtA&%f@94@4S(J2+&4?c`b|8M494wthljofh{RJhHv|g%x zFs0hA(yoO>Msw7Bl`&OP+?0|cR{*<1QgkDQ@!Q`d#-~_K%KDwU(=GEUMtco;6~9)N z`NwOq@c;ghjA`LnwsbEq!bVd#t;JU@AvVEZl@x)zuT&Vp(`{)g*wd#!Egj5~D|D5z zg@5KPK~>hHI+b;*)!;(L)iV?Fni%fyG3H1n#a_8|h660A<1NE4Md_L;%yDaQ-5bak z+&3&ITp&))wrmM)i|Ix!=f4zx5&86Mu@+}^_f&8wM&{EewksRzFYx|{oSEsETLj#k zx3y$LcRlws0kzp8eTmeF>6`Kk>eC-I0YI*3F=qi>P|(n49uyjAM0n$ebjUUQJznD~thoVZw2xrRuE7K~tPSyT)g z6Z}T_vsjxN#i*Fo8mI0P^j9C=9<3q(>O2eTG}bP+^}mwdI?a)Cr;?CKs=_OAo6>8V zRDQFX>6o&4yGzpEC6pxQEsB!*+b@a9yV4Gssa{T)yqTzFH4X*LGyaG|SlDwfk}B~v z_X}}9s^6>pR0Mq{AGlT@_Av_IW5y-ufYBwwdeuF|hA!V|K+Lev9#w=`D%vMT19>~< zHbHdUxD|hcv})R=W~N#W0*IylEb8OjubMxpXP2s{MO>IG79Siad;+TV$ay(&u|no+ z!^3t+EygQZvh>(vbX9PvDPgk(13+1>I|6ye+~28uP*5ovm&8yp9mpf?_Ewi8;F{QU zhHmmVxzX{q0d%12r*MR2kD2F9lCA@=)k&Fb?e(2G6mXh^CQ~V-_RfL(4?CdR6@#=C zA3CP#wEswg6kYYqaO5*964wLrss7H#CrHOPXzSU$gqd zXtSzOtwlqjWaZ4LnB^H;ex9-(V4cK;S^lbBESc-5&Gpncu|4Pa0c5i7B8yLt|7M_I8VLUr_hwf{$;=u+b3B(lu5Dm z%1OMMD#>XwIC(LeI72O{MZwl$ys$=4Bg>d@ZxeYEPASG8e_^TQjJ?7dbl3cPdQx}> zT-@wVvq{M%ZU#gtm{4k1^#4EWsQ*tH;%dG-;hU^VPM0Z=Nu@=={qNs@G4Nju{1*fN z#lU|t@Lvr4uQ7nP-_G*Z*nuKF@V7|)&wusElz-*f&XbP3eihGMJP+}#;MvJ@_OFh{ z@8DU&^8(Lyp0r;R&$E*!lZEXto|!z4@-*`7=IMh*U>wgfo>zGcp3L7KjSuG8&C}-z z9J28&;CX@Phil3ywcG$Af7e%dswygGd!|=Z zd1joDXMks1Rj8bD1`Mz=jGtLmT0ZOFmprqisM1qidT)uRC@A$;1w9qhJ;n2j%St@? z0*7aAMb)$f7>*Zm6cT#7X?c^ zrRAl;(xNi(aW^d$=*;$iSGvlg86}=z(bTdMGo2JxQeF|7G1D`e1);#%#sug zOUltyR6WzgkJL0~q}AyD(@V>X%1WyxN~+K4;TW6j8)??`vWmH&dHmdxl1fR{uWXu) zq>*JMMbZtaVUqi}pz)!pl{1T~6^5sED8D+Kz>P8iK<|h>X1ZTHp-?= zQ9We#Ru4zXykJ$)6oGt7RY`S4sH(W6+KdbJa8wn|6;Nkg7Oc2zT7_92!4l+|3hk9u z%t!=IFD(lusy;5mcp(&NRC&oBjGtz~W+PAm zH?5-FB))0DX8m2M{x%Pn&zkxHUNbno!2I2z!X1tsBhBx<=66Ab72n(Xy|v&3`f&8C zc38w^(Vh&3*`?(+`3-Yal}w+aNX!$Q2~KBL(BZ{Z71h-xbY4m2%n~qdr?3gcQ5>oc zR?N2YB|;P9J()ud_i4us_e8qmia#Oo@$n}DXkx_XGabM>p)^NFusdmPMMyCSb8ID` z6mmPBZzVZUGL~j4V(rl>Ka+HJhuiQb$G25JqdQntnqZ8b@x^2wMyX<{HvVBRFuAHw zaWGT`lMzZSsw%CnC^xCLsH$X$r)VlEii(4tIYnim5=G4_e0r$7I9OT%bFg9@#os#? zzxm8#arynW4;KNQbu9iC-wSviKI2$?C*dA;YX87N;Q!=F|BgKEDdp@)dH+{s|G%tX zC=2bX`b+0_^+ld(khf=UX>g_twy896 zhNrl!LU9|1oxeYGTZxeMrJmBDhsnefDxY2!s-8(<(~5#cOk3)YA_NgrnbfN0n`l?_ zt;YKQdPcNw&;xT_c_E$V8O{LY9Wko^hR;j6D{u9S)$N0*s(m5h+*y)bX z-;oD+`jfl5bXtii5U7TAEYBp_{{YwHJ-5&CyZzo{@oahK9gBD17oqZ5-I3OStqM%GEG)@sIa`IG#0c1d+L zB6-L7&bvbum4JK7^eV(9b0EP>80{u3R)xo5Ppg>im{49i&!P+X ze=%@=SA90QI!09oOA$7tlkF93f7Wp&Ri3F8q4H@t<`T(Tl#v$;7cx=Y{>8JfCK4_?_PITmE035sg@pMRtdp=RN0-v(|J-U z-qC6LBsnGE_1k)e#6qugm=oy|`UpE+M-`2ouDTK~lc2FAYVG)rv~mKOAoZI1k51C5 zF0$iK=m}L+4@XgcziF3FmH&MCbnB(1>i;tJe}(%02K9fXB&p8tcW>y@pbD6y{+}zs zx5%qWk)5|jh;4S!yc3%#5#I%wPu7UZo{zU*nhak*n0C)ykXsw*6q!w8EnuP!N@ zetF5f62~niMYC*aex$4&VGE23>8k;vc@xD2KO;lPOfUkQ(9MuC;l(;r<5 ztrwhI3`2RW!Atih%`aVA|4eS^Bb(beFWj3KgcpQp8&7 zRwwyfq3C3a|6SrKsu;m@41Zq__KwFVo*s|y;wH~|JkRkA;kl5o8;Fy~Al+hq5A&RK zMm+uvaUb)v^1ROTEYHt*mhjB6o?)cBn5PdK-eohf8|{s zgXc;s-L+@N3-;m$M586JkNYGd6(y69tY1k*6-E) z-oqp5mR%H&kLS6M=j;pdImUAvPbtrjd763N;c*f_+)A@!Fu1-3I0u=}Hh$$PBy0?E zzqmRczk}xizCYks(mgXI9>0-C&oiGt^D9pq&yNTnz%!p`7vGsyx(<@o+$xs&p7PM_ zsm!~`n8^0#N?}?lGiSBP5B3=CkWbB337MHGKan$4;xdJ*M42dEryVC3vq+F?QxwB? zYR3o*lmXQxOo+z=N>QcgQ2{QI&RpS}btYSMLPJhSUtTi9R6!(?swOAW!3zFI^;a|f zitx%3X?9Whd`}X@j^#})lNmly8Jf*%fL(8V*z!LL>t*_mn>v*w~WUu;u9ksznKnzOGDk1M|(z3z*yq zNje5pR1WdTdPL=x{5zf^m^jZ;Ik6zh9_du_J%ryngfe zy@ zr$amWPUv4*p?IVbCFKJ56pN~-%q^;t4Zvzeh81j8R6vn4OGs?Tn1Wg>j(&ZAjK^zu z(s`CY!#j_``#PRswhk&-F{`Bf`=U2OU)gWk5K|MXLeagc4UWzt`a4*MJNnIVP@Tw} zEP7>x*bG7m#D%5R#YI(W!R0z)uSmmx$zArIcz)EHC?0{Qt1`{_$~DWgh=zCX|uHF>2I7v+k%72MIb0 zksURxNt>qAHibX~3=n8ik}`#~4Q*Nmh!Sk9Bc>3vLe!{1BhG5oxEt9~<8D?ejJrXj zcG;*=v(m+Jjcarxj&73qzMpf>+_^KEpnmuJ*Z1Xx^mFg$dCqfw|Gej($qe#0_PI=^ z`tzC025w5VEs(4)krWpm z?AXgvI`6L?KL6hR41T*h&v#sDk*}4NbiMqiUP&`35#Njg0cY))Ni)r-tlg_w_I@#D zF8?O|LK`hv3Q((k@@7?DDbcyoWOd5Q6d55a*Lt{Zm45OH@A;o>Qm+GE{n|tPU*nTd zl9DyDTrcmYx(=e&d7*7qlkaaf{j-H+_*7haqS*?|p`EXCKF75v(yYg~F56Jd)+{}WE9-J7%|A+9JE|jq9 zmoRTV$9Lg{gx(COgj5N1=ncMB_7PCS)vJBgQ|0xjm+rpwqHH{QANd>^>~L7+RVKW= zj^AY!j$Mbk4=|i5(q2l@DtU$LtrIj*zoCIkb+cE6`|u(5tN0v_2)OV@hvN>gcfjH3 z11sON_O&Y&Oc218&BjDTZc z44eYv;2f9+m%z|_S2E?VLkT1qP3=WM;t_xBwr<>lVI=zq$@ZJIxax}LCP-}1#7_+*b0Up z!VVZ=Kldn@0B1xFE`V+}#XD+n4_1OupJD8 zeP9F}0#o2P7-R3+j68#jpqD*s71ZA_SOZ4E5EzP6&cHZ00tWvU_h9nVgrCoq{GXvd zfnl%>jGv?&f+;WsddJBpK9&n{FhnOf%MmBzU~q!;WZo49E5Tt<=3(wHQqIBjqvQkV zO;G;8)R$K>)fW@)uM!?`_A$}{OmQ@AX)SiXjvP#WlY9h&Gn5B#7>tYjJCsK-@?FXk zI18qQ|2M+T*%bb#NGC83#^w3nu`kb{;}Z10N4W;mKVaV<82&No&G}c6|G+)y{|WBF z5I6*;!3i++H0c>69%o1=Fa)-OQ7{6g!9I|~1v5in7#ss*U_$t3Rx;CI988P+r^NHk zJcIRM3Ty*|DeQnza7=h`22B2pb^wh17xjj-GSXlO4E`KW z2V=h^-e7!@^Z-M@#-7Ok2faGNvqZTEBflZtz}U0o7dQ(pg2CTXJ}-p_{opLv0(#Sg zSDt@IIOX~Glov3Sp;t`Lt!9QmKR5=4zyufpr@z6%JHZ&(4<^7k=;mDgX)p?=!C|nx z0lUvz&9s0KuoH}dQ7{e;g0tY5$j@2L%z(q-0+~!8DixD>o4jeho-=j)cHwFbuYXF|ZFzfWu%CJPFQ%Q=r>}JPT)8H(a0^JqZ+l)KV3x>d2Fbsyk7}yC8 zgHbREo&aaTI2hz4t|S-%=R^)JgI+#ws%XL z2?oJgFaj=tQP91G@PpOhELabwz*aB~MnHe%YGwcog2P}KJPF3YB$xotfGN-sBAk3z zR0RgX02l!q!6eut&+O$I1EXL9jDgc&0!)EPa2ZU4-mUo0Ua(p)47PwVup3N(G0@At zu#@00I0GiZ1uzY|x8eTf#19OE^5wetG8fpAmTm6W}a31E#<;p!F<%Bj6Y~3{HXx@H7~^fchysSbjNnz-llB)`9LC$`$AZ zBVZ8hm*)$y2Zq2&FbvLsQ7{D#gN_#b0lnZX7y#2?2=u;zdJhJ{C>REZz$h38W8fqh z2Ty}ZZ~>eJ9amrn^n%_uVi)v-jbI3D10!HBm;__sEI0zD!3oeEpdNr;a1IQDOJEo* zzY_PL4~&69a2RX`6JRGe3r0aV2j&cdesB~FffHa9Oo9n;4x9xS!8BO96Mruv{9q8Q z0mEQDI1ILeX)pqYE+)Of2zWx|U>r<>lc2kn@(BjP1uz0ST1hvs5=?=9(Eld#6O4c@ zU;>PQZjM*)7akl2qu@#5|C;&)dcj$dgNtAibYDfdf}{_a0BgY{7y?sZ8|Z#B?FJYJ z$H35AumeWGMKA`suf{#-15;oS^uCqwfgvygM!a2!m5NzhwIeFH;aTKG$` za}DVSHiPcJp`3w!uon!1F)+;U8;yg*;0ze5$2}MUE5g_T17NfP_h678#5)0oz&PmL zM7c57za;)>1Nt#(7%Ip0;AwEm;k*u5Kb@vrocup zaT)mr#xEy4V6=tsfU{Sie=)RVCfMGBRM!`9eUq|}4!-IY>4TeDX^`rwh3=Rknj)S2#+zEdp^`?XL0DHjL zF47B3>?i$&KR`L%O}u)@PcV5KOu~-f#E*tGZ+U?gVDDWo;}!k z2kkK!zZ*T!dk^g-7=0({2c`$nyBYiUQNIQ6C;!3Z5akq{1t-Dq1Jpk-4K9Q6_mQ6w z^uQW01=fS!_mhrb2#kO+un$avLtqLV1KlS`H_#7GgCTGpjDqgH=z~?D{{xgSFb+0? zDX<%KKS((c`9s7541v>N1Uv)AK1ld(!5vr&&VGpW1l=E|y#yGTk%MV)7%bn9KcEjxfVE%}41u#?8<+xnz%)1@{NIv~ zVCXaW4@N=90qlZaFnyBt4jldh=_&jK`3xq&1fFuMl1^ z3XX$GFbM`H$xko_I&Py}d=>w|AXozqgN3=?{9rRxk)gz%V!frofY6;xW<@oCVWh@)Z6a;u#EsiLaCHp!ad|4-A51U>Hn* z5pV`fg3Dm&3DT<<_h1j0PLj`H>>IQb!h_z!@L&z-{ujatdcjuE4@STs*as%TI2iv| z(i=>Gjw9$#lh0rX41&X8E0_j*K=-!@9~cHtg9&gE^v+ODZpS`Y4RYQ_rUy)cBl7$m z@)z`em-v7QFc2mD|3-Mg;it$qF#7NCci;|;fbLo3U<{0dac~Mug0mw39_b5)LGPW| z0qen8Fak!tPdf&t!C5f$1N;YvLEl~218cz~7?S5X$`zRSA@y4LACWG7xcf2b3Z}sp zF!mGdg0tW$(El{$1`Pfu>GpQyU>oRuhW-p32B$&)PignwLAXF4m;md*S+E6krwBI~ z1pC2Z@TBlRBm7_-thgI@U^VDpB%Q(GU(p_c>Hi@=z{nEqML+t#q5lD+za{;^VQ>;m zfHQ(=#*f1Pj`-b!z28$l!4xd8OQ+mOkekY{iLOf?b@Fu9HNz8`zd?C}DFmy@rc zw}o^VA|F5>=)QvV0KH%<7y+YTd?)!0rofY6xRrfd@(i8^hp(nQJ%B&g5Pr}frd)!v z;3(+67JtDgI1eVlWzc^e`tRczjDha9OePI_!SeSb2Yp}=tOXmv5ZD7oz$I`VthoVq z;0dtegu^ibHiC0t6m;K6xIr&C1*X7dFt&?){Q&-Vke{G`H~9f3z&PmcBAq}l=y;I) z0jt0$7zATrGnfD)V355B{a^?j0ln-;NPsDD77VlJVF`?a6%UbaU=5f6L*Ojf38uk* z(7P8qU=U1zVem8<1sB0#uzVQzpdUW1n04Bf@FbR%>Dex5N=N$Z5 zFbFPyaj^1(U^jayz~Ozg3*am`2731s9xwz>gHdoE^dBIdK7<{x5_I>FPGAyj1BY)T zUSRkjcEBi@02AP}U@z`JOt`=rFn$>S!O#)X1@zxeJr*83DbG>bQ_y_};TF7;@;rk7 zU^N&6TR`t!xC0|#0!)DO!uR3dN3aK0f}yvQj$j0=1BbyDdA^(a1bX{vAA|?pA0_aje7NiYU3f=RII6WIMI^&O0VjB)}d!BH>` zPJr%F+<{(j4)lYIU=;L@fe+&!82&i%0b}3^FbT#%?Z6LtE3B<1m{8b z*GQK*_!#K{4ub<=5*(H1Q{*EUdz|?EE&hWwp#KTlQ!oLxf=Ms}&Vqel3LFB{U>uBp zgZP0-@C@kw7uq#21eSlA`~rPo=t&LGNkG|4Hoq8~R`vYy=}<7?i70gQMimD;*`#ijr59pY0wh(R>xM#hoje^F*id z>+ECXaX93(9VH_dDM9^0&VJ;_6q!D!Xl9J?`B?m`iN-@)v7e z$=oPhqo=}ot;gNqsql!N$Z5JAN#r|0CEudt{Hx^?(C({NGH){Sn?3GLo(d&a?oY$} zk+0`|33&v0t#QAnz{kX(e+3Ao1Cy+~|5LZu*c{AQv^cy!;LEP!4yl5V&boZai+0 zoizF{H?pgY%*S&QStah?U}SAd)@(F%7#Gm-q4NUK;S!s&p|T22-Q(X*n}1cvM8D8K z340J(HL^~z!6ojS;rikJQV48O8&tC_P5 zMRsBxcT32I*O66F_D0r`)gT*PM;1ahhOAiJJCViLao3ORoM@i3s;HF1+d zUfN~i#>>I9vuvNh|^DLL>Rl|khniQkUdJyge+-roRJl|-_a}AHJ$l}P3 z8rfElx6$J}B>z^>S5YUfRR2m#AYmUs-@RugbF0yJ(jjd&9jXs*O#DaAR9E?h4a82} zEl^=4{7H09q4PSULwL~fxFtMikj*0dW5VM@zmkLv-kcjhkk^D+cR$%M2hr(8=Nj#w z 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

ssLeokXa$=A`nd&tc`^Eb&P51U(m^cf0Sgc?f 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 /tmp/dune_71502d_output +# Promoting "_build/default/SICXE.opam" to "SICXE.opam" +$ (cd _build/default && /usr/bin/ocamlc.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -w -49 -nopervasives -nostdlib -g -bin-annot -I lib/.SICXE.objs/byte -no-alias-deps -opaque -o lib/.SICXE.objs/byte/sICXE.cmo -c -impl lib/sICXE.ml-gen) +$ (cd _build/default && /usr/bin/ocamldep.opt -modules -impl lib/opcodeTable.ml) > _build/default/lib/.SICXE.objs/sICXE__OpcodeTable.impl.d +$ (cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -w -49 -nopervasives -nostdlib -g -I lib/.SICXE.objs/byte -I lib/.SICXE.objs/native -intf-suffix .ml-gen -no-alias-deps -opaque -o lib/.SICXE.objs/native/sICXE.cmx -c -impl lib/sICXE.ml-gen) +$ (cd _build/default && /usr/bin/ocamldep.opt -modules -impl lib/decoder.ml) > _build/default/lib/.SICXE.objs/sICXE__Decoder.impl.d +$ (cd _build/default && /usr/bin/ocamldep.opt -modules -impl lib/izvajalnik.ml) > _build/default/lib/.SICXE.objs/sICXE__Izvajalnik.impl.d +$ (cd _build/default && /usr/bin/ocamlc.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -bin-annot -I lib/.SICXE.objs/byte -no-alias-deps -opaque -open SICXE -o lib/.SICXE.objs/byte/sICXE__OpcodeTable.cmo -c -impl lib/opcodeTable.ml) +$ (cd _build/default && /usr/bin/ocamlc.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -bin-annot -I test/.test_SICXE.eobjs/byte -no-alias-deps -opaque -o test/.test_SICXE.eobjs/byte/dune__exe__Test_SICXE.cmi -c -intf test/test_SICXE.mli) +$ (cd _build/default && /usr/bin/ocamlc.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -bin-annot -I lib/.SICXE.objs/byte -no-alias-deps -opaque -open SICXE -o lib/.SICXE.objs/byte/sICXE__Decoder.cmo -c -impl lib/decoder.ml) +$ (cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -I lib/.SICXE.objs/byte -I lib/.SICXE.objs/native -intf-suffix .ml -no-alias-deps -opaque -open SICXE -o lib/.SICXE.objs/native/sICXE__OpcodeTable.cmx -c -impl lib/opcodeTable.ml) +$ (cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -I test/.test_SICXE.eobjs/byte -I test/.test_SICXE.eobjs/native -intf-suffix .ml -no-alias-deps -opaque -o test/.test_SICXE.eobjs/native/dune__exe__Test_SICXE.cmx -c -impl test/test_SICXE.ml) +$ (cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -I lib/.SICXE.objs/byte -I lib/.SICXE.objs/native -intf-suffix .ml -no-alias-deps -opaque -open SICXE -o lib/.SICXE.objs/native/sICXE__Decoder.cmx -c -impl lib/decoder.ml) +$ (cd _build/default && /usr/bin/ocamlc.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -bin-annot -I lib/.SICXE.objs/byte -no-alias-deps -opaque -open SICXE -o lib/.SICXE.objs/byte/sICXE__Izvajalnik.cmo -c -impl lib/izvajalnik.ml) +> File "lib/izvajalnik.ml", line 72, characters 16-21: +> 72 | let getAddress (state : state) : int = +> ^^^^^ +> Error (warning 27 [unused-var-strict]): unused variable state. +> File "lib/izvajalnik.ml", line 77, characters 20-25: +> 77 | let executeFormat1 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = +> ^^^^^ +> Error (warning 27 [unused-var-strict]): unused variable state. +> File "lib/izvajalnik.ml", line 91, characters 7-9: +> 91 | let (r1, r2) = readR1R2 state in +> ^^ +> Error (warning 26 [unused-var]): unused variable r1. +> File "lib/izvajalnik.ml", line 91, characters 11-13: +> 91 | let (r1, r2) = readR1R2 state in +> ^^ +> Error (warning 26 [unused-var]): unused variable r2. +> File "lib/izvajalnik.ml", line 108, characters 36-42: +> 108 | let executeFormat3 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = +> ^^^^^^ +> Error (warning 27 [unused-var-strict]): unused variable nixbpe. +> File "lib/izvajalnik.ml", line 109, characters 6-13: +> 109 | let address = getAddress state in +> ^^^^^^^ +> Error (warning 26 [unused-var]): unused variable address. +> File "lib/izvajalnik.ml", line 157, characters 36-42: +> 157 | let executeFormat4 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = +> ^^^^^^ +> Error (warning 27 [unused-var-strict]): unused variable nixbpe. +> File "lib/izvajalnik.ml", line 158, characters 6-13: +> 158 | let address = getAddress state in +> ^^^^^^^ +> Error (warning 26 [unused-var]): unused variable address. +> File "lib/izvajalnik.ml", line 228, characters 14-17: +> 228 | | Failure msg -> byte1 |> Char.code |> invalidOpcode +> ^^^ +> Error (warning 27 [unused-var-strict]): unused variable msg. +[2] +$ (cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@31..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -o test/test_SICXE.exe test/.test_SICXE.eobjs/native/dune__exe__Test_SICXE.cmx) diff --git a/ass2/SICocaml/SICXE/bin/dune b/ass2/SICocaml/SICXE/bin/dune new file mode 100644 index 0000000..3bed0d6 --- /dev/null +++ b/ass2/SICocaml/SICXE/bin/dune @@ -0,0 +1,4 @@ +(executable + (public_name SICXE) + (name main) + (libraries SICXE)) diff --git a/ass2/SICocaml/SICXE/bin/main.ml b/ass2/SICocaml/SICXE/bin/main.ml new file mode 100644 index 0000000..7bf6048 --- /dev/null +++ b/ass2/SICocaml/SICXE/bin/main.ml @@ -0,0 +1 @@ +let () = print_endline "Hello, World!" diff --git a/ass2/SICocaml/SICXE/dune-project b/ass2/SICocaml/SICXE/dune-project new file mode 100644 index 0000000..35c6ec0 --- /dev/null +++ b/ass2/SICocaml/SICXE/dune-project @@ -0,0 +1,26 @@ +(lang dune 3.20) + +(name SICXE) + +(generate_opam_files true) + +(source + (github username/reponame)) + +(authors "Author Name ") + +(maintainers "Maintainer Name ") + +(license LICENSE) + +(documentation https://url/to/documentation) + +(package + (name SICXE) + (synopsis "A short synopsis") + (description "A longer description") + (depends ocaml) + (tags + ("add topics" "to describe" your project))) + +; See the complete stanza docs at https://dune.readthedocs.io/en/stable/reference/dune-project/index.html diff --git a/ass2/SICocaml/SICXE/lib/decoder.ml b/ass2/SICocaml/SICXE/lib/decoder.ml new file mode 100644 index 0000000..7955cc3 --- /dev/null +++ b/ass2/SICocaml/SICXE/lib/decoder.ml @@ -0,0 +1,10 @@ +(*decoderjeva naloga je pridobiti mnemonic in tip ukaza iz prvega byta z pogledom v hash-table*) +let table = OpcodeTable.table + +let decoder (byte1 : char) : OpcodeTable.info = + let opcode = (Char.code byte1) land 0xFC in + try + Hashtbl.find OpcodeTable.table opcode + with + | Not_found -> failwith "invalid opcode" + diff --git a/ass2/SICocaml/SICXE/lib/dune b/ass2/SICocaml/SICXE/lib/dune new file mode 100644 index 0000000..6debd99 --- /dev/null +++ b/ass2/SICocaml/SICXE/lib/dune @@ -0,0 +1,2 @@ +(library + (name SICXE)) diff --git a/ass2/SICocaml/SICXE/lib/izvajalnik.ml b/ass2/SICocaml/SICXE/lib/izvajalnik.ml new file mode 100644 index 0000000..fb27223 --- /dev/null +++ b/ass2/SICocaml/SICXE/lib/izvajalnik.ml @@ -0,0 +1,228 @@ +type registers = { + mutable a : int; + mutable x : int; + mutable l : int; + mutable b : int; + mutable s : int; + mutable t : int; + mutable f : int; + mutable pc : int; + mutable sw : int +} +(*tip state predstavlja stanje SIC/XE, z pomnilnikom in registri*) +type state = { + regs : registers; + memory : Bytes.t +} + +type nixbpe = { + n : int; + i : int; + x : int; + b : int; + p : int; + e : int +} + +(*kreiramo začetno stanje*) +let regs = {a = 0; x = 0; l = 0; b = 0; s = 0; t = 0; f = 0; pc = 0; sw = 0} +let memSize = 1 lsl 20 (*2^20*) +let memory = Bytes.make memSize '\x00' (*mutbale kos pomnilnika velikosti memSize*) +let state = {regs; memory} + + +(*----Funkcije izvajalnika----*) +(*TODO - brali bomo vedno relativno od začetka instrukcije, PC bomo na koncu ukaza povečali za pravo velikost!*) + +(*funkcije za javljanje napak*) +let notImplemented (mnemonic : string) = Printf.printf "mnemonic %s is not implemented!\n" mnemonic +let invalidOpcode (opcode : int) = Printf.printf "opcode %d is invalid!\n" opcode +let invalidAdressing () = Printf.printf "invalid adressing!\n" + +(*beri in povisaj PC*) +let fetch (state : state) : char = + let byte = Bytes.get state.memory state.regs.pc in + state.regs.pc <- state.regs.pc + 1; + byte + + (*beri za offset in ne povecaj PC*) +let readMem (state : state) (offset : int) : char = + Bytes.get state.memory (state.regs.pc + offset) + + +(*beri drugi byte ukaza formata 2 in vrni r1 in r2, kot int njunih vrednosti (reg a -> 1, reg x -> 2 ...)*) +let readR1R2 (state : state) : (int * int) = + let byte2 = Char.code (readMem state 1) in + let highNibble = (byte2 land 0xF0) lsr 4 in (*pridobi prvi nibble*) + let lowNibble = byte2 land 0x0F in (*pridobi drugi nibble*) + (highNibble, lowNibble) + +(*preberi byta 1 in 2 in dobi nixbpe bite*) +let getNIXBPE (state : state) : nixbpe = + let byte1 = Char.code (readMem state 0) in + let byte2 = Char.code (readMem state 1) in + {n = (byte1 lsr 1) land 1; + i = byte1 land 1; + x = (byte2 lsr 7) land 1; + b = (byte2 lsr 6) land 1; + p = (byte2 lsr 5) land 1; + e = (byte2 lsr 4) land 1;} + + +let getAddress (state : state) : int = + 42 + + +(*execute format 1*) +let executeFormat1 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = + match mnemonic with + | FIX -> notImplemented "FIX" + | FLOAT -> notImplemented "FLOAT" + | HIO -> notImplemented "HIO" + | NORM -> notImplemented "NORM" + | SIO -> notImplemented "SIO" + | TIO -> notImplemented "TIO" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 1") + + + +(*execute format 2*) +let executeFormat2 (state: state) (mnemonic : OpcodeTable.mnemonic) : unit = + let (r1, r2) = readR1R2 state in + match mnemonic with + | ADDR -> notImplemented "ADD" (*when implemented: -> add state r1 r2*) + | CLEAR -> notImplemented "CLEAR" + | COMPR -> notImplemented "F2" + | DIVR -> notImplemented "F2" + | MULR -> notImplemented "F2" + | RMO -> notImplemented "F2" + | SHIFTL -> notImplemented "F2" + | SHIFTR -> notImplemented "F2" + | SUBR -> notImplemented "F2" + | SVC -> notImplemented "F2" + | TIXR -> notImplemented "F2" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 2") + + +(*execute Format 3*) +let executeFormat3 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + | ADD -> notImplemented "ADD3" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 3") + + +let executeFormat4 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + (*aritmetika*) + | ADD -> notImplemented "ADD4" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 4") + + + + +(*execute format 3_4*) +let executeFormat3_4 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = + let nixbpe = getNIXBPE state in + match nixbpe.e with + | 0 -> executeFormat3 state nixbpe mnemonic + | 1 -> executeFormat4 state nixbpe mnemonic + | _ -> failwith "invalid computation of nxbpe" + + +(*execute ukaza*) +let execute (state : state) : unit = + let byte1 = readMem state 0 in (*read the 1st byte of the instruction*) + try + let {OpcodeTable.mnemonic; OpcodeTable.format} = Decoder.decoder byte1 in (*determen the format of the instruction from the 1st byte*) + match format with + | F1 -> executeFormat1 state mnemonic + | F2 -> executeFormat2 state mnemonic + | F3_4 -> executeFormat3_4 state mnemonic + with + | Failure msg -> byte1 |> Char.code |> invalidOpcode \ No newline at end of file diff --git a/ass2/SICocaml/SICXE/lib/opcodeTable.ml b/ass2/SICocaml/SICXE/lib/opcodeTable.ml new file mode 100644 index 0000000..4c4544c --- /dev/null +++ b/ass2/SICocaml/SICXE/lib/opcodeTable.ml @@ -0,0 +1,159 @@ +(*opcode hash table, formati ukazov in mnemoniki*) +type mnemonic = + (* Format 1 *) + | FIX | FLOAT | HIO | NORM | SIO | TIO + + (* Format 2 *) + | ADDR | CLEAR | COMPR | DIVR | MULR | RMO + | SHIFTL | SHIFTR | SUBR | SVC | TIXR + + (* Format 3/4 *) + | ADD | ADDF | AND | COMP | COMPF | DIV + | J | JEQ | JGT | JLT | JSUB | LDA | LDB | LDCH | LDF + | LDL | LDS | LDT | LDX | LPS | MUL | OR | RD + | RSUB | STA | STB | STCH | STF | STL | STS | STSW + | STT | STX | SUB | SUBF | TD | TIX | WD + +type format = + | F1 + | F2 + | F3_4 + +type info = { + mnemonic : mnemonic; + format : format; +} + +(* Opcode table *) + +let table : (int, info) Hashtbl.t = Hashtbl.create 128 + +let () = + let add op mnemonic format = + Hashtbl.add table op { mnemonic; format } + in + + (*Format 1 Instructions*) + add 0xC4 FIX F1; + add 0xC0 FLOAT F1; + add 0xC8 HIO F1; + add 0xC1 NORM F1; + add 0xF0 SIO F1; + add 0xF8 TIO F1; + + (*Format 2 Instructions*) + add 0x90 ADDR F2; + add 0xB4 CLEAR F2; + add 0xA0 COMPR F2; + add 0x9C DIVR F2; + add 0x98 MULR F2; + add 0xAC RMO F2; + add 0xA4 SHIFTL F2; + add 0xA8 SHIFTR F2; + add 0x94 SUBR F2; + add 0xB0 SVC F2; + add 0xB8 TIXR F2; + + (*Format 3/4 Instructions*) + add 0x18 ADD F3_4; + add 0x58 ADDF F3_4; + add 0x40 AND F3_4; + add 0x28 COMP F3_4; + add 0x88 COMPF F3_4; + add 0x24 DIV F3_4; + add 0x3C J F3_4; + add 0x30 JEQ F3_4; + add 0x34 JGT F3_4; + add 0x38 JLT F3_4; + add 0x48 JSUB F3_4; + add 0x00 LDA F3_4; + add 0x68 LDB F3_4; + add 0x50 LDCH F3_4; + add 0x70 LDF F3_4; + add 0x08 LDL F3_4; + add 0x6C LDS F3_4; + add 0x74 LDT F3_4; + add 0x04 LDX F3_4; + add 0xD0 LPS F3_4; + add 0x20 MUL F3_4; + add 0x44 OR F3_4; + add 0xD8 RD F3_4; + add 0x4C RSUB F3_4; + add 0x0C STA F3_4; + add 0x78 STB F3_4; + add 0x54 STCH F3_4; + add 0x80 STF F3_4; + add 0x14 STL F3_4; + add 0x7C STS F3_4; + add 0xE8 STSW F3_4; + add 0x84 STT F3_4; + add 0x10 STX F3_4; + add 0x1C SUB F3_4; + add 0x5C SUBF F3_4; + add 0xE0 TD F3_4; + add 0x2C TIX F3_4; + add 0xDC WD F3_4; +() + +(*mnemonic to string*) +let string_of_mnemonic = function + (* Format 1 *) + | FIX -> "FIX" + | FLOAT -> "FLOAT" + | HIO -> "HIO" + | NORM -> "NORM" + | SIO -> "SIO" + | TIO -> "TIO" + + (* Format 2 *) + | ADDR -> "ADDR" + | CLEAR -> "CLEAR" + | COMPR -> "COMPR" + | DIVR -> "DIVR" + | MULR -> "MULR" + | RMO -> "RMO" + | SHIFTL -> "SHIFTL" + | SHIFTR -> "SHIFTR" + | SUBR -> "SUBR" + | SVC -> "SVC" + | TIXR -> "TIXR" + + (* Format 3/4 *) + | ADD -> "ADD" + | ADDF -> "ADDF" + | AND -> "AND" + | COMP -> "COMP" + | COMPF -> "COMPF" + | DIV -> "DIV" + | J -> "J" + | JEQ -> "JEQ" + | JGT -> "JGT" + | JLT -> "JLT" + | JSUB -> "JSUB" + | LDA -> "LDA" + | LDB -> "LDB" + | LDCH -> "LDCH" + | LDF -> "LDF" + | LDL -> "LDL" + | LDS -> "LDS" + | LDT -> "LDT" + | LDX -> "LDX" + | LPS -> "LPS" + | MUL -> "MUL" + | OR -> "OR" + | RD -> "RD" + | RSUB -> "RSUB" + | STA -> "STA" + | STB -> "STB" + | STCH -> "STCH" + | STF -> "STF" + | STL -> "STL" + | STS -> "STS" + | STSW -> "STSW" + | STT -> "STT" + | STX -> "STX" + | SUB -> "SUB" + | SUBF -> "SUBF" + | TD -> "TD" + | TIX -> "TIX" + | WD -> "WD" diff --git a/ass2/SICocaml/SICXE/test/dune b/ass2/SICocaml/SICXE/test/dune new file mode 100644 index 0000000..d37d3d2 --- /dev/null +++ b/ass2/SICocaml/SICXE/test/dune @@ -0,0 +1,2 @@ +(test + (name test_SICXE)) diff --git a/ass2/SICocaml/SICXE/test/test_SICXE.ml b/ass2/SICocaml/SICXE/test/test_SICXE.ml new file mode 100644 index 0000000..e69de29 diff --git a/ass2/SICocaml/izvajalnik.ml b/ass2/SICocaml/izvajalnik.ml index 47588d7..fb27223 100644 --- a/ass2/SICocaml/izvajalnik.ml +++ b/ass2/SICocaml/izvajalnik.ml @@ -51,7 +51,7 @@ let readMem (state : state) (offset : int) : char = (*beri drugi byte ukaza formata 2 in vrni r1 in r2, kot int njunih vrednosti (reg a -> 1, reg x -> 2 ...)*) -let readFormat2Byte2 (state : state) : (int * int) = +let readR1R2 (state : state) : (int * int) = let byte2 = Char.code (readMem state 1) in let highNibble = (byte2 land 0xF0) lsr 4 in (*pridobi prvi nibble*) let lowNibble = byte2 land 0x0F in (*pridobi drugi nibble*) @@ -69,6 +69,10 @@ let getNIXBPE (state : state) : nixbpe = e = (byte2 lsr 4) land 1;} +let getAddress (state : state) : int = + 42 + + (*execute format 1*) let executeFormat1 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = match mnemonic with @@ -78,12 +82,13 @@ let executeFormat1 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = | NORM -> notImplemented "NORM" | SIO -> notImplemented "SIO" | TIO -> notImplemented "TIO" - | _ -> Printf.printf "Mnemonic %s falsely flaged as format 1" (OpcodeTable.string_of_mnemonic mnemonic) + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 1") + (*execute format 2*) let executeFormat2 (state: state) (mnemonic : OpcodeTable.mnemonic) : unit = - let (r1, r2) = readFormat2Byte2 state in + let (r1, r2) = readR1R2 state in match mnemonic with | ADDR -> notImplemented "ADD" (*when implemented: -> add state r1 r2*) | CLEAR -> notImplemented "CLEAR" @@ -96,18 +101,117 @@ let executeFormat2 (state: state) (mnemonic : OpcodeTable.mnemonic) : unit = | SUBR -> notImplemented "F2" | SVC -> notImplemented "F2" | TIXR -> notImplemented "F2" - |_ -> Printf.printf "Mnemonic %s falsely flaged as format 1" (OpcodeTable.string_of_mnemonic mnemonic) + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 2") -let executeFormat3 (state : state) (nixbpe : nixbpe) : unit +(*execute Format 3*) +let executeFormat3 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + | ADD -> notImplemented "ADD3" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 3") -(*execute format 3*) +let executeFormat4 (state : state) (nixbpe : nixbpe) (mnemonic: OpcodeTable.mnemonic): unit = + let address = getAddress state in + match mnemonic with + (*aritmetika*) + | ADD -> notImplemented "ADD4" + | ADDF -> notImplemented "ADDF4" + | AND -> notImplemented "AND4" + | COMP -> notImplemented "COMP4" + | COMPF -> notImplemented "COMPF4" + | DIV -> notImplemented "DIV4" + | MUL -> notImplemented "MUL4" + | OR -> notImplemented "OR4" + | SUB -> notImplemented "SUB4" + | SUBF -> notImplemented "SUBF4" + | TD -> notImplemented "TD4" + | WD -> notImplemented "WD4" + + (* Jump / subroutine *) + | J -> notImplemented "J4" + | JEQ -> notImplemented "JEQ4" + | JGT -> notImplemented "JGT4" + | JLT -> notImplemented "JLT4" + | JSUB -> notImplemented "JSUB4" + | RSUB -> notImplemented "RSUB4" + + (* Load/store *) + | LDA -> notImplemented "LDA4" + | LDB -> notImplemented "LDB4" + | LDCH -> notImplemented "LDCH4" + | LDF -> notImplemented "LDF4" + | LDL -> notImplemented "LDL4" + | LDS -> notImplemented "LDS4" + | LDT -> notImplemented "LDT4" + | LDX -> notImplemented "LDX4" + | LPS -> notImplemented "LPS4" + | STA -> notImplemented "STA4" + | STB -> notImplemented "STB4" + | STCH -> notImplemented "STCH4" + | STF -> notImplemented "STF4" + | STL -> notImplemented "STL4" + | STS -> notImplemented "STS4" + | STSW -> notImplemented "STSW4" + | STT -> notImplemented "STT4" + | STX -> notImplemented "STX4" + + (* Control / IO *) + | TIX -> notImplemented "TIX4" + |_ -> failwith ("Mnemonic" ^ (OpcodeTable.string_of_mnemonic mnemonic) ^ "falsely flaged as format 4") + + + + +(*execute format 3_4*) let executeFormat3_4 (state : state) (mnemonic : OpcodeTable.mnemonic) : unit = let nixbpe = getNIXBPE state in match nixbpe.e with - | 0 -> executeFormat3 state - | 1 -> executeFormat4 state + | 0 -> executeFormat3 state nixbpe mnemonic + | 1 -> executeFormat4 state nixbpe mnemonic | _ -> failwith "invalid computation of nxbpe" diff --git a/hello.asm b/hello.asm index 362a8cd..0d6e135 100644 --- a/hello.asm +++ b/hello.asm @@ -1,13 +1,13 @@ -.koda -hello START 0 - LDA n - LDB #9 - MULR A, B - STA out - WD out -halt J halt - -.podatki -n WORD 0x000002 -out RESW 1 - END hello +.koda +hello START 0 + LDA n + LDB #9 + MULR A, B + STA out + WD out +halt J halt + +.podatki +n WORD 0x000002 +out RESW 1 + END hello