From 97515180240908da9c17984802f8810545230311 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:06:05 +0000 Subject: [PATCH 1/8] Plan unsafe modifiers and safe commit flow Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/73ca2733-a902-400a-8f03-4388d21e2a7e Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 372238 -> 372238 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source_.jar b/source_.jar index d733f6ea93307dfe1e067ff638b8b78861cf817e..9ed97cffaac83e539d47fdeee7e204c46688eb40 100644 GIT binary patch delta 13561 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

=U-zJ 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

Date: Sun, 12 Apr 2026 11:11:59 +0000 Subject: [PATCH 2/8] Implement unsafe modifiers, unsafe types, and safe() commit flow Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/73ca2733-a902-400a-8f03-4388d21e2a7e Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 372238 -> 375781 bytes .../src/main/test/unsafe/UnsafeSafeCommit.cod | 22 ++ src/main/java/cod/ast/node/Method.java | 3 +- src/main/java/cod/ast/node/Type.java | 3 +- .../java/cod/interpreter/Interpreter.java | 27 ++ .../cod/interpreter/InterpreterVisitor.java | 114 ++++++ .../interpreter/context/ExecutionContext.java | 19 + .../handler/AssignmentHandler.java | 2 + .../cod/interpreter/handler/TypeHandler.java | 102 +++++- src/main/java/cod/parser/BaseParser.java | 31 +- .../java/cod/parser/DeclarationParser.java | 346 +++++++++++------- src/main/java/cod/parser/MainParser.java | 29 +- .../cod/parser/context/ParserContext.java | 17 +- .../cod/semantic/ConstructorResolver.java | 37 ++ 14 files changed, 605 insertions(+), 147 deletions(-) create mode 100644 src/main/cod/demo/src/main/test/unsafe/UnsafeSafeCommit.cod diff --git a/source_.jar b/source_.jar index 9ed97cffaac83e539d47fdeee7e204c46688eb40..96f7aea656485484f597ae541336921932bc1c01 100644 GIT binary patch delta 68386 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≪* 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 delta 64884 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 N8Udk57zWnk{{fFPGS~nB diff --git a/src/main/cod/demo/src/main/test/unsafe/UnsafeSafeCommit.cod b/src/main/cod/demo/src/main/test/unsafe/UnsafeSafeCommit.cod new file mode 100644 index 00000000..1d1062f9 --- /dev/null +++ b/src/main/cod/demo/src/main/test/unsafe/UnsafeSafeCommit.cod @@ -0,0 +1,22 @@ +unit test.unsafe (main: this) + +share unsafe UnsafeBox { + value: i8 = 0 + + share unsafe this(v: int) { + value = v + } + + share unsafe unbox(v: int) :: i8 { + wrapped: i8 = v + ~> (wrapped) + } +} + +share UnsafeMain { + share main() { + box: UnsafeBox = safe(UnsafeBox(260)) + n: int = safe(box.unbox(260)) + out(n) + } +} diff --git a/src/main/java/cod/ast/node/Method.java b/src/main/java/cod/ast/node/Method.java index 4db48c9c..842b5dcb 100644 --- a/src/main/java/cod/ast/node/Method.java +++ b/src/main/java/cod/ast/node/Method.java @@ -15,10 +15,11 @@ public class Method extends Base { public List body = new ArrayList(); public boolean isBuiltin = false; public boolean isPolicyMethod = false; + public boolean isUnsafe = false; @Override public final T accept(VisitorImpl visitor) { return visitor.visit(this); } -} \ No newline at end of file +} diff --git a/src/main/java/cod/ast/node/Type.java b/src/main/java/cod/ast/node/Type.java index 5ac02c16..9d3557c3 100644 --- a/src/main/java/cod/ast/node/Type.java +++ b/src/main/java/cod/ast/node/Type.java @@ -19,6 +19,7 @@ public class Type extends Base { public List statements = new ArrayList(); public List constructors = new ArrayList(); public List implementedPolicies = new ArrayList(); + public boolean isUnsafe = false; // Make Token fields transient public transient Token extendToken; @@ -32,4 +33,4 @@ public class Type extends Base { public final T accept(VisitorImpl visitor) { return visitor.visit(this); } -} \ No newline at end of file +} diff --git a/src/main/java/cod/interpreter/Interpreter.java b/src/main/java/cod/interpreter/Interpreter.java index 6e413cbd..bc94a6eb 100644 --- a/src/main/java/cod/interpreter/Interpreter.java +++ b/src/main/java/cod/interpreter/Interpreter.java @@ -986,6 +986,14 @@ public Object evalMethodCall( } throw new ProgramError("Method not found: " + call.name); } + + ExecutionContext callerCtx = ExecutionContext.getCurrentContext(); + if (method.isUnsafe && !isUnsafeExecutionContext(callerCtx) && !ExecutionContext.isUnsafeCommitAllowed()) { + throw new ProgramError( + "Unsafe method '" + method.methodName + "' cannot be called in a safe context. Use safe(" + + call.name + + "(...))."); + } boolean hasSingleSlot = method.returnSlots != null && method.returnSlots.size() == 1; if (call.slotNames.isEmpty() && hasSingleSlot && !call.isSingleSlotCall) { @@ -1075,6 +1083,8 @@ public Object evalMethodCall( } } + argValue = typeSystem.normalizeForDeclaredType(paramType, argValue); + if (paramType.contains("|")) { String activeType = typeSystem.getConcreteType(typeSystem.unwrap(argValue)); argValue = new TypeHandler.Value(argValue, activeType, paramType); @@ -1225,6 +1235,23 @@ private Type findTypeByName(String className) { return null; } } + + private boolean isUnsafeExecutionContext(ExecutionContext ctx) { + if (ctx == null) return false; + if (ctx.currentClass != null && ctx.currentClass.isUnsafe) { + return true; + } + if (ctx.currentMethodName == null || ctx.currentMethodName.isEmpty()) { + return false; + } + Type searchType = ctx.currentClass; + if (searchType == null && ctx.objectInstance != null) { + searchType = ctx.objectInstance.type; + } + if (searchType == null) return false; + Method currentMethod = constructorResolver.findMethodInHierarchy(searchType, ctx.currentMethodName, ctx); + return currentMethod != null && currentMethod.isUnsafe; + } public void clearAllCaches() { importResolver.clearCache(); diff --git a/src/main/java/cod/interpreter/InterpreterVisitor.java b/src/main/java/cod/interpreter/InterpreterVisitor.java index 65043697..3bc513b4 100644 --- a/src/main/java/cod/interpreter/InterpreterVisitor.java +++ b/src/main/java/cod/interpreter/InterpreterVisitor.java @@ -266,6 +266,17 @@ public Object visit(ConstructorCall node) { } try { + ExecutionContext ctx = getCurrentContext(); + Type targetType = interpreter.getImportResolver().findType(node.className); + if (targetType != null + && targetType.isUnsafe + && !isUnsafeExecutionContext(ctx) + && !ExecutionContext.isUnsafeCommitAllowed()) { + throw new ProgramError( + "Unsafe class '" + targetType.name + "' cannot be constructed in a safe context. Use safe(" + + targetType.name + + "(...))."); + } return interpreter.getConstructorResolver().resolveAndCreate(node, getCurrentContext()); } catch (ProgramError e) { throw e; @@ -1439,6 +1450,98 @@ private List evaluateMethodCallArguments(MethodCall methodCall) { return evaluatedArgs; } + private boolean isUnsafeExecutionContext(ExecutionContext ctx) { + if (ctx == null) return false; + if (ctx.currentClass != null && ctx.currentClass.isUnsafe) { + return true; + } + Method currentMethod = resolveCurrentContextMethod(ctx); + return currentMethod != null && currentMethod.isUnsafe; + } + + private Method resolveCurrentContextMethod(ExecutionContext ctx) { + if (ctx == null || ctx.currentMethodName == null || ctx.currentMethodName.isEmpty()) { + return null; + } + Type searchType = ctx.currentClass; + if (searchType == null && ctx.objectInstance != null) { + searchType = ctx.objectInstance.type; + } + if (searchType == null) { + return null; + } + return interpreter.getConstructorResolver().findMethodInHierarchy(searchType, ctx.currentMethodName, ctx); + } + + private Method resolveMethodForCall(MethodCall node, ExecutionContext ctx) { + Method method = null; + String callName = node.name; + String callQualifiedName = node.qualifiedName; + + if (ctx.currentClass != null) { + method = interpreter.getConstructorResolver().findMethodInHierarchy(ctx.currentClass, callName, ctx); + } + + if (method == null && ctx.objectInstance != null && ctx.objectInstance.type != null) { + method = interpreter.getConstructorResolver().findMethodInHierarchy(ctx.objectInstance.type, callName, ctx); + } + + if (method == null) { + String qName = callQualifiedName; + if (qName != null && qName.contains(".")) { + String[] parts = qName.split("\\."); + if (parts.length == 2) { + String receiver = parts[0]; + String methodName = parts[1]; + if (ctx.locals().containsKey(receiver)) { + Object receiverObj = ctx.locals().get(receiver); + if (receiverObj instanceof ObjectInstance) { + ObjectInstance objInst = (ObjectInstance) receiverObj; + if (objInst.type != null) { + qName = objInst.type.name + "." + methodName; + } + } + } + } + } + if (qName == null) qName = callName; + method = interpreter.getImportResolver().findMethod(qName); + } + + return method; + } + + private Object executeSafeCommit(MethodCall node, ExecutionContext ctx) { + if (isUnsafeExecutionContext(ctx)) { + throw new ProgramError("safe() cannot be used inside unsafe class or unsafe method contexts"); + } + if (node.arguments == null || node.arguments.size() != 1) { + throw new ProgramError("safe() expects exactly one argument"); + } + + Expr argument = node.arguments.get(0); + boolean unsafeTarget = false; + + if (argument instanceof MethodCall) { + Method targetMethod = resolveMethodForCall((MethodCall) argument, ctx); + unsafeTarget = targetMethod != null && targetMethod.isUnsafe; + } else if (argument instanceof ConstructorCall) { + Type targetType = interpreter.getImportResolver().findType(((ConstructorCall) argument).className); + unsafeTarget = targetType != null && targetType.isUnsafe; + } + + if (!unsafeTarget) { + throw new ProgramError("safe() can only commit calls to unsafe methods or unsafe classes"); + } + + ExecutionContext.enterUnsafeCommitAllowance(); + try { + return dispatch(argument); + } finally { + ExecutionContext.exitUnsafeCommitAllowance(); + } + } + @Override public Object visit(Identifier node) { if (node == null) { @@ -1827,6 +1930,10 @@ public Object visit(MethodCall node) { } } } + + if ("safe".equals(callName) && (callQualifiedName == null || "safe".equals(callQualifiedName))) { + return executeSafeCommit(node, ctx); + } // Evaluate all arguments first List evaluatedArgs = evaluateMethodCallArguments(node); @@ -1885,6 +1992,13 @@ public Object visit(MethodCall node) { throw new ProgramError("Method not found: " + callName); } + if (method.isUnsafe && !isUnsafeExecutionContext(ctx) && !ExecutionContext.isUnsafeCommitAllowed()) { + throw new ProgramError( + "Unsafe method '" + method.methodName + "' cannot be called in a safe context. Use safe(" + + callName + + "(...))."); + } + // Check if this is a single-slot call boolean hasSingleSlot = method.returnSlots != null && method.returnSlots.size() == 1; if (node.slotNames.isEmpty() && hasSingleSlot) { diff --git a/src/main/java/cod/interpreter/context/ExecutionContext.java b/src/main/java/cod/interpreter/context/ExecutionContext.java index 7800484a..b1d3cd2e 100644 --- a/src/main/java/cod/interpreter/context/ExecutionContext.java +++ b/src/main/java/cod/interpreter/context/ExecutionContext.java @@ -33,6 +33,12 @@ public class ExecutionContext { // ========== THREAD LOCAL CONTEXT ========== private static final ThreadLocal currentContext = new ThreadLocal(); + private static final ThreadLocal unsafeCommitDepth = new ThreadLocal() { + @Override + protected Integer initialValue() { + return 0; + } + }; // ========== OPTIMIZED LOOP CONTEXT ========== private boolean inOptimizedLoop = false; @@ -73,6 +79,19 @@ public Map getLocalsMap() { public static void clearCurrentContext() { currentContext.remove(); } + + public static void enterUnsafeCommitAllowance() { + unsafeCommitDepth.set(unsafeCommitDepth.get() + 1); + } + + public static void exitUnsafeCommitAllowance() { + int current = unsafeCommitDepth.get(); + unsafeCommitDepth.set(current > 0 ? current - 1 : 0); + } + + public static boolean isUnsafeCommitAllowed() { + return unsafeCommitDepth.get() > 0; + } /** * Mark that we're entering an optimized loop diff --git a/src/main/java/cod/interpreter/handler/AssignmentHandler.java b/src/main/java/cod/interpreter/handler/AssignmentHandler.java index fb47a509..3112e6f7 100644 --- a/src/main/java/cod/interpreter/handler/AssignmentHandler.java +++ b/src/main/java/cod/interpreter/handler/AssignmentHandler.java @@ -144,6 +144,7 @@ private Object assignToSlot(String slotTarget, Object value, ExecutionContext ct if (ctx.hasSlot(slotTarget)) { // O(1) String declaredType = ctx.getSlotType(slotTarget); // O(1) validateAssignmentType(declaredType, value, slotTarget); + value = typeSystem.normalizeForDeclaredType(declaredType, value); value = typeSystem.wrapUnionType(value, declaredType); @@ -411,6 +412,7 @@ private Object updateVariableInScope(String varName, Object newValue, if (declaredType != null) { validateAssignmentType(declaredType, newValue, varName); + newValue = typeSystem.normalizeForDeclaredType(declaredType, newValue); newValue = typeSystem.wrapUnionType(newValue, declaredType); } diff --git a/src/main/java/cod/interpreter/handler/TypeHandler.java b/src/main/java/cod/interpreter/handler/TypeHandler.java index 402f837c..c2acdc16 100644 --- a/src/main/java/cod/interpreter/handler/TypeHandler.java +++ b/src/main/java/cod/interpreter/handler/TypeHandler.java @@ -7,6 +7,8 @@ import cod.range.NaturalArray; import static cod.syntax.Keyword.*; +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.ArrayList; import java.util.AbstractList; import java.util.List; @@ -104,6 +106,9 @@ public int hashCode() { private static final AutoStackingNumber ZERO = AutoStackingNumber.valueOf("0"); private static final AutoStackingNumber ONE = AutoStackingNumber.valueOf("1"); private static final int LAZY_ARRAY_MEMO_MAX_SIZE = 8192; + private static final String[] UNSAFE_NUMERIC_TYPES = { + "i8", "i16", "i32", "i64", "u8", "u16", "u32", "u64", "f32", "f64" + }; // Helper to check if value is none public boolean isNoneValue(Object obj) { @@ -183,9 +188,30 @@ public boolean isTruthy(Object value) { public boolean isTypeLiteral(String str) { return str.equals("int") || str.equals("float") || str.equals("text") || str.equals("bool") || str.equals("type") || str.equals("none") || + isUnsafeNumericType(str) || str.equals("[]") || str.startsWith("[") || str.startsWith("(") || str.contains("|"); } + + public boolean isUnsafeNumericType(String type) { + if (type == null) return false; + for (String unsafeType : UNSAFE_NUMERIC_TYPES) { + if (unsafeType.equals(type)) { + return true; + } + } + return false; + } + + public Object normalizeForDeclaredType(String declaredType, Object value) { + if (declaredType == null) return value; + String normalized = declaredType.trim(); + if (!isUnsafeNumericType(normalized)) { + return value; + } + Object converted = convertType(value, normalized); + return new Value(converted, normalized, normalized); + } public Object processTypeLiteral(String typeLiteral) { if (typeLiteral.equals("none")) { @@ -910,6 +936,10 @@ public Object convertType(Object value, String targetType) { if (targetType.equals("none")) { return new NoneLiteral(); } + + if (isUnsafeNumericType(targetType)) { + return convertUnsafeNumeric(value, targetType); + } if (value instanceof FloatLiteral) { AutoStackingNumber num = ((FloatLiteral) value).value; @@ -1026,6 +1056,63 @@ public Object convertType(Object value, String targetType) { "), targetType=" + targetType ); } + + private Object convertUnsafeNumeric(Object value, String targetType) { + if (!(targetType.equals("f32") || targetType.equals("f64"))) { + BigInteger integral = toIntegralBigInteger(value); + return wrapIntegerUnsafe(integral, targetType); + } + double numeric = toDouble(value); + if (targetType.equals("f32")) { + return AutoStackingNumber.fromDouble((double) ((float) numeric)); + } + return AutoStackingNumber.fromDouble(numeric); + } + + private BigInteger toIntegralBigInteger(Object value) { + Object unwrapped = unwrap(value); + if (unwrapped instanceof IntLiteral) { + return new BigInteger(((IntLiteral) unwrapped).value.toString()); + } + if (unwrapped instanceof FloatLiteral) { + AutoStackingNumber n = ((FloatLiteral) unwrapped).value; + return new BigDecimal(n.toString()).toBigInteger(); + } + if (unwrapped instanceof AutoStackingNumber) { + return new BigDecimal(((AutoStackingNumber) unwrapped).toString()).toBigInteger(); + } + if (unwrapped instanceof Integer || unwrapped instanceof Long) { + return BigInteger.valueOf(((Number) unwrapped).longValue()); + } + if (unwrapped instanceof Float || unwrapped instanceof Double) { + return BigDecimal.valueOf(((Number) unwrapped).doubleValue()).toBigInteger(); + } + throw new ProgramError( + "Unsafe numeric types only accept safe int/float values, got: " + getConcreteType(unwrapped)); + } + + private AutoStackingNumber wrapIntegerUnsafe(BigInteger value, String targetType) { + int bits = 64; + boolean signed = true; + if (targetType.equals("i8")) bits = 8; + else if (targetType.equals("i16")) bits = 16; + else if (targetType.equals("i32")) bits = 32; + else if (targetType.equals("i64")) bits = 64; + else if (targetType.equals("u8")) { bits = 8; signed = false; } + else if (targetType.equals("u16")) { bits = 16; signed = false; } + else if (targetType.equals("u32")) { bits = 32; signed = false; } + else if (targetType.equals("u64")) { bits = 64; signed = false; } + + BigInteger modulus = BigInteger.ONE.shiftLeft(bits); + BigInteger wrapped = value.mod(modulus); + if (signed) { + BigInteger signBoundary = BigInteger.ONE.shiftLeft(bits - 1); + if (wrapped.compareTo(signBoundary) >= 0) { + wrapped = wrapped.subtract(modulus); + } + } + return AutoStackingNumber.valueOf(wrapped.toString()); + } public String getConcreteType(Object value) { if (value instanceof Value) { @@ -1208,7 +1295,8 @@ private boolean isValidTypeSignature(String str) { if (str == null || str.isEmpty()) return false; if (str.equals("int") || str.equals("float") || str.equals("text") || - str.equals("bool") || str.equals("type") || str.equals("none")) { + str.equals("bool") || str.equals("type") || str.equals("none") || + isUnsafeNumericType(str)) { return true; } @@ -1272,7 +1360,8 @@ private boolean isTypeStructurallyValid(String typeSig) { if (type.equals(INT.toString()) || type.equals(FLOAT.toString()) || type.equals(TEXT.toString()) || type.equals(BOOL.toString()) || - type.equals(ANY.toString()) || type.equals("none")) { + type.equals(ANY.toString()) || type.equals("none") || + isUnsafeNumericType(type)) { return true; } if (Character.isUpperCase(type.charAt(0))) return true; @@ -1306,6 +1395,15 @@ private boolean checkPrimitiveMatch(String type, Object rawValue) { rawValue instanceof Boolean; } else if (type.equals("none")) { return isNoneValue(rawValue); + } else if (isUnsafeNumericType(type)) { + return rawValue instanceof IntLiteral + || rawValue instanceof FloatLiteral + || rawValue instanceof Integer + || rawValue instanceof Long + || rawValue instanceof Float + || rawValue instanceof Double + || rawValue instanceof AutoStackingNumber + || (rawValue instanceof Value && isUnsafeNumericType(((Value) rawValue).activeType)); } return false; } diff --git a/src/main/java/cod/parser/BaseParser.java b/src/main/java/cod/parser/BaseParser.java index 8ecdf1db..3422ce9b 100644 --- a/src/main/java/cod/parser/BaseParser.java +++ b/src/main/java/cod/parser/BaseParser.java @@ -271,11 +271,33 @@ protected String getTypeName(TokenType type) { } protected boolean isTypeStart(Token token) { - return any(is(token, INT, TEXT, FLOAT, BOOL, TYPE), + return any(is(token, INT, TEXT, FLOAT, BOOL, TYPE, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64), is(token, ID), is(token, LPAREN, LBRACKET)); } + protected boolean isUnsafeTypeContext() { + return ctx.isInUnsafeDeclaration(); + } + + protected boolean isUnsafeNumericTypeKeyword(Token token) { + return is(token, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64); + } + + protected boolean isUnsafeNumericTypeName(String typeName) { + if (typeName == null) return false; + return typeName.equals("i8") + || typeName.equals("i16") + || typeName.equals("i32") + || typeName.equals("i64") + || typeName.equals("u8") + || typeName.equals("u16") + || typeName.equals("u32") + || typeName.equals("u64") + || typeName.equals("f32") + || typeName.equals("f64"); + } + protected String parseQualifiedName() { StringBuilder name = new StringBuilder(); @@ -319,6 +341,11 @@ protected String parseTypeReference() { Token typeToken = now(); if (isTypeStart(typeToken) && !is(typeToken, LBRACKET)) { String typeName = consume().getText(); + if (isUnsafeNumericTypeName(typeName) && !isUnsafeTypeContext()) { + throw error( + "Unsafe type '" + typeName + "' can only be used inside an unsafe class or method", + typeToken); + } type.append(typeName); } else { throw error("Expected type name"); @@ -386,7 +413,7 @@ protected boolean isExprStart(Token t) { } protected boolean isClassStart() { - if (is(SHARE, LOCAL)) { + if (is(SHARE, LOCAL, UNSAFE)) { return true; } diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index 5a66698d..b1b838d3 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -23,6 +23,7 @@ public class DeclarationParser extends BaseParser { private final PolicyValidator policyValidator; private Type currentParsingClass = null; + private Method currentParsingMethod = null; public DeclarationParser( ParserContext ctx, StatementParser statementParser, ImportResolver importResolver) { super(ctx); @@ -48,6 +49,21 @@ private Type getCurrentParsingClass() { return currentParsingClass; } + private void setCurrentParsingMethod(Method method) { + currentParsingMethod = method; + } + + @Override + protected boolean isUnsafeTypeContext() { + if (super.isUnsafeTypeContext()) { + return true; + } + if (currentParsingMethod != null && currentParsingMethod.isUnsafe) { + return true; + } + return currentParsingClass != null && currentParsingClass.isUnsafe; + } + public void validateClassViralPolicies(Type type, Program currentProgram) { policyValidator.validateClassViralPolicies(type, currentProgram); @@ -220,6 +236,11 @@ private void parseNamedArgumentList(List args, List argNames) { public Type parseType() { Keyword visibility = null; Token visibilityToken = null; + boolean isUnsafeType = false; + + if (is(UNSAFE)) { + throw error("Visibility modifier must appear before 'unsafe' in class declarations", now()); + } if (is(SHARE, LOCAL)) { visibilityToken = now(); @@ -237,6 +258,14 @@ public Type parseType() { } } + if (is(UNSAFE)) { + if (visibility == null) { + throw error("Unsafe class declarations require an explicit visibility modifier before 'unsafe'", now()); + } + consume(); + isUnsafeType = true; + } + Token typeNameToken = now(); String typeName = expect(ID).getText(); @@ -281,6 +310,7 @@ public Type parseType() { } Type type = ASTFactory.createType(typeName, visibility, extendName, typeNameToken); + type.isUnsafe = isUnsafeType; type.implementedPolicies = implementedPolicies; type.policyTokens = policyTokens; type.extendToken = extendToken; @@ -288,25 +318,32 @@ public Type parseType() { setCurrentParsingClass(type); - expect(LBRACE); - while (!is(RBRACE)) { - if (isFieldDeclaration()) { - type.fields.add(parseField()); - } else if (isConstructorDeclaration()) { - Constructor constructor = parseConstructor(); - type.constructors.add(constructor); - } else if (isMethodDeclaration()) { - Method method = parseMethod(); - method.associatedClass = type.name; - type.methods.add(method); - } else { - type.statements.add(statementParser.parseStmt()); + if (type.isUnsafe) { + ctx.enterUnsafeDeclaration(); + } + try { + expect(LBRACE); + while (!is(RBRACE)) { + if (isFieldDeclaration()) { + type.fields.add(parseField()); + } else if (isConstructorDeclaration()) { + Constructor constructor = parseConstructor(); + type.constructors.add(constructor); + } else if (isMethodDeclaration()) { + Method method = parseMethod(); + method.associatedClass = type.name; + type.methods.add(method); + } else { + type.statements.add(statementParser.parseStmt()); + } } + expect(RBRACE); + } finally { + if (type.isUnsafe) { + ctx.exitUnsafeDeclaration(); + } + setCurrentParsingClass(null); } - - setCurrentParsingClass(null); - - expect(RBRACE); return type; } @@ -467,38 +504,69 @@ public Method parseMethod() { boolean isBuiltin = false; Keyword visibility = Keyword.SHARE; boolean isPolicyMethod = false; + boolean isUnsafeMethod = false; Token visibilityToken = null; + boolean sawVisibility = false; - if (is(POLICY)) { - expect(POLICY); - isPolicyMethod = true; + if (is(UNSAFE, BUILTIN, POLICY) && is(next(), SHARE, LOCAL)) { + throw error("Visibility modifier must appear before other modifiers in method declarations", now()); + } - Type currentClass = getCurrentParsingClass(); - if (!nil(currentClass)) { - visibility = currentClass.visibility; - } else { - visibility = Keyword.SHARE; - } + if (is(SHARE, LOCAL)) { + sawVisibility = true; + visibilityToken = now(); + Token currentVisibility = consume(); - } else if (is(BUILTIN)) { + if (is(currentVisibility, SHARE)) { + visibility = Keyword.SHARE; + } else if (is(currentVisibility, LOCAL)) { + visibility = Keyword.LOCAL; + } else { + throw error( + "Internal parser error: isVisibilityModifier() returned true for non-visibility keyword: '" + + currentVisibility.getText() + + "'", + visibilityToken); + } + } + + boolean consumedModifier = true; + while (consumedModifier) { + consumedModifier = false; + if (is(POLICY)) { + expect(POLICY); + isPolicyMethod = true; + consumedModifier = true; + continue; + } + if (is(BUILTIN)) { expect(BUILTIN); isBuiltin = true; - visibility = Keyword.SHARE; - } else if (is(SHARE, LOCAL)) { - visibilityToken = now(); - Token currentVisibility = consume(); + consumedModifier = true; + continue; + } + if (is(UNSAFE)) { + expect(UNSAFE); + isUnsafeMethod = true; + consumedModifier = true; + } + } - if (is(currentVisibility, SHARE)) { - visibility = Keyword.SHARE; - } else if (is(currentVisibility, LOCAL)) { - visibility = Keyword.LOCAL; - } else { - throw error( - "Internal parser error: isVisibilityModifier() returned true for non-visibility keyword: '" - + currentVisibility.getText() - + "'", - visibilityToken); - } + if (is(SHARE, LOCAL)) { + throw error("Visibility modifier must appear before other modifiers in method declarations", now()); + } + + if (isUnsafeMethod && !sawVisibility) { + throw error("Unsafe methods require an explicit visibility modifier before 'unsafe'", startToken); + } + + if (isPolicyMethod && !sawVisibility) { + Type currentClass = getCurrentParsingClass(); + if (!nil(currentClass)) { + visibility = currentClass.visibility; + } else { + visibility = Keyword.SHARE; + } } String methodName; @@ -518,100 +586,113 @@ public Method parseMethod() { Method method = ASTFactory.createMethod(methodName, visibility, null, nameToken); method.isBuiltin = isBuiltin; method.isPolicyMethod = isPolicyMethod; + method.isUnsafe = isUnsafeMethod; + + if (method.isUnsafe) { + ctx.enterUnsafeDeclaration(); + } + setCurrentParsingMethod(method); + + try { + expect(LPAREN); + + if (isBuiltin) { + int parenDepth = 1; + while (!is(EOF) && parenDepth > 0) { + Token t = now(); + if (is(t, LPAREN)) { + parenDepth++; + } else if (is(t, RPAREN)) { + parenDepth--; + if (parenDepth == 0) { + expect(RPAREN); + break; + } + } + consume(); + } + } else { + if (!is(RPAREN)) { + method.parameters.add(parseParameter()); + while (consume(COMMA)) { + method.parameters.add(parseParameter()); + } + } + expect(RPAREN); + } - expect(LPAREN); - - if (isBuiltin) { - int parenDepth = 1; - while (!is(EOF) && parenDepth > 0) { - Token t = now(); - if (is(t, LPAREN)) { - parenDepth++; - } else if (is(t, RPAREN)) { - parenDepth--; - if (parenDepth == 0) { - expect(RPAREN); - break; - } - } - consume(); - } - } else { - if (!is(RPAREN)) { - method.parameters.add(parseParameter()); - while (consume(COMMA)) { - method.parameters.add(parseParameter()); - } - } - expect(RPAREN); - } - - // Parse slot contract if present (:: syntax) - if (isSlotDeclaration()) { - method.returnSlots = slotParser.parseSlotContract(); - } else { - method.returnSlots = new ArrayList(); - } + // Parse slot contract if present (:: syntax) + if (isSlotDeclaration()) { + method.returnSlots = slotParser.parseSlotContract(); + } else { + method.returnSlots = new ArrayList(); + } - if (isBuiltin) { - while (getPosition() < tokens.size()) { - Token current = now(); + if (isBuiltin) { + while (getPosition() < tokens.size()) { + Token current = now(); - if (is(current, RBRACE) - || is(current, SHARE, LOCAL, BUILTIN, POLICY)) { - break; - } + if (is(current, RBRACE) + || is(current, SHARE, LOCAL, BUILTIN, POLICY, UNSAFE)) { + break; + } - consume(); - } + consume(); + } - if (is(TILDE_ARROW, LBRACE)) { - Token current = now(); - throw error( - "Builtin method '" - + methodName - + "' cannot have a body. " - + "Builtin methods are only declarations, not implementations.\n" - + "Remove '~>' or '{...}' after builtin method signature.", - current); - } + if (is(TILDE_ARROW, LBRACE)) { + Token current = now(); + throw error( + "Builtin method '" + + methodName + + "' cannot have a body. " + + "Builtin methods are only declarations, not implementations.\n" + + "Remove '~>' or '{...}' after builtin method signature.", + current); + } - return method; - } + return method; + } - // Parse method body - if (is(TILDE_ARROW)) { - Token tildeArrowToken = now(); - expect(TILDE_ARROW); + // Parse method body + if (is(TILDE_ARROW)) { + Token tildeArrowToken = now(); + expect(TILDE_ARROW); - List slotAssignments = - slotParser.parseParenthesizedSlotAssignments(tildeArrowToken); + List slotAssignments = + slotParser.parseParenthesizedSlotAssignments(tildeArrowToken); - if (slotAssignments.size() == 1) { - method.body.add(slotAssignments.get(0)); - } else { - MultipleSlotAssignment multiAssign = - ASTFactory.createMultipleSlotAsmt(slotAssignments, tildeArrowToken); - method.body.add(multiAssign); - } + if (slotAssignments.size() == 1) { + method.body.add(slotAssignments.get(0)); + } else { + MultipleSlotAssignment multiAssign = + ASTFactory.createMultipleSlotAsmt(slotAssignments, tildeArrowToken); + method.body.add(multiAssign); + } - } else if (is(LBRACE)) { - expect(LBRACE); - while (!is(RBRACE)) { - method.body.add(statementParser.parseStmt()); - } - expect(RBRACE); - - ReturnContractValidator.validateMethodReturnContract(method, currentParsingClass, startToken); - } else { - Token current = now(); - throw error( - "Expected '~>' or '{' after method signature, but found " - + getTypeName(current.type) - + " ('" - + current.getText() - + "')", - current); + } else if (is(LBRACE)) { + expect(LBRACE); + while (!is(RBRACE)) { + method.body.add(statementParser.parseStmt()); + } + expect(RBRACE); + + ReturnContractValidator.validateMethodReturnContract(method, currentParsingClass, startToken); + } else { + Token current = now(); + throw error( + "Expected '~>' or '{' after method signature, but found " + + getTypeName(current.type) + + " ('" + + current.getText() + + "')", + current); + } + } finally { + setCurrentParsingMethod(null); + if (method.isUnsafe) { + ctx.exitUnsafeDeclaration(); + } } return method; @@ -822,9 +903,15 @@ public Boolean parse() throws ParseError { Token first = next(offset); if (nil(first)) return false; - if (is(first, SHARE, LOCAL, BUILTIN, POLICY)) { + if (is(first, SHARE, LOCAL, BUILTIN, POLICY, UNSAFE)) { offset++; while (wsComments(offset)) offset++; + Token maybeMoreModifier = next(offset); + while (is(maybeMoreModifier, BUILTIN, POLICY, UNSAFE)) { + offset++; + while (wsComments(offset)) offset++; + maybeMoreModifier = next(offset); + } } Token nameToken = next(offset); @@ -865,11 +952,6 @@ public Boolean parse() throws ParseError { return false; } - String type = parseTypeReference(); - if (nil(type)) { - return false; - } - if (is(LPAREN)) { return false; } diff --git a/src/main/java/cod/parser/MainParser.java b/src/main/java/cod/parser/MainParser.java index 27e24a6b..49bf90bd 100644 --- a/src/main/java/cod/parser/MainParser.java +++ b/src/main/java/cod/parser/MainParser.java @@ -89,7 +89,9 @@ public Program parseProgram() { // DIRECT CHECK: If we see "local" or "share" text, try to parse as method first if (currentToken != null && - ("local".equals(currentToken.getText()) || "share".equals(currentToken.getText()))) { + ("local".equals(currentToken.getText()) + || "share".equals(currentToken.getText()) + || "unsafe".equals(currentToken.getText()))) { ParserState savedState = getCurrentState(); try { Method method = declarationParser.parseMethod(); @@ -183,7 +185,10 @@ private boolean isTopLevelMethodDeclaration() { public Boolean parse() throws ParseError { ParserState savedState = getCurrentState(); try { - if (is(SHARE, LOCAL)) { + if (is(SHARE, LOCAL, UNSAFE)) { + consume(); + } + while (is(BUILTIN, POLICY, UNSAFE)) { consume(); } @@ -342,12 +347,20 @@ private boolean isMethodDeclarationStart() { Token first = now(); if (first == null) return false; - if (is(first, LOCAL, SHARE, BUILTIN, POLICY)) { - Token second = next(); - if (is(second, ID) || canBeMethod(second)) { - Token third = next(2); - return is(third, LPAREN); - } + int offset = 0; + Token token = next(offset); + + if (is(token, LOCAL, SHARE, UNSAFE, BUILTIN, POLICY)) { + offset++; + token = next(offset); + } + while (is(token, BUILTIN, POLICY, UNSAFE)) { + offset++; + token = next(offset); + } + if (is(token, ID) || canBeMethod(token)) { + Token afterName = next(offset + 1); + return is(afterName, LPAREN); } return false; } finally { diff --git a/src/main/java/cod/parser/context/ParserContext.java b/src/main/java/cod/parser/context/ParserContext.java index daab7a87..b5a86ac4 100644 --- a/src/main/java/cod/parser/context/ParserContext.java +++ b/src/main/java/cod/parser/context/ParserContext.java @@ -13,6 +13,7 @@ public final class ParserContext { private ParserState state; private final Stack backtrackStack = new Stack<>(); + private int unsafeDeclarationDepth = 0; public ParserContext(ParserState initialState) { this.state = initialState; @@ -164,8 +165,22 @@ public List getTokens() { return state.getTokens(); } + public void enterUnsafeDeclaration() { + unsafeDeclarationDepth++; + } + + public void exitUnsafeDeclaration() { + if (unsafeDeclarationDepth > 0) { + unsafeDeclarationDepth--; + } + } + + public boolean isInUnsafeDeclaration() { + return unsafeDeclarationDepth > 0; + } + @Override public String toString() { return state.toString(); } -} \ No newline at end of file +} diff --git a/src/main/java/cod/semantic/ConstructorResolver.java b/src/main/java/cod/semantic/ConstructorResolver.java index 364a582c..6198cf4b 100644 --- a/src/main/java/cod/semantic/ConstructorResolver.java +++ b/src/main/java/cod/semantic/ConstructorResolver.java @@ -162,6 +162,11 @@ public ObjectInstance resolveAndCreate(ConstructorCall call, ExecutionContext ct "Available types: " + getAvailableTypes(ctx) ); } + + if (type.isUnsafe && !isUnsafeExecutionContext(ctx) && !ExecutionContext.isUnsafeCommitAllowed()) { + throw new ProgramError( + "Unsafe class '" + type.name + "' cannot be constructed in a safe context. Use safe(" + type.name + "(...))."); + } validateInheritanceHierarchy(type, ctx); @@ -359,6 +364,7 @@ private Map matchConstructorArguments(Constructor constructor, if (!typeSystem.validateType(param.type, argValue)) { return null; } + argValue = typeSystem.normalizeForDeclaredType(param.type, argValue); argValues.put(param.name, argValue); } else if (!param.hasDefaultValue) { return null; @@ -381,6 +387,7 @@ private Map matchConstructorArguments(Constructor constructor, if (!typeSystem.validateType(param.type, argValue)) { return null; } + argValue = typeSystem.normalizeForDeclaredType(param.type, argValue); argValues.put(param.name, argValue); } else if (!param.hasDefaultValue) { return null; @@ -430,6 +437,7 @@ private ConstructorMatch tryMatchNamedConstructor(Constructor constructor, if (!typeSystem.validateType(param.type, argValue)) { return null; } + argValue = typeSystem.normalizeForDeclaredType(param.type, argValue); argumentValues.put(param.name, argValue); @@ -439,6 +447,9 @@ private ConstructorMatch tryMatchNamedConstructor(Constructor constructor, } } else if (param.hasDefaultValue) { Object defaultValue = evaluateDefaultValue(evaluator, param, ctx); + if (param.type != null) { + defaultValue = typeSystem.normalizeForDeclaredType(param.type, defaultValue); + } argumentValues.put(param.name, defaultValue); conversionScore++; } else { @@ -483,6 +494,9 @@ private ConstructorMatch tryMatchPositionalConstructor(Constructor constructor, return null; } Object defaultValue = evaluateDefaultValue(evaluator, param, ctx); + if (param.type != null) { + defaultValue = typeSystem.normalizeForDeclaredType(param.type, defaultValue); + } argumentValues.put(param.name, defaultValue); conversionScore++; } else { @@ -495,6 +509,7 @@ private ConstructorMatch tryMatchPositionalConstructor(Constructor constructor, if (!typeSystem.validateType(param.type, argValue)) { return null; } + argValue = typeSystem.normalizeForDeclaredType(param.type, argValue); argumentValues.put(param.name, argValue); @@ -506,6 +521,9 @@ private ConstructorMatch tryMatchPositionalConstructor(Constructor constructor, argIndex++; } else if (param.hasDefaultValue) { Object defaultValue = evaluateDefaultValue(evaluator, param, ctx); + if (param.type != null) { + defaultValue = typeSystem.normalizeForDeclaredType(param.type, defaultValue); + } argumentValues.put(param.name, defaultValue); conversionScore++; } else { @@ -550,6 +568,8 @@ private Object evaluateArgument(Evaluator evaluator, Expr argExpr, Param param, } return null; } + + argValue = typeSystem.normalizeForDeclaredType(param.type, argValue); if (param.type.contains("|")) { String activeType = typeSystem.getConcreteType(typeSystem.unwrap(argValue)); @@ -581,6 +601,23 @@ private Object evaluateDefaultValue(Evaluator evaluator, Param param, ExecutionC throw new InternalError("Default value evaluation failed for parameter: " + param.name, e); } } + + private boolean isUnsafeExecutionContext(ExecutionContext ctx) { + if (ctx == null) return false; + if (ctx.currentClass != null && ctx.currentClass.isUnsafe) { + return true; + } + if (ctx.currentMethodName == null || ctx.currentMethodName.isEmpty()) { + return false; + } + Type searchType = ctx.currentClass; + if (searchType == null && ctx.objectInstance != null) { + searchType = ctx.objectInstance.type; + } + if (searchType == null) return false; + Method currentMethod = findMethodInHierarchy(searchType, ctx.currentMethodName, ctx); + return currentMethod != null && currentMethod.isUnsafe; + } private boolean isUnderscore(Expr expr) { return expr instanceof Identifier && "_".equals(((Identifier) expr).name); From 4c86037907def7583b5b262ea40eaccf9b7e577b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:16:17 +0000 Subject: [PATCH 3/8] Refine unsafe diagnostics and validation feedback fixes Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/73ca2733-a902-400a-8f03-4388d21e2a7e Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 375781 -> 375784 bytes .../cod/interpreter/InterpreterVisitor.java | 7 +++++-- .../cod/interpreter/handler/TypeHandler.java | 15 ++++++++------- .../java/cod/parser/DeclarationParser.java | 14 ++++++++------ 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/source_.jar b/source_.jar index 96f7aea656485484f597ae541336921932bc1c01..baa4221dd94eb40b44db37c0cc661f06a168d6ac 100644 GIT binary patch delta 15860 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 delta 15742 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 H4Cns=pXR94 diff --git a/src/main/java/cod/interpreter/InterpreterVisitor.java b/src/main/java/cod/interpreter/InterpreterVisitor.java index 3bc513b4..c8c23cf9 100644 --- a/src/main/java/cod/interpreter/InterpreterVisitor.java +++ b/src/main/java/cod/interpreter/InterpreterVisitor.java @@ -1513,7 +1513,8 @@ private Method resolveMethodForCall(MethodCall node, ExecutionContext ctx) { private Object executeSafeCommit(MethodCall node, ExecutionContext ctx) { if (isUnsafeExecutionContext(ctx)) { - throw new ProgramError("safe() cannot be used inside unsafe class or unsafe method contexts"); + throw new ProgramError( + "safe() cannot be used inside unsafe classes or methods because those contexts already run in unsafe mode"); } if (node.arguments == null || node.arguments.size() != 1) { throw new ProgramError("safe() expects exactly one argument"); @@ -1531,7 +1532,9 @@ private Object executeSafeCommit(MethodCall node, ExecutionContext ctx) { } if (!unsafeTarget) { - throw new ProgramError("safe() can only commit calls to unsafe methods or unsafe classes"); + throw new ProgramError( + "safe() can only commit calls to unsafe methods or constructors of unsafe classes. " + + "The provided target is not marked unsafe"); } ExecutionContext.enterUnsafeCommitAllowance(); diff --git a/src/main/java/cod/interpreter/handler/TypeHandler.java b/src/main/java/cod/interpreter/handler/TypeHandler.java index c2acdc16..35b13e1a 100644 --- a/src/main/java/cod/interpreter/handler/TypeHandler.java +++ b/src/main/java/cod/interpreter/handler/TypeHandler.java @@ -1058,15 +1058,16 @@ public Object convertType(Object value, String targetType) { } private Object convertUnsafeNumeric(Object value, String targetType) { - if (!(targetType.equals("f32") || targetType.equals("f64"))) { - BigInteger integral = toIntegralBigInteger(value); - return wrapIntegerUnsafe(integral, targetType); - } - double numeric = toDouble(value); if (targetType.equals("f32")) { + double numeric = toDouble(value); return AutoStackingNumber.fromDouble((double) ((float) numeric)); } - return AutoStackingNumber.fromDouble(numeric); + if (targetType.equals("f64")) { + double numeric = toDouble(value); + return AutoStackingNumber.fromDouble(numeric); + } + BigInteger integral = toIntegralBigInteger(value); + return wrapIntegerUnsafe(integral, targetType); } private BigInteger toIntegralBigInteger(Object value) { @@ -1088,7 +1089,7 @@ private BigInteger toIntegralBigInteger(Object value) { return BigDecimal.valueOf(((Number) unwrapped).doubleValue()).toBigInteger(); } throw new ProgramError( - "Unsafe numeric types only accept safe int/float values, got: " + getConcreteType(unwrapped)); + "Unsafe numeric types require int or float values, got: " + getConcreteType(unwrapped)); } private AutoStackingNumber wrapIntegerUnsafe(BigInteger value, String targetType) { diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index b1b838d3..8447b78e 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -239,7 +239,10 @@ public Type parseType() { boolean isUnsafeType = false; if (is(UNSAFE)) { - throw error("Visibility modifier must appear before 'unsafe' in class declarations", now()); + throw error( + "Visibility modifier (share/local) must appear before 'unsafe' in class declarations. " + + "Expected: [share|local] unsafe ClassName", + now()); } if (is(SHARE, LOCAL)) { @@ -508,10 +511,6 @@ public Method parseMethod() { Token visibilityToken = null; boolean sawVisibility = false; - if (is(UNSAFE, BUILTIN, POLICY) && is(next(), SHARE, LOCAL)) { - throw error("Visibility modifier must appear before other modifiers in method declarations", now()); - } - if (is(SHARE, LOCAL)) { sawVisibility = true; visibilityToken = now(); @@ -557,7 +556,10 @@ public Method parseMethod() { } if (isUnsafeMethod && !sawVisibility) { - throw error("Unsafe methods require an explicit visibility modifier before 'unsafe'", startToken); + throw error( + "Unsafe methods require an explicit visibility modifier before 'unsafe'. " + + "Expected: [share|local] unsafe methodName(...)", + startToken); } if (isPolicyMethod && !sawVisibility) { From 1df399114efb042655a87c26579610f6b378d24d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:16:58 +0000 Subject: [PATCH 4/8] Tighten unsafe diagnostic wording Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/73ca2733-a902-400a-8f03-4388d21e2a7e Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- src/main/java/cod/interpreter/InterpreterVisitor.java | 5 ++--- src/main/java/cod/parser/DeclarationParser.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/cod/interpreter/InterpreterVisitor.java b/src/main/java/cod/interpreter/InterpreterVisitor.java index c8c23cf9..0ec1f481 100644 --- a/src/main/java/cod/interpreter/InterpreterVisitor.java +++ b/src/main/java/cod/interpreter/InterpreterVisitor.java @@ -1514,7 +1514,7 @@ private Method resolveMethodForCall(MethodCall node, ExecutionContext ctx) { private Object executeSafeCommit(MethodCall node, ExecutionContext ctx) { if (isUnsafeExecutionContext(ctx)) { throw new ProgramError( - "safe() cannot be used inside unsafe classes or methods because those contexts already run in unsafe mode"); + "safe() is not allowed inside unsafe classes or methods; these contexts already have permission to execute unsafe code"); } if (node.arguments == null || node.arguments.size() != 1) { throw new ProgramError("safe() expects exactly one argument"); @@ -1533,8 +1533,7 @@ private Object executeSafeCommit(MethodCall node, ExecutionContext ctx) { if (!unsafeTarget) { throw new ProgramError( - "safe() can only commit calls to unsafe methods or constructors of unsafe classes. " - + "The provided target is not marked unsafe"); + "safe() requires an unsafe method call or unsafe class constructor as its argument, but the provided expression is not marked unsafe"); } ExecutionContext.enterUnsafeCommitAllowance(); diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index 8447b78e..ff60d22d 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -240,8 +240,7 @@ public Type parseType() { if (is(UNSAFE)) { throw error( - "Visibility modifier (share/local) must appear before 'unsafe' in class declarations. " - + "Expected: [share|local] unsafe ClassName", + "Class declaration cannot start with 'unsafe'. Expected: [share|local] unsafe ClassName", now()); } From 633192c39ac54b75bfe0f62e7a002985b4020294 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:36:41 +0000 Subject: [PATCH 5/8] Plan pointer support in unsafe contexts Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/b476ffd3-a03b-47a2-8df7-6f9f23f27c87 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 375784 -> 375874 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source_.jar b/source_.jar index baa4221dd94eb40b44db37c0cc661f06a168d6ac..3b7b870eee5676bd53a9a80e6041f12c51e8babf 100644 GIT binary patch delta 34601 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 Bp7Q_z delta 34822 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 pYnb|FJU(~1GS>sIM{ Date: Sun, 12 Apr 2026 11:39:48 +0000 Subject: [PATCH 6/8] Implement unsafe pointer parsing and runtime mechanics Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/b476ffd3-a03b-47a2-8df7-6f9f23f27c87 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- .../java/cod/interpreter/Interpreter.java | 4 + .../interpreter/context/ExecutionContext.java | 9 ++ .../handler/ExpressionHandler.java | 100 ++++++++++++++++ .../cod/interpreter/handler/TypeHandler.java | 113 +++++++++++++++++- src/main/java/cod/parser/BaseParser.java | 25 +++- .../java/cod/parser/DeclarationParser.java | 9 -- .../java/cod/parser/ExpressionParser.java | 2 +- .../cod/semantic/ConstructorResolver.java | 32 ++++- 8 files changed, 275 insertions(+), 19 deletions(-) diff --git a/src/main/java/cod/interpreter/Interpreter.java b/src/main/java/cod/interpreter/Interpreter.java index bc94a6eb..7f31faf1 100644 --- a/src/main/java/cod/interpreter/Interpreter.java +++ b/src/main/java/cod/interpreter/Interpreter.java @@ -923,6 +923,8 @@ public Object evalMethod(Method node, ObjectInstance obj, Map lo ctx.currentClass = associatedClass; } } + boolean unsafeContext = node.isUnsafe || (ctx.currentClass != null && ctx.currentClass.isUnsafe); + ctx.setUnsafeExecutionContext(unsafeContext); visitor.pushContext(ctx); Object result = null; @@ -1130,6 +1132,8 @@ public Object evalMethodCall( ctx.currentClass = classType; } } + boolean unsafeContext = method.isUnsafe || (ctx.currentClass != null && ctx.currentClass.isUnsafe); + ctx.setUnsafeExecutionContext(unsafeContext); visitor.pushContext(ctx); boolean calledMethodHasSlots = method.returnSlots != null && !method.returnSlots.isEmpty(); diff --git a/src/main/java/cod/interpreter/context/ExecutionContext.java b/src/main/java/cod/interpreter/context/ExecutionContext.java index b1d3cd2e..0fd38cc9 100644 --- a/src/main/java/cod/interpreter/context/ExecutionContext.java +++ b/src/main/java/cod/interpreter/context/ExecutionContext.java @@ -43,6 +43,7 @@ protected Integer initialValue() { // ========== OPTIMIZED LOOP CONTEXT ========== private boolean inOptimizedLoop = false; private List pendingOutputs = new ArrayList(); + private boolean unsafeExecutionContext = false; // ========== TYPE HANDLER ========== private final TypeHandler typeHandler; @@ -133,6 +134,14 @@ public List flushPendingOutputs() { pendingOutputs.clear(); return outputs; } + + public boolean isUnsafeExecutionContext() { + return unsafeExecutionContext; + } + + public void setUnsafeExecutionContext(boolean unsafeExecutionContext) { + this.unsafeExecutionContext = unsafeExecutionContext; + } public ExecutionContext(ObjectInstance obj, Map locals, Map slotValues, Map slotTypes, diff --git a/src/main/java/cod/interpreter/handler/ExpressionHandler.java b/src/main/java/cod/interpreter/handler/ExpressionHandler.java index bc229cb8..e0070971 100644 --- a/src/main/java/cod/interpreter/handler/ExpressionHandler.java +++ b/src/main/java/cod/interpreter/handler/ExpressionHandler.java @@ -44,6 +44,10 @@ public Object handleBinaryOp(BinaryOp node, ExecutionContext ctx) { switch (node.op) { case "+": case "+=": + if (typeSystem.unwrap(left) instanceof TypeHandler.PointerValue + || typeSystem.unwrap(right) instanceof TypeHandler.PointerValue) { + return handlePointerArithmetic(left, right, true, ctx); + } if (left instanceof String || right instanceof String || left instanceof TextLiteral || right instanceof TextLiteral) { @@ -78,6 +82,10 @@ public Object handleBinaryOp(BinaryOp node, ExecutionContext ctx) { case "-": case "-=": + if (typeSystem.unwrap(left) instanceof TypeHandler.PointerValue + || typeSystem.unwrap(right) instanceof TypeHandler.PointerValue) { + return handlePointerArithmetic(left, right, false, ctx); + } result = typeSystem.subtractNumbers(left, right); break; @@ -142,6 +150,14 @@ public Object handleUnaryOp(Unary node, ExecutionContext ctx) { } try { + if ("&".equals(node.op)) { + ensureUnsafeContext(ctx, "Address-of operator '&'"); + if (!(node.operand instanceof IndexAccess)) { + throw new ProgramError("Address-of operator '&' requires an index expression like '&buffer[0]'"); + } + return createPointerFromIndexAccess((IndexAccess) node.operand, ctx); + } + Object operand = dispatcher.dispatch(node.operand); switch (node.op) { @@ -151,6 +167,9 @@ public Object handleUnaryOp(Unary node, ExecutionContext ctx) { return operand; case "!": return !typeSystem.isTruthy(operand); + case "*": + ensureUnsafeContext(ctx, "Pointer dereference '*'"); + return dereferencePointer(operand); default: throw new ProgramError("Unknown unary operator: " + node.op); } @@ -160,6 +179,87 @@ public Object handleUnaryOp(Unary node, ExecutionContext ctx) { throw new InternalError("Unary operation failed: " + node.op, e); } } + + private void ensureUnsafeContext(ExecutionContext ctx, String featureName) { + boolean unsafe = ctx.isUnsafeExecutionContext() + || (ctx.currentClass != null && ctx.currentClass.isUnsafe); + if (!unsafe) { + throw new ProgramError(featureName + " is only available inside unsafe class/method contexts"); + } + } + + private TypeHandler.PointerValue createPointerFromIndexAccess(IndexAccess access, ExecutionContext ctx) { + Object container = dispatcher.dispatch(access.array); + container = typeSystem.unwrap(container); + Object indexObj = dispatcher.dispatch(access.index); + indexObj = typeSystem.unwrap(indexObj); + + if (container instanceof NaturalArray) { + long idx = toLongIndex(indexObj); + NaturalArray arr = (NaturalArray) container; + if (idx < 0 || idx >= arr.size()) { + throw new ProgramError("Pointer address index out of bounds: " + idx); + } + return new TypeHandler.PointerValue(arr, idx, arr.getElementType()); + } + + if (container instanceof List) { + long idx = toLongIndex(indexObj); + List list = (List) container; + if (idx < 0 || idx >= list.size()) { + throw new ProgramError("Pointer address index out of bounds: " + idx); + } + String pointedType = "any"; + if (!list.isEmpty() && list.get(0) != null) { + pointedType = typeSystem.getConcreteType(typeSystem.unwrap(list.get(0))); + } + return new TypeHandler.PointerValue(list, idx, pointedType); + } + + throw new ProgramError("Address-of operator '&' only supports array/list index targets"); + } + + private Object dereferencePointer(Object pointerObj) { + Object unwrapped = typeSystem.unwrap(pointerObj); + if (!(unwrapped instanceof TypeHandler.PointerValue)) { + throw new ProgramError("Dereference '*' expects a pointer value"); + } + TypeHandler.PointerValue pointer = (TypeHandler.PointerValue) unwrapped; + if (pointer.container instanceof NaturalArray) { + return ((NaturalArray) pointer.container).get(pointer.index); + } + if (pointer.container instanceof List) { + List list = (List) pointer.container; + int idx = Math.toIntExact(pointer.index); + if (idx < 0 || idx >= list.size()) { + throw new ProgramError("Pointer dereference out of bounds: " + idx); + } + return list.get(idx); + } + throw new ProgramError("Unsupported pointer target"); + } + + private Object handlePointerArithmetic(Object left, Object right, boolean addition, ExecutionContext ctx) { + ensureUnsafeContext(ctx, "Pointer arithmetic"); + Object leftUnwrapped = typeSystem.unwrap(left); + Object rightUnwrapped = typeSystem.unwrap(right); + + TypeHandler.PointerValue pointer; + long offset; + + if (leftUnwrapped instanceof TypeHandler.PointerValue && !(rightUnwrapped instanceof TypeHandler.PointerValue)) { + pointer = (TypeHandler.PointerValue) leftUnwrapped; + offset = toLongIndex(rightUnwrapped); + } else if (rightUnwrapped instanceof TypeHandler.PointerValue && !(leftUnwrapped instanceof TypeHandler.PointerValue) && addition) { + pointer = (TypeHandler.PointerValue) rightUnwrapped; + offset = toLongIndex(leftUnwrapped); + } else { + throw new ProgramError("Pointer arithmetic expects pointer +/- integer"); + } + + long nextIndex = addition ? pointer.index + offset : pointer.index - offset; + return new TypeHandler.PointerValue(pointer.container, nextIndex, pointer.pointedType); + } public Object handleTypeCast(TypeCast node, ExecutionContext ctx) { if (node == null) { diff --git a/src/main/java/cod/interpreter/handler/TypeHandler.java b/src/main/java/cod/interpreter/handler/TypeHandler.java index 35b13e1a..d731c7a1 100644 --- a/src/main/java/cod/interpreter/handler/TypeHandler.java +++ b/src/main/java/cod/interpreter/handler/TypeHandler.java @@ -101,6 +101,23 @@ public int hashCode() { return Objects.hash(value, activeType, declaredType); } } + + public static class PointerValue { + public final Object container; + public final long index; + public final String pointedType; + + public PointerValue(Object container, long index, String pointedType) { + this.container = container; + this.index = index; + this.pointedType = pointedType; + } + + @Override + public String toString() { + return "&" + pointedType + "@" + index; + } + } // AutoStackingNumber constants private static final AutoStackingNumber ZERO = AutoStackingNumber.valueOf("0"); @@ -110,6 +127,38 @@ public int hashCode() { "i8", "i16", "i32", "i64", "u8", "u16", "u32", "u64", "f32", "f64" }; + public boolean isPointerType(String type) { + return type != null && type.startsWith("*") && type.length() > 1; + } + + public boolean isSizedArrayType(String type) { + if (type == null) return false; + int l = type.lastIndexOf('['); + int r = type.lastIndexOf(']'); + if (l <= 0 || r != type.length() - 1) return false; + String sizePart = type.substring(l + 1, r).trim(); + if (sizePart.isEmpty()) return false; + for (int i = 0; i < sizePart.length(); i++) { + if (!Character.isDigit(sizePart.charAt(i))) return false; + } + return true; + } + + public String getSizedArrayElementType(String type) { + if (!isSizedArrayType(type)) return null; + return type.substring(0, type.lastIndexOf('[')); + } + + public int getSizedArrayLength(String type) { + if (!isSizedArrayType(type)) return -1; + String sizePart = type.substring(type.lastIndexOf('[') + 1, type.length() - 1).trim(); + try { + return Integer.parseInt(sizePart); + } catch (NumberFormatException e) { + return -1; + } + } + // Helper to check if value is none public boolean isNoneValue(Object obj) { if (obj == null) return true; @@ -188,6 +237,7 @@ public boolean isTruthy(Object value) { public boolean isTypeLiteral(String str) { return str.equals("int") || str.equals("float") || str.equals("text") || str.equals("bool") || str.equals("type") || str.equals("none") || + isPointerType(str) || isSizedArrayType(str) || isUnsafeNumericType(str) || str.equals("[]") || str.startsWith("[") || str.startsWith("(") || str.contains("|"); @@ -219,6 +269,16 @@ public Object processTypeLiteral(String typeLiteral) { } return Value.createTypeValue(typeLiteral); } + + private String normalizeTypeSignature(String typeSig) { + if (typeSig == null) return null; + String trimmed = typeSig.trim(); + if (isSizedArrayType(trimmed)) { + String inner = normalizeTypeSignature(getSizedArrayElementType(trimmed)); + return "[" + inner + "]"; + } + return trimmed; + } // === TypeHandler Validation with Special Cases === @@ -940,6 +1000,19 @@ public Object convertType(Object value, String targetType) { if (isUnsafeNumericType(targetType)) { return convertUnsafeNumeric(value, targetType); } + + if (isPointerType(targetType)) { + Object unwrapped = unwrap(value); + if (unwrapped instanceof PointerValue) { + PointerValue pointer = (PointerValue) unwrapped; + String expectedPointedType = normalizeTypeSignature(targetType.substring(1)); + String actualPointedType = normalizeTypeSignature(pointer.pointedType); + if (expectedPointedType.equals(actualPointedType)) { + return pointer; + } + } + throw new ProgramError("Cannot convert '" + value + "' to pointer type " + targetType); + } if (value instanceof FloatLiteral) { AutoStackingNumber num = ((FloatLiteral) value).value; @@ -1135,6 +1208,10 @@ public String getConcreteType(Object value) { // Return the element type of the array, not "list" return arr.getElementType(); } + + if (value instanceof PointerValue) { + return "*" + ((PointerValue) value).pointedType; + } if (value instanceof IntLiteral) return INT.toString(); if (value instanceof FloatLiteral) return FLOAT.toString(); @@ -1162,7 +1239,10 @@ public String getConcreteType(Object value) { } public boolean validateType(String typeSig, Object value) { - String typeSigTrimmed = typeSig.trim(); + String typeSigTrimmed = normalizeTypeSignature(typeSig); + if (typeSigTrimmed == null) { + return true; + } if (typeSigTrimmed.contains("|")) { if (!isTypeStructurallyValid(typeSigTrimmed)) { throw new ProgramError("Union type contains illegal keywords: " + typeSig); @@ -1216,7 +1296,7 @@ public boolean areEqual(Object a, Object b) { private boolean validateTypeInternal(String typeSig, Object rawValue, String concreteType) { if (typeSig == null) return true; - String type = typeSig.trim(); + String type = normalizeTypeSignature(typeSig); if (type.equals(ANY.toString())) return true; @@ -1244,6 +1324,16 @@ private boolean validateTypeInternal(String typeSig, Object rawValue, String con return isNoneValue; } + if (isPointerType(type)) { + if (isNoneValue(rawValue)) return false; + Object unwrapped = unwrap(rawValue); + if (!(unwrapped instanceof PointerValue)) return false; + PointerValue pointer = (PointerValue) unwrapped; + String pointedType = normalizeTypeSignature(pointer.pointedType); + String expectedPointedType = normalizeTypeSignature(type.substring(1)); + return expectedPointedType.equals(pointedType); + } + if (type.startsWith("[") && type.endsWith("]")) { if (!(rawValue instanceof List || rawValue instanceof NaturalArray)) return false; @@ -1294,6 +1384,13 @@ private boolean validateTypeInternal(String typeSig, Object rawValue, String con private boolean isValidTypeSignature(String str) { if (str == null || str.isEmpty()) return false; + + if (isPointerType(str)) { + return isValidTypeSignature(str.substring(1)); + } + if (isSizedArrayType(str)) { + return isValidTypeSignature(getSizedArrayElementType(str)); + } if (str.equals("int") || str.equals("float") || str.equals("text") || str.equals("bool") || str.equals("type") || str.equals("none") || @@ -1345,6 +1442,13 @@ private boolean isTypeStructurallyValid(String typeSig) { } String type = typeSig.trim(); if (type.isEmpty()) return false; + + if (isPointerType(type)) { + return isTypeStructurallyValid(type.substring(1)); + } + if (isSizedArrayType(type)) { + return isTypeStructurallyValid(getSizedArrayElementType(type)); + } if (type.startsWith("[") && type.endsWith("]")) { String inner = type.substring(1, type.length() - 1); @@ -1370,6 +1474,11 @@ private boolean isTypeStructurallyValid(String typeSig) { } private boolean checkPrimitiveMatch(String type, Object rawValue) { + if (isPointerType(type)) { + Object unwrapped = unwrap(rawValue); + return unwrapped instanceof PointerValue; + } + if (type.startsWith("[") && type.endsWith("]")) { if (type.equals("[]")) { return rawValue instanceof List || rawValue instanceof NaturalArray; diff --git a/src/main/java/cod/parser/BaseParser.java b/src/main/java/cod/parser/BaseParser.java index 3422ce9b..a55f53bf 100644 --- a/src/main/java/cod/parser/BaseParser.java +++ b/src/main/java/cod/parser/BaseParser.java @@ -273,7 +273,7 @@ protected String getTypeName(TokenType type) { protected boolean isTypeStart(Token token) { return any(is(token, INT, TEXT, FLOAT, BOOL, TYPE, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64), is(token, ID), - is(token, LPAREN, LBRACKET)); + is(token, LPAREN, LBRACKET, MUL)); } protected boolean isUnsafeTypeContext() { @@ -325,7 +325,13 @@ protected boolean canBeMethod(Token token) { protected String parseTypeReference() { StringBuilder type = new StringBuilder(); - if (is(LBRACKET)) { + if (is(MUL)) { + Token pointerToken = expect(MUL); + if (!isUnsafeTypeContext()) { + throw error("Pointer types can only be used inside an unsafe class or method", pointerToken); + } + type.append("*").append(parseTypeReference()); + } else if (is(LBRACKET)) { expect(LBRACKET); if (is(RBRACKET)) { expect(RBRACKET); @@ -352,6 +358,19 @@ protected String parseTypeReference() { } } + while (is(LBRACKET)) { + Token lbracketToken = expect(LBRACKET); + if (!isUnsafeTypeContext()) { + throw error("Sized array types can only be used inside an unsafe class or method", lbracketToken); + } + if (is(INT_LIT)) { + type.append("[").append(expect(INT_LIT).getText()).append("]"); + } else { + type.append("[]"); + } + expect(RBRACKET); + } + if (consume(QUESTION)) { return type.toString() + "|none"; } @@ -408,7 +427,7 @@ protected boolean isExprStart(Token t) { return false; } return any(is(t, INT_LIT, FLOAT_LIT, TEXT_LIT, BOOL_LIT, ID), - is(t, LPAREN, LBRACKET, BANG, PLUS, MINUS, DOLLAR), + is(t, LPAREN, LBRACKET, BANG, PLUS, MINUS, DOLLAR, AMPERSAND, MUL), is(t, NONE, TRUE, FALSE, SUPER, THIS)); } diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index ff60d22d..52687bc0 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -238,12 +238,6 @@ public Type parseType() { Token visibilityToken = null; boolean isUnsafeType = false; - if (is(UNSAFE)) { - throw error( - "Class declaration cannot start with 'unsafe'. Expected: [share|local] unsafe ClassName", - now()); - } - if (is(SHARE, LOCAL)) { visibilityToken = now(); Token currentVisibility = consume(); @@ -261,9 +255,6 @@ public Type parseType() { } if (is(UNSAFE)) { - if (visibility == null) { - throw error("Unsafe class declarations require an explicit visibility modifier before 'unsafe'", now()); - } consume(); isUnsafeType = true; } diff --git a/src/main/java/cod/parser/ExpressionParser.java b/src/main/java/cod/parser/ExpressionParser.java index 9b05713e..f26f3f2b 100644 --- a/src/main/java/cod/parser/ExpressionParser.java +++ b/src/main/java/cod/parser/ExpressionParser.java @@ -1321,7 +1321,7 @@ private Expr parsePrefix() { } } - if (is(BANG, PLUS, MINUS)) { + if (is(BANG, PLUS, MINUS, AMPERSAND, MUL)) { Token opToken = consume(); Expr operand = parsePrecedence(PREC_UNARY); return ASTFactory.createUnaryOp(opToken.getText(), operand, opToken); diff --git a/src/main/java/cod/semantic/ConstructorResolver.java b/src/main/java/cod/semantic/ConstructorResolver.java index 6198cf4b..e7bd4dab 100644 --- a/src/main/java/cod/semantic/ConstructorResolver.java +++ b/src/main/java/cod/semantic/ConstructorResolver.java @@ -740,6 +740,8 @@ private ObjectInstance createInstance(Type type, } ExecutionContext constrCtx = new ExecutionContext(obj, new HashMap(), null, null, ctx.getTypeHandler()); + constrCtx.currentClass = type; + constrCtx.setUnsafeExecutionContext(type.isUnsafe); for (Map.Entry entry : match.argumentValues.entrySet()) { constrCtx.setVariable(entry.getKey(), entry.getValue()); @@ -894,13 +896,35 @@ private void initializeFields(Type type, ObjectInstance obj, ExecutionContext ct obj.fields.put(field.name, defaultValue); } else { String fieldType = field.type; - if (fieldType.contains(INT.toString())) { + if (fieldType != null && typeSystem.isSizedArrayType(fieldType)) { + int length = typeSystem.getSizedArrayLength(fieldType); + String elementType = typeSystem.getSizedArrayElementType(fieldType); + List initialized = new ArrayList(Math.max(length, 0)); + Object elementDefault = 0; + if (elementType != null && typeSystem.isUnsafeNumericType(elementType)) { + elementDefault = typeSystem.convertType(0, elementType); + } else if (elementType != null && elementType.contains(FLOAT.toString())) { + elementDefault = 0.0; + } else if (elementType != null && elementType.contains(TEXT.toString())) { + elementDefault = ""; + } else if (elementType != null && elementType.contains(BOOL.toString())) { + elementDefault = false; + } + for (int i = 0; i < Math.max(length, 0); i++) { + initialized.add(elementDefault); + } + obj.fields.put(field.name, initialized); + } else if (fieldType != null && typeSystem.isPointerType(fieldType)) { + obj.fields.put(field.name, null); + } else if (fieldType != null && typeSystem.isUnsafeNumericType(fieldType)) { + obj.fields.put(field.name, typeSystem.convertType(0, fieldType)); + } else if (fieldType != null && fieldType.contains(INT.toString())) { obj.fields.put(field.name, 0); - } else if (fieldType.contains(FLOAT.toString())) { + } else if (fieldType != null && fieldType.contains(FLOAT.toString())) { obj.fields.put(field.name, 0.0); - } else if (fieldType.contains(TEXT.toString())) { + } else if (fieldType != null && fieldType.contains(TEXT.toString())) { obj.fields.put(field.name, ""); - } else if (fieldType.contains(BOOL.toString())) { + } else if (fieldType != null && fieldType.contains(BOOL.toString())) { obj.fields.put(field.name, false); } else { obj.fields.put(field.name, null); From d026e16799a56ce61600716130f615b2b4e0e1ee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:43:45 +0000 Subject: [PATCH 7/8] Add unsafe pointer syntax runtime and tests Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/b476ffd3-a03b-47a2-8df7-6f9f23f27c87 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 375874 -> 378365 bytes .../main/test/unsafe/UnsafePointerBasics.cod | 24 ++++++++++++++++++ .../handler/ExpressionHandler.java | 11 ++++++++ .../cod/interpreter/handler/TypeHandler.java | 7 +++-- .../java/cod/parser/DeclarationParser.java | 6 +++++ .../cod/semantic/ConstructorResolver.java | 5 ++-- 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/main/cod/demo/src/main/test/unsafe/UnsafePointerBasics.cod diff --git a/source_.jar b/source_.jar index 3b7b870eee5676bd53a9a80e6041f12c51e8babf..37595bb5dddfc32d83f2bb75b5ec02dfe5e8a596 100644 GIT binary patch delta 54155 zcmV(^K-Is(_!j+(7YtBK0|W{H00;;GbX}1QbOLl;v4TFn0sFJTzE1%W`&^7%2F>x0 z%m4rYcL4wZK9kYDDwhy%1qOdmZ)t9HWpYAcb7^C9E@N+GT~N&mfW1!G5cceiYbv#eh3{u(zi(|_7&O!x-_~uK5sE4;YK0~*S_$w} zSkwk%j5YvYN1`7IbyVUDkk8#T3O&1X;A*ps7~9=B3^vgP99xme^-Wz!RO7mFaPgmm z%lO1Z^G+sKvpNf1T3SLCqsNv%`*5!@+|KlSkHQT|NA=JHw0YVPo?Mfo<}lP8xbQd9 zs185CVV9JpeyF8(jKi>)u#j>#YHI|W{i*P;@?3I!lOX{cvmn5H$PsH@j9iY3R*j<= z000rK001+W;Zp$>moS3`Asy{KU3c8Ja_{~X^gi6|)>~fZp)X3L97nMlpZe>U0f_+< zfA?YrUjtwOlKWvN_l6I)mIMZa!C<~H05-+qL-D@M7WFc3%iChzRf}&PJ*sXub<^S7 zqV4i^y)5&8_{M+z?DE}3vFPgN!TGc-ueR^=AK>51hqfzkov&rn)J^_k-IdL{SUrbd z%=foV{k|z~!_O5|+%%>5*TaZ@S=8dke|?uIaZ{|9D+fl~6{7Q!5)bRHxX=HkeE3*5 zODLlY{aV}=`L?T8_;RzoT0xan(YD!ny>7c^3-tJ@Z0prs*<}CsC=<`7sqTud%&sfZ zsyTMNt|Ooff}Q&zx#{`%MKe_~a1 zUAZoo*=^a~)XS_Zu2yB6UDr+aX8QF^zh2e#hwa8`>s7J&_OffL_4~Q|H`X{i%dRzS z`R1L3d@9?9XI*~Gek|IXK1kD94C(8tT!lExwA_*Cngf3m5%V!bHOZ;EPt4mJA_A^?0u2peZ@^?qG++otTn zhyG3K3+xv5*QEwF2*W5y2VXS-nW;DBr`bF1qeC;0eFKG zf6J+)H;|Ws1mh@&1p(n-C-QHfUO;VAD3@etv&Z~AG_WNxH1nKf0R*llJcQ2qX4_5W zZ&mBH;Dfm;Lb??WW%w)6CmfRgF5$o^tw}p1tH=6d#~ZtYKarp3fAZ6aZZMq6PXlO3 zvHzSBl(fa^aJQaCoMRwj+e&L!h}t)=FW>$2^ZC0sKTYP@1ms9ZEB~f0TTTgaH}#tZ9k|`;8S&+GNN@_sca-)!39m!flGCTz8@YVT~`} z;tzPw$}J6F)k(}$#5ymQ%V(?AG(L0^kZi_lCpq5?ctn%bcZN6RK z*30U;0=5OZN@+CX=&A-53&c2k!CI^z$_Iz36%z`ooHI5le=rxddWrrhAyixOXz0O_Ka6yMQK&uyfig#h=dW>10X`IF#MOoXRRu z_~|#|zi(scN%HrAlySOuBeioab1UDPW&h7Cu(C);gNB4UEk z@@ZK|x)C)XkO3nzOBfOX98Rn$vI^WKRTFcV&fCzopuI=&Btg!zc(tTJ1WG)1fYR}U z`5X)$CB?G5F19P$7nnLtDR}UQ;FB+N+5SM2a|Ui&fA7WF(GlUawSBB2$^kg}2AD;r zZE5y69gi74Dmd`w>Q|w7UWhi)_GzU1_iVj9M@m!XJTHU*Ux-`?_Oj3SZyq>f28K@?{wR#OK*Efsox(~+vA@#u5Y-kC?JGgZ zHIVkIbb?31J}xp@Qz4lB+?M!e8UUH*c|M!vf4;?#@KW!JRkaknN^IC4b$B#tCObdk zA(>e99-Yrf;FxTGRdkD+>=yr(GvoWR?eMKoWxiOSE1|H@fViIQM8c;-<%-~?+ZfP`LcXnG8okkKL2{soFfts~T! ze;}Foq4^}Pxq_CWDZ$ z?ib;eR$b3$bWqZ!u2qO9aR}Tb23&<7f3qsr@4K7nEcCWAUwFb}3z!)@zIm)pJ%K+vPB5;=de~0pl zXx;x3O6Fip zjLWi9QHitcu4*f=I&I8?e5GTd3YsvbFBAP>jS|v2SYr{lRX*Mb4Qn(>Y&t^Ub>lh= zpzG{!q@P#KV!J9DCyu`qDiCb(e~99@z07~DtF_>@e>{Wr1BE3TX7~!6C5h-BrW7T- z?smdhmL8iR_dDNvlyzg)u&pxMAfCuTyYh5=Z;?g0XBkZ+Gl1XWxe{jPhrtb4&SaVy zV5lLL3|Te1Teo~rh{KqPV`C1wVJ6m~VfI8D{{HMgBd_xEf40S{wd7|7e+WEE)6^3aq}=D-3)_3@X$bz3n#ZT+w>+x)kK66#?ILO4s+7r=?`7H0VW83$X+VPH`cWz z%~fBZyHWKV#1vAo1fr=~;thD%Xy~rM4zVyibSWbq#OBw39nN=Q@fO3c!~Z*8>CPKh1n&>eOC>mf007`MiOjBjiL7=UX7sTKAic z1MwBdXCZKT(^^8trD9|b?5vRwtl;}q{82Mzxby`@(`j08_35dBke}a)3I!@v^H<=X z`~r?~-9&RKqJhH4e{M|AP=gN?K8*$nX(yiFZ-ngxCe~7LS*)vAYU+uu{X(bkm}W7t zfQwkpeTXWMIoN4NBvm33{(BN(u9y#IaiqB%SWkwMVx9@m40s6tKP7#IE|B`6+X9bd zF2jQYfZ?cI{Z&pCbWT6fEzCJ+WxVNi~aF`51I^#yA{{==?RH|@;X8iny#!#XrsH%)z4Eyr1{pwLg) zl1wj|O=KQ3s63X2k8L--Dlw{i66DE~{)H!F8x1y%6xT0FF~a$@Hs$^#)7$okEUbAg zk7XEIf4z5CCp@PG{Oo#$V@53+1x6HT0Sz{_=e~UEK6V%u_o?)Bl3v3vA95lY6p$^rq zu!&?TkcTnTF^;IX7#}f%XUCx75j3Fg!*DGK&v7+joB;c2M0kc+DlyGShTx#4H$2gS z8ES&Vvm;x@8T)THO1=ww?E>;MnCtM2H`(DCFd5(p$A-04QOHKj%s&nN9^(Bz4Sjgr ze<+O6<+Pc|BF$KJJ~C(Hh?cM7z(BM!R@dCIK<3me>dzkzgV#X~04&-%hds^MLMMJW|6&6w|$iszn!%Cg_$F0OiBq2m-|+K!EwI_A@% zliJBBf4o@RU9=YLoTsku-RYw#9O&WxH2J|WL)7Z0Y-|F6Xx*0(0we^~(g40yiemM3 z_F^eotFA?dp!LarPqc9|o!U<`35~Ap4vD?{8S1_J3c`f*!)46}*j;J7e=r1V8j?9Q zZfF~d>Ug-RmV2&QSVid7^LmSWJ#8(|aaQRAA-;}F@wHApFlZ*y4uYQAEvH^TeQyF+ z0Ayj^UG+2GS+5@Hv##3HW2e_<4+5uqq-_n7U^+Lmr4j~23mkfKM-$X-2F5ON^ zgLYOMuxCyydv$6sssq9kf2PrJj>}WmoMQ!kshVPiCvsP1yUTe3qjw*(Er(l?0ru!K z&$J}PHXyylIcnVaeW=zxZzcRF)3pE%@NNcS01sW@mT=S> zx8F|8@s!7{tGfDFTl_J#@OqbNWbFYlbo8~gO|pQLZ^n7eJzX&I-o-^N8sUj#WOJI!w1KP zeeE5J$39v^x-;g`e-i(hysFyPiWq%9zCi=swi9^-VRS5G2b~0sePv)|S4J`+Y$D;{ ze8WjEydM6Ej|2auZ^?-$;4k4&D_O4enCD5uTt9J-2pkyPQDBK?2o%mRgJ7RyDttY~ z990pht=Nj&AZ?}WC0V#PV!hXi6>s0Xd~yEoa9D-vW&F5`e`x2Dw%_mYK$eZRe^O_% zxP#80%d$xrICiw1WIIB{!;Jm_yE}PShA+eE0N-4Sop>#JW?*xLQjdwMPJtPS#8$i*4{RS=_Z>4As8pvMQzPE|3NE4kQ& zm!#N>ZstIlfBrp6&X17$ked@L1K37SpkK!I<-c6m-owwd=|+Z6nKO`V(YEX&(P~uN zCUo4lQVmCrJYNf@3l^PAcq>NbmWx&4N8zvX%ft?vzZ4B#1Tw`sKn&Pm0*BG+-*WwD zzdhi$Iu185y_!XlELuvtXO{&%?ZcJ#8<=9<<#tn|e`qWtZrrZPutCdc^M{1Es+SM$ zR>4RawP%oogr#wQUhw9R{VI&UrtR>rQ++#@td(qvx4R51fwUoBOab#$jyqq~`mX*^ z%F@9h-KJ$LOXikS=5~DcNlm~};?NcY(>)BjVF(_SnHzJl(D0jvG!CS0kBJ-D2(qe< zNkY5Ke{~iXemZg2KpGG&kfSF%>73NH5-(N{q|G@+a);pz2Qhq;8ss(JH`{bN3!WSB z@3OCji^1h3O83MWiYEb`*2o({1HWh4l@j&R zL*cEj`)zr0*#9Y^xOdQ^SBIS5W%D`3&|~W?n;0S{ZpENS6`Q0LI&k}4%wfrN=<7KMn$8J*d(4DD>}-gJPdH;%_Koq# z6w~y%WxM!FgzLt6OkRgSpWj3=9_~FQ&^?F`rIstT*%C(+j28~UsNLdWJ`ANVVx?UA ziV5wD1vOYACzHf1lepdNsp@%BSdZVse|k)lML!2MUH%kEe+r~O1(LsP7@9mgNu)rw zL;?tAJ>&O(qBvQ^I`D0wzvHu^KkFIUV{T3TLiE`8OzY#Eq}xZ3#lDnqsj=hArm|AJ zwH>me87_hyWIxC?H1v6wdkz-vr|2NT&SZCje69=gHl5BDa3cYi2+l@K5rvYre?%;- z9?JtBtShTP?9{U_;^Abhk;{!D1H#G4t=d#o6S#B3Gl`@j!8SP-liQ(X^}(k+B#&@_ zM=3!`QXN`@Cc+g%mO?b>ua_NEs!7#eiut$1^Ze0rG8K{=LJ_<$4&?2I!8SY#^QFB0 z&_eCWD1!`sR*eU+KL z8bQkp(xD#EdcT~+N^gWZ_16pns=-wrq`$GDmTSbXg;&s23+ywg)jQts1eis3raqn1 z0q9G&v#IovUXa&zm*~aIH_rxbqD^+-Y2HKJ9kCm_!#9cCWO5YTzJK%Pf92k|4M+y8K5HRhg(pa0=@*dV z%|LzD-gZ;cvJ&sc#e#VkZ6rcbRQ9IT9U>GV+%R4tH$N)795$6fe|r~Aeal{_OdYl1 z`yY17cV=-JoAzuFJy!Fkfzese_Ni!5=YHiLOGpL^(b#ezRZ;*i@Fy$iPAvRReEe?8m%9sZ+jVT2xk);r}n z5)L>}u$LPKn9%$pA2~5(u_}uO7unk>#fcZQSegzFYZ?Wm{EcLCQ9mdaU;hswnjNBj zv)wy)!s#z3Q2Hm%Gu%}P5G3`=rPh*+5kmACh~@WXa|Uh-VsP0NolAALcnifMcLnG| zv@cj5LmLxze-uR@_|XmT-(?_?fu?}y_^05otT35JSR@50$}N+5f|CM>!#T;c4JV>9 zhrf^^WjRaVS`0;^3-9n%@C~LRhnYEKepW)kyAc@QO}54QucGj4Fc(fRfsi11A%f3* z00wie&7PEuVVUIdo8{CQT>6D$1CwU_cxZSVi+``jBJt32TS{Z*nTJ)IJGA3D#*_{2 zDv5Cnh3?%@5@jK6VSakIcc1|leGaEwj9h{Ivx+<`007?dm%)t#7?+TU1qYY99Re1A zef@JAH-n`W2$~7WK(ws*eE@x<4mv#R3 zhi-fW4Gc&-`?6I#RdJ{ppwVbF8r_XXV^z%G7dK@#Zx*9fv2M%t^KZVX?pDpZ!*@m7 zjm8(3uZwxttnZ(jpUU;RS&z=3(gc2gK6mRan?*VL7wdJk?8^0OU9x{i>++^*yY>C( zySlk5>T~g@RlY7iv67d~`*LZ$Z_B%4*;Vt=X>nIAZ~k1=)uQMO9NMm6pIsQ2_bV5p zyP~@tjW=C$(J@jmSf`u2tJ3ZaC(LNxFzi2d1^}a#_I}wFpGFt=cUMgvE%JSTdH=Cl zFQAMp^xwsYVzlY1dNf|Ii~A`f#B={!;Ppkx-hQ*%T-DG{U9@dB`NU}4wpFvl;aO)4 z?Q*$jvxA~7#j9Vw$=I`6S09S5lxSX8%c9OMx-}z2b}^a0es?&YPT!qP$A^~ zJbRf9Ui>r+4%hUVg^ctp>G&MF`X6as zWy67lOe%eR!OH$GQS|ZS?09)yeR|X^>-%h7E;jRyaY)ux<+>eZZ!h z_2at|rorQCxhOvYGZgDG!+Ee^;90XJgY=lSeh0Nyw~VjaQ52)U{8x59IeL3|c|1FP z2iQ%HCZ~s!ce8WORh%E;F{qep`seQGoy`PJHg+l66-t{6$#fG{yyE~drZ)uK46+TyA%7f0o) zyJaMKVs?VhZ+B)7`Tq{NXv*f@r+tHx-EGwl*}FVjZt9x$sJY+^U zW%r$5ZfNxBbAZ|(nre}?W#^D=xCIHfA%KCvf6hKIzONRgm=#S|&O0VrjP+^0E*XsD zwyD|w79=}V;^U#s^-R6kte4rc{OI$OQ6;CwIwyOi_|@fAE)wC_kiekm7?4#r1WY)f zF%HlRsPJm&4!KQ#6#00qv3lL@y7|~F-*p|SjYz(tgOoT>Se~rge@O< z&^5VD_H(f!fCeUk`3Rc&mFb2)dvE~5RIAzOt*P551LVH`9~T^7rK!`q@F$HIqT);?R8^Kwxx z=jG5*;v7&K%x7ngh=oqGEt|A#f^EQ#;9WDQ!O4ocD+n(|<>sS_yHHD2F;=4dv|@r| zczm=EV(^lW3aUEO;(wSnQ`gPBfGMYdh#F!@o`0i0fOgF%Cew9pS{&q$nbODQoPBOr zkm>=eBE_?RT}>1)D_X0;1I8-nG=FeL0<($^{nO%I_Pxx&mHxvZ?) zk^ly^M#W+=G(;Q0KoTq#HP&?V`FLB^Wj17XQ_HX#GS%&59GnG-?WVTT+UVuio|C_U^BMS6hIt*8LT6J>JnmBLP2tVUGaIId3<83 zImL(4@naI?z&pHoj>j1k(`P}@{G;5eTmw2!T887O~7tT#s!OjLsP@SY$#?CooN%iJ#LG+a&0sanKNwNtE45E_rklAY4ko zgF^LxLs4&_DPy`sMnTOktmc%o=9Bm%22658ctT&XiSa(PR9L+O2doSkZ;(Pi(gYI=YzN&<+Qq0Xe*X(FR8C=Bh5W(G%K#Va-Hqr*p2oExk+VDJ+r8}yI3Fa)&^`D zF<)!`adqvgMeaM~&Ddho6{?P68?+!v?)VMOx^3iTP*!d&f0E_SR-*8?71v+E228iV zVq&dN6&2o^EnR}5*4AD@;7u++V@8}o9#`0URC1w%^i70q3+fSJRPy{mKXjea5N{h@wElFWsh-n>CiAMJNfTd)ngap)(7( zY}8`lyjb3pXmf7q6cdvkmLfD1hd4K)axKjlqx6IE>35TNY?xuB!A69am$P)&nkZ(g zF`t=O>*lxF&{zjbmyhTMcJ{Jynj?|N^Lg2}oD#+h*s`mZ8)U2@`mYLqaFN3=Ul`R_ z>tg=CRPGX~aUGnG55J#~ioMvaV(r;mLXOIAGJ~g=$=cHAViq=uM5t6=U5W`zITlun z40j}hTFr?)1#c_DKm#hEPNY!kDHqqbw$kR(!TO>^YGVEvQ#AGrgv-sUE{6hv+~%NE zoj8udXKDg@co-}{R2-gvYuv-Ag=OAXY9zFK9T1SnY5Lo%Yz@DCW;BYBngg$^jSi(d!(^mfjy7$YM+0%fK6$RO9JA6X692(}6P2E)n z-W-qGZjs&+?O^@VeYjPmX3Z5JnP;uGqhsBEZtOT^91YuZ?*X#{? zxDj{FwxGdjFXkv&WWmzUy|SSuZK56cArnMHtkf0_q)S1AtpQ@r*(e8!fQ=;%L?fKy8IRcGx)3Fh%+#u)nXxIV{=qH}Lm=NZIt+1<-FW_HGpz2lf_}Yu| z;(T6RJN$n9dfyS7u%}&NtZm;+#^T*=xwN%dF=WVjlh9g!D8AaXlCWZWsY#eO=UyBM7)>orKAHZ#tInG#$M{-5tTs4zRF3U9;d(2)xAn$kS zk2IWJ@nn^YyY`H)H!aij1a|zr}N*hKh))Qmp#n>u&!=yJ8QObU+~+5>Es=cV^Lm?_inAc*6d9#%1#|sQ~N6l#W+#Ga=x%iiV5k{1r1qtYUCP9>nMh8G5Ln!=M zb+^r?^Fw6=F;E;}RFJSSLAGJ)Buv(#R+|*fvSVgnmkpmi+jn#m#;&hKxeKYESjxB% zuGVPL292z*=LA0>1@8|93O%w=bwP|OFqWQn-Cc)oTvMV0|1Hy~nvXs9M0}xOjUO<5 z-w zcq=kC#OE2d7qsaNA>$pd@OVjDct#~7Iv5^*HIv3{s^2W3N3XI%{bqB5RHV&bv)`=b zZ3$k3g$=45Iykw_Grkq)9Lub@fiR&?PkGj55J3!%$F}CIjl|g-sD2R5@EN^Xb|#G6 z>~iiB(i>2>3qP)l6`UYL?%Rb!p-Tn^F$WAX3dNCTeeRb@^%0WbXwS{6F8K&EMvszz zEIJ9IjP41x370T;6>D#Kll}TC^RzBgG?U3Ll%-N-k2d`6NpUBgH?E(=l;yA}<4Z@Dzs+VnTn4Q0F=Z#R0PKxz= zSXq6(Vy(SBJ(`?f9L~-sxO)$;L>qiZpRG-UcY{$0v6||W;j!4?_rSu#s)^$|!~HxX zqu-#vB&K9=W_YjPrz{b<84^8uEVXajVT3Q=!r8TvaHx&T^T34x=C-DyLo3>U;m!Re zN$1gihsX1{c{H7ljYu3@rIin5zXk$exbuWGNRp3rDFkIe@>yNX%i9LxCyp6_4tC$y zL%WqAPeps??*yjGZCaeA8h`Kvg}6T}jp80{?H7K%fN5vvSN0h%U};a5gxDoFZmlflJ|?HpcAG2EQQa%>|nR&2^@M z#{-#$L$f5JFtP(y49a00Bk&*o9^uwR3&S@Y{DGer!1r~zykYP5vsc+uN|~Xs<`hnh z=!il(s37OVY~{j|?=uiHLtP5$lYNd4+;RjSA|7$qQxIK9q*_Pek0~pE0)&XSG#rY$ zd@yliZn;Qq81l#*7Hzj<+qyb$UJH<940NEWi-QqOjl*Y_^al`Oj~I6{HOb`KzJcO3 z^s?nkOb%Ja_Qp(4aCyj}pc|(C8`XlLCOnoVf+GVFL(e9$|JN?_>1+**)ZO#Y3>S6# zD<2%U#_w&08IdM#cg$#iFYJp|cIS>@JWEnfaEmaxCu0uR?gPH$*o*I>8B*5e7HkX? z8u?gO+ntR8)Zd$rF__9T>fj}(mH7ToS}|HdAC9kGocUW$Em>mcDWSFoefu?Gn#kS6 zohr)>$mD5e=AH1=3geqlEv(W(ep1Wh)-0uK{)2H9o;U68Njh489|e!uZ zQ)v!{L!%^Do0$TN?*dz?yrwCez<})4ZPCu$&)hr-Ubv>wOUInGGT-rpj3IBX?y{Yv zj`ra`50nl#ZVl^yx5ukIq}$6wkjZ3amamyYT9x!2E> z@#E|bGXR-_)1jKPD0xPg4Y&a;{?*5_LIFsW1KA1?#3m+ENlFM5v{03Z^qkDM8u^l_ zL3p-uA%E4Dzsh-a*3Kb%4mDe5AFJ+`8f;+2#C-33t)K3jMl=2&>Cq1;Vm>OMvnK`GYlla{yAU}Gq0OuCU zxrKo_B@`e7gH*odzl{`3Ewt745f;8G z-0)a<cG9<1d;QkjGwzVkn*M{B8Y5CX2FOedC8PBbwoUc z8c>0Xr4F{>CxPSvWtyU|8@3>PY}4BJz@?6cI>Ql8YJ{;n=*={DkwZ$4cLGGF^jmo+ zO8oJEMC`)p-sEF=_V4u1m#IlZb)Aukp!!YMGDxlg5N2U4DU&;FLfK^^y&$oTDt&qs z6Pe}<$d=IgFpnJvLL?nx$b%)xU?b;t#EF!pdvaRV@p~xLC#V7$m0zmLhO*`_1m3Q( zd?2qm`%f;!5czr|V;|WcL(xuvLt}F77_#4gaE_4;zI@s4q03my+8i{r@rK{h@5|Q~=Uu0L6>Ye{} zgv#yg`U`vdx^4%j|LH&Ki&)B>td^a zOjCa-7n1toZkvwAy z&E))SHjT`(&P=0Dhp>?>tm=(AVYkYE#z2SEUzs_0cw5yx@mxS9fXB$Qv4Y^7^eh`B zitwOcUU?n6?3sbqT;miQTIea%Rh^Wyja7o@@#73-5bq1z)>71rI~VuaX8G4m19sZg zeTH`-Md4t5I;tJuOEyOwm54)wzKf-;G)`t%-BS$H(>+x&b$HF^%(^wA-CP}icAvy> zTc3Cf=17G*Bp+=Yh|@d_ygVO7UqQj!_b*1F@0{psn{NTV)Xk1a-%#k$!(Gy;V$6rW zb|CzPeoHHkVtm^XvncOY-F$w>|h(^8=G+(56|@24(yK6Sl`5s3-7i|P*i z^*D>gGM7E#GEGT4$UMDTF=>ZFuO&eV#jWEyo0icLl?|RCUEAf57YPjw`~<4baKh zp3Y8V$S#|ui!0XH4%JfzMWU)8ZsX?2QTfR;w88T1U^bhwS3jLaIfCgGJ=&$5{j6kf zqU5bQY|R+~J=Ykecb&+8PAXClhMbj&t}v$u2_CSh5E1UCP$q4H=#`UE+waM+k_olt za75MR{#@6)$wn9OaRSWkeOfx|q!OvCD=%R-4L;00>OfIwiYyq16z*1osO2~7C*IW* z*=~9my&e1kj8g^FG$ah{(!Ke87Zk{V`}A3%YwR>9>J=RHb~BBCP=N~a!N&1=omgHO z^NCHO{tE~U^S2CzqC_oVcuF(MLm?lj5d5(91qxpC2EDdcMWd(zNmWaRZ6I?YM1pY4 zhfaE>_ejMl>v?l`SHLbRk0<%MU5Q1^m``+-!%Ul!Ai2rvy9(PK&{E9y)qGj$``w+` zWg#}Yxz|l^r)$Z7Mx2$0XOIn{1{4z-gRvQpUJ|$?XRtrW4XE)X3p#aXD1)?I2V7@& zVlH+btRPOV=(D9pfJ6e27>n7bVhsCJHkvEsQ%Mos@b$Lj0(pyNxp<=@EW{7c2;Pu_ zZTH%HMxu7J6LJ?~Q`ce>qH~Pdv|uZYDU?tMYnExG`g4zeNgK*_W@^Y1RxY~a(#b=v zOLFgura3h=0m}un1t^P(35}XZVO>a8{qS%`5C{w>F1+~d70MM}T8*mVoP17`$*d&K z^Rc1RZ^I6@lu_$keJz2G+k4u#U~a4LB>PHV49UDc?;34saOy_0r@4Ns4(~p)E-^Fw ziIM3PLWr1uO>vCAr7`-pXF|aRF7Hwhc{Bt9{&fmu0+C5OFEE}m zbcv4Ty?nyGmtHqW7v}u7U`Uy?fH!0CM%rT8`h(v)%+Vr~cIaNpn-cbZ{&{a-{xK)B zd4#&@u)!Q=B7&nV6b&Vq3`7I@g@yrlJsYDLxz-tfK^dJjPM`~NyWP;YWK}azX z(e2ENZP`sZT0wU@ZNw=Om^ls{TGCx4#-AGU&+*auoH#nceFa>EQ)IRIi2SOumdHpU zAoOh`SWAYvyqKrKACM)|u!G0ksFImT5C)_{v$Y)6QqNvg^2SxK^PTP(OW_Xj47ooQplT~#NB&?M8$e!PyO77->ehvz zB=~qLi|EFYhOf?-o{1SZ_~q{P&c?pCYaQIQ_DvFF>)bYux-`S+%XZA^*1z>z?=gb5 zH%v*>sLw0{X}M}zdy(D3RuWz;0P(`^V$e3~47-Tc`x48j{a9g~;yk3}&EZ(}-g57M znWTp{pq6`#A&I--?W!GBwM(kHrmC)!sxotosQYtL-2qW`kW}**qUJ9>HN|N*8e2nM z3c>KTzqsWJ4`Uk2hMIGCX!>R2UuOOWFxkQ?mLy9tbGK6r)6H91A#T?CqeRfE6ZZk( z{Kf=Gv+E%6SJNu-tV(J zLb99`b%{3BSG1@8X-oZowWXYs&|ghurKg%R*>m>@fY~>$r(blKL8bUmF8I%Xm#{Z_ z$ax3fkjlP)EM(p+Mi?17Iw`8<6k|l;oHqZ(H8!G*DIL}u_nu${U<6xqR_rLe2o;_; z_2zDA6&J5OX<_|g8lIgpIu+PXSh2mwySoH;UGf|Xgn>qMfMip%qk``LUIF&hZ11r( zL-}yoLeE)M^RYMQg7?TLTz*B}Bh`b9@mJls{UVFqfGmO`WQ%>_c_wOhrEM-|4@Qaz$<7Gp24n;7&nY&4^kt1CyTUKm z5aX*>YV*BKi^M%ns}85w=QaKFnSvX{83l9T7KSrhQp=0y`> zRzSkj_Q;c5y$pDk;4!-K^xr+%N_c4)hj)kYL$@jXHAHK!S?5V*4UJjD-|vBY*?M*2 zzdG<=UHY$nAT4V}Pd>1US7g;dWbh7jrVLtg85w-9ZvNodF(xp72IXIUFlyBsoJ6bs zTde9qwCaDvs$NE`KK(XU_lJ1hKP8%=Y<8VCax@>MN*?(H?{$dUsJ^OBr62%jS@h7h z$xjZC5b*B!g-jJHjRe%|b#sUL8=gMdAFbHZE~!bcT+sMPz`P%7;FfME&UZ)7bdv-m z)kACdO5Wjter5H4r?+Fp9or(cz3%lYE}+ZNY}Px3cCn2M`aRH{xSa7{k|>N z<#TYpbnN}(yAoN58S8iaU^Sl+3yc8vLSIKjCkzB%7$b&%A(d5oUM@EC>I#AdS#vXi z1)xsGs`@@&C;n7sT9WBzXDfikRZ7f7t3M5&l5HTjVXEFKTV-N&nY@>Yz^i3 z=bCbaur`Azb;F3qP&E+`sO{~LJoEJT?TwXlS@#71m}xF!JyT8L98#wvol4P(MnF~` zoUOVUlsN8xsOgg`0gId?`G#mlXJgKpy1e6iM$mc zr`n-0L*7d0ESaLnIPA78nSm+c@KaM7DyNJYWa)m3j{{IwY~?&4wsQJ#lX;j+dbnfb z=y36ehCwFAAf1QvEUe`R`Ho{~=*mWWY+0RuZEX_BN(oj0*S3_GI>_zR0RY{Z$o`jM zHP~F?#{Y8>0@oe6cvM2dds5Rg9$*=#iEmb`T2?mCBCcyqknpaZ_Pk$Mo21wUm;&1# zMc%4WQ)%sKGtIYPFdElxc}oO9le>h@L6p+HLFB@#mHOF_f#QmJ&E(OL`ob!X>w0K^ zz;a6=+B5*!BNIYc<<@&Z0h2Hg5U95JLYE-Qg5qr@PQM|?f)T1;oK4?eAS=6*#!y)U_{L4Vo)3RZ^=dz$PN$e zPB0jc&>MiW5>i+$%C@>$KIbpi@&H6TXVT#@Pxjiu)x)S@LKq{{<5~Y!pwBN9uIdfO~KYGpOJIh8Q|#z_ZdDX0P9sHn`Y4Rip`jSuhX632iLS z$03^IjVLfk8;IBZ$nS^F_J;d=qwFmN9KZN=I2w)i_mCcHmb4>CC?SOuy&@VS5&7e# zg^MS+jXY8plj&>58;n8DrsKoOn;DaQ=Xn-*U3>9F&>UlNDTBSxVEpb%AM5W}S!Y0k z-wgX8l)$Iw9wsg{0MyjxdhM!_UJHQt~kVdt5Be)i{>x$=%6`FG8fd?}1FPmuJzYyb%!6OmNk@{OhKFVz_`B$zC&EyZhK!-G*@y z3E}woVAvi8pz2~HDo5OB50Nihy|<%U%B777%wXRa4fnTW75}F%qtoHu0=ggx$e+MDB)Y%dR-`5yUAXX7MRSAa#D`xql9+?g) zr?3PQShk3NwZe7U0e+W>3-6(jpWs=u>bXm>r&1He**~X0CGOe52<+jYz%c0Cimu=r zGmb?otbE0scigczWd+JnF|zN>eR@rT9e54S`{Q=}Jnv<+kjKOk7`63I{jY-0AG9 z2*-JVwXTZgjpOpe(u9MY*|1rEqRc*@_~5|+c;zP7O~=P2o*&utkXwF-B%uDum7wh5 zM2hAKx40Fyzm|(aq^Nse;)OO1d*!n49yl8XTr<^bFaz#Dy2U`r4OJfOWu~ReivA^7 z^Z;x?lfS?Ae+E?2?l0bt&>U)yjKBCNWtukDCgp?aUz>W|TdCfhe4kuM;`!yGteZc>Vq^Ue6;O-e&X=`9)zDleYELH->AFp-}g)3)RqmE0J|zV%e! zxv`^`W8CbM8TWXcm)GSQJ=)xT-K#T9WJ(!6e=9E=z$!JkC3wPE_72d?J@5&dhZfcT zHR`{(?H3&+is*(q%fc7~d|wEM*{h+;KL0uUz~)W0C~Zl-xvHzV^u=)!u&OxE+RPB1 zp?!$JfqD5zrA42IkF6Wl@HxY-uIxcj+nDVnRGe=JQlCeK#LBP$!5LRJxFrN)Oq-7- ze;Wlx6;WCo<9$MJ&KN@!=wD(YD4ufYsb61TdVq!*q<_n^A20H3dVD&8{hX5t+^uym zogIEJ{|urU$OD#uqYgGS&>*kCF_fS_#wYH%`p0E`?}hFsM*0YLcCtk{H-qt`Oj~SS zD9~HaGr0-r$e!O3mxnTvz!TtPc<6*Be}3M?Af|{dkk`&;LJXJu7#0rj#7PGaozZ#s z*=m!ZjnhC+ZB^mRr}jnNbo|bhfIci&3PkJ)2or7R+62>86bC_Mf74bS2Wq8Vf>Y*I92k;KZ+VeIy4cPkiC?3;KYGXN1@JjRyPo+JA$V6*I8aRe=Pp! zkz-ofJm7>li;luN#yUatZO85yq2+mYIGfH+NrkdE2ak~liP8pr9+0jnddj#aQ#o%? zmtPW>hdkhIaub%9?1vlRFq^wju{#nhMrApn4#WH@G(wS6F}=g&v7mw4E6x*DdtBG$ zO;Ib)`ml?Irc+m6P{Aw6>Tn!*Hhn(Yd}WF+|qMzS&?thR8gFhCJE_ z@^L!!GaV-ySfCy)_P1GS?Y}%>5e6BYs2;lrUL-bCU`^x!=HgaY{!`v@&+m8@5$mLL zhXA;1$X*49qhs@!O zrAF=j-BsfqsDTG_6iaj^7At`8yIer=Vtf7)kwn<}2rdD7?oa7GEUz+7LqWw)K*8g7(-U#-+JG%`Vf zby95>$yMW?xK~x84h^$&Hn?p z{zw9i9}YHMj9f}fZSV6F001IqmvMms7?+TU1qYY7XaXC5Hj?lD74SSnobzOoeU)R^ z$+CP=tt{yzIk~I7trRr_Sv+&dS(0N}8*6|2HNJ>$puyoNs$BMt57LlqG#ZWWMt=ZY z=ZjDIM=2Kda=y-+RyHr6Ju6o0y6N<@yzS-(msjudMOQcXFT+<=y_EBRA&+I#)Xn@{ z;W|=3$xG9J#e7j$o&3@TEnB(DtFBngkM*+)+1BM}+3+x@`KqWs{*;%+GVkgH(0N@J zi~B7=7qZ(l)gh47z$g>I_f?mFng3bd-_^~sfA!z_=X}2Dic*aP!Wzk5W@)+8|zon&ta;~s14`INT1C3TOO-amt1V3YWGh;_K|0p}k z{%mRoB7~pra0;PS@F)wYWai-k3+Cs#Sc+DEc89TSW?E=F_~UT$0<0h+yt?g29&bP* zgLNdCMk_L_94q~gr?uA~1GGg%uIsv#c?FaIp=$FRsRm;Oq9?w%5t-J7ISb{$`cZbx zMjFX}=-ab2J~v7(zWIh7L*L!j9@6Yh_n}|+U061G`P0+z*$A!Fus;<|UTTFbB$Aka znK*Cik4?Vn@ta#mbSVA8?GjS4s`r ztf)Fs-`s#O2YOJnS*2vhzMP4lFK6Q9`1I(P!?XAAk4~><;?2p~;h)`Y!~`$4Acif7 zgK~3_i3$}@_hw~C7|W`S#KA&A|M13tpnIKpNmCbA8FyI%Yzv_sBWTv$HuYUAy!%8D zfe!Sn0L}bfFPQ$iyDds7GQ>H{n5k{^;ziIxyCASQH*Kd^3eU@zv|CWU=fG_Z3G3pI z2Ny@c>9fOw6F_d6bCZ{?r0o*jK9hGd(Su%? z4K1)dHeF9veV5rz%p=9L{-t)jdeaRQ26E#>8^VEhvyu+e!?WI`tITj(e- z-Ua&oO8Bs9ZoDeYbH%%vFn@bSI5Cx9*0AbkWRBgqFU&*AT#HqOUofOjHtjrLE;BvT z=kA$xpODBp)++0HFvT|QF-RZKLTg8G;YNUjMESPF0`D|;tytt$Rd?clHvcSpj}B0_ zie??*wIbW!7bbF=&c%dilYrTsT*y@ot@rl#_e5STdv8IliAzsfD{h*4MR+lxlW)cT z>iFdC(Ju!V7iT{|ax|M(g6S`dsvlGKkJnQ>2zCq~phYgO%X;w%4C3;BUyD&TpU;5; z0sq89K&&&Hw|RT1ytKoA9Ne8(*s81Hly&{7Jt;m(1LJ8`;CQkEG~U&s(xYhea+5&H zG4d;)Nj`XFSf=1XZL=E5V4ke1>+ zHGu-a{6iCF4otA~Zha?F(BNcX%Pdo;DDQw>>;GlH$eO>)59ddJ7lST|oiPKLT1rPR zpCkjJMSVby={l-FnDs57Pd~ft8i+K+->U*6-$BZ63RZh=vv^UbM`3xJ)CQ3H#4e zWHI(=AiUvqIb4Z`mm;IN%8gncG#@ug#WJFfns?;=Nzrzhrz5wI+nFE_Rh!l;r%^zU zmqEa4It-_gZQJL6CXDJI!BeFAg6UdgQ>!(C+Pa87IbCBZbE5o!tpmFxy9LytO&W}7 zTK{+^B8YXo#8mUYh#YfUT!kZz|Q2JAgrN1}a4=~lges@%aw#(B#@VeMI{DAuB> zvGj0$W2hJO4nf7J|)&>1MQY(>& zi%9!q2-_EXp~r2m7cu9(MkQKI_9nCFRWQ$y?WV5qhttc0cd=s|&NdZ0ocqK9JiI-{ zX%;VE)^0e6q~XxO-+dTiHqg zzk$iqLHLw7{-Il;JG*jySkw?aL)?_xLfE%3w=MWUQpa=4EVi zP%5cji{E0lk}Qb`5mGDT=KT^q!%iITENqDeq37V=K_rv{>W4uJh^%PEYF+AeMlM~Z z+g7&@nkK);unvu{&%V#s_T|j*l=s2!~dAKw{aVXSO2jq39#WqEukYQ1Shp-vlRe`AEs=7YG%Xy ze!383IKGHmMsB1<5I}MP!}ef-h6)kNq39i2MZH?r?RZDY&OzYFaBfV9 z*;~zE9rv!oh-%V!oXk8sg)#qsm}T2)5oRA=x~pKRHgI!>hvB0j;Te@A5`y;Yo{eoR z$%+70+WKV=JDlvQXC@HuxIjkgQq?Bu3V>@`VBvNt)J!P3Eau%}D%@eO{2`gopIgFMV zoiH7eFglqtI*1j#(HU2N%&`vPlWi&35g)tKM?@xgG3^a--y6${9rq{LAsD^9)SC`o zq5aU-WrcgU**r*hScMKYTt-{fhOPV`ukd2J)4Og(3kG>i9I;i57y3fkJT4c7G-Pxd6`3g|-mvzA~^>;_FvIEM#bZ8R)p4BXon6CpNun zuHbgCqRmA??rQBe>C8`9*p`pE2DVrlxgFSD`F~Vcx5{X8HX{K|hBW@#N#J*vBM|G~ zUxu(7!#XhBrbPYPOW&JKQFcW|cQmm9H507z#+Tv>%X=Km_#$DO-;wg&_$p!867Rg) zQa>D3JtPswxZ>e|uDO6wWy2BKfH1q1jxT=4Lg8*jLZ(2NDh?8t$jOnNxTT|>2n2P? zdYEWuE^bW>i=8jV9EJH3_dL=dES_wK5ddhhfAT;nv5o;pihG4=@kZfk$zUq7mJ0g@ z6A_q;ohaeT!3n!Sd|{;AD~DO{ILy~;nK$BE-l%G6-QB8Y7Z#!we8fGO88gD|(WnnsO2>P*D`u8@v`5wDP*2M$+;xFxO-pH?| z3fBKBHn>Y2^&NoN)nGa@$B@V_5Sh~mwx$%AWCBTinnMObVqxVD&3WV4 z{|+DmQ%)ZQuuI=3b5L5WI#U>ZE7#pE4ChbS zr9~;)qqBEYrThqg__g>x_So&V8@^iJ+w`tK(!=@u0`(FeKMFMiFhyw+9@DqqhL{{d zm;tZ2LAfi;qwr8<_a31wFWc2>Z~pSxW8 zRQw=1vp1wI{w}$yc%nqXt7U)6%vJ-K3IF<4U_k7g%|xHaGJf(*Fpi_YSUnjR(-Wxp zSP~G#?V}jr2L&43g$b*rTT1LwmDoP1yfVL5B|#>8OnE2v@K6KVeJgV1+Nv@V_F~PB z!G5cac{u-nuWA6VJ1F*#*L!Nc-}@CD#Rr#LzNTYt)qX*cZ#if7d&VUvb&*MnlEVa| zS9IH(VhIgN_(N#wvMW$gE+yz&eV5$5WsMESL=>Y})Pq)yR&nvQHVXb86gwDvXf)2< z4p7j~B}E2{7bTK*ufH!q8(1w@tJI&8*4`id3L1ld<;cEgw*iHi-fv*4L2xL&5K+Nn zb03XcU9rPP@T|I!q**vkseL;Am=FoPY*FukH3R%6EOl+$h{bYw=Z!r479MkY=A#bGpxha{y%7ltb-m%3fl2916`M77FI4b&W%nMs6=$wD z=dsX#6Oplom?@9*?f0gUDN9t&qa1O{RVOEv27`hfHf8bUHJo7fE{2Fa7k$_!{6@@H zPX}Yy`w0c!S~xCw{ZG5y>j}4crMGvv^IX8t;hhUT$nXZN;G|Q8!JeDw4+dSx8wmou z@JaDhK>yAWkoBZ+;k*$O4Z;QUMsyH{o~l_Szy*|OLA%Q?VTuUlwVZGq zTwWgk8xEc9$FNv(%tykWlA!Fek#eZq%1Ftk6|k zCDy9c+p`aEPShuFKyZJFX2-VYfO_vqpXXc3n;e{lpLUwZ^QKtk&3$mX&&Ju8+L=Bn zVCZ?7Vf;kj2X=iq&cU=;WrKkA)zt3;yO!$P2upESbhn~3J+)jcV1GY}&?k*yS=5?c zt8e1Dk+u75%ZiIe0O7u{Ho;>E7DUd0a7?n(tVh;JXI}KJ`u(n{S1jv@Z6=K)1s`DT zp^2b00>2H$oP5xqwXn>b3x;ivWE0m24{bc}lH0S~K(w{35{6cI?S#MFRxI_xHpeWU zQF3)9hV>FP=J{>jzJH}kg-bVX`-WBj4fn+BaYPp zaE(}e{o1Qc2=%V4^D%I0gUkr9)4FoQ+4>p1B;{)L8iOQ>K!4{0eN%la@PZ)sMCu6}QXP0yZnE2Sr!y{%lU^mZfGry1F z?O4t}ny&*xyMNk1OH}z)x1!U3VQBU(9$GXp8u)jany?KqaoB4K-4xc$DNgEVQ*wkl z%_?u+`WDBhSJCHgxTe_V^^M=1oE?m7j!a?S`pwzd$*9J}w%Nv4NB=RdXJTE)v1zm^ z^g=@HRM8%-*4=%^&dbwVPTR-iFMpk+JYkD&$Ps3GC4c@fMiIxmo(L5MVp#A}F1P3!y$U3jclx43L!v zc=h51W-*$}p@|HTsi`b*`qxb+4Q#lv*+9q?*W2s4+Q3vTv&n3N(D~;M=`@^e)O6~b zx_sYtq<_ZLSUMr$cRokORGLi;V)$ufbUh~KU@yh>|M?5GYN^qX!yj(4X%psKw!0K$ z`H#Jh93pLE4`Jo^*YbVcNVL^2Jzo6%iKyjnh2<1kj~a{Ec^q_8#{)P0O4Ugq)ZX? zqSiNa8Z6#hIi@>u%N=YHi4+t;1A5ghZbgRXPyQxK(%*mD8C4YeIH>-Y)r^N{{{v7< z0|b|WiUk_C2z>&-5e}nVj9ezTRM;^J008YOmmy>W7?+TU1qYWMiv=WOmgPiaSyFX5Y37_x2BsjJF-58*Xj^Uk-@A(o36dZwwS735 zSQdfZ54(%SUO;cD`#|p)al@6frBTeHv!f$#vkfCI#%Ro)d6+~ln{R1wW=^pv3L|HV zOauIyoAlW;i=0LHz=EoO@x^Y-(z%#Z?zuJ+=j$AR6w-0SfU{>_n2dJ;r_atc+dYNR z$_AdNu(Qv1o7>Q@;g$qNX11XL5IU3F&&=ijp}x1GJT&b2nLbh{;hyh|yqLrIHo5fy zncl`cqAtMrG>*vyjhV1&ME*D;WE+JX@Yss1y@2{ePW7e!#O2R_XBHw{;74J?p9sfa zF)RmUa=~ncb_uN`7A1t=d$9x0N`R|Qa@pF132<1!W#Jl&u>dk1P*UMH=rUtQdRpmo*e4BEVlSJS%(pX zhYf@+FAjs)D$<5>I3M8jJo17&!k)KcUJIto4M$FR*qJGREhon?ocKQZ>MOz>jg&&v z8d*^f?}9L5eFzHwoCF4Dy)0@)3?yL3_F*gj8y3tse;}=vbq)8PM&hH#+g`wl7p&Ox z;VY#Gg8K(@^1oLnwf2R~5%Ktg$M3aaw-H-=2QDqlYCtIr>&g;QT09F`>3%NCClsT& zqR&xTPEZbiT!yU_Sw1#nE4n6h6}3`$_1uiF39|)c%7blZ(VDtU<_6%cX3N`VEmLJ8u_7#FvqGw-&v;w0?WKl<1w%k=H;lHg{2+tC zZP?v9(f^|0Rz=P#*G+|>PTtrLOeCu&$~5|Qp}`b!f(QrxAp)k zpOPUR=aaIxChcQc;&;jLvePMSu^>`8KA;+#(C4rzzJ`5M{ zb1O<`(rMtWl)87gW(N!%r)i&?KfFlb+nvd^-A z9*R6wm`90K-{HJU+hN?K>o9KAltwJz`)VqPYcw^_MCt+7dP?|kxoS#X+sfoZqmpcx zjWM07IcJ(Ct3NHBp$W!o3r=A%EZf8N8Ul|^8>CRPHDz&NHW)?reH5y#d6hpDCXGa4 zTF#I_`eU}c4cqz{dMhGRp*1(!$kY6PWN_qimW@g0bc4rC^92?&IpU{ocs5XW(mS?C zc*Q~0@^p%|l7v)PUF7UoOorJZlOrQnd2!?g4DV;uV?XqhO`xjZ!?fw@&J91!{g)R4 zRa#WZCt>~{6cSyg_^L-(uv!$g%&5#BRZ||UzPV_+oUT3?oPvr)o4h3Bu-P_$N4$^8 zFrVQac*%6x^*D*)BWEcbJlGxxvZut=mnjfZ$FwO3>D0D3zrw>C zIK1MMn>idWz>NmKz~|Ly(t}?YlgS8%K28TP`#t=8cM2bGUc<-f+b&tc&=QB1IJCr} zEBtnK`nJ@kc5}a z^`UGNW&1wBV~GEe=OVtkr>L=|q2pneI!qAZB+75Ndd`J3HHM|CbmMa6X?PQoI_$Ru zCfhCV`&K929H?^31mB%DQM`HGL~;7Ifg))VBWV;PX%r)A6l2|pu|^Dk%l7HZLkt!_ z11YvFE3t8UrzFKi;`uA+v2+Il0VX$rPAbSnUqPYG2v(|KX~RLv+7(Urbnp3$v~}rn zIawG5jS13nTAHWWfn-^}Sa9bH<~?MRghoh@A7_@RL-PY6sUJpKgn9S->Gj??! zB!X^hpsG6Jt)Ma&EhDsl-;e`vY4V_MD@E~6PMnig25ZUcDA!&=*HmwxKry-MlHLd+ zY;XLr$&c{t&)Awlr{Pxlk$7`g=SONkMPSXY8HA+UP+YmnhjV?eiyBlqj^Xe_&ajTND|}b1TpLnWFe9WQ1wDJ-KbVKCstvTh)jon+M~a2b@X?e!O9g1 z7((Y7Lj$FFI#W0bvoc4@Gb{2GB>eBMt!npGd+h}Q*z4T7=Vu2mn3+W2rcbS3OCF!M zi^#=>jwY-S?OhZmTlwmtXxqGBA*XgKOKi!il$221=;7r}I+7IyIkOkCAl|6yo~?M3 zlPzdZs97eJYd1K5dEU*=^jUk+rN#d`=I{bAd4v0gLPn7nR~y3j5Lbq?r(&aoPed+qD}(T#GgjP zyx&!wF`We!i;=Xf=dQF9m9ZipnhK}>B@6A^{eNB#=8NHf#5}2NwI2S+h_W(f_gFD>hMT|mxVj#W1}-XmU`n;9_|f|Q8b$z=RGv*gG-^;Z`B2M}}D5RI;dGBgq ziF?MSZN3(-dBs#K(VTC1ULd35FW;7CMZfN8N-`Q32+$W?O~5jPUvO&%!dQb54$rTL zQ`m+@*`Rj~4~FjLY>>NjDQ0KO`=-1ovghkhMiX#=-h4iMH^#kQUX0K?Vf2$8EM;`7 z42$9Da`34)n@v7g-|dvI(O-`K1c$4b0=KJ}17$o8$y|(Fdo#K#U<&{M>NvL^)dRT# ze|%o+^CU+Dhr3dT{(gB%KAn8|cz$}7B1y?{aQ&pS!@vM}XGb!12mJ!+7RJRA6`F*> zcZ-6<9~87&{@!*eN_igZVoo^gW{x&y0fBkU`c-U$H6aD~M3HHzzBz8cp6srvwL z8%L#r9;&b>bMX{74*1H=RbN#Q>9>$nMP@8^0J<_d!b?M4aYr&MfgF(iF+`1P<^iT` z9<$ICLymR$h%3ow+CC@~V}F1=e^UqrlT$dmHqjkYo+hRxgB+az;^2phHVGq4*Y<4c zE^>p)M5tXh>J9_!L9!bn4?8x--3n7*f&6U2!0mt=lDLCkTMO+$GtR0s=1MC(+{e(l zVtL)p1rCA+;U!9lsV!+r`f>{nC&|TD>@`P8CS=kT$`Zh_tUL634q|@hf8%kJ&gYo~ z6Qn}PFbN@FdM*u2(Zyp_ILXaj+4IGvgMq_aXK}qE1#&5|@E=ncOM(i1%vJb4!Vm3f zH{q|0LDxx50`_<=7Z_18Oe$ccQ^ zHwx>OPDgyhfQVf`2~~5Ne<9iTVX|2RQ`%ls8=@&7vK#A&?*n5p+%{r!TO1%Rc;Goc zyURf&((x5TpJQ~H+xLjBbodk|_zoG6dY#D{3w(`I0~eZ;1bS8+Yn0eVIsh2DAfrHZ z>%<0PzQhzz6^N?4bF@y*sntmmM!t({k^^`GJ_eEtwI!+;KCgsR0d|+M+5;GWDT@zm zWe_b4X&Vh~A>(Exp(r)0*&};EE)s)J0PL+FiqVkhSq~4^m6!po`7(TW0n2A`xGBDc z{Vt2~R%0xxmcYP2_eD9kk`r$A$E245V;$I}7h)gjM64Q5g>>17rc6}-HWsFBKMLus z^)nXh0>@w_!}_ zNd|OJPOGkc3A{GLr(mNNL&c+OtjT3pO-4AgyC;~Ms0zM^J8PeE>91b=O3qRJDO4%`DC zf9c=vk)AW9nM>LPXj+{5;Rjc7bdw1c%upJp2ZP=_yHUz!SIpV?T7?^Y4NXy3mRM(! zu6Ae&;Kq;`*8v{a0bS%IH9(tmyo!CZKJag(4?j0^*;t3IEo&eKgZ)x01BPI1u?=0u zK$%}r|1NaMQy#9BCqy@F0N7#|sYJr^f0c}tQKIwuPaD3x5B@)}`yn=bQ?nle%$iou zo&g6=a_q6idL}B=Y%X_&l$UCah#_&Qw^}kWwuPQ>WUI>?%&`S)z#yc6GfZL%P*>qF zw$m1ZFf*eVK99ch)DE&-3ICAn4?m8Nyp%*HmFV&y3W(BOgsU*mB<5&f7c;{F}nzA7n2Se7J-o(^fhe_(G-6CCfDRmJXZ7j zV?yI#bw|pI(n+Y+Kv4)(m|4^F#Wh~*Iw1U(*=Re+5_hcCHQMqCjm|-?ZbIC=J8+|l z8zV^ZYiFBd$7QA`7wGRL=yr@T@tWf8n!DJk%jh z{s0ROPkmc}^Kbbj3MmTGGks?AL4aDpr?tVG`9BSQkYw@*e@ZYsW~j%1QG*Ye)fw^m zU&XRAm#em$l)*=J#4|BKQsC^!vIgG{d1u{s^2fI8NJZ8|VuD3wox;0g> z^g2mQeH;byE&P@V#uHrYf8=-73g0Vtm^RF6FYHTd;9tUv@VIcstK{k}g_CtsSU6Q{ z6-_4L(1SF(DiBxgFOpsVi{h3`hyI^m8M{*5Kn;*-EyIq2l~THFijk>SUMHws87S=i z39>?c97+_eCw3wKwJsynhG?`}TO-VUvCSh3z#%>lrMe^VrZZ*&9mfgcfk(dZLb zJ4rpzm72e?A%)Syg%!kVAT}6t<)mm$>yA(!Cg0|=Llv;`J_?Hp@w z+eY$xe#KhAB~&8I?bp~&;By_Efix+SCRd<19B6W7v!O_p565on|9&(3AoopDO6*?m z_`#OQ-I>|hdGAo0IQbM`Qj(PEGAkNdZ7K?XmsfF-=CnF|^e9_z%Bo=l;<{NDWlEP% z57pbWs>*74j+7B)>l*aBZsWI&LUgWxy+c^5gA>%I6Jy zet%mxbbaU;X)l7LS-pvyEzFI9F} z``3+9skJukuHU+Y16a*}F*z+Os_Y**yN>fVMnT8N)=qPwBwS(t4zg0+zTHIf13`UV z5K~u3(%eXvAwzMLigY%k=efo{1SlDI*P#KdUlfZl1v(=3r>Slg1cFC7T{YSk zbX&t1u*B!eW{X)>c6k+?#s)a%(YnoXB9aQ`K|Zd5{^W}Dd|7UPOvz2+nv&VG*>l(3 zW8=1DY%hDuw)kAdn~1H2WFXpckg#q3bu1in=D~8FF3y!u!AiKF3Rbl1?$eq1h%~jb?=)Bya}#_Z=vgvlS~uP zk04{OGoTghunU@h^4zy_=S`vTug-sZPF|H&LJ9anT4iyb{l*pkg09dS)SO%p_iI|! zswFTlA$xqsHZ*Z)IZQ71r~qUq_6{ZG!Nm&3#TRJdYv`h6h9t+TU`BjhuQYd6u+;)H-_Uc zz_`u^bA?}`E2VE&x(v?AGw<_v9tpoAGzW|9Gjjr~qA_ur^0>BE&D<#4c2Uvzlj1<| z;{M>N(@Q*cc?lOyYq*nb^4oEQ`N`OKlCl3kkQd~eDY%Yy!F4nZ*Nd^c=3dzG z#Fg!Y?PwylAhOEse*)0P(hhW={o2O)*0Q!2#I(0HD)Y7jbym-wJB*cPsLt!R8wf-p zjSrx`(-)S~RSe|Y%jy#|wR#iHJ`|sd@^e8-f$BMbnSl?L35_dV7Bq4`iEIs4#S$SE zHlcQ6NR9DlHwoRa@YpffkwxNh4i3_6Lz-v;QOVYrH}^ zc93=rWjM{&86HTtcR^@m+&a#FE41uek~4ceTT)bry32iCzLyqtTLA@iyrP1gxRM2# zouny$7De{KnM=tdPaZ#+Ig|?V?MXB+v`E!Z;Jirb%}J5~FmJ%>lYI{nAlkpS89X6z z0jK~zp?wV}&puHYbrJ(#R*Jn60i`B3_)I1p z*pfwoB8M0J$-$IAyc|5FpKK;qe->@~vV%{k9&jUV=v$ z_Z~GpwC8z@yiTuSyFN^@^F6&nCuF_-y3A7NZn=#7LY9(N6fNwkrz( zw#`UZld{NfNqi05j4yJEh7?i+xg>VnaR52dRhdfnP}}~&V6rb63)?#7Gl|*1Vb?26 z98wl%g;9g=jT{FDF&h>_dg9e-c9PkDJ+-U9%mu*bFgi9$-L8I?jZHpOZ7_559gQQ4 zLU{=So2561rF;!v7++QR>geIJQAdD25otp#ko2G|<3~tIumDtNzfpIo$Y+bBjf}bX z6&|*1!FR1d$=V{Vxt;?SuTjEFSWm>@lR+$PEfCOx5qn9Svz)F$%Wwjat%~-4@J77O z>SnhMKnO=KUqBF1V~P=p?-TisvmcW2!cJ}&ycAgpYnjEx?aZcrj}e>IXX{OK8_m(! zu{*F8(KmBx16|9|!7DlhQ^7zac+SbT(NTozG0b-sAp|C5NFm8BI#VM}W{&H2gGbOc zVHWFv$p+t>Caz!=b$=+P8D3$3o*dDGc*4o8Pz-G=+SNs!21=P~c%Z(ZI;tW!(pAmA z(<3H~xbc9V#Bvpc6?EO%iq{3nxu9zPnqjvfeWhaVau zF)q90wKNtaLuZRdn6vM(nWHHoFgv@66F;Gn#4m2A)F66$_t4n_ef-^jpw2=7#uXDJ zUCI$x$gn>8s?5sC^+G$4UUZ=)Smq4lpW#qwI0cD2%riTrK_Wf`4M5-kJv>nssYWYj zkA(TsaFwara zyU$V}O8^txFJ1%$PtunGRmQl=f!)SATP%6lb$SI_6sceCNAfj{_a^;etlMgUj9|0+ zBu6D+o5Q{srwl895SR#CV%eDrI8#G4YL{r6ZI~_ln9N3_mE) zXLrX3-FyoGONVgrz7r{?@eKbc3aU3Rv8k9IH0}wV`4joDv$46qO*s>n=11P+Z zP?9harG3vd*Z)~S(_LE5B%P+GtkWT@%ObMweBIV+8{Job?Xez#Zfvvl!GUa9rvzXq z$DlP?WmVmDBUvoQ+5Uo8YHG9sKqCuU)yHaBHrX2Vp0=gq4FM+z8}}T=!fT%Q1q~jf zla)pY_Qt@!BjtRyDXUsWoFsep%p_XWOUsQkjQuQDm@uf-TigZhfq}BCT^$Mj@mpiG z(_SZ?l)O`a`Z=6aAiXy5K96VOrKTPiSscE@ZO73pKZ zPrKgJ!b_d!u1oW>qc^dDlu$+zOm$AG%NEakgQ*4Tdx%;9>dG$EX`WiRlUlsS`Cz<^ z)+}xse7VJdCuT#&dt*lZf@mx8f%VwLo+z(>_7LUu(O;A*pVuDdlIiEc3F7@6McQ-i>rQ_M6FTe8jfg}NDeM(|pW#GHv#k0z}hJxP-ugC!lccBNwzrm10kL>6f$!S~^Wh35FZm{BxsJSh% z_`xvCX4aR8gtcg4Gik(nT;6BvP0rd-qd99tWickN;jpX*<^yb;Khp{^51}>4DfRV# z>~XqcYXCp#Hd;u{oS|BNa0aSW4k%uSezNx2qX0YpbcRzM zB_7+>+H}cFn$&jf7kh29`&OI4whu7Y>o7EquiKjO8)A2gtx>YaU_ma+MmXGdJ@{IP z;X`~IvV}3~#BJCjjU|Cwp)h_vrboViD_U-}{5bh@w{VR_@m<+sA3XM~Ii9}C%h(x5 zqaQz7D8#+RTOp7Br*Yl9k7rxojmJBz-Sto5x#g#? z=E0?s!?Nd|D0-A7SHFD$f5svx-bk~hPm{P2$P4MZmfxTJ^zV-+uRoljt;a`4{iE|Y z{Lxeke6GGg!IgZ)a&QKhxASv zEPm(uB{`x^47`ga>t#x2i&KKmfNdUIiP8NnS7)C4;CRYjT~|l*^*Cu}ppS7*XWzbktq+v? z%LgCvu`gj5sL8%M_(3#8N*t5FtqODG^olZ{Z4~5OucRoyCt@DaE$nl!aM^DBA)U4x z6OPN&dDh-5fIM$Fcz+Ln${NH7`N&6|{YNgEL}wD)3jPt8Acu!m?qx;aBne+c@D}y(y_^x~krTsje1`aCuvz>X zocOU434WCC_pgz|WHzP#CwPiz_VaAs{dk%EG_szG-u*h7{V^LmBQ37Z@E+WPOp&0m z+7$jNOsD8X+9XAvdC>lUInvko-z`VpHQM+_AKpKR8-9}2Px>R&vFBuWkNyL<>ktHN z4GuV6j9ioIXxq^u008mXmmr1%7?)7B1tfp%J!^N{HnQLQD;S;Agi0L6PP@Imah$H5 zxMy?LiF5MkZkyxVLrJvFtwd@`%89qlf4?($5sv`~%1%zQyZT^DBrq5Z2J^xISY@-{ zva>vyRr5(vwt2m(bND+s&&v5CuXn%ts#vb7x@85jrk#}4JfGa&)gR||UDcDPSi67B z7KiwYc>kiV&gyLGzFubS`DB0HRrYO&zub0!@EK_IYSw4B5wd*=t?ALX6sa`j2 z))q5Xs<|xN?EU1g`Q^K+o+FmB&_A+^j5l;poIS~B#WGv$k}t6vXIks*<+?2v6V~ie z(X`aNY17u(to6M1JU*WOBcHVm@#cRekiS~)&t`c8ufJNYrwi=kB5RuD_2nx63m=~3 z_pcK8us`?iC3|~&#@nB=#X3(Ovs&FQ*oE9*g2}d%yz%sjZkymXE z!Z{*lj?Rj3aR_#WM(#%`RKI#?HrIZW4PDyFINI31-U zYl59tb&>)nB?VO2-i3b;jb=1AE-~#M;KsI?+I&z)#mzkoZP(W z3>SQ?in?LKYilYr4uoz_NFauBv)O1N1D|Kj`C~BKebZ86g5`fC4fGxb(fII{*Q|U| zF^?j~x|~&Dxfdnc-DI&v1v;oG=lT1vX}MxedMryFpVV%6OKW3`07n{^sy6T%(FIkG zL4`6_57c|D9VlgVqNDb;8I+@&qvVd>3j7-V8J}7B$q`np20n)CsA131)M^{f33YJ+ zLPxR!A0DFCFNc3GkD;^f8)fN^wxw8$g?aq^um|K$5G2l)qy1lg{&oN5%l)5!eRlZl z_}6FqfB*H>(_awq_d5VkK(D|5dp}T{Q~m8p^5*%g{T~m1eg5Xz;mfCwe|`P)i^Eq? zy&H^C@jaSD#m;x^-#7Q!zwf@qe{1$?&0nqgt2KXh%72~0FFrDVyT;_}?0v!Mnv!G& zoX!uL8Hy5?$=#bb+3yMTs&1RV743OCx;+}J=Un3fTRlp4c8S^FA@HjBS3d9T0S^vL zLolA_2>1j$4$A@v$dSmJ_9^ly4Ck%4x5j3%nk;r=6oXb5$wN@;sAy{Jz1h3F$&L>b z(UAta_X21n8*A2o=>OxCTfi*Z*-Gm11b#15t65oZQZ$FlReR~zWt8=yYD-K>+k-h* zkIypZoCgW3nnz|Hyj>er4&lY z4!abyYP8UEAHJXEtG1}Xkn^Ysy?chP2QBcIe6d2`w@Sd{pZ$j95?*(c zlvSD2QsFtgF|@B`HClF{$6}PFGzT969~Hpv*?>x7$UwM_5M>qpK&0ZKkO2S7)mpqWASlw3TWd8c(eF$cN}bq5}xVq<6Zh zNZ9eA74f_$BA&>TIJPqANweeYdflF18lgs;FvigM-GV(7w&eN8f7>le$s}U z0~ru*?M9mFW%SlSS^SdMRT}m+$Yy`UP)KjXW~pm`YWj8l-q*5}$}MvSQ==qJW*uLs z)+uU~6YL3>5>L;{s?Hy04Tgb`9eM&8Ue*9s46+4#FL)Cy6 zFjrK>7@FOlY!B}q9dVbz*XaOYkib-hHp^A*MV?< zNJcl^QK*aPUF3Dka1h@aWD(fZ8gTr}ZUIXH(JK&@U6CTNSk)D--4kM^?H*AKDqdN$ zJh0-Xnbovp7G+t-CiaSej*ZDyBEn@4?Q4B$&srU%`U8(0?lJ9r2?JPU$wp07Bbml^ z$$2%0LIP@0^60Dwe{bkQfhBDc5Na%cT8gki{hW+~!4n3_;TJkz0~dnPDQ61p)heGA z*&;#vrU^PT`VunA)8|0p3{1G;(_Z&I)e?v~nKk(wX8Noo( z$?gu9bOM)f|BwPMU1CP`F_R+=jwlbA(8DOOLofYJ358id$P^e~zKbofO(p7onH)y$ z3))syIm7fX*1QNB@V?U1pp%zFSB*?I=%R}@Ejj&K3^Wnpeu|Vtv9@v_s$hstnhMAu zx?O1~8$_-)va3m}y7C52208SmKVS6)Wd?ffw$nZczKBkuVP`x)s$9QNv_~x7oYvJ6 zYowi@3RvKBoy;DJ@2rE$6XxoF4nv05G0`zx<~W3+-G5-xAK2Q~1GZ`w4SZ18Ne=Ar zrow){?&Vje7;&T8VcN@8yvELp7#QGYZ7VlbPfSfmkF&C@logrq=zVev^?if7{uauj zlC@(eT~KDbL#&8sl^d&aC*6Mt`36Q6tky}b!2<+FJs2Um1o}f##Y7o@7>o)g$p~wW z#{HoNmR-hCn1;3u(szAODy& zEs_QXw^Atal#I70Nwsdb*a9BQPjD75Vl|HQ@YOkHUE5C&E?bA?0fV=!@e?*VX*EQz z?|6*h0eYUE=N3wo4d6$A&Wj*JQp$t<8W?_=x5ccJ1_g__&Nofi4G^H;n2I6 zIvojaD#7gx1t(r(ZJ&S84NGzi-WBtmgDzG!pL3>YdZ?FmzCbpA-tF|ow0l1F`3ObB z;t5cZ$6fiasjvUpYPGmzWmF$<5P)!_JM?;ntT>;)nq}Z+HLN@#^9BEOotNdqoi}=u z5sT)~ttt7~=wIeBe4Oe5qln%Fk)cAio=pu>+0)<@c=83G3idS8XeaxuO5c#7D-$cG z%`;rzmnGkBpX|DSMW#lP9jZvfG%LWm1EtOPh)J5ltN+7N`)+-5yx zo4URvfpIq|Fl3JgNe#OaO@=RKzRio%Q$FGDh9(@aG0r!C_8qHSZNf1K*E-|wen~S< zvQX5tTdo&v0Sx{nO}pE{X(xL$XxiD8A~iN9=ds|k^t}a~V#XI1(mG#(y@cP#1~F2v zw&u}qzDUQYV=w2XK4orJ&Bi{;s=o4ENlQR@vK%P8#6k7?nxpI;yL+28_a%raIXT4d~)qFi`xuC!82>M7g z1(fTR+_%3Z$t`);C%LUqPH@aPCyI?WQ#*{4@x5}tJB%>pFQgELU)aV3_htOFfAr=s zxtB~`W}PMvwOaU#*LwO~)yl|#jW-#dBl$26Nus%bUL-S?X@^3kLs#qMKy;~~LSWpu z?xRzLyZl=_ZH@)ctTbQakcQrNrSu%qGQrz!Zjx1}i;wk})mOZtAghq0MIjM%jA@Rj z&SgihQ%_hWuC1UJkgJtWUpWrhQ_cXmM@<<;yH2sGTg+=*DUis|;(M=QMOs&Ya=$SU z+X6R#r#5LKx)XL206*(*B5sA_Y01(i*v2!KHc1Ts1AtPn9k3bZy!W`0erbT_%%lCA`GG z#!N{LGTsET(+l9h3*aCQfQx}yfn`nefq9fH;0L!`@UcO2vg|=ub~<(y=PWA^>MEPh zz+QcxH*G%0tf!x#I?Nc>))ogtT8Kt#yk80&6BMh(MOv^G@oL4E#9gVZz#ZkMTp;mP zYd*d2pu~MyoSoaR4jdqXC3f|7$nbW5LO_E|?N!xeBehA@m^h}W6zb{1u>M2co2i`N#Hhl)KX7kMtfP*%W*XCA4nZy!^MXV?2xHJ z%mPCDiXF424vgMIh-~9cJW?BK*d{{0v&H9f1>6fV)X{JaW$&UPTasp?F5vVUv(glq1|`S9kaA=2?g9q2 zlORT6Ms+PG#yEfFYStVzNjt6z<#}w(V9;dBL0$usd3I?N^%N|q87QyN^*!B;10b7{(VmaNY`V96?0(jy$xZ9 zuE+t~HFf-*s%+#GqPPK+XdNFDu&*sS$2|kX=cL+}sw{x-l&9LTLIHPwHQI?}(GRA3 zA_bWKE-CpBRG4O+tc%~tk5aEJuC*uY2DK_Hdd->@r$47(r&T+3%5uwtiwnZX$382y zinR!?lU*#DXKTh!Vh6H(ex5Zia+qi3*_##4wI+C!C3fv7``4vTY0fP#nN5%iuv>~f zs+BbGw)$;_p?+G#fp?96&w$5|CV@3>U^-BorrBuT`xRh;;mXmNf;Ru&#CZ zly&XWp0wI*H`C{Ip)ae&M%V=0rHl3qD?$?U(RR@E(c->0r6GGq=!&Cr6`!YXREGOJ zh9KvMc=4m_LbEi<-?uR5n?yhKxl``T71!rYq95X{_1J9Bkj71awXSFS>B&Y>Lv{EH zDTU%I&?%Qt3Deb(?~R^n-pxFW^4pVSnJ+7re%ttp3IjoueOxV9>lOjKNQ5LPK~BHU z-O`A$rMgX?^v6MAI0*_5z5{km=1auclEfh5BI!B*U`!r zpmw7oB#Ia>1bE_qiab?Ej*h4$hmNQgh^jg58)?A7Hl31WV9R?>V&{pbq_-*Q%8zY) z$PbF+KOXIoJi;;U+&ettYuz579#m_P6e?vr9kEy3Sm6L!Fz=NS#_LUu&}W`6?E^nD z|3oWJx~QI3bfRlV1nSR4;(e%bHN>K9s9DpZ;8V?uvD)u{FC~RDe0{oX*0EHSE{kMs z8*Gd!+hj1PE;;08ryx)ilBKPoL^~vKAO(Kp;ld8sn7JpVtaCW&RT-P|LP)&rC|b0< zXmok8m6!ntPnak#n{}N((-2L^lSXp%R^mGUF$i5$#T>Kw9RJ5m+XJ>i+Q5`MT0vj#vTm`w@=<*(~yGsoR-C6TgXClVo z3vcuNZ*G z8>`ekvedU$sjtaWf9gv4qSK={Fx6IgKMn8`4>VbSQ5Q89Jt-X4fKZIn+2cB4n|B4< zgy+7&&nyEiyz?NuDat5(Ulk5)h%jn=qiO_lxs4j%sv7g+0z_wD`9F0nRP*&>-2^Jk z^V5tiAw`Xu3YFm{idFzNqC;#;NDHxYlZ{an) zc6!{2z^LnLdb4k^G18vwZjHe+9RoI$aaW9^-~apy^a~h9&EK-R zgd$BkT9@qX&Kw3r6(enT5$C>^R1zJqb;$NdS>YGBUwwUFJEH_+@#Lu_*SNB8_-ovM zBKeZ`*WC;5uk%`1etX8O5_OQm=ejK`v=z%I-kw1B*{O8X%j92qUHQ-Ak*xr#Ute|C z7r?k@?s;tPAYu;Z##7Z#Oj&3 zb-v6nDq2TPUS^u+=Gm5+f5Jvi%z<-|Bavic>h*MX*ePQ=(%LCwyh;CYXJ{C+)ccwW zI9-QC)3(sz39)QzTz6EgXBQn&(iQ>|9^XEPUzOjmO_n6@B@!FgjQ2Z4FYIG~0~$YL zL>}Z5JPas!jF9hK#J0xy?#1N?U*rcYWas#xT~7-r7Q8)jT9|rUutRp;?E(7}!H=&i zbiodcN%AG=4QZ`kfTIZ|e*k`i{)^KA*aO^Su@j#B9l!CzAe$bs@G1AacjIG7UP9{X z=gS{c$2GT@u-Mv%HH%w?661(}WsgiAbc2YI{Q@%BP3t5Aj3R+FHkT2L0)>`EtBUyy z08JdrhB|`CHsacUa+KZeq; z5C7gvYK@@w0)>lfEMNIgUk-4U?;gdCcq)cZJ{i?}XdFw`z$FBK+RZhLmJwHA`a5uN ze0)T903cjtFfN$Whwjbx)dqqCqV84LU{owu^Fm$SG-PP{Puuo0zW0j2|1$o^x|4Ju z{s8?`DK_^8YT7d2;F1Z}{stFKw6(H6*cFW*NwsZ2tkA6-pA*@{C6?DgI9E1%9m_@a zj#>102_#;X0l(OP)voS+=z5c^R(Drsy=ESl_eg)bnz%gHx8wYp$SRcHpqo#INl}^f zBo<0-|7)lmCF5qnc-3&5ZbS8iA3c~8VGMd(qc4HN4}X)OOPk74o)|~e%JqDF6+D?6 zL!rr!5X5t>Q&HwBNS?+b=`~0^_tp1sN}s6k+L-K?EPrHwuirLRDL(_u(5vz6(3_TB z;%^+G{7IPHqO52#Uf^;N!zHd&FIMFC=~T|N-2M;@%v*AAE?0#7bXwI6hIkYJ!|9_1 zYvp)*P0jy~{YSH?koH#`e5HyFo$mB+<0D0_tJr7i%F+j%N%nL$HmmY0et9x6FVW>I za?ToflIU1}k4*2G(Lz;I;Z zgxb|;LO`N4q|992(`Cc)^TSDVUYxdg3UG>lFtv%LRqj+3*BAgS6#y-L#gVaRz6J^l zuro`t`mzt18J&A0Clh_6%umzLXI-=dXm%J2oJ6C6~a`y-j$7kX+NA&zgxPNP8 z6C7Itt`R5PGNv*05J?kX3XCM|ZRToO885<>*Rn_g1MD$WZZ-qOf!b8;&I%s(abMWHywci#CveYW+zE*d7wxSkVdtfC0h^Xpa*9F?{A+NC zKti_WHEg)@cnZ?>X~|k?(j9i1Jl0UK1psS+wcG9NAq(uc5V*xhz@F` zNy$MEY6Nd#e}^*`H=Bpnl3~xmoTMye@0!4H-nJvsBxll{XL~N>WM^_k>_lLHe*(un z{8m=)N-m*rLokEP?P3*xOj2Wu>81gj(HH|*W;(Q%%)yQvX5vm-$~@&wZMtw=Zl>>e zA>Wp9GQ8Mvs@c-(x>zpxIdPtpKK{#I7PD##x&UjKZ}j7-O)Py8LU}9z8=Xd?!AHl% z*1DHe^&Z!F=b-(b=>L}x%bM^eRsU`)ou*K~aUOS%^f|EOHfetwV!+d(XVck~`jHM8dOOt$%Gk^H|#sih&GI zdQDwz%G-0YKHc+={99yyGug$d=~dZRSdfy~W0}<1yPu38pCO_9EEZC(X)VRrBTfsl zm;29urt@=*)*LCV$!1GZ%f4CyTPs3Y7dlF6Z;N;BSJenwE%;%lxbWUR0!0Pp#tU$a zFdWvb7DfBIS{>yVIai@u$*n(b5lg7-92`M!bgRHEF9k{&TIZ(v}&@h$ByvNA6{PgNY&RF?X(D?JaF;7;_>(r-4-Qau+F6G&c1@vvx008)Gbv z?E}ou$cw8qnfYkXU)H~~XAph`%1?k(9pv0l5Kg}BHlGwD};!hTNc?O*w z6H$5xo8G<|$R&PY;@T~Fp+$EMmuz9zl~Q6pff3-lmqHDY5nhla*kV;}@+bYm$c`q2 zSt%u1Y3#C6XFIeQG~Q%@3>DF?R}0orS4D_6Kuc`d8jJbW*!Ic-HXt z*em-fA?KSw!O1a@X;|)dcg+a~u$+#DnxoFka{zdcVs`n^qF6EJSE-60K~y$m%K;nb zsR1FaJNyul7J3MDY^{Z=PzQYo4c%4Wi|rkk4a}8 z)3E{V#!ha3d{Gz60)t}DFhNonpq5eNakI!CbfmGJr=~j{6kEsr9^Om;0!AHmct8(H zeOAZ^s~NnJW6qS{MlHeQ?;z-FfDBNt`;CaIGz;9pB&nnl{P_MH`*920$DbOQ>P2wG zh>DkZ!h!vi+u-&=KGb0Z0s8oY_D+Wh!;K*mvfBiIi^&@mtpVO*4+4sojWxSi(Pcl^ z5DN`BgAzBegjHeo({EIKjDGf+tA;VMB3)GmnzBL&H*^*9KyQ$=Wez$|O7A<{z>`NF zlU^OmromuF1hD`H6~g#;Bh};c441hX%e?`gly5Fz1cW#HXj*P8G29+_)e^lJW(ELt zG=@ZfXISj;;{<4eOL;75AT)pDmrI3v0zGkdeJFEt6U|J9Ta^6tuTXBNo;PXEtD-ru zUIyPh*kB3s;r`)3!^ zwY}DcW^bwt0<+c`Y*+&ZAWM-SIhO=@f6)|`-a=}L0vNNg2$jW*o^8MGi0 z2Y>@ebCBLI(}gaqWJFz4Xvy#afi!@ef#YKX#NjRV;?;YCM*uM+sURLRm0cKHK^!-K zFrbDzc)f(^+h!l2gPsZyPX>_?*^5~8q8}wgHJC&7QFvxMz4VA5okwEp2vHDQ9L2yO zbYcs0zKbpG@*GvuAAIInQ|=h0cG!8WXX%BKly&RO()ot%Xxfa*5MQmqa76PWndb|% z3e0S9()={9dlYXC2MUZ`Oc*Mk+vI3y+P$ckc!ZzlFkjKYL)GSjBDV zH2!MLkgs%#15sJRl0j(C_9Hf|?2b)AZ%snVh>9C6k!72_J>u@mwjH$h-V!Vqs*2l~ zX5L_b_iY%CVrsBT(i;Bo)&B#x(LMw`kq*yXj9erG4Q@#z0017fm%)t#7?<$W0}Pix z&;$~HU3c8JvG4vB%sxciYjqQ+eUfUYvMkqoDoZ-jy6L@1jt{j09KyoF;DNkZaBrq5ZW(EVy46x4TAG7N`nOBQRQMP%#u5gu|e-p~Xaf4XSe z`nIFUO;#?J@Y5}^%)bQh)>+-a%ePrko{3+buT8$n%C?wKrsCas-c-v^u`-8M321HR zZB+*an>K?Yvixn?W?v?M%Wpqd^@5-imbtiHT~u-t zuk*!uo-Ih*v`)vTGF#>Fvt>R{I!}-ExVYaoZ6VQHZ!VXJ`!Z{qWNJqu`S+72Nus_^ zPv6LKNs3DSwvS)y;#1b?lgU)TO3S2nIEQ=c)jGpc`C)03Bk{6JVo#^8K=^mU&ht%}upgE{*|= z{3`x&f54_3s9grYSRs%k?M=~4obt(Y4i#0>f`DQ^LU&K(|Ab#H7p1yQAmOwu+9F#P z|H^@6i+r8KKPBn{VAv9V1G*M<(>^iH8g7SH%lxyIgLJ%aOIc1<#R!`_1wD>Zr9HlL zYPh1Lv2b4M^173Ub&gCRc{0%|H%VoGo1`kOe-J0|!{_s{ZQbQ-)w;|3se!c{0CMq~ z{dD?=i`mgxGCi5jrU%E<|2vpXPfzyr_h%E0y21H#(cUEGX1PrAPuX&lfoNOgJW*2E zc>ewZy{rO`d#u|;*VLtM?lFMzKzCKH@TECwVxXlJOMrj`8Yf{ z-b>C;>tD>c0Wb<{XD@CuX|C|dPOm1yAaCCmiy0%{=&0*)byr(3>}q@hG` zOCaMN+CIE0>KwV^)=<~!viOHsrqWhTN7Iwp(fQf=5&S#aO-2_W2c~y>$tZc6e-Lo4 zR#yXj?Vurs-s2c%4t2QC?Kr^mHL43Pv}Y(Z&K5xw8M*P%FS8$j}m@ z(0pqI!1?;pgU8q_?wC-E4!}7xp9{*h_XJw5fp9L$9cA_MHhr6||15`lH#xoh0F3q` zX_i&{chGw|=v!bL^C@~e_qZ=p!uw>Sas{%AGZmU%J zC^}tb%SPK_pcl1T!@9yu+Uw}B-{lDmNvdm(Z5P9)?wp~jH+eYJTBTe0Q*R>TM@(!^ zZ+kE_^tJq{LGp9Tng=a8Ma-$^`FeQ)c5uFeim4*bMZ3bq+N#}EFJy%&e~4jL&hw;lzRx3gje z6Y@yac%N$~({*VDf80z6%`}99(~!p9fJmX7#Ob5@r@uTLt|UsNf{0v0UDM!N|Z=9?ALz;-nQJu6x4R^V`IaEiz+fUnGx$*t3$LU@6chA%*fHywsZG{ z{_NF6ydH9J=`YTzt!U5ALP5(wXcnEC$`$---6!`0BtOIh_YamJ2@4CwYy!b#Q8l@% z96^vh<%olke+sF@@j9s%IaQDP-BuQif*NW`4ejfyNue&t&{ehMN{!6~_w2p>n%70S z5L=+hDsOM9g|x23ui~}()$XXM1%fUjf9%;d(F1))2y8UT|G9w)JC%i0S-DL3 z_FDxEeJt<>2;K0zB=|U}$$Fh4e&-JZ;zWUTjXD+3e-!mIR)qD3>iku;0U81YW3(pC zhPJ;lIo%J29TkN5!XRSnszML8b&)9g-@w4VpOvfDmugW2tYe2^a#<~I{h@ZPV9)#= zs7fEpsGE5bCX^#1WcM}fLIp8Ioet0u9^#BP?a-%pPkddP>P2q}V|!M?!hq^h`*vGx z8fsDte~ZzjUSoxlp6W`AENvIjPR)CQxgIECC&fYf29lmqQu!eUuwS7}OIQ&AT?K?> zE!wpvg@ua?9^t4;$M`F%O|$F~gCrFCbMqwc&R!kNj$S1%&rc6t9UffFl2^bFhv)!F zewxnSNaOC{JUKr4$I&^d`9$u(D9@f4^!ZIbfB*Qps^5Z{Q~>W7S6rj_iqKR@=pfU?@6=*q+$q2c5D~jaok_E{k;w$_ONcAX<>y zvM^BKzz$z*~A{9AtOlaCb_31+vW7hO=OoG65V=c$l%P=`u~e(s*QzqwK~y-KKbe@owG z{sj~v?$n~MQoA)9890F~Tfw_Jnat6U$1lEy^S6`eAmBH;xuoA&b0k;xQmQQkCfC$hI8t01tSf0aGNoh(~p2^H{blWNp$WLL^@++R*X z71YHd4_RFriQ2)I&C$3{MRylPf32soq$C!C|EL{XDPZNI`3a`-bcCbhvx3VG;xDg6 zpd4iHnQ_#QP+Vwb}Y(G9`-WqDceK+ zfFQgByHi9j;s!h{FX{|zbvJUWUWskbBrPlHkpsgMRwczJ=r0S_4e3G*$u6?R(QaaHzo>8(|y8)$?*?1h+_-pcy$3Cc?T*x9B1F6>gXuX z)8SiB%KN5(RaNKcWGa)YeCM&@KEw1c}6KBnGd7p79dul z`rGDODSYQ6HbIC5 zZ;&kn8+)OHlO3HOe^vHo#xzsBc72}7LDU@PMw}nTCPfIF>2C1*j7I1b-aE8#J{dbC<$bk1p2lmly@!*@1J$ zl>{6f8iMGi?4U9=eZ!!wKISDxX<|I?75V|rj}DF#u}&f~e*qK4bqPAP!CgZP(`deH zL?gsdzPhj8*h@`~By`)2CgA zr{}k}4{uDd(88k80TUc6t=Y+BGR74(?!`XR2&}T(%UmpWhmV7;1H38|p3>v9gY%=4 z&ec^XS)sQgnG1LOVO@)RouH_0@+NPhb++xX+jG^>pkCA7%X%yyqWr4QhRyUkR61XK zaqA@%e?=wexlkaqJ9dB$PmfQ#$7gF4wm@TBsr4VK*XfVZex`iLswze;qG(1p<$b*%Me5*EemrGoW|f&|r2_ z>`cqM2uB3ErcwmP-RnIKF*JnweD8hkIOW@yYY`+nS>eNigxLs(5UtQ=;f6RIoxJJ{b09GdPnY}P1Ra0AkWD%m$byAQx%86C zu*g^iEQ=T*5!m&XU8|~4I8%ZN{X>!nSDldm0o*ez-=+V5zWjH=qwlAF-^!c>wI z9~Ty4iUeT$MrNuSA$FW3w#?d5ZZsAXN-*v)h*^dEom78mb86G%Qy-+e^Vc;BG;U+) zFtCV)m95U{RUPjdu~#h^+t6;0Iv<%fosc6xKruG#TaLJvLCndu-t!jK_g`0af)_mgrF<7R0~IBPd56- z@FLG@x&46bYKC)YUmcwAkvib#Uz0`vK9d{1*z3^D4X+t|;#VZnwyN#gXBRE(uIJLOyzxM_N z+)h4;)bqH1r-4qru^?>jdu&Y?KEWz44z6#9S*PAPA+-!4hwW4cqU!-P_Q{2}79m5BV_!}T~rhE4PjlWlJ+ zkzhO@T|$AXm+w(TYC_}L^@Yd*piU5F?51Ps4I$H$j})h@!X2e9A(A36Ow7V!YAec= z9*>wZ;r3M6Q$LuNZdHjv;snnRChl8n*mmuzgS^}4fRiXu5*=*UB63y9t`tK`>{z1- zw~5hztyg-P$Q~Aft{$@9z{lYI^m#J+rTnEltD2^`#4zKg0o!A56iSF!=h;LYEJFuN zc3F8Kp(~ddZ;@oKQPmIm2ML)%6G;!r<)%#*Ro;|4tvtIX>!c0?`i}y1t=*)6V8>>k z+2@nHRoSHoEk%H1rlo!wA3L@swJ}0#P>y1MH^gXaH=Kv7F_Tpu>9q=zl?32x^ZR(7>eAE9j=oTM~pI%$X7OvYX^(vjKJ^ z77>%DCr5s120HwohB4}b>7Cu}d4^HSFbiKTi+S5nmUm{C!Q})RfB%XHXunozQH%TJ zL*Wz8iNdEVFKSR$6h2* z+R$3@)XUDJ$<~aT#V1JO(l~TcmuXyNJq*k(+BRv$p<$zB<9D@ zr;K3n+a%>Xenso}f4?|9*vhMT0Z5lLc5BB=;1~0dmvuezH^PH6cDvlb92zh~+Jx2Y z6WF|Bs>Eg+g&}` zTM0XU)0y1bzyBzQb)k<9wnp@zjz1`6)}IvanI1bNB~}@2e?DU>+}#6MNtwQU*N0`e z`WdZS^{F2!9R+P^k@N9~%dEk}5>;ehC8DHTOcyKixhCWk>70w&HQaVA0?eZWP2Y&|^>LPAZ=x`7ZK|47V7rhyCo z9%cbDvd)gftf5M-TChW0qIm3(vS^;-mKlZj$X{eq5bu?MI5_!G3o4&@sDAY2_l5a~ z2Ewo;Khlo8S4kc?L|c;YRrtAc1%y2+Ml6cSfvxhke` z*v*gBb#<*a2&8!vCLmI{q6`ptCgF2u46)7wajY4s>o^dMM}b);8>F~E-p*VK_jmHE z$UBs9gOu4=f5Z_BUOXs1eG1`VftzY#G%#ew=mFd1eHP(6PdXTTlQ9M^Hek~=&DBO9 z&;V`of7XChPJ-3U#+O-dj9ebQ=UJ|H>s%y-2$k4}3_a)7pG}pgf(z6&EbpJFN~bMB za&PKEYWc#FK@+2 zm;i5Ml86%}y+u0>IyX_EQXhGwrdGo+GWWS5f6Xzuy{dy;zOgN7gv}PZp#*N#=Q6Kn z!k-tMP-~AKz$30^nK?O69MZX|bG?(I(4>+q2T>ebmfGrv6<8-?A<|5IKc=vg=&|!d z&vi9j_^&?Lwfjt0|KM}){MP8iIQY!hA@?5m3Yrr7 zf89aeTWNEbiMx)M9dc`cmj z7qVe+llCgY_s;*lDDVvDPG^p$mco5Ne`wz@WRv8aBxgwIkABb>J_C}qzuMW~N@;C% zHA1&Kj;RJQ<@x@(%0fRXDx$;wvh0((Lb~&b#j_kk>QFL}+Pvsa!*1c}t@k)eh+m zDj(~ca3KV88v$g}Lli^;Ggby$7j6Vs0$>`9&M=rqrCf9_f7 za)|I+D&)8tri=nlrpl5X8K1GEgMC~f3l|hlH+G$cgf{WK#sa~QNMn?14YS77P+5 znh}RW)x5~Kpz#nk+ch6T&^xXjr;`yJdiv?r;<{=wugfO8$~D70m%Ljv@5E~~N7Dd) z2OUgJ!Z1zV%69<|I&ITce{J`|*IxjJ>Et(ABL($&AdAjyP2^5NQDN|=nknsC zY+J5ev0c+4z&gAqnToHVcz89izs3v}axquSz}-13C?oz?cpeW=33_{+s+4R%)3fBcly7;4s}qfIHI z+R@1Eut5%?OFBWsz7ezbwkC<)(HB3?GO}*9t1yJV?G3{oVs5+vym+*$jJq0&+AVte zBI`c)Hg!-D^73`j`>3nMtEARDe$CxPo*$-YKbC*}_+l(dWcBq%?uG?ux*oXabd*`Z0YPo>HdK-c1N)xy-UidRUxB_^4IJKh?ppq6yp?756YZ z=a2lzecZE1MLMb$VmcK_ttbBJ#ftHHAf2PT9q0bW-0RXmwx3{DQBFR(McCOz2<=^z z^IEc_|8Zh(toJm$C8RZc&^pk61Waw3k%9g}OSo9>O>}&s6AImiQrCrla8EL@F5gtzKv2mYj`|i)Fm~zKuDIk zSOaN&6tla+ullT5VB}|Hmk*J`nG!onj5CDcwkU2S!_ozLi>lu-l(_;yB#qZ7#n_=5oK*rGIPX@xZP2GS5m)HdtQiz%k11-ElVG7;h*N##RLjn9(OE^ zWiQJ%0USS8G(zv|MDsz9^j`A)z5yemJ2ap$9K^y3qd_P*0gpRD)4~sq&lGc} zEWouLoTjOaF6fUi-^}vEQM}luCQUepu50`#e)?oHf6X~n#6nQjAQxax?P;CB|D*RN z&L&Omr?GBp9E&K^(f+vC4^s6?UcD`P7xPR7idWs&{iue3ez?V;Z7)(Oe!vVqWc1iI zm?Xx6Qi5-W^Dss6XK$BvpapN)RB6-40doj_MrWF>by^Mf(qwn){7u#EM4W3P@;B}5 z(tIq|e`{??@4VmfQ@z7pM0*h0lG&$xp*YAnqe(v^PEk{{XjHw6Hk*I!xR4JY0$SIP zS_AQ};M3m?l>5gP15N~FJ51p?>-Vv}))WjOdiZ=ekK-Vk;TYfm=en-zKRo%5W6rI# z;aAgyTWi7lv%w(k_c$DJ_k@>nONxm&-aTt`e|6*+q9)gRx*Jic-&#Muax|YjZZNJf z<8XG&-8i4?N(GKiaN-vy%O@6+SZjAd+D)!25+SWfg1W0J=g^3xilxN8wedEz8oezV zaqyWoTkc1y(GEuwX$4{sv@wbV5kv`NQ|-qD+VYc0wgsTdHExOS*=ybWHtS|Lqc21p zf4?%pW=H>+(d-M3M~NJg_F=vDDX&{+V0Udd{H{OBfF9_96b!j48gYk$H>?9kl^fKV z(b482P673sWOMd>xLP^Z3 z@CA|St#?0W6`mzh-daVlXKv?U^hH!lbgZBM3w+D*os!VCr2Wfb9iKUed6{*|UQe?Z zF0{3unKIvY-e%=od~5f+p8NZ$cGVw7zUbl6fiD49^Fc4lZTa`CE->+52=KsIe;2Y1 zG|*eFMst9tSGvpbD<3$=L-OLuZ2j0ZiHzS|*Xh}g?r|p!^PKnhlaC4b&AJzJmHT_f zU)NbKs&qTbHR5tlSjx~F>l*Lgr2U53^(5|bgs=9(WWjUS9WM&FYY@WhF&DZKWhXZ! zmX{)*ZQ{S#)dowR$8xmm=UxXHe-3iKf3<*X5(E};xD(gVgJQ7#2oH9IJSRHk!hLIt zxZC*-gLkM^w1#Ind%R-4Sjjoe>F> zB7W9|W0Sfn{;*gC&ZXf5MtV;92Sh$HO$`l!0U{pa^;?>-o-9e+4cK9&vqT zU3ol}*&Dz2ypF872w4)UX-E+%?aNGQv$TzAlGc$WWGE?#Xt$I*JPBE&Y)O`A)84cV z711)w9;dEf8%`99Bi&U2Rcy&sp8cS+;I!LP4lSF|3fclY!e zJIC8L%}a~C3CVvv^yfRvpW)YVlI8`yH<^7QP3g#~mf1(_&QClVKcva}P2A0>t$$Y4 zFa9}sK~wSXUUhC|4Z(NjWf4W3hcy?wYroLyh<3j(A(D6>@ig zqf!~ybh+&6JjGBha-rqiy0D2;wT--9DLoo!-5fQ;EimS*bBJ@Y&AJu#mD@+#uP$_5 zSzBY~=X0?+aDIH-$AGu%4Hi5xp5@Z{ql#glz{`_c3Kh!*gF{VQN_2*kxo7hZo{2l! zI(TTy` zj*57hhWOoW*0oa=4YA9A| zRE0L)VE2Sq8H#s3R);AeNNki6{h-nVJ5e4&4amgjOy=}V6+ZB??f*y!n7D!3kq9p|#Shv=Q09u0p!}0;xoST5NbY}9 zh8o^)=2r;`8liL)XD<|r16uW9X($f80tbnqbPTcKAYv=+11+H_U)cpZ4TXwexe1vR zS*CguRe}vXeg7MJ8X2I@;z(R2LW?junY_^cmX71;b|WdR2VcT4qF}I;QH0*#2{j=n z3`_dKTqxT~tsych6AM)3Z${^~`7(5quTTj-^7OC;-_j1@bQ(Fi=v(^MFG4-Ah`{z5 z!f^<1`N<26c$)=r3u3fr3vLBL5jd}*hf#);5x9J<*Go0iNyHW@P=??w{OXR9VV*_` zjo{T5s%GMY|LH1r_fIideFXx|LV>`xdu`*jG@@!JbFz-4vq({2p+r^2!_d(;<&87svpq-%iY)?l^r;0 zlV-`pvYSCPz-0%fGuu^4Ye4!A9JQDpW;%JhP-@nOxjQjIeRnC-8wz&Pu_Vqz%4mb; zE~;-b5(jMNEZ>)Jv;_jQRRV#PT$bm(rFum;?n!i6mb>vNKEiF5v7OsRO-!<|$34gL z2?XEE#j4*UqsN2#Mia+m877ctyfRoxtvQ+ic=g8DFr2ToleF&3MAc!F78#A5XOHyH50MpR&ZB1XS*jmR!`x0_7x@)}Wx zq&N)r*PlGo4<5zgOk7mU%xyQ(JYf%-H{X&li48;nw(~@l3{kTON7DUvkD~ZC=>;7% zL>0#EMXi3loT(2a@vL)058G0Q^UdNoCfaycE>Yim-6Gs6c)MpjH4vIX6J8|ARNfByk}{jOBVQ0fz8OOl^tEGiI6a zJ3h4kc+EiE?`TPQ!@%D>Fn-GeNk|Gd3CP?)hF_f33AiDIC-9BDlQPptfi~>TM6Ppl9_r^p#dAba$Qb#@Mh{u1&Z)Mms5fEy%;W`znse4Oh$F8 zKi8YZdOk=_75Y6>729*Y;1uADPq&uw8!?R2WPY~$Fj?CXGB&S$xI>zbkzvm7qxQsX ztTdu7bFFcrYCUffZ4SJ>FZd*3g$7QCvjtei%BlDz>eD>4+m$gU3y?Xy4g1Br!_fWs zewFYG@7fQ3*^k1SE?^ai^*p?vT9H?7%-p^ohg{R0ftkq&JeDw!nv5O%c_{-g7h~l* zlQES4GHA}G#xNs=+K@@hnR$N-I=Zi5pfv^i>bH`CnW;ER$-gp?l}hb|_?S3={_Uwa zna-|a2FC+9C$c>mNIQTod%YO=Z~!AGc{5<`$%$Z58fFpV!x)hlrvc7+*z@ygSn~nC zEV(af=rz)hXq06LURV@(-Fd{!jcRujVO>=3p1##a3Ac+ zL~CaTPVjwenE|V)$*&9%tj)wmkFVqDxn%TuX0BPwDT8VjX6X{bnE6>)E9VUi9L&ND zehp;+TkQj?*{BWJ#2BTGoH~2wXxS(?`!<9zL0&dK96sXqolO@K+XzNp4de7#9kv|A zl<rfcQfM*U`PHbi1Tn?t>w2gtMkyuhJvIy=)$tB>ooe5Uw zQhQ+@EIWjCIiE|Xl9HXwFk?G<_NqY7X@@Y0^Sc3b5Iw`>Tc6r<8nN*#~;(;4ady z2nX|F0hku!Cxf6O%%EQ(1Jy;iKUfy=z#Ik~K}%p4SbqfTX?ulP@Cf=ou(%j=qs5rp z&Ko@KL6+ZTQN9#YB}&m9E-jvdGKmY& z>q1tV3I-r5qiUw||JGF?7%As|dtjHt$}-%IJ~%*n8TI6jxpuKNP6|eR7c98Pz6vns zw1O$5l+%gaqRSFwK2)~m@_z~Q?YpE!V^08OaIc_N+?fsq$atq<4wV(yLa#4fNaHx2 z%Dw7F;m7G@?)F!SZ4!IlOLl*gO5FV`I>EY))myV&_B=s4k55T3+YUU-7e d;{s<%EaqT&k}CBcBOD_P@fQgEexg{}{{h{7On?9Y delta 51718 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 (value) + } +} + +share UnsafePointerMain { + share main() { + low: LowLevel = safe(LowLevel()) + out(low.method()) + out(x) + } +} diff --git a/src/main/java/cod/interpreter/handler/ExpressionHandler.java b/src/main/java/cod/interpreter/handler/ExpressionHandler.java index e0070971..815dee60 100644 --- a/src/main/java/cod/interpreter/handler/ExpressionHandler.java +++ b/src/main/java/cod/interpreter/handler/ExpressionHandler.java @@ -258,6 +258,17 @@ private Object handlePointerArithmetic(Object left, Object right, boolean additi } long nextIndex = addition ? pointer.index + offset : pointer.index - offset; + if (pointer.container instanceof NaturalArray) { + NaturalArray arr = (NaturalArray) pointer.container; + if (nextIndex < 0 || nextIndex >= arr.size()) { + throw new ProgramError("Pointer arithmetic out of bounds: " + nextIndex); + } + } else if (pointer.container instanceof List) { + int size = ((List) pointer.container).size(); + if (nextIndex < 0 || nextIndex >= size) { + throw new ProgramError("Pointer arithmetic out of bounds: " + nextIndex); + } + } return new TypeHandler.PointerValue(pointer.container, nextIndex, pointer.pointedType); } diff --git a/src/main/java/cod/interpreter/handler/TypeHandler.java b/src/main/java/cod/interpreter/handler/TypeHandler.java index d731c7a1..985b947a 100644 --- a/src/main/java/cod/interpreter/handler/TypeHandler.java +++ b/src/main/java/cod/interpreter/handler/TypeHandler.java @@ -1239,10 +1239,13 @@ public String getConcreteType(Object value) { } public boolean validateType(String typeSig, Object value) { - String typeSigTrimmed = normalizeTypeSignature(typeSig); - if (typeSigTrimmed == null) { + if (typeSig == null) { return true; } + String typeSigTrimmed = normalizeTypeSignature(typeSig); + if (typeSigTrimmed == null || typeSigTrimmed.isEmpty()) { + throw new ProgramError("Invalid type signature: " + typeSig); + } if (typeSigTrimmed.contains("|")) { if (!isTypeStructurallyValid(typeSigTrimmed)) { throw new ProgramError("Union type contains illegal keywords: " + typeSig); diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index 52687bc0..52dae8b3 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -944,6 +944,12 @@ public Boolean parse() throws ParseError { return false; } + try { + parseTypeReference(); + } catch (ParseError e) { + return false; + } + if (is(LPAREN)) { return false; } diff --git a/src/main/java/cod/semantic/ConstructorResolver.java b/src/main/java/cod/semantic/ConstructorResolver.java index e7bd4dab..ab94a92d 100644 --- a/src/main/java/cod/semantic/ConstructorResolver.java +++ b/src/main/java/cod/semantic/ConstructorResolver.java @@ -898,8 +898,9 @@ private void initializeFields(Type type, ObjectInstance obj, ExecutionContext ct String fieldType = field.type; if (fieldType != null && typeSystem.isSizedArrayType(fieldType)) { int length = typeSystem.getSizedArrayLength(fieldType); + int sizedLength = Math.max(length, 0); String elementType = typeSystem.getSizedArrayElementType(fieldType); - List initialized = new ArrayList(Math.max(length, 0)); + List initialized = new ArrayList(sizedLength); Object elementDefault = 0; if (elementType != null && typeSystem.isUnsafeNumericType(elementType)) { elementDefault = typeSystem.convertType(0, elementType); @@ -910,7 +911,7 @@ private void initializeFields(Type type, ObjectInstance obj, ExecutionContext ct } else if (elementType != null && elementType.contains(BOOL.toString())) { elementDefault = false; } - for (int i = 0; i < Math.max(length, 0); i++) { + for (int i = 0; i < sizedLength; i++) { initialized.add(elementDefault); } obj.fields.put(field.name, initialized); From 2a841c6c0c646fe272aa93559d1a917eb5c3b8f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:45:25 +0000 Subject: [PATCH 8/8] Refine pointer type checks and diagnostics Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/b476ffd3-a03b-47a2-8df7-6f9f23f27c87 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- src/main/java/cod/interpreter/handler/ExpressionHandler.java | 5 +++-- src/main/java/cod/interpreter/handler/TypeHandler.java | 3 --- src/main/java/cod/parser/DeclarationParser.java | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/cod/interpreter/handler/ExpressionHandler.java b/src/main/java/cod/interpreter/handler/ExpressionHandler.java index 815dee60..3c8d8415 100644 --- a/src/main/java/cod/interpreter/handler/ExpressionHandler.java +++ b/src/main/java/cod/interpreter/handler/ExpressionHandler.java @@ -210,8 +210,9 @@ private TypeHandler.PointerValue createPointerFromIndexAccess(IndexAccess access throw new ProgramError("Pointer address index out of bounds: " + idx); } String pointedType = "any"; - if (!list.isEmpty() && list.get(0) != null) { - pointedType = typeSystem.getConcreteType(typeSystem.unwrap(list.get(0))); + Object pointedValue = list.get((int) idx); + if (pointedValue != null) { + pointedType = typeSystem.getConcreteType(typeSystem.unwrap(pointedValue)); } return new TypeHandler.PointerValue(list, idx, pointedType); } diff --git a/src/main/java/cod/interpreter/handler/TypeHandler.java b/src/main/java/cod/interpreter/handler/TypeHandler.java index 985b947a..346165ab 100644 --- a/src/main/java/cod/interpreter/handler/TypeHandler.java +++ b/src/main/java/cod/interpreter/handler/TypeHandler.java @@ -1243,9 +1243,6 @@ public boolean validateType(String typeSig, Object value) { return true; } String typeSigTrimmed = normalizeTypeSignature(typeSig); - if (typeSigTrimmed == null || typeSigTrimmed.isEmpty()) { - throw new ProgramError("Invalid type signature: " + typeSig); - } if (typeSigTrimmed.contains("|")) { if (!isTypeStructurallyValid(typeSigTrimmed)) { throw new ProgramError("Union type contains illegal keywords: " + typeSig); diff --git a/src/main/java/cod/parser/DeclarationParser.java b/src/main/java/cod/parser/DeclarationParser.java index 52dae8b3..e3749a81 100644 --- a/src/main/java/cod/parser/DeclarationParser.java +++ b/src/main/java/cod/parser/DeclarationParser.java @@ -548,7 +548,7 @@ public Method parseMethod() { if (isUnsafeMethod && !sawVisibility) { throw error( "Unsafe methods require an explicit visibility modifier before 'unsafe'. " - + "Expected: [share|local] unsafe methodName(...)", + + "Expected: share unsafe methodName(...) or local unsafe methodName(...)", startToken); }